Mercurial > dropbear
diff dbmulti.c @ 1870:0dcc5b0d93fa
Make re-exec work with "dropbearmulti dropbear"
The re-exec needs to know to use the dropbearmulti binary instead.
Add a test for this case.
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 01 Feb 2022 22:18:23 +0800 |
parents | 11f645c3715b |
children | 6b25cdad4783 |
line wrap: on
line diff
--- a/dbmulti.c Tue Feb 01 22:12:25 2022 +0800 +++ b/dbmulti.c Tue Feb 01 22:18:23 2022 +0800 @@ -23,20 +23,15 @@ * SOFTWARE. */ #include "includes.h" +#include "dbutil.h" -/* definitions are cleanest if we just put them here */ -int dropbear_main(int argc, char ** argv); -int cli_main(int argc, char ** argv); -int dropbearkey_main(int argc, char ** argv); -int dropbearconvert_main(int argc, char ** argv); -int scp_main(int argc, char ** argv); - -static int runprog(const char *progname, int argc, char ** argv, int *match) { +static int runprog(const char *multipath, + const char *progname, int argc, char ** argv, int *match) { *match = DROPBEAR_SUCCESS; #ifdef DBMULTI_dropbear if (strcmp(progname, "dropbear") == 0) { - return dropbear_main(argc, argv); + return dropbear_main(argc, argv, multipath); } #endif #ifdef DBMULTI_dbclient @@ -72,7 +67,7 @@ int match, res; /* figure which form we're being called as */ const char* progname = basename(argv[i]); - res = runprog(progname, argc-i, &argv[i], &match); + res = runprog(argv[0], progname, argc-i, &argv[i], &match); if (match == DROPBEAR_SUCCESS) { return res; }