MEDIUM: init: support more command line arguments after pid list

Given that all command line arguments start with a '-' and that
no pid number can start with this character, there's no constraint
to make the pid list the last argument. Let's relax this rule.
This commit is contained in:
Willy Tarreau 2015-10-08 11:32:32 +02:00
parent 0078bfcb43
commit c6ca1aa34d

View File

@ -445,7 +445,7 @@ void usage(char *name)
" -dG disables getaddrinfo() usage\n" " -dG disables getaddrinfo() usage\n"
#endif #endif
" -dV disables SSL verify on servers side\n" " -dV disables SSL verify on servers side\n"
" -sf/-st [pid ]* finishes/terminates old pids. Must be last arguments.\n" " -sf/-st [pid ]* finishes/terminates old pids.\n"
"\n", "\n",
name, DEFAULT_MAXCONN, cfg_maxpconn); name, DEFAULT_MAXCONN, cfg_maxpconn);
exit(1); exit(1);
@ -688,17 +688,18 @@ void init(int argc, char **argv)
oldpids_sig = SIGUSR1; /* finish then exit */ oldpids_sig = SIGUSR1; /* finish then exit */
else else
oldpids_sig = SIGTERM; /* terminate immediately */ oldpids_sig = SIGTERM; /* terminate immediately */
argv++; argc--;
if (argc > 0) { while (argc > 1 && argv[1][0] != '-') {
oldpids = calloc(argc, sizeof(int)); oldpids = realloc(oldpids, (nb_oldpids + 1) * sizeof(int));
while (argc > 0) { if (!oldpids) {
oldpids[nb_oldpids] = atol(*argv); Alert("Cannot allocate old pid : out of memory.\n");
if (oldpids[nb_oldpids] <= 0) exit(1);
usage(progname);
argc--; argv++;
nb_oldpids++;
} }
argc--; argv++;
oldpids[nb_oldpids] = atol(*argv);
if (oldpids[nb_oldpids] <= 0)
usage(progname);
nb_oldpids++;
} }
} }
else { /* >=2 args */ else { /* >=2 args */