git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
receive flow processing
[exim.git]
/
src
/
src
/
exim.c
diff --git
a/src/src/exim.c
b/src/src/exim.c
index ea0d0b7900430964adacb9f814e0c263b2cfd6ae..01770df7338354f74b628d96b310e4ec0a234629 100644
(file)
--- a/
src/src/exim.c
+++ b/
src/src/exim.c
@@
-12,6
+12,10
@@
Also a few functions that don't naturally fit elsewhere. */
#include "exim.h"
#include "exim.h"
+#ifdef __GLIBC__
+# include <gnu/libc-version.h>
+#endif
+
#ifdef USE_GNUTLS
# include <gnutls/gnutls.h>
# if GNUTLS_VERSION_NUMBER < 0x030103 && !defined(DISABLE_OCSP)
#ifdef USE_GNUTLS
# include <gnutls/gnutls.h>
# if GNUTLS_VERSION_NUMBER < 0x030103 && !defined(DISABLE_OCSP)
@@
-1025,6
+1029,14
@@
DEBUG(D_any) do {
fprintf(f, "Compiler: <unknown>\n");
#endif
fprintf(f, "Compiler: <unknown>\n");
#endif
+#ifdef __GLIBC__
+ fprintf(f, "Library version: Glibc: Compile: %d.%d\n",
+ __GLIBC__, __GLIBC_MINOR__);
+ if (__GLIBC_PREREQ(2, 1))
+ fprintf(f, " Runtime: %s\n",
+ gnu_get_libc_version());
+#endif
+
#ifdef SUPPORT_TLS
tls_version_report(f);
#endif
#ifdef SUPPORT_TLS
tls_version_report(f);
#endif
@@
-1040,7
+1052,7
@@
DEBUG(D_any) do {
characters; unless it's an ancient version of PCRE in which case it
is not defined. */
#ifndef PCRE_PRERELEASE
characters; unless it's an ancient version of PCRE in which case it
is not defined. */
#ifndef PCRE_PRERELEASE
-#define PCRE_PRERELEASE
+#
define PCRE_PRERELEASE
#endif
#define QUOTE(X) #X
#define EXPAND_AND_QUOTE(X) QUOTE(X)
#endif
#define QUOTE(X) #X
#define EXPAND_AND_QUOTE(X) QUOTE(X)
@@
-2047,6
+2059,7
@@
for (i = 1; i < argc; i++)
sender_host_address = argv[i];
host_checking = checking = log_testing_mode = TRUE;
host_checking_callout = argrest[1] == 'c';
sender_host_address = argv[i];
host_checking = checking = log_testing_mode = TRUE;
host_checking_callout = argrest[1] == 'c';
+ message_logs = FALSE;
}
/* -bi: This option is used by sendmail to initialize *the* alias file,
}
/* -bi: This option is used by sendmail to initialize *the* alias file,
@@
-2723,7
+2736,7
@@
for (i = 1; i < argc; i++)
break;
}
break;
}
- /* -MCG: set the queue name, to a non-default value
+ /* -MCG: set the queue name, to a non-default value
*/
else if (Ustrcmp(argrest, "CG") == 0)
{
else if (Ustrcmp(argrest, "CG") == 0)
{
@@
-3224,7
+3237,7
@@
for (i = 1; i < argc; i++)
if (*argrest == 'f')
{
queue_run_force = TRUE;
if (*argrest == 'f')
{
queue_run_force = TRUE;
- if (*
(++argrest)
== 'f')
+ if (*
++argrest
== 'f')
{
deliver_force_thaw = TRUE;
argrest++;
{
deliver_force_thaw = TRUE;
argrest++;
@@
-3239,7
+3252,7
@@
for (i = 1; i < argc; i++)
argrest++;
}
argrest++;
}
- /* -q[f][f][l][G<name>]...
Ru
n the named queue */
+ /* -q[f][f][l][G<name>]...
Work o
n the named queue */
if (*argrest == 'G')
{
if (*argrest == 'G')
{
@@
-3266,17
+3279,11
@@
for (i = 1; i < argc; i++)
/* -q[f][f][l][G<name>/]<n>: Run the queue at regular intervals, optionally
forced, optionally local only, optionally named. */
/* -q[f][f][l][G<name>/]<n>: Run the queue at regular intervals, optionally
forced, optionally local only, optionally named. */
- else
+ else if ((queue_interval = readconf_readtime(*argrest ? argrest : argv[++i],
+ 0, FALSE)) <= 0)
{
{
- if (*argrest != 0)
- queue_interval = readconf_readtime(argrest, 0, FALSE);
- else
- queue_interval = readconf_readtime(argv[++i], 0, FALSE);
- if (queue_interval <= 0)
- {
- fprintf(stderr, "exim: bad time value %s: abandoned\n", argv[i]);
- exit(EXIT_FAILURE);
- }
+ fprintf(stderr, "exim: bad time value %s: abandoned\n", argv[i]);
+ exit(EXIT_FAILURE);
}
break;
}
break;
@@
-3296,8
+3303,7
@@
for (i = 1; i < argc; i++)
if (*argrest != 0)
{
int i;
if (*argrest != 0)
{
int i;
- for (i = 0; i < sizeof(rsopts)/sizeof(uschar *); i++)
- {
+ for (i = 0; i < nelem(rsopts); i++)
if (Ustrcmp(argrest, rsopts[i]) == 0)
{
if (i != 2) queue_run_force = TRUE;
if (Ustrcmp(argrest, rsopts[i]) == 0)
{
if (i != 2) queue_run_force = TRUE;
@@
-3305,21
+3311,20
@@
for (i = 1; i < argc; i++)
if (i == 1 || i == 4) deliver_force_thaw = TRUE;
argrest += Ustrlen(rsopts[i]);
}
if (i == 1 || i == 4) deliver_force_thaw = TRUE;
argrest += Ustrlen(rsopts[i]);
}
- }
}
/* -R: Set string to match in addresses for forced queue run to
pick out particular messages. */
}
/* -R: Set string to match in addresses for forced queue run to
pick out particular messages. */
- if (*argrest == 0)
+ if (*argrest)
+ deliver_selectstring = argrest;
+ else if (i+1 < argc)
+ deliver_selectstring = argv[++i];
+ else
{
{
- if (i+1 < argc) deliver_selectstring = argv[++i]; else
- {
- fprintf(stderr, "exim: string expected after -R\n");
- exit(EXIT_FAILURE);
- }
+ fprintf(stderr, "exim: string expected after -R\n");
+ exit(EXIT_FAILURE);
}
}
- else deliver_selectstring = argrest;
break;
break;
@@
-3340,11
+3345,10
@@
for (i = 1; i < argc; i++)
in all cases provided there are no further characters in this
argument. */
in all cases provided there are no further characters in this
argument. */
- if (*argrest
!= 0
)
+ if (*argrest)
{
int i;
{
int i;
- for (i = 0; i < sizeof(rsopts)/sizeof(uschar *); i++)
- {
+ for (i = 0; i < nelem(rsopts); i++)
if (Ustrcmp(argrest, rsopts[i]) == 0)
{
if (i != 2) queue_run_force = TRUE;
if (Ustrcmp(argrest, rsopts[i]) == 0)
{
if (i != 2) queue_run_force = TRUE;
@@
-3352,21
+3356,20
@@
for (i = 1; i < argc; i++)
if (i == 1 || i == 4) deliver_force_thaw = TRUE;
argrest += Ustrlen(rsopts[i]);
}
if (i == 1 || i == 4) deliver_force_thaw = TRUE;
argrest += Ustrlen(rsopts[i]);
}
- }
}
/* -S: Set string to match in addresses for forced queue run to
pick out particular messages. */
}
/* -S: Set string to match in addresses for forced queue run to
pick out particular messages. */
- if (*argrest == 0)
+ if (*argrest)
+ deliver_selectstring_sender = argrest;
+ else if (i+1 < argc)
+ deliver_selectstring_sender = argv[++i];
+ else
{
{
- if (i+1 < argc) deliver_selectstring_sender = argv[++i]; else
- {
- fprintf(stderr, "exim: string expected after -S\n");
- exit(EXIT_FAILURE);
- }
+ fprintf(stderr, "exim: string expected after -S\n");
+ exit(EXIT_FAILURE);
}
}
- else deliver_selectstring_sender = argrest;
break;
/* -Tqt is an option that is exclusively for use by the testing suite.
break;
/* -Tqt is an option that is exclusively for use by the testing suite.
@@
-3480,8
+3483,9
@@
for (i = 1; i < argc; i++)
/* If -R or -S have been specified without -q, assume a single queue run. */
/* If -R or -S have been specified without -q, assume a single queue run. */
-if ((deliver_selectstring != NULL || deliver_selectstring_sender != NULL) &&
- queue_interval < 0) queue_interval = 0;
+if ( (deliver_selectstring || deliver_selectstring_sender)
+ && queue_interval < 0)
+ queue_interval = 0;
END_ARG:
END_ARG:
@@
-3497,12
+3501,12
@@
if ((
) ||
(
msg_action_arg > 0 &&
) ||
(
msg_action_arg > 0 &&
- (daemon_listen || queue_interval >
=
0 || list_options ||
+ (daemon_listen || queue_interval > 0 || list_options ||
(checking && msg_action != MSG_LOAD) ||
bi_option || test_retry_arg >= 0 || test_rewrite_arg >= 0)
) ||
(
(checking && msg_action != MSG_LOAD) ||
bi_option || test_retry_arg >= 0 || test_rewrite_arg >= 0)
) ||
(
- (daemon_listen || queue_interval >
=
0) &&
+ (daemon_listen || queue_interval > 0) &&
(sender_address != NULL || list_options || list_queue || checking ||
bi_option)
) ||
(sender_address != NULL || list_options || list_queue || checking ||
bi_option)
) ||
@@
-4679,8
+4683,7
@@
if (queue_interval == 0 && !daemon_listen)
(stop_queue_run_id == NULL)? US"" : US" stopping at ",
(stop_queue_run_id == NULL)? US"" : stop_queue_run_id);
if (*queue_name)
(stop_queue_run_id == NULL)? US"" : US" stopping at ",
(stop_queue_run_id == NULL)? US"" : stop_queue_run_id);
if (*queue_name)
- set_process_info(CS string_sprintf(
- "running the '%s' queue (single queue run)", queue_name));
+ set_process_info("running the '%s' queue (single queue run)", queue_name);
else
set_process_info("running the queue (single queue run)");
queue_run(start_queue_run_id, stop_queue_run_id, FALSE);
else
set_process_info("running the queue (single queue run)");
queue_run(start_queue_run_id, stop_queue_run_id, FALSE);
@@
-5726,8
+5729,8
@@
while (more)
if (geteuid() != root_uid && !deliver_drop_privilege && !unprivileged)
{
if (geteuid() != root_uid && !deliver_drop_privilege && !unprivileged)
{
- (void)child_exec_exim(CEE_EXEC_EXIT, FALSE, NULL, FALSE,
2, US"-Mc",
- message_id);
+ (void)child_exec_exim(CEE_EXEC_EXIT, FALSE, NULL, FALSE,
+
2, US"-Mc",
message_id);
/* Control does not return here. */
}
/* Control does not return here. */
}