X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/3d2e82c5729148f3f88fbb7de7e6dcbc20d0c867..8769407d774157072e36d23bc6cc831cadacb6bb:/src/exim_monitor/em_init.c diff --git a/src/exim_monitor/em_init.c b/src/exim_monitor/em_init.c index b834d9a2b..b9289715d 100644 --- a/src/exim_monitor/em_init.c +++ b/src/exim_monitor/em_init.c @@ -3,7 +3,9 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2009 */ +/* Copyright (c) The Exim Maintainers 2020 - 2021 */ /* See the file NOTICE for conditions of use and distribution. */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* This module contains code to initialize things from the environment and the arguments. */ @@ -31,7 +33,6 @@ int i; work. */ for (i = 0; i <= 1; i++) - { int first = 1; int count = 0; @@ -68,13 +69,18 @@ for (i = 0; i <= 1; i++) buffer[p-pp] = 0; if (first) { - int offset; - const uschar *error; - if (!(stripchart_regex[indx] = pcre_compile(CS buffer, PCRE_COPT, - CCSS &error, &offset, NULL))) + size_t offset; + int err; + + if (!(stripchart_regex[indx] = + pcre2_compile((PCRE2_SPTR)buffer, + PCRE2_ZERO_TERMINATED, PCRE_COPT, + &err, &offset, NULL))) { - printf("regular expression error: %s at offset %d " - "while compiling %s\n", error, offset, buffer); + uschar errbuf[128]; + pcre2_get_error_message(err, errbuf, sizeof(errbuf)); + printf("regular expression error: %s at offset %ld " + "while compiling %s\n", errbuf, (long)offset, buffer); exit(99); } } @@ -94,7 +100,7 @@ for (i = 0; i <= 1; i++) if (i == 0) { stripchart_number += count; - stripchart_regex = (pcre **)store_malloc(stripchart_number * sizeof(pcre *)); + stripchart_regex = (pcre2_code **)store_malloc(stripchart_number * sizeof(pcre2_code *)); stripchart_title = (uschar **)store_malloc(stripchart_number * sizeof(uschar *)); } } @@ -108,40 +114,36 @@ for (i = 0; i <= 1; i++) void init(int argc, uschar **argv) { int x; -int erroroffset; +size_t erroroffset; uschar *s; -const uschar *error; argc = argc; /* These are currently unused. */ argv = argv; /* Deal with simple values in the environment. */ -s = US getenv("ACTION_OUTPUT"); -if (s != NULL) +if ((s = US getenv("ACTION_OUTPUT"))) { if (Ustrcmp(s, "no") == 0) action_output = FALSE; if (Ustrcmp(s, "yes") == 0) action_output = TRUE; } -s = US getenv("ACTION_QUEUE_UPDATE"); -if (s != NULL) +if ((s = US getenv("ACTION_QUEUE_UPDATE"))) { if (Ustrcmp(s, "no") == 0) action_queue_update = FALSE; if (Ustrcmp(s, "yes") == 0) action_queue_update = TRUE; } s = US getenv("BODY_MAX"); -if (s != NULL && (x = Uatoi(s)) != 0) body_max = x; +if (s && (x = Uatoi(s)) != 0) body_max = x; -s = US getenv("EXIM_PATH"); -if (s != NULL) exim_path = string_copy(s); +if ((s = US getenv("EXIM_PATH"))) + exim_path = string_copy(s); -s = US getenv("EXIMON_EXIM_CONFIG"); -if (s != NULL) alternate_config = string_copy(s); +if ((s = US getenv("EXIMON_EXIM_CONFIG"))) + alternate_config = string_copy(s); -s = US getenv("LOG_BUFFER"); -if (s != NULL) +if ((s = US getenv("LOG_BUFFER"))) { uschar c[1]; if (sscanf(CS s, "%d%c", &x, c) > 0) @@ -153,63 +155,64 @@ if (s != NULL) } s = US getenv("LOG_DEPTH"); -if (s != NULL && (x = Uatoi(s)) != 0) log_depth = x; +if (s && (x = Uatoi(s)) != 0) log_depth = x; -s = US getenv("LOG_FILE_NAME"); -if (s != NULL) log_file = string_copy(s); +if ((s = US getenv("LOG_FILE_NAME"))) + log_file = string_copy(s); -s = US getenv("LOG_FONT"); -if (s != NULL) log_font = string_copy(s); +if ((s = US getenv("LOG_FONT"))) + log_font = string_copy(s); s = US getenv("LOG_WIDTH"); -if (s != NULL && (x = Uatoi(s)) != 0) log_width = x; +if (s && (x = Uatoi(s)) != 0) log_width = x; -s = US getenv("MENU_EVENT"); -if (s != NULL) menu_event = string_copy(s); +if ((s = US getenv("MENU_EVENT"))) + menu_event = string_copy(s); s = US getenv("MIN_HEIGHT"); -if (s != NULL && (x = Uatoi(s)) > 0) min_height = x; +if (s && (x = Uatoi(s)) > 0) min_height = x; s = US getenv("MIN_WIDTH"); -if (s != NULL && (x = Uatoi(s)) > 0) min_width = x; +if (s && (x = Uatoi(s)) > 0) min_width = x; -s = US getenv("QUALIFY_DOMAIN"); -if (s != NULL) qualify_domain = string_copy(s); - else qualify_domain = US""; /* Don't want NULL */ +if ((s = US getenv("QUALIFY_DOMAIN"))) + qualify_domain = string_copy(s); +else + qualify_domain = US""; /* Don't want NULL */ s = US getenv("QUEUE_DEPTH"); -if (s != NULL && (x = Uatoi(s)) != 0) queue_depth = x; +if (s && (x = Uatoi(s)) != 0) queue_depth = x; -s = US getenv("QUEUE_FONT"); -if (s != NULL) queue_font = string_copy(s); +if ((s = US getenv("QUEUE_FONT"))) + queue_font = string_copy(s); s = US getenv("QUEUE_INTERVAL"); -if (s != NULL && (x = Uatoi(s)) != 0) queue_update = x; +if (s && (x = Uatoi(s)) != 0) queue_update = x; s = US getenv("QUEUE_MAX_ADDRESSES"); -if (s != NULL && (x = Uatoi(s)) != 0) queue_max_addresses = x; +if (s && (x = Uatoi(s)) != 0) queue_max_addresses = x; s = US getenv("QUEUE_WIDTH"); -if (s != NULL && (x = Uatoi(s)) != 0) queue_width = x; +if (s && (x = Uatoi(s)) != 0) queue_width = x; -s = US getenv("SPOOL_DIRECTORY"); -if (s != NULL) spool_directory = string_copy(s); +if ((s = US getenv("SPOOL_DIRECTORY"))) + spool_directory = string_copy(s); s = US getenv("START_SMALL"); -if (s != NULL && Ustrcmp(s, "yes") == 0) start_small = 1; +if (s && Ustrcmp(s, "yes") == 0) start_small = 1; s = US getenv("TEXT_DEPTH"); -if (s != NULL && (x = Uatoi(s)) != 0) text_depth = x; +if (s && (x = Uatoi(s)) != 0) text_depth = x; -s = US getenv("WINDOW_TITLE"); -if (s != NULL) window_title = string_copy(s); +if ((s = US getenv("WINDOW_TITLE"))) + window_title = string_copy(s); /* Deal with stripchart configuration. First see if we are monitoring the size of a partition, then deal with log stripcharts in a separate function */ s = US getenv("SIZE_STRIPCHART"); -if (s != NULL && *s != 0) +if (s && *s) { stripchart_number++; stripchart_varstart++; @@ -218,19 +221,19 @@ if (s != NULL && *s != 0) if (s != NULL && *s != 0) size_stripchart_name = string_copy(s); } -s = US getenv("LOG_STRIPCHARTS"); -if (s != NULL) decode_stripchart_config(s); +if ((s = US getenv("LOG_STRIPCHARTS"))) + decode_stripchart_config(s); s = US getenv("STRIPCHART_INTERVAL"); -if (s != NULL && (x = Uatoi(s)) != 0) stripchart_update = x; +if (s && (x = Uatoi(s)) != 0) stripchart_update = x; s = US getenv("QUEUE_STRIPCHART_NAME"); -queue_stripchart_name = (s != NULL)? string_copy(s) : US"queue"; +queue_stripchart_name = s ? string_copy(s) : US"queue"; /* Compile the regex for matching yyyy-mm-dd at the start of a string. */ -yyyymmdd_regex = pcre_compile("^\\d{4}-\\d\\d-\\d\\d\\s", PCRE_COPT, - CCSS &error, &erroroffset, NULL); +yyyymmdd_regex = pcre2_compile((PCRE2_SPTR)"^\\d{4}-\\d\\d-\\d\\d\\s", + PCRE2_ZERO_TERMINATED, PCRE_COPT, &x, &erroroffset, NULL); } /* End of em_init.c */