~ubuntu-branches/ubuntu/wily/weechat/wily

« back to all changes in this revision

Viewing changes to src/plugins/logger/logger.c

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bouthenot
  • Date: 2014-02-13 12:11:54 UTC
  • mfrom: (29.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20140213121154-k6sdmtnralvjbmgq
Tags: 0.4.3-2
* Add missing symlink for Polish manpage
* Change ruby-* Build-Depends to gem2deb so that ruby plugin will be
  built against the newest Ruby interpreter available (Closes: #738685)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 * logger.c - logger plugin for WeeChat: save buffer lines to disk files
3
3
 *
4
 
 * Copyright (C) 2003-2013 Sebastien Helleu <flashcode@flashtux.org>
 
4
 * Copyright (C) 2003-2014 Sébastien Helleu <flashcode@flashtux.org>
5
5
 *
6
6
 * This file is part of WeeChat, the extensible chat client.
7
7
 *
47
47
 
48
48
WEECHAT_PLUGIN_NAME(LOGGER_PLUGIN_NAME);
49
49
WEECHAT_PLUGIN_DESCRIPTION(N_("Log buffers to files"));
50
 
WEECHAT_PLUGIN_AUTHOR("Sebastien Helleu <flashcode@flashtux.org>");
 
50
WEECHAT_PLUGIN_AUTHOR("Sébastien Helleu <flashcode@flashtux.org>");
51
51
WEECHAT_PLUGIN_VERSION(WEECHAT_VERSION);
52
52
WEECHAT_PLUGIN_LICENSE(WEECHAT_LICENSE);
53
53
 
317
317
logger_get_mask_expanded (struct t_gui_buffer *buffer, const char *mask)
318
318
{
319
319
    char *mask2, *mask_decoded, *mask_decoded2, *mask_decoded3, *mask_decoded4;
 
320
    char *mask_decoded5;
320
321
    const char *dir_separator;
321
322
    int length;
322
323
    time_t seconds;
327
328
    mask_decoded2 = NULL;
328
329
    mask_decoded3 = NULL;
329
330
    mask_decoded4 = NULL;
 
331
    mask_decoded5 = NULL;
330
332
 
331
333
    dir_separator = weechat_info_get ("dir_separator", "");
332
334
    if (!dir_separator)
351
353
    if (!mask_decoded2)
352
354
        goto end;
353
355
 
 
356
#ifdef __CYGWIN__
 
357
    mask_decoded3 = weechat_string_replace (mask_decoded2, "\\",
 
358
                                            weechat_config_string (logger_config_file_replacement_char));
 
359
#else
 
360
    mask_decoded3 = strdup (mask_decoded2);
 
361
#endif
 
362
    if (!mask_decoded3)
 
363
        goto end;
 
364
 
354
365
    /* restore directory separator */
355
 
    mask_decoded3 = weechat_string_replace (mask_decoded2,
 
366
    mask_decoded4 = weechat_string_replace (mask_decoded3,
356
367
                                            "\01", dir_separator);
357
 
    if (!mask_decoded3)
 
368
    if (!mask_decoded4)
358
369
        goto end;
359
370
 
360
371
    /* replace date/time specifiers in mask */
361
 
    length = strlen (mask_decoded3) + 256 + 1;
362
 
    mask_decoded4 = malloc (length);
363
 
    if (!mask_decoded4)
 
372
    length = strlen (mask_decoded4) + 256 + 1;
 
373
    mask_decoded5 = malloc (length);
 
374
    if (!mask_decoded5)
364
375
        goto end;
365
376
    seconds = time (NULL);
366
377
    date_tmp = localtime (&seconds);
367
 
    mask_decoded4[0] = '\0';
368
 
    strftime (mask_decoded4, length - 1, mask_decoded3, date_tmp);
 
378
    mask_decoded5[0] = '\0';
 
379
    strftime (mask_decoded5, length - 1, mask_decoded4, date_tmp);
369
380
 
370
381
    /* convert to lower case? */
371
382
    if (weechat_config_boolean (logger_config_file_name_lower_case))
372
 
        weechat_string_tolower (mask_decoded4);
 
383
        weechat_string_tolower (mask_decoded5);
373
384
 
374
385
    if (weechat_logger_plugin->debug)
375
386
    {
379
390
                             "decoded mask = \"%s\"",
380
391
                             LOGGER_PLUGIN_NAME,
381
392
                             weechat_buffer_get_string (buffer, "name"),
382
 
                             mask, mask_decoded4);
 
393
                             mask, mask_decoded5);
383
394
    }
384
395
 
385
396
end:
391
402
        free (mask_decoded2);
392
403
    if (mask_decoded3)
393
404
        free (mask_decoded3);
 
405
    if (mask_decoded4)
 
406
        free (mask_decoded4);
394
407
 
395
 
    return mask_decoded4;
 
408
    return mask_decoded5;
396
409
}
397
410
 
398
411
/*
1311
1324
    if (!logger_config_init ())
1312
1325
        return WEECHAT_RC_ERROR;
1313
1326
 
1314
 
    if (logger_config_read () < 0)
1315
 
        return WEECHAT_RC_ERROR;
 
1327
    logger_config_read ();
1316
1328
 
1317
1329
    /* command /logger */
1318
 
    weechat_hook_command ("logger",
1319
 
                          N_("logger plugin configuration"),
1320
 
                          N_("list"
1321
 
                             " || set <level>"
1322
 
                             " || flush"
1323
 
                             " || disable"),
1324
 
                          N_("   list: show logging status for opened buffers\n"
1325
 
                             "    set: set logging level on current buffer\n"
1326
 
                             "  level: level for messages to be logged (0 = "
1327
 
                             "logging disabled, 1 = a few messages (most "
1328
 
                             "important) .. 9 = all messages)\n"
1329
 
                             "  flush: write all log files now\n"
1330
 
                             "disable: disable logging on current buffer (set "
1331
 
                             "level to 0)\n\n"
1332
 
                             "Options \"logger.level.*\" and \"logger.mask.*\" "
1333
 
                             "can be used to set level or mask for a buffer, "
1334
 
                             "or buffers beginning with name.\n\n"
1335
 
                             "Log levels used by IRC plugin:\n"
1336
 
                             "  1: user message, notice, private\n"
1337
 
                             "  2: nick change\n"
1338
 
                             "  3: server message\n"
1339
 
                             "  4: join/part/quit\n"
1340
 
                             "  9: all other messages\n\n"
1341
 
                             "Examples:\n"
1342
 
                             "  set level to 5 for current buffer:\n"
1343
 
                             "    /logger set 5\n"
1344
 
                             "  disable logging for current buffer:\n"
1345
 
                             "    /logger disable\n"
1346
 
                             "  set level to 3 for all IRC buffers:\n"
1347
 
                             "    /set logger.level.irc 3\n"
1348
 
                             "  disable logging for main WeeChat buffer:\n"
1349
 
                             "    /set logger.level.core.weechat 0\n"
1350
 
                             "  use a directory per IRC server and a file per "
1351
 
                             "channel inside:\n"
1352
 
                             "    /set logger.mask.irc \"$server/$channel.weechatlog\""),
1353
 
                          "list"
1354
 
                          " || set 1|2|3|4|5|6|7|8|9"
1355
 
                          " || flush"
1356
 
                          " || disable",
1357
 
                          &logger_command_cb, NULL);
 
1330
    weechat_hook_command (
 
1331
        "logger",
 
1332
        N_("logger plugin configuration"),
 
1333
        N_("list"
 
1334
           " || set <level>"
 
1335
           " || flush"
 
1336
           " || disable"),
 
1337
        N_("   list: show logging status for opened buffers\n"
 
1338
           "    set: set logging level on current buffer\n"
 
1339
           "  level: level for messages to be logged (0 = logging disabled, "
 
1340
           "1 = a few messages (most important) .. 9 = all messages)\n"
 
1341
           "  flush: write all log files now\n"
 
1342
           "disable: disable logging on current buffer (set level to 0)\n"
 
1343
           "\n"
 
1344
           "Options \"logger.level.*\" and \"logger.mask.*\" can be used to set "
 
1345
           "level or mask for a buffer, or buffers beginning with name.\n"
 
1346
           "\n"
 
1347
           "Log levels used by IRC plugin:\n"
 
1348
           "  1: user message, notice, private\n"
 
1349
           "  2: nick change\n"
 
1350
           "  3: server message\n"
 
1351
           "  4: join/part/quit\n"
 
1352
           "  9: all other messages\n"
 
1353
           "\n"
 
1354
           "Examples:\n"
 
1355
           "  set level to 5 for current buffer:\n"
 
1356
           "    /logger set 5\n"
 
1357
           "  disable logging for current buffer:\n"
 
1358
           "    /logger disable\n"
 
1359
           "  set level to 3 for all IRC buffers:\n"
 
1360
           "    /set logger.level.irc 3\n"
 
1361
           "  disable logging for main WeeChat buffer:\n"
 
1362
           "    /set logger.level.core.weechat 0\n"
 
1363
           "  use a directory per IRC server and a file per channel inside:\n"
 
1364
           "    /set logger.mask.irc \"$server/$channel.weechatlog\""),
 
1365
        "list"
 
1366
        " || set 1|2|3|4|5|6|7|8|9"
 
1367
        " || flush"
 
1368
        " || disable",
 
1369
        &logger_command_cb, NULL);
1358
1370
 
1359
1371
    logger_start_buffer_all (1);
1360
1372