~alivema4ever/ubuntu/trusty/weechat/lp-1299347-fix

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bouthenot
  • Date: 2013-05-21 19:44:31 UTC
  • mfrom: (1.1.24)
  • Revision ID: package-import@ubuntu.com-20130521194431-o1n165ouj17uk0q1
Tags: 0.4.1-1
* New upstream release
* Move guile build dependency from to guile-2.0-dev (previous versions are
  no longer supported).
* Add supported protocols in long description. Thanks to Jonas Smedegaard
  for the suggestion (Closes: #705216)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1172
1172
}
1173
1173
 
1174
1174
/*
1175
 
 * Gets log level for a line (using its tags).
 
1175
 * Gets info with tags of line: log level and if prefix is a nick.
1176
1176
 */
1177
1177
 
1178
 
int
1179
 
logger_line_log_level (int tags_count, const char **tags)
 
1178
void
 
1179
logger_get_line_tag_info (int tags_count, const char **tags,
 
1180
                          int *log_level, int *prefix_is_nick)
1180
1181
{
1181
 
    int i;
 
1182
    int i, log_level_set, prefix_is_nick_set;
 
1183
 
 
1184
    if (log_level)
 
1185
        *log_level = LOGGER_LEVEL_DEFAULT;
 
1186
    if (prefix_is_nick)
 
1187
        *prefix_is_nick = 0;
 
1188
 
 
1189
    log_level_set = 0;
 
1190
    prefix_is_nick_set = 0;
1182
1191
 
1183
1192
    for (i = 0; i < tags_count; i++)
1184
1193
    {
1185
 
        /* log disabled on line? return -1 */
1186
 
        if (strcmp (tags[i], "no_log") == 0)
1187
 
            return -1;
1188
 
 
1189
 
        /* log level for line? return it */
1190
 
        if (strncmp (tags[i], "log", 3) == 0)
1191
 
        {
1192
 
            if (isdigit ((unsigned char)tags[i][3]))
1193
 
            {
1194
 
                return (tags[i][3] - '0');
 
1194
        if (log_level && !log_level_set)
 
1195
        {
 
1196
            if (strcmp (tags[i], "no_log") == 0)
 
1197
            {
 
1198
                /* log disabled on line: set level to -1 */
 
1199
                *log_level = -1;
 
1200
                log_level_set = 1;
 
1201
            }
 
1202
            else if (strncmp (tags[i], "log", 3) == 0)
 
1203
            {
 
1204
                /* set log level for line */
 
1205
                if (isdigit ((unsigned char)tags[i][3]))
 
1206
                {
 
1207
                    *log_level = (tags[i][3] - '0');
 
1208
                    log_level_set = 1;
 
1209
                }
 
1210
            }
 
1211
        }
 
1212
        if (prefix_is_nick && !prefix_is_nick_set)
 
1213
        {
 
1214
            if (strncmp (tags[i], "prefix_nick", 11) == 0)
 
1215
            {
 
1216
                *prefix_is_nick = 1;
 
1217
                prefix_is_nick_set = 1;
1195
1218
            }
1196
1219
        }
1197
1220
    }
1198
 
 
1199
 
    /* return default log level for line */
1200
 
    return LOGGER_LEVEL_DEFAULT;
1201
1221
}
1202
1222
 
1203
1223
/*
1213
1233
    struct t_logger_buffer *ptr_logger_buffer;
1214
1234
    struct tm *date_tmp;
1215
1235
    char buf_time[256];
1216
 
    int line_log_level;
 
1236
    int line_log_level, prefix_is_nick;
1217
1237
 
1218
1238
    /* make C compiler happy */
1219
1239
    (void) data;
1220
1240
    (void) displayed;
1221
1241
    (void) highlight;
1222
1242
 
1223
 
    line_log_level = logger_line_log_level (tags_count, tags);
 
1243
    logger_get_line_tag_info (tags_count, tags, &line_log_level,
 
1244
                              &prefix_is_nick);
1224
1245
    if (line_log_level >= 0)
1225
1246
    {
1226
1247
        ptr_logger_buffer = logger_buffer_search_buffer (buffer);
1239
1260
            }
1240
1261
 
1241
1262
            logger_write_line (ptr_logger_buffer,
1242
 
                               "%s\t%s\t%s",
 
1263
                               "%s\t%s%s%s\t%s",
1243
1264
                               buf_time,
 
1265
                               (prefix && prefix_is_nick) ? weechat_config_string (logger_config_file_nick_prefix) : "",
1244
1266
                               (prefix) ? prefix : "",
 
1267
                               (prefix && prefix_is_nick) ? weechat_config_string (logger_config_file_nick_suffix) : "",
1245
1268
                               message);
1246
1269
        }
1247
1270
    }