Use Gio for url logger

This commit is contained in:
TingPing
2014-08-26 23:09:55 -04:00
committed by Patrick Griffis
parent 06d323025d
commit eafc1e2b70
4 changed files with 29 additions and 21 deletions

View File

@@ -1332,7 +1332,10 @@ hexchat_open_gfile (const char *filename)
GFile *file; GFile *file;
gchar *full_path, *full_path_fs; gchar *full_path, *full_path_fs;
full_path = g_build_filename (get_xdir(), filename, NULL); if (g_path_is_absolute (filename))
full_path = g_strdup (filename);
else
full_path = g_build_filename (get_xdir(), filename, NULL);
full_path_fs = g_filename_from_utf8 (full_path, -1, NULL, NULL, NULL); full_path_fs = g_filename_from_utf8 (full_path, -1, NULL, NULL, NULL);
file = g_file_new_for_path (full_path_fs); file = g_file_new_for_path (full_path_fs);

View File

@@ -68,42 +68,47 @@ url_clear (void)
} }
static int static int
url_save_cb (char *url, FILE *fd) url_save_cb (char *url, GOutputStream *ostream)
{ {
fprintf (fd, "%s\n", url); stream_writef (ostream, "%s\n", url);
return TRUE; return TRUE;
} }
void void
url_save_tree (const char *fname, const char *mode, gboolean fullpath) url_save_tree (const char *fname)
{ {
FILE *fd; GFile *file;
GOutputStream *ostream;
if (fullpath) file = hexchat_open_gfile (fname);
fd = hexchat_fopen_file (fname, mode, XOF_FULLPATH);
else
fd = hexchat_fopen_file (fname, mode, 0);
if (fd == NULL)
return;
tree_foreach (url_tree, (tree_traverse_func *)url_save_cb, fd); ostream = G_OUTPUT_STREAM(g_file_append_to (file, G_FILE_CREATE_NONE, NULL, NULL));
fclose (fd); if (ostream)
{
tree_foreach (url_tree, (tree_traverse_func *)url_save_cb, ostream);
g_object_unref (ostream);
}
g_object_unref (file);
} }
static void static void
url_save_node (char* url) url_save_node (char* url)
{ {
FILE *fd; GFile *file;
GOutputStream *ostream;
/* open <config>/url.log in append mode */ /* open <config>/url.log in append mode */
fd = hexchat_fopen_file ("url.log", "a", 0); file = hexchat_open_gfile ("url.log");
if (fd == NULL)
ostream = G_OUTPUT_STREAM(g_file_append_to (file, G_FILE_CREATE_NONE, NULL, NULL));
if (ostream)
{ {
return; stream_writef (ostream, "%s\n", url);
g_object_unref (ostream);
} }
fprintf (fd, "%s\n", url); g_object_unref (file);
fclose (fd);
} }
static int static int

View File

@@ -33,7 +33,7 @@ extern void *url_tree;
#define WORD_PATH -2 #define WORD_PATH -2
void url_clear (void); void url_clear (void);
void url_save_tree (const char *fname, const char *mode, gboolean fullpath); void url_save_tree (const char *fname);
int url_last (int *, int *); int url_last (int *, int *);
int url_check_word (const char *word); int url_check_word (const char *word);
void url_check_line (char *buf); void url_check_line (char *buf);

View File

@@ -138,7 +138,7 @@ url_save_callback (void *arg1, char *file)
{ {
if (file) if (file)
{ {
url_save_tree (file, "w", TRUE); url_save_tree (file);
} }
} }