version 1.155, 2021/02/17 07:18:36 |
version 1.156, 2021/08/27 17:25:55 |
|
|
ssize_t linelen; |
ssize_t linelen; |
char *line = NULL, **caps = NULL, *cause; |
char *line = NULL, **caps = NULL, *cause; |
u_int ncaps = 0; |
u_int ncaps = 0; |
|
struct args_value *values; |
|
|
/* Ignore SIGCHLD now or daemon() in the server will leave a zombie. */ |
/* Ignore SIGCHLD now or daemon() in the server will leave a zombie. */ |
signal(SIGCHLD, SIG_IGN); |
signal(SIGCHLD, SIG_IGN); |
|
|
msg = MSG_COMMAND; |
msg = MSG_COMMAND; |
|
|
/* |
/* |
* It sucks parsing the command string twice (in client and |
* It's annoying parsing the command string twice (in client |
* later in server) but it is necessary to get the start server |
* and later in server) but it is necessary to get the start |
* flag. |
* server flag. |
*/ |
*/ |
pr = cmd_parse_from_arguments(argc, argv, NULL); |
values = args_from_vector(argc, argv); |
|
pr = cmd_parse_from_arguments(values, argc, NULL); |
if (pr->status == CMD_PARSE_SUCCESS) { |
if (pr->status == CMD_PARSE_SUCCESS) { |
if (cmd_list_any_have(pr->cmdlist, CMD_STARTSERVER)) |
if (cmd_list_any_have(pr->cmdlist, CMD_STARTSERVER)) |
flags |= CLIENT_STARTSERVER; |
flags |= CLIENT_STARTSERVER; |
cmd_list_free(pr->cmdlist); |
cmd_list_free(pr->cmdlist); |
} else |
} else |
free(pr->error); |
free(pr->error); |
|
args_free_values(values, argc); |
|
free(values); |
} |
} |
|
|
/* Create client process structure (starts logging). */ |
/* Create client process structure (starts logging). */ |