Enable bundling

This commit is contained in:
Guilhem Moulin 2015-11-06 23:54:24 +08:00
parent 1f308fb2b4
commit 7fb1bec84a

View File

@ -112,13 +112,14 @@ static void printhelp(const char * progname) {
void svr_getopts(int argc, char ** argv) {
unsigned int i;
unsigned int i, j;
char ** next = 0;
int nextisport = 0;
char* recv_window_arg = NULL;
char* keepalive_arg = NULL;
char* idle_timeout_arg = NULL;
char* keyfile = NULL;
char c;
/* see printhelp() for options */
@ -168,33 +169,10 @@ void svr_getopts(int argc, char ** argv) {
#endif
for (i = 1; i < (unsigned int)argc; i++) {
if (nextisport) {
addportandaddress(argv[i]);
nextisport = 0;
continue;
}
if (next) {
*next = argv[i];
if (*next == NULL) {
dropbear_exit("Invalid null argument");
}
next = 0x00;
if (argv[i][0] != '-' || argv[i][1] == '\0')
dropbear_exit("Invalid argument: %s", argv[i]);
if (keyfile) {
addhostkey(keyfile);
keyfile = NULL;
}
continue;
}
if (argv[i][0] == '-') {
char c = argv[i][1];
if (strlen(argv[i]) != 2) {
/* We only handle one flag per hyphen */
fprintf(stderr, "Warning, trailing '%s' of '%s' is ignored.\n",
&argv[i][2], argv[i]);
}
for (j = 1; (c = argv[i][j]) != '\0' && !next && !nextisport; j++) {
switch (c) {
case 'b':
next = &svr_opts.bannerfile;
@ -284,12 +262,39 @@ void svr_getopts(int argc, char ** argv) {
exit(EXIT_SUCCESS);
break;
default:
fprintf(stderr, "Unknown argument %s\n", argv[i]);
fprintf(stderr, "Invalid option -%c\n", c);
printhelp(argv[0]);
exit(EXIT_FAILURE);
break;
}
}
if (!next && !nextisport)
continue;
if (c == '\0') {
i++;
j = 0;
if (!argv[i]) {
dropbear_exit("Missing argument");
}
}
if (nextisport) {
addportandaddress(&argv[i][j]);
nextisport = 0;
} else if (next) {
*next = &argv[i][j];
if (*next == NULL) {
dropbear_exit("Invalid null argument");
}
next = 0x00;
if (keyfile) {
addhostkey(keyfile);
keyfile = NULL;
}
}
}
/* Set up listening ports */