Save URLs to disk on-the-fly and provide an option for toggling it
This commit is contained in:
parent
d4f3738ca8
commit
ca3fa043f0
|
@ -393,8 +393,6 @@ default_file (void)
|
||||||
/* Keep these sorted!! */
|
/* Keep these sorted!! */
|
||||||
|
|
||||||
const struct prefs vars[] = {
|
const struct prefs vars[] = {
|
||||||
{"auto_save_url", P_OFFINT (autosave_url), TYPE_BOOL},
|
|
||||||
|
|
||||||
{"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL},
|
{"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL},
|
||||||
{"away_reason", P_OFFSET (awayreason), TYPE_STR},
|
{"away_reason", P_OFFSET (awayreason), TYPE_STR},
|
||||||
{"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL},
|
{"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL},
|
||||||
|
@ -616,6 +614,7 @@ const struct prefs vars[] = {
|
||||||
|
|
||||||
{"url_grabber", P_OFFINT (url_grabber), TYPE_BOOL},
|
{"url_grabber", P_OFFINT (url_grabber), TYPE_BOOL},
|
||||||
{"url_grabber_limit", P_OFFINT (url_grabber_limit), TYPE_INT},
|
{"url_grabber_limit", P_OFFINT (url_grabber_limit), TYPE_INT},
|
||||||
|
{"url_logging", P_OFFINT (url_logging), TYPE_BOOL},
|
||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ url_save_cb (char *url, FILE *fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
url_save (const char *fname, const char *mode, gboolean fullpath)
|
url_save_tree (const char *fname, const char *mode, gboolean fullpath)
|
||||||
{
|
{
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
|
||||||
|
@ -74,10 +74,20 @@ url_save (const char *fname, const char *mode, gboolean fullpath)
|
||||||
fclose (fd);
|
fclose (fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
url_autosave (void)
|
url_save_node (char* url)
|
||||||
{
|
{
|
||||||
url_save ("url.save", "a", FALSE);
|
FILE *fd;
|
||||||
|
|
||||||
|
/* open <config>/url.log in append mode */
|
||||||
|
fd = xchat_fopen_file ("url.log", "a", 0);
|
||||||
|
if (fd == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (fd, "%s\n", url);
|
||||||
|
fclose (fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -92,12 +102,17 @@ url_add (char *urltext, int len)
|
||||||
char *data;
|
char *data;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
if (!prefs.url_grabber)
|
/* we don't need any URLs if we have neither URL grabbing nor URL logging enabled */
|
||||||
|
if (!prefs.url_grabber && !prefs.url_logging)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
data = malloc (len + 1);
|
data = malloc (len + 1);
|
||||||
if (!data)
|
if (!data)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
memcpy (data, urltext, len);
|
memcpy (data, urltext, len);
|
||||||
data[len] = 0;
|
data[len] = 0;
|
||||||
|
|
||||||
|
@ -108,7 +123,21 @@ url_add (char *urltext, int len)
|
||||||
}
|
}
|
||||||
/* chop trailing ) but only if there's no counterpart */
|
/* chop trailing ) but only if there's no counterpart */
|
||||||
if (data[len - 1] == ')' && strchr (data, '(') == NULL)
|
if (data[len - 1] == ')' && strchr (data, '(') == NULL)
|
||||||
|
{
|
||||||
data[len - 1] = 0;
|
data[len - 1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prefs.url_logging)
|
||||||
|
{
|
||||||
|
url_save_node (data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the URL is saved already, only continue if we need the URL grabber too */
|
||||||
|
if (!prefs.url_grabber)
|
||||||
|
{
|
||||||
|
free (data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!url_tree)
|
if (!url_tree)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,8 +13,7 @@ extern void *url_tree;
|
||||||
#define WORD_PATH -2
|
#define WORD_PATH -2
|
||||||
|
|
||||||
void url_clear (void);
|
void url_clear (void);
|
||||||
void url_save (const char *fname, const char *mode, gboolean fullpath);
|
void url_save_tree (const char *fname, const char *mode, gboolean fullpath);
|
||||||
void url_autosave (void);
|
|
||||||
int url_check_word (char *word, int len);
|
int url_check_word (char *word, int len);
|
||||||
void url_check_line (char *buf, int len);
|
void url_check_line (char *buf, int len);
|
||||||
|
|
||||||
|
|
|
@ -854,11 +854,6 @@ xchat_exit (void)
|
||||||
pevent_save (NULL);
|
pevent_save (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefs.autosave_url)
|
|
||||||
{
|
|
||||||
url_autosave ();
|
|
||||||
}
|
|
||||||
|
|
||||||
sound_save ();
|
sound_save ();
|
||||||
notify_save ();
|
notify_save ();
|
||||||
ignore_save ();
|
ignore_save ();
|
||||||
|
|
|
@ -209,7 +209,6 @@ struct xchatprefs
|
||||||
unsigned int perc_color;
|
unsigned int perc_color;
|
||||||
unsigned int perc_ascii;
|
unsigned int perc_ascii;
|
||||||
unsigned int autodialog;
|
unsigned int autodialog;
|
||||||
unsigned int autosave_url;
|
|
||||||
unsigned int autoreconnect;
|
unsigned int autoreconnect;
|
||||||
unsigned int autoreconnectonfail;
|
unsigned int autoreconnectonfail;
|
||||||
unsigned int invisible;
|
unsigned int invisible;
|
||||||
|
@ -323,6 +322,7 @@ struct xchatprefs
|
||||||
|
|
||||||
unsigned int url_grabber;
|
unsigned int url_grabber;
|
||||||
unsigned int url_grabber_limit;
|
unsigned int url_grabber_limit;
|
||||||
|
unsigned int url_logging;
|
||||||
/* Tells us if we need to save, only when they've been edited.
|
/* Tells us if we need to save, only when they've been edited.
|
||||||
This is so that we continue using internal defaults (which can
|
This is so that we continue using internal defaults (which can
|
||||||
change in the next release) until the user edits them. */
|
change in the next release) until the user edits them. */
|
||||||
|
|
|
@ -489,9 +489,10 @@ static const setting logging_settings[] =
|
||||||
{ST_LABEL, N_("See the strftime manpage for details.")},
|
{ST_LABEL, N_("See the strftime manpage for details.")},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{ST_HEADER, N_("URL Grabber"),0,0,0},
|
{ST_HEADER, N_("URLs"),0,0,0},
|
||||||
|
{ST_TOGGLE, N_("Enable logging of URLs to disk"), P_OFFINTNL(url_logging), 0, 0, 0},
|
||||||
{ST_TOGGLE, N_("Enable URL grabber"), P_OFFINTNL(url_grabber), 0, 0, 2},
|
{ST_TOGGLE, N_("Enable URL grabber"), P_OFFINTNL(url_grabber), 0, 0, 2},
|
||||||
{ST_NUMBER, N_("Maximum number of URLs:"), P_OFFINTNL(url_grabber_limit), 0, 0, 9999},
|
{ST_NUMBER, N_("Maximum number of URLs to grab:"), P_OFFINTNL(url_grabber_limit), 0, 0, 9999},
|
||||||
|
|
||||||
{ST_END, 0, 0, 0, 0, 0}
|
{ST_END, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
|
@ -138,7 +138,9 @@ static void
|
||||||
url_save_callback (void *arg1, char *file)
|
url_save_callback (void *arg1, char *file)
|
||||||
{
|
{
|
||||||
if (file)
|
if (file)
|
||||||
url_save (file, "w", TRUE);
|
{
|
||||||
|
url_save_tree (file, "w", TRUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue