X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fexim.c;h=f6d9be6ef7c1802ae4b9bb1e9506e68bb0aff938;hb=3d1451ea26e96e63a22d96a08dcfe2e80701c75c;hp=d6915d4ad209afb1c050eca4f92b7fc10c20711b;hpb=d0291a0af2ce1de0be95caad572ca952f3adba87;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/exim.c b/src/src/exim.c index d6915d4ad..f6d9be6ef 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -88,7 +88,7 @@ Returns: pointer to the compiled pattern */ const pcre * -regex_must_compile(uschar *pattern, BOOL caseless, BOOL use_malloc) +regex_must_compile(const uschar *pattern, BOOL caseless, BOOL use_malloc) { int offset; int options = PCRE_COPT; @@ -100,7 +100,7 @@ if (use_malloc) pcre_free = function_store_free; } if (caseless) options |= PCRE_CASELESS; -yield = pcre_compile(CS pattern, options, (const char **)&error, &offset, NULL); +yield = pcre_compile(CCS pattern, options, (const char **)&error, &offset, NULL); pcre_malloc = function_store_get; pcre_free = function_dummy_free; if (yield == NULL) @@ -853,11 +853,11 @@ fprintf(f, "Support for:"); #ifdef EXPERIMENTAL_REDIS fprintf(f, " Experimental_Redis"); #endif -#ifdef EXPERIMENTAL_CERTNAMES - fprintf(f, " Experimental_Certnames"); +#ifdef EXPERIMENTAL_SOCKS + fprintf(f, " Experimental_SOCKS"); #endif -#ifdef EXPERIMENTAL_DSN - fprintf(f, " Experimental_DSN"); +#ifdef EXPERIMENTAL_INTERNATIONAL + fprintf(f, " Experimental_International"); #endif fprintf(f, "\n"); @@ -1507,6 +1507,7 @@ uschar *ftest_domain = NULL; uschar *ftest_localpart = NULL; uschar *ftest_prefix = NULL; uschar *ftest_suffix = NULL; +uschar *log_oneline = NULL; uschar *malware_test_file = NULL; uschar *real_sender_address; uschar *originator_home = US"/"; @@ -2313,7 +2314,7 @@ for (i = 1; i < argc; i++) if (nr_configs) { int sep = 0; - uschar *list = argrest; + const uschar *list = argrest; uschar *filename; while (trusted_config && (filename = string_nextinlist(&list, &sep, big_buffer, big_buffer_size)) != NULL) @@ -2681,7 +2682,6 @@ for (i = 1; i < argc; i++) break; } - #ifdef EXPERIMENTAL_DSN /* -MCD: set the smtp_use_dsn flag; this indicates that the host that exim is connected to supports the esmtp extension DSN */ else if (Ustrcmp(argrest, "CD") == 0) @@ -2689,7 +2689,6 @@ for (i = 1; i < argc; i++) smtp_use_dsn = TRUE; break; } - #endif /* -MCP: set the smtp_use_pipelining flag; this is useful only when it preceded -MC (see above) */ @@ -3392,13 +3391,20 @@ for (i = 1; i < argc; i++) case 'X': if (*argrest == '\0') - { if (++i >= argc) { fprintf(stderr, "exim: string expected after -X\n"); exit(EXIT_FAILURE); } - } + break; + + case 'z': + if (*argrest == '\0') + if (++i < argc) log_oneline = argv[i]; else + { + fprintf(stderr, "exim: file name expected after %s\n", argv[i-1]); + exit(EXIT_FAILURE); + } break; /* All other initial characters are errors */ @@ -3841,6 +3847,17 @@ if (Ustrlen(syslog_processname) > 32) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "syslog_processname is longer than 32 chars: aborting"); +if (log_oneline) + { + if (admin_user) + { + log_write(0, LOG_MAIN, "%s", log_oneline); + return EXIT_SUCCESS; + } + else + return EXIT_FAILURE; + } + /* In some operating systems, the environment variable TMPDIR controls where temporary files are created; Exim doesn't use these (apart from when delivering to MBX mailboxes), but called libraries such as DBM libraries may require them. @@ -3984,7 +4001,7 @@ if (((debug_selector & D_any) != 0 || (log_extra_selector & LX_arguments) != 0) for (i = 0; i < argc; i++) { int len = Ustrlen(argv[i]); - uschar *printing; + const uschar *printing; uschar *quote; if (p + len + 8 >= big_buffer + big_buffer_size) { @@ -3996,7 +4013,7 @@ if (((debug_selector & D_any) != 0 || (log_extra_selector & LX_arguments) != 0) printing = string_printing(argv[i]); if (printing[0] == 0) quote = US"\""; else { - uschar *pp = printing; + const uschar *pp = printing; quote = US""; while (*pp != 0) if (isspace(*pp++)) { quote = US"\""; break; } }