From 54da37443c1c9a9a0a4cc6ee38932f6623fa8e06 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Mon, 27 Jan 2020 11:57:36 +0000 Subject: Extend runblock functionality (thanks Profpatsch) --- src/execline/runblock.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/execline/runblock.c b/src/execline/runblock.c index ab81bb3..fdba5af 100644 --- a/src/execline/runblock.c +++ b/src/execline/runblock.c @@ -10,7 +10,7 @@ #include #include -#define USAGE "runblock [ -P ] [ -n argshift ] [ -r ] n" +#define USAGE "runblock [ -P ] [ -n argshift ] [ -r ] n cmd..." #define dieusage() strerr_dieusage(100, USAGE) int main (int argc, char const *const *argv, char const *const *envp) @@ -37,8 +37,8 @@ int main (int argc, char const *const *argv, char const *const *envp) } argc -= l.ind ; argv += l.ind ; } - if (argc != 1) dieusage() ; - if (!uint0_scan(argv[0], &n) || (!n && !flagr)) dieusage() ; + if (!argc--) dieusage() ; + if (!uint0_scan(*argv++, &n) || (!n && !flagr)) dieusage() ; { char const *x = env_get2(envp, "#") ; @@ -76,11 +76,18 @@ int main (int argc, char const *const *argv, char const *const *envp) } } + /* First put args, if any, into v */ + + if (!genalloc_ready(char const *, &v, argc)) + strerr_diefu1sys(111, "genalloc_ready") ; + for (unsigned int i = 0 ; i < (unsigned int)argc ; i++) + genalloc_append(char const *, &v, argv + i) ; + if (flagr) /* put remainder envvars into v */ { if (++m > sharp) return 0 ; - if (!genalloc_ready(char const *, &v, sharp - m + 2)) - strerr_diefu1sys(111, "genalloc_ready") ; + if (!genalloc_readyplus(char const *, &v, sharp - m + 2)) + strerr_diefu1sys(111, "genalloc_readyplus") ; for (; m <= sharp ; m++) { char const *x ; -- cgit v1.3.1