mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
Patch by jimmy: Details In 0.8.9 it is not possible to log all activity on a given
server; you must confine the logging to a window or a set of targets. This patch adds a default "*" target which matches everything on the server, including NULL items associated with it: git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3282 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
334b07ac28
commit
924ac8f91f
@ -246,18 +246,34 @@ void log_write_rec(LOG_REC *log, const char *str, int level)
|
|||||||
g_free_not_null(colorstr);
|
g_free_not_null(colorstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int itemcmp(const char *patt, const char *item)
|
||||||
|
{
|
||||||
|
/* returns 0 on match, nonzero otherwise */
|
||||||
|
|
||||||
|
if (item == NULL)
|
||||||
|
return g_strcasecmp(patt, "*") != 0;
|
||||||
|
|
||||||
|
for (;*patt != '\0'; patt++, item++)
|
||||||
|
{
|
||||||
|
if (*patt == '*')
|
||||||
|
return 0;
|
||||||
|
if (*patt != *item)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
LOG_ITEM_REC *log_item_find(LOG_REC *log, int type, const char *item,
|
LOG_ITEM_REC *log_item_find(LOG_REC *log, int type, const char *item,
|
||||||
const char *servertag)
|
const char *servertag)
|
||||||
{
|
{
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
|
|
||||||
g_return_val_if_fail(log != NULL, NULL);
|
g_return_val_if_fail(log != NULL, NULL);
|
||||||
g_return_val_if_fail(item != NULL, NULL);
|
|
||||||
|
|
||||||
for (tmp = log->items; tmp != NULL; tmp = tmp->next) {
|
for (tmp = log->items; tmp != NULL; tmp = tmp->next) {
|
||||||
LOG_ITEM_REC *rec = tmp->data;
|
LOG_ITEM_REC *rec = tmp->data;
|
||||||
|
|
||||||
if (rec->type == type && g_strcasecmp(rec->name, item) == 0 &&
|
if (rec->type == type && itemcmp(rec->name, item) == 0 &&
|
||||||
(rec->servertag == NULL || (servertag != NULL &&
|
(rec->servertag == NULL || (servertag != NULL &&
|
||||||
g_strcasecmp(rec->servertag, servertag) == 0)))
|
g_strcasecmp(rec->servertag, servertag) == 0)))
|
||||||
return rec;
|
return rec;
|
||||||
|
@ -109,6 +109,8 @@ static void cmd_log_open(const char *data)
|
|||||||
targetarg = g_hash_table_lookup(optlist, "targets");
|
targetarg = g_hash_table_lookup(optlist, "targets");
|
||||||
if (targetarg != NULL && *targetarg != '\0')
|
if (targetarg != NULL && *targetarg != '\0')
|
||||||
log_add_targets(log, targetarg, servertag);
|
log_add_targets(log, targetarg, servertag);
|
||||||
|
else if (servertag != NULL)
|
||||||
|
log_add_targets(log, "*", servertag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_hash_table_lookup(optlist, "autoopen"))
|
if (g_hash_table_lookup(optlist, "autoopen"))
|
||||||
@ -189,17 +191,20 @@ static char *log_items_get_list(LOG_REC *log)
|
|||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
GString *str;
|
GString *str;
|
||||||
char *ret;
|
char *ret;
|
||||||
|
LOG_ITEM_REC *rec;
|
||||||
|
|
||||||
g_return_val_if_fail(log != NULL, NULL);
|
g_return_val_if_fail(log != NULL, NULL);
|
||||||
g_return_val_if_fail(log->items != NULL, NULL);
|
g_return_val_if_fail(log->items != NULL, NULL);
|
||||||
|
|
||||||
str = g_string_new(NULL);
|
str = g_string_new(NULL);
|
||||||
for (tmp = log->items; tmp != NULL; tmp = tmp->next) {
|
for (tmp = log->items; tmp != NULL; tmp = tmp->next) {
|
||||||
LOG_ITEM_REC *rec = tmp->data;
|
rec = tmp->data;
|
||||||
|
|
||||||
g_string_sprintfa(str, "%s, ", rec->name);
|
g_string_sprintfa(str, "%s, ", rec->name);
|
||||||
}
|
}
|
||||||
g_string_truncate(str, str->len-2);
|
g_string_truncate(str, str->len-2);
|
||||||
|
if(rec->servertag != NULL)
|
||||||
|
g_string_sprintfa(str, " (%s)", rec->servertag);
|
||||||
|
|
||||||
ret = str->str;
|
ret = str->str;
|
||||||
g_string_free(str, FALSE);
|
g_string_free(str, FALSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user