/* * NOTE: _init needs to be idempotent when called multiple times w/o invoking _destroy * * Rationale: * - init is called from driver init (e.g. affile_sd_init), * - destroy is called from driver free method (e.g. affile_sd_free, NOT affile_sd_deinit) * * The reason: * - when initializing the reloaded configuration fails for some reason, * we have to fall back to the old configuration, thus we cannot dump * the information stored in the Options structure at deinit time, but * have to recover it when the old configuration is initialized. * * For the reasons above, init and destroy behave the following way: * * - init is idempotent, it can be called multiple times without leaking * memory, and without loss of information * - destroy is only called once, when the options are indeed to be destroyed * * Also important to note is that when init is called multiple times, the * GlobalConfig reference is the same, this means that it is enough to * remember whether init was called already and return w/o doing anything in * that case, which is actually how idempotency is implemented here. */ void log_reader_options_init(LogReaderOptions *options, GlobalConfig *cfg, const gchar *group_name) { if (options->initialized) return; log_source_options_init(&options->super, cfg, group_name); log_proto_server_options_init(&options->proto_options.super, cfg); msg_format_options_init(&options->parse_options, cfg); if (options->check_hostname == -1) options->check_hostname = cfg->check_hostname; if (options->check_hostname) { options->parse_options.flags |= LP_CHECK_HOSTNAME; } if (options->parse_options.default_pri == 0xFFFF) { if (options->flags & LR_KERNEL) options->parse_options.default_pri = LOG_KERN | LOG_NOTICE; else options->parse_options.default_pri = LOG_USER | LOG_NOTICE; } if (options->proto_options.super.encoding) options->parse_options.flags |= LP_ASSUME_UTF8; if (cfg->threaded) options->flags |= LR_THREADED; options->initialized = TRUE; }
int main(int argc, char *argv[]) { GPtrArray *transformers; app_startup(); putenv("TZ=MET-1METDST"); tzset(); configuration = cfg_new(0x0302); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); parse_options.flags |= LP_SYSLOG_PROTOCOL; testcase("rfc3164", NULL, "DATE,FACILITY,HOST,MESSAGE,PID,PRIORITY,PROGRAM", NULL); testcase("core", NULL, "DATE,FACILITY,HOST,MESSAGE,PID,PRIORITY,PROGRAM", NULL); testcase("base", NULL, "DATE,FACILITY,HOST,MESSAGE,PID,PRIORITY,PROGRAM", NULL); testcase("rfc5424", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip,DATE,FACILITY,HOST,MESSAGE,MSGID,PID,PRIORITY,PROGRAM", NULL); testcase("syslog-proto", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip,DATE,FACILITY,HOST,MESSAGE,MSGID,PID,PRIORITY,PROGRAM", NULL); testcase("selected-macros", NULL, "DATE,FACILITY,HOST,MESSAGE,PID,PRIORITY,PROGRAM,SEQNUM,SOURCEIP,TAGS", NULL); testcase("nv-pairs", NULL, "HOST,MESSAGE,MSGID,PID,PROGRAM", NULL); testcase("dot-nv-pairs", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip", NULL); testcase("sdata", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip", NULL); testcase("all-nv-pairs", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip,HOST,MESSAGE,MSGID,PID,PROGRAM", NULL); testcase("everything", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip,AMPM,BSDTAG,C_DATE,C_DAY,C_FULLDATE,C_HOUR,C_ISODATE,C_MIN,C_MONTH,C_MONTH_ABBREV,C_MONTH_NAME,C_MONTH_WEEK,C_SEC,C_STAMP,C_TZ,C_TZOFFSET,C_UNIXTIME,C_WEEK,C_WEEKDAY,C_WEEK_DAY,C_WEEK_DAY_ABBREV,C_WEEK_DAY_NAME,C_YEAR,C_YEAR_DAY,DATE,DAY,FACILITY,FACILITY_NUM,FULLDATE,HOST,HOUR,HOUR12,ISODATE,LEVEL,LEVEL_NUM,LOGHOST,MESSAGE,MIN,MONTH,MONTH_ABBREV,MONTH_NAME,MONTH_WEEK,MSEC,MSG,MSGHDR,MSGID,PID,PRI,PRIORITY,PROGRAM,R_AMPM,R_DATE,R_DAY,R_FULLDATE,R_HOUR,R_HOUR12,R_ISODATE,R_MIN,R_MONTH,R_MONTH_ABBREV,R_MONTH_NAME,R_MONTH_WEEK,R_MSEC,R_SEC,R_STAMP,R_TZ,R_TZOFFSET,R_UNIXTIME,R_USEC,R_WEEK,R_WEEKDAY,R_WEEK_DAY,R_WEEK_DAY_ABBREV,R_WEEK_DAY_NAME,R_YEAR,R_YEAR_DAY,SDATA,SEC,SEQNUM,SOURCEIP,STAMP,SYSUPTIME,S_AMPM,S_DATE,S_DAY,S_FULLDATE,S_HOUR,S_HOUR12,S_ISODATE,S_MIN,S_MONTH,S_MONTH_ABBREV,S_MONTH_NAME,S_MONTH_WEEK,S_MSEC,S_SEC,S_STAMP,S_TZ,S_TZOFFSET,S_UNIXTIME,S_USEC,S_WEEK,S_WEEKDAY,S_WEEK_DAY,S_WEEK_DAY_ABBREV,S_WEEK_DAY_NAME,S_YEAR,S_YEAR_DAY,TAG,TAGS,TZ,TZOFFSET,UNIXTIME,USEC,WEEK,WEEKDAY,WEEK_DAY,WEEK_DAY_ABBREV,WEEK_DAY_NAME,YEAR,YEAR_DAY", NULL); testcase("nv-pairs", ".SDATA.*", "HOST,MESSAGE,MSGID,PID,PROGRAM", NULL); /* tests that the exclude patterns do not affect explicitly added * keys. The testcase function adds a "test.key" and then checks if * it is indeed present. Even if it would be excluded it still has * to be in the result set. */ testcase("rfc3164", "test.*", "DATE,FACILITY,HOST,MESSAGE,PID,PRIORITY,PROGRAM", NULL); /* tests that excluding works even when the key would be in the * default set. */ testcase("nv-pairs", "MESSAGE", "HOST,MSGID,PID,PROGRAM", NULL); /* test the value-pair transformators */ transformers = g_ptr_array_new(); g_ptr_array_add(transformers, value_pairs_new_transform_add_prefix("__")); g_ptr_array_add(transformers, value_pairs_new_transform_shift(2)); g_ptr_array_add(transformers, value_pairs_new_transform_replace("C_", "CC_")); testcase("everything", NULL, "[email protected],[email protected],.SDATA.meta.sequenceId,.SDATA.meta.sysUpTime,.SDATA.origin.ip,AMPM,BSDTAG,CC_DATE,CC_DAY,CC_FULLDATE,CC_HOUR,CC_ISODATE,CC_MIN,CC_MONTH,CC_MONTH_ABBREV,CC_MONTH_NAME,CC_MONTH_WEEK,CC_SEC,CC_STAMP,CC_TZ,CC_TZOFFSET,CC_UNIXTIME,CC_WEEK,CC_WEEKDAY,CC_WEEK_DAY,CC_WEEK_DAY_ABBREV,CC_WEEK_DAY_NAME,CC_YEAR,CC_YEAR_DAY,DATE,DAY,FACILITY,FACILITY_NUM,FULLDATE,HOST,HOUR,HOUR12,ISODATE,LEVEL,LEVEL_NUM,LOGHOST,MESSAGE,MIN,MONTH,MONTH_ABBREV,MONTH_NAME,MONTH_WEEK,MSEC,MSG,MSGHDR,MSGID,PID,PRI,PRIORITY,PROGRAM,R_AMPM,R_DATE,R_DAY,R_FULLDATE,R_HOUR,R_HOUR12,R_ISODATE,R_MIN,R_MONTH,R_MONTH_ABBREV,R_MONTH_NAME,R_MONTH_WEEK,R_MSEC,R_SEC,R_STAMP,R_TZ,R_TZOFFSET,R_UNIXTIME,R_USEC,R_WEEK,R_WEEKDAY,R_WEEK_DAY,R_WEEK_DAY_ABBREV,R_WEEK_DAY_NAME,R_YEAR,R_YEAR_DAY,SDATA,SEC,SEQNUM,SOURCEIP,STAMP,SYSUPTIME,S_AMPM,S_DATE,S_DAY,S_FULLDATE,S_HOUR,S_HOUR12,S_ISODATE,S_MIN,S_MONTH,S_MONTH_ABBREV,S_MONTH_NAME,S_MONTH_WEEK,S_MSEC,S_SEC,S_STAMP,S_TZ,S_TZOFFSET,S_UNIXTIME,S_USEC,S_WEEK,S_WEEKDAY,S_WEEK_DAY,S_WEEK_DAY_ABBREV,S_WEEK_DAY_NAME,S_YEAR,S_YEAR_DAY,TAG,TAGS,TZ,TZOFFSET,UNIXTIME,USEC,WEEK,WEEKDAY,WEEK_DAY,WEEK_DAY_ABBREV,WEEK_DAY_NAME,YEAR,YEAR_DAY", transformers); g_ptr_array_free(transformers, TRUE); app_shutdown(); if (success) return 0; return 1; }
void init_and_load_syslogformat_module() { configuration = cfg_new(0x0302); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); }
void init_and_load_kmsgformat_module() { configuration = cfg_new(VERSION_VALUE); plugin_load_module("linux-kmsg-format", configuration, NULL); parse_options.format = "linux-kmsg"; msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); }
void init_and_load_kmsgformat_module(void) { configuration = cfg_new_snippet(); cfg_load_module(configuration, "linux-kmsg-format"); parse_options.format = "linux-kmsg"; msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); }
int main() { app_startup(); configuration = cfg_new(0x0303); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); test_value_pairs_walk_prefix_data(configuration); app_shutdown(); };
int main() { app_startup(); configuration = cfg_new(0x0201); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); frequent_words_tests(); find_clusters_slct_tests(); log_tags_global_deinit(); return (fail ? 1 : 0); }
int main() { app_startup(); setlocale (LC_ALL, "C"); putenv("TZ=CET-1"); tzset(); configuration = cfg_new(0x0302); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); /* Various ISO8601 formats */ testcase("2015-01-26T16:14:49+03:00", 0, NULL, NULL, "2015-01-26T16:14:49+03:00"); // testcase("2015-01-26T16:14:49+03:30", 0, NULL, NULL, "2015-01-26T16:14:49+03:30"); testcase("2015-01-26T16:14:49+0200", 0, NULL, NULL, "2015-01-26T16:14:49+02:00"); // testcase("2015-01-26T16:14:49Z", 0, NULL, NULL, "2015-01-26T16:14:49+00:00"); /* RFC 2822 */ testcase("Tue, 27 Jan 2015 11:48:46 +0200", 0, NULL, "%a, %d %b %Y %T %z", "2015-01-27T11:48:46+02:00"); /* Apache-like */ testcase("21/Jan/2015:14:40:07 +0500", 0, NULL, "%d/%b/%Y:%T %z", "2015-01-21T14:40:07+05:00"); /* Try with additional text at the end */ testcase("2015-01-26T16:14:49+03:00 Disappointing log file", 0, NULL, NULL, "2015-01-26T16:14:49+03:00"); /* Try with offset */ testcase("<34> 2015-01-26T16:14:49+03:00 Disappointing log file", 5, NULL, NULL, "2015-01-26T16:14:49+03:00"); /* Dates without timezones. America/Phoenix has no DST */ testcase("Tue, 27 Jan 2015 11:48:46", 0, NULL, "%a, %d %b %Y %T", "2015-01-27T11:48:46+00:00"); testcase("Tue, 27 Jan 2015 11:48:46", 0, "America/Phoenix", "%a, %d %b %Y %T", "2015-01-27T11:48:46-07:00"); testcase("Tue, 27 Jan 2015 11:48:46", 0, "+05:00", "%a, %d %b %Y %T", "2015-01-27T11:48:46+05:00"); /* Try without the year. */ testcase("01/Jul:00:40:07 +0500", 0, NULL, "%d/%b:%T %z", "2015-07-01T00:40:07+05:00"); testcase("01/Aug:00:40:07 +0500", 0, NULL, "%d/%b:%T %z", "2015-08-01T00:40:07+05:00"); testcase("01/Sep:00:40:07 +0500", 0, NULL, "%d/%b:%T %z", "2015-09-01T00:40:07+05:00"); testcase("01/Oct:00:40:07 +0500", 0, NULL, "%d/%b:%T %z", "2014-10-01T00:40:07+05:00"); testcase("01/Nov:00:40:07 +0500", 0, NULL, "%d/%b:%T %z", "2014-11-01T00:40:07+05:00"); app_shutdown(); return 0; };
void test_value_pairs_walk_prefix_data(GlobalConfig *cfg) { ValuePairs *vp; LogMessage *msg; const char* value = "value"; log_template_options_init(&template_options, cfg); msg_format_options_init(&parse_options, cfg); vp = value_pairs_new(); value_pairs_add_glob_pattern(vp, "root.*", TRUE); msg = log_msg_new("test", 4, NULL, &parse_options); log_msg_set_value_by_name(msg, "root.test.alma", value, strlen(value)); log_msg_set_value_by_name(msg, "root.test.korte", value, strlen(value)); value_pairs_walk(vp, test_vp_obj_start, test_vp_value, test_vp_obj_stop, msg, 0, LTZ_LOCAL, &template_options, NULL); value_pairs_unref(vp); log_msg_unref(msg); };
int main() { app_startup(); putenv("TZ=MET-1METDST"); tzset(); configuration = cfg_new(0x0302); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); fprintf(stderr,"Start testcase_with_threads\n"); testcase_with_threads(); #if 1 fprintf(stderr,"Start testcase_zero_diskbuf_alternating_send_acks\n"); testcase_zero_diskbuf_alternating_send_acks(); fprintf(stderr,"Start testcase_zero_diskbuf_and_normal_acks\n"); testcase_zero_diskbuf_and_normal_acks(); #endif return 0; }
gint main(gint argc, gchar **argv) { app_startup(); putenv("TZ=MET-1METDST"); tzset(); configuration = cfg_new(0x0308); plugin_load_module("syslogformat", configuration, NULL); plugin_load_module("disk-buffer", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); set_mark_message_serialized_size(); test_over_EOF(); test_rewind_backlog(); cfg_free(configuration); app_shutdown(); return 0; }
/* * NOTE: options_init and options_destroy are a bit weird, because their * invocation is not completely symmetric: * * - init is called from driver init (e.g. affile_sd_init), * - destroy is called from driver free method (e.g. affile_sd_free, NOT affile_sd_deinit) * * The reason: * - when initializing the reloaded configuration fails for some reason, * we have to fall back to the old configuration, thus we cannot dump * the information stored in the Options structure. * * For the reasons above, init and destroy behave the following way: * * - init is idempotent, it can be called multiple times without leaking * memory, and without loss of information * - destroy is only called once, when the options are indeed to be destroyed * * As init allocates memory, it has to take care about freeing memory * allocated by the previous init call (or it has to reuse those). * */ void log_reader_options_init(LogReaderOptions *options, GlobalConfig *cfg, const gchar *group_name) { gchar *recv_time_zone; TimeZoneInfo *recv_time_zone_info; gchar *host_override, *program_override, *text_encoding, *format; MsgFormatHandler *format_handler; GArray *tags; recv_time_zone = options->parse_options.recv_time_zone; options->parse_options.recv_time_zone = NULL; recv_time_zone_info = options->parse_options.recv_time_zone_info; options->parse_options.recv_time_zone_info = NULL; text_encoding = options->text_encoding; options->text_encoding = NULL; /* NOTE: having to save super's variables is a crude hack, but I know of * no other way to do it in the scheme described above. Be sure that you * know what you are doing when you modify this code. */ tags = options->super.tags; options->super.tags = NULL; host_override = options->super.host_override; options->super.host_override = NULL; program_override = options->super.program_override; options->super.program_override = NULL; format = options->parse_options.format; options->parse_options.format = NULL; format_handler = options->parse_options.format_handler; options->parse_options.format_handler = NULL; /*********************************************************************** * PLEASE NOTE THIS. please read the comment at the top of the function ***********************************************************************/ log_reader_options_destroy(options); options->parse_options.format = format; options->parse_options.format_handler = format_handler; options->super.host_override = host_override; options->super.program_override = program_override; options->super.tags = tags; options->parse_options.recv_time_zone = recv_time_zone; options->parse_options.recv_time_zone_info = recv_time_zone_info; options->text_encoding = text_encoding; options->parse_options.format = format; log_source_options_init(&options->super, cfg, group_name); msg_format_options_init(&options->parse_options, cfg); if (options->msg_size == -1) options->msg_size = cfg->log_msg_size; if (options->follow_freq == -1) options->follow_freq = cfg->follow_freq; if (options->check_hostname == -1) options->check_hostname = cfg->check_hostname; if (options->check_hostname) { options->parse_options.flags |= LP_CHECK_HOSTNAME; } if (options->parse_options.default_pri == 0xFFFF) { if (options->flags & LR_KERNEL) options->parse_options.default_pri = LOG_KERN | LOG_NOTICE; else options->parse_options.default_pri = LOG_USER | LOG_NOTICE; } if (options->text_encoding) options->parse_options.flags |= LP_ASSUME_UTF8; if (cfg->threaded) options->flags |= LR_THREADED; }
int main() { app_startup(); configuration = cfg_new(0x0302); plugin_load_module("syslogformat", configuration, NULL); msg_format_options_defaults(&parse_options); msg_format_options_init(&parse_options, configuration); /* POSIX regexp */ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "árvíz", "favíz", "favíztűrőtükörfúrógép", 0, log_matcher_posix_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "^tűrő", "faró", "árvíztűrőtükörfúrógép", 0, log_matcher_posix_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "tűrő", "", "árvíztükörfúrógép", 0, log_matcher_posix_re_new()); /* back references are not portable, they work only on Linux */ #if __linux__ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "(wiki)\\1", "", "", LMF_STORE_MATCHES, log_matcher_posix_re_new()); #endif testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "wi", "", "kiki", LMF_GLOBAL, log_matcher_posix_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "wi", "kuku", "kukukikukuki", LMF_GLOBAL, log_matcher_posix_re_new()); /* empty match with global flag*/ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa bb", "c*", "#", "#a#a# #b#b#", LMF_GLOBAL, log_matcher_posix_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa bb", "a*", "#", "# #b#b#", LMF_GLOBAL, log_matcher_posix_re_new()); /* string match */ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "árvíz", "favíz", "favíztűrőtükörfúrógép", LMF_PREFIX, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "tűrő", "faró", "árvízfarótükörfúrógép", LMF_SUBSTRING, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "tűrő", "", "árvíztükörfúrógép", LMF_SUBSTRING, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "árvíztűrőtükörfúrógép", "almafa", "almafa", 0, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: ", "valami-amivel-nem-szabadna-matchelni", "almafa", "", 0, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: val", "valami-amivel-nem-szabadna-matchelni", 0, FALSE, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: ", "valami-amivel-nem-szabadna-matchelni", 0, FALSE, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: ", "valami-amivel-nem-szabadna-matchelni", LMF_PREFIX, 0, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: ", "valami-amivel-nem-szabadna-matchelni", LMF_SUBSTRING, 0, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: match", "match", 0, TRUE, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: match", "ma", LMF_PREFIX, TRUE, log_matcher_string_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: match", "tch", LMF_SUBSTRING, TRUE, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: abcdef", "ABCDEF", "qwerty", "qwerty", LMF_PREFIX | LMF_ICASE, log_matcher_string_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: abcdef", "BCD", "qwerty", "aqwertyef", LMF_SUBSTRING | LMF_ICASE, log_matcher_string_new()); /* glob match */ testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "árvíz*", 0, TRUE, log_matcher_glob_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "*fúrógép", 0, TRUE, log_matcher_glob_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "*fúró*", 0, TRUE, log_matcher_glob_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "tükör", 0, FALSE, log_matcher_glob_new()); testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "viziló", 0, FALSE, log_matcher_glob_new()); /* match in iso-8859-2 never matches */ testcase_match("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: \xe1rv\xedzt\xfbr\xf5t\xfck\xf6rf\xfar\xf3g\xe9p", "\xe1rv\xed*", 0, FALSE, log_matcher_glob_new()); #if ENABLE_PCRE testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "árvíz", "favíz", "favíztűrőtükörfúrógép", 0, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "^tűrő", "faró", "árvíztűrőtükörfúrógép", 0, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: árvíztűrőtükörfúrógép", "tűrő", "", "árvíztükörfúrógép", 0, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "(wiki)\\1", "", "", 0, log_matcher_pcre_re_new()); /* back ref with perl style $1 */ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "(wiki).+", "#$1#", "#wiki#", 0, log_matcher_pcre_re_new()); /* empty match with global flag*/ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa bb", "c*", "#", "#a#a# #b#b#", LMF_GLOBAL, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa bb", "a*", "?", "?? ?b?b?", LMF_GLOBAL, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa", "aa|b*", "@", "@@", LMF_GLOBAL, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa", "aa|b*", "@", "@", 0, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa", "b*|aa", "@", "@@@", LMF_GLOBAL, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: aa", "b*|aa", "@", "@aa", 0, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "wi", "", "kiki", LMF_GLOBAL, log_matcher_pcre_re_new()); testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "wi", "kuku", "kukukikukuki", LMF_GLOBAL, log_matcher_pcre_re_new()); /* this tests a pcre 8.12 incompatibility */ testcase_replace("<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]: wikiwiki", "([[:digit:]]{1,3}\\.){3}[[:digit:]]{1,3}", "foo", "wikiwiki", LMF_GLOBAL, log_matcher_pcre_re_new()); #endif return 0; }