Merge branch 'develop' of pwmt.org:zathura into develop

This commit is contained in:
Moritz Lipp 2011-10-24 10:51:09 +02:00
commit 5acf8da4de
22 changed files with 118 additions and 53 deletions

View file

@ -5,18 +5,28 @@
#include "database.h"
#include "document.h"
#include <girara/datastructures.h>
#include <girara/utils.h>
static int
bookmark_compare_find(const void* item, const void* data)
{
const zathura_bookmark_t* bookmark = item;
const char* id = data;
return g_strcmp0(bookmark->id, id);
}
zathura_bookmark_t*
zathura_bookmark_add(zathura_t* zathura, const gchar* id, unsigned int page)
{
g_return_val_if_fail(zathura && zathura->document && zathura->bookmarks.bookmarks, NULL);
g_return_val_if_fail(id, NULL);
GIRARA_LIST_FOREACH(zathura->bookmarks.bookmarks, zathura_bookmark_t*, iter, bookmark)
if (strcmp(bookmark->id, id) == 0) {
girara_list_iterator_free(iter);
return NULL;
}
GIRARA_LIST_FOREACH_END(zathura->bookmarks.bookmarks, zathura_bookmark_t*, iter, bookmark);
zathura_bookmark_t* old = girara_list_find(zathura->bookmarks.bookmarks, bookmark_compare_find, id);
if (old != NULL) {
return NULL;
}
zathura_bookmark_t* bookmark = g_malloc0(sizeof(zathura_bookmark_t));
bookmark->id = g_strdup(id);
@ -58,14 +68,7 @@ zathura_bookmark_get(zathura_t* zathura, const gchar* id)
g_return_val_if_fail(zathura && zathura->bookmarks.bookmarks, NULL);
g_return_val_if_fail(id, NULL);
GIRARA_LIST_FOREACH(zathura->bookmarks.bookmarks, zathura_bookmark_t*, iter, bookmark)
if (strcmp(bookmark->id, id) == 0) {
girara_list_iterator_free(iter);
return bookmark;
}
GIRARA_LIST_FOREACH_END(zathura->bookmarks.bookmarks, zathura_bookmark_t*, iter, bookmark);
return NULL;
return girara_list_find(zathura->bookmarks.bookmarks, bookmark_compare_find, id);
}
void

View file

@ -1,6 +1,8 @@
/* See LICENSE file for license and copyright information */
#include <girara.h>
#include <girara/statusbar.h>
#include <girara/session.h>
#include <girara/settings.h>
#include <stdlib.h>
#include <gtk/gtk.h>

View file

@ -4,7 +4,7 @@
#define CALLBACKS_H
#include <gtk/gtk.h>
#include <girara.h>
#include <girara/types.h>
#include "zathura.h"

View file

@ -11,6 +11,9 @@
#include "document.h"
#include "utils.h"
#include <girara/session.h>
#include <girara/datastructures.h>
bool
cmd_bookmark_create(girara_session_t* session, girara_list_t* argument_list)
{

View file

@ -4,7 +4,7 @@
#define COMMANDS_H
#include <stdbool.h>
#include <girara.h>
#include <girara/types.h>
/**
* Create a bookmark

View file

@ -10,6 +10,11 @@
#include "completion.h"
#include "utils.h"
#include <girara/session.h>
#include <girara/completion.h>
#include <girara/utils.h>
#include <girara/datastructures.h>
girara_completion_t*
cc_open(girara_session_t* session, const char* input)
{

View file

@ -3,7 +3,7 @@
#ifndef COMPLETION_H
#define COMPLETION_H
#include <girara.h>
#include <girara/types.h>
/**
* Completion for the open command - Creates a list of accesible directories or

View file

@ -7,6 +7,12 @@
#include "shortcuts.h"
#include "zathura.h"
#include <girara/settings.h>
#include <girara/session.h>
#include <girara/shortcuts.h>
#include <girara/config.h>
#include <girara/commands.h>
void
config_load_default(zathura_t* zathura)
{

View file

@ -1,12 +1,13 @@
/* See LICENSE file for license and copyright information */
#include <girara.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <girara/utils.h>
#include <girara/datastructures.h>
#include "database.h"

View file

@ -2,7 +2,8 @@
#include <glib.h>
#include <sqlite3.h>
#include <girara.h>
#include <girara/utils.h>
#include <girara/datastructures.h>
#include "database.h"

View file

@ -4,7 +4,7 @@
#define DATABASE_H
#include <stdbool.h>
#include <girara.h>
#include <girara/types.h>
#include "zathura.h"
#include "bookmarks.h"

View file

@ -6,6 +6,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#include <sys/types.h>
@ -15,6 +16,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <glib.h>
#include "document.h"
#include "utils.h"
@ -22,6 +24,10 @@
#include "render.h"
#include "database.h"
#include <girara/datastructures.h>
#include <girara/utils.h>
#include <girara/statusbar.h>
/**
* Register document plugin
*/
@ -144,6 +150,47 @@ zathura_document_plugin_register(zathura_t* zathura, zathura_document_plugin_t*
return atleastone;
}
static const gchar*
guess_type(const char* path)
{
gboolean uncertain;
const gchar* content_type = g_content_type_guess(path, NULL, 0, &uncertain);
if (content_type == NULL) {
return NULL;
}
FILE* f = fopen(path, "r");
if (f == NULL) {
return NULL;
}
const int fd = fileno(f);
guchar* content = NULL;
size_t length = 0u;
while (uncertain == TRUE) {
g_free((void*)content_type);
content_type = NULL;
content = g_realloc(content, length + BUFSIZ);
const ssize_t r = read(fd, content + length, BUFSIZ);
if (r == -1) {
break;
}
length += r;
content_type = g_content_type_guess(NULL, content, length, &uncertain);
}
fclose(f);
if (uncertain == TRUE) {
g_free((void*)content_type);
content_type = NULL;
}
g_free(content);
return content_type;
}
zathura_document_t*
zathura_document_open(zathura_t* zathura, const char* path, const char* password)
{
@ -156,33 +203,12 @@ zathura_document_open(zathura_t* zathura, const char* path, const char* password
return NULL;
}
gboolean uncertain;
const gchar* content_type = g_content_type_guess(path, NULL, 0, &uncertain);
const gchar* content_type = guess_type(path);
if (content_type == NULL) {
girara_error("Could not determine file type");
girara_error("Could not determine file type.");
return NULL;
}
if (uncertain == TRUE) {
g_free((void*)content_type);
content_type = NULL;
gchar* contents = NULL;
gsize length = 0;
if (g_file_get_contents(path, &contents, &length, NULL) == FALSE) {
girara_error("Could not determine file type");
return NULL;
}
content_type = g_content_type_guess(NULL, (guchar*) contents, length, &uncertain);
g_free(contents);
if (content_type == NULL || uncertain == TRUE) {
g_free((void*)content_type);
girara_error("Could not determine file type");
return NULL;
}
}
/* determine real path */
long path_max;
#ifdef PATH_MAX

View file

@ -7,7 +7,7 @@
#include <gtk/gtk.h>
#include <stdbool.h>
#include <girara-datastructures.h>
#include <girara/types.h>
#include "zathura.h"
#define PLUGIN_REGISTER_FUNCTION "plugin_register"

View file

@ -4,6 +4,9 @@
#include "document.h"
#include "render.h"
#include <girara/utils.h>
#include <girara/statusbar.h>
void
print(zathura_t* zathura)
{

View file

@ -1,6 +1,9 @@
/* See LICENSE file for license and copyright information */
#include <math.h>
#include <girara/datastructures.h>
#include <girara/utils.h>
#include <girara/session.h>
#include "render.h"
#include "zathura.h"

View file

@ -5,7 +5,7 @@
#include <stdbool.h>
#include <stdlib.h>
#include <girara-datastructures.h>
#include <girara/types.h>
#include "zathura.h"
#include "callbacks.h"

View file

@ -1,6 +1,9 @@
/* See LICENSE file for license and copyright information */
#include <girara.h>
#include <girara/session.h>
#include <girara/settings.h>
#include <girara/datastructures.h>
#include <girara/shortcuts.h>
#include <gtk/gtk.h>
#include "callbacks.h"

View file

@ -3,7 +3,7 @@
#ifndef SHORTCUTS_H
#define SHORTCUTS_H
#include <girara.h>
#include <girara/types.h>
/**
* Abort the current action and return to normal mode

View file

@ -12,6 +12,8 @@
#include "zathura.h"
#include "document.h"
#include <girara/datastructures.h>
#define BLOCK_SIZE 64
bool

View file

@ -5,7 +5,7 @@
#include <stdbool.h>
#include <gtk/gtk.h>
#include <girara.h>
#include <girara/types.h>
#include "document.h"

View file

@ -1,11 +1,16 @@
/* See LICENSE file for license and copyright information */
#define _BSD_SOURCE
#define _XOPEN_SOURCE 500
#define _XOPEN_SOURCE 700
#include <stdlib.h>
#include <unistd.h>
#include <girara.h>
#include <girara/datastructures.h>
#include <girara/utils.h>
#include <girara/session.h>
#include <girara/statusbar.h>
#include <girara/settings.h>
#include <glib/gstdio.h>
#include "bookmarks.h"
@ -348,8 +353,9 @@ document_info_open(gpointer data)
if (file == NULL) {
girara_notify(document_info->zathura->ui.session, GIRARA_ERROR,
"Could not read file from stdin and write it to a temporary file.");
} else {
document_info->zathura->stdin_support.file = g_strdup(file);
}
document_info->zathura->stdin_support.file = file;
} else {
file = g_strdup(document_info->path);
}

View file

@ -4,7 +4,8 @@
#define ZATHURA_H
#include <stdbool.h>
#include <girara.h>
#include <girara/types.h>
#include <gtk/gtk.h>
#ifdef UNUSED
#elif defined(__GNUC__)