diff --git a/doc/index.html b/doc/index.html index 5fda05d9384b4dda5b7cb6c90282f4debfadf69a..0c1c611bddc4cb82766936642e15a3eddf2f231b 100644 --- a/doc/index.html +++ b/doc/index.html @@ -88,10 +88,10 @@ <li><a href="66-stop.html"><tt>66-stop</tt></a></li> </ul> - <h3> Inner tools </h3> + <h3> execline tools </h3> <ul> - <li><a href="66-execl.html"><tt>66-execl</tt></a></li> + <li><a href="execl-cmdline.html"><tt>execl-cmdline</tt></a></li> </ul> <h2> Why is 66 necessary? </h2> diff --git a/package/deps.mak b/package/deps.mak index 1f48e1bbf89f34cab94069e64c66f14a1f648deb..7c42587d3fbe735c17e809b66c8653d8eea8f203 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -9,13 +9,13 @@ src/66/66-all.o src/66/66-all.lo: src/66/66-all.c src/include/66/config.h src/in src/66/66-dbctl.o src/66/66-dbctl.lo: src/66/66-dbctl.c src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/tree.h src/include/66/utils.h src/66/66-disable.o src/66/66-disable.lo: src/66/66-disable.c src/include/66/backup.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/tree.h src/include/66/utils.h src/66/66-enable.o src/66/66-enable.lo: src/66/66-enable.c src/include/66/backup.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/parser.h src/include/66/svc.h src/include/66/tree.h src/include/66/utils.h -src/66/66-execl.o src/66/66-execl.lo: src/66/66-execl.c src/66/66-init.o src/66/66-init.lo: src/66/66-init.c src/include/66/backup.h src/include/66/constants.h src/include/66/db.h src/include/66/tree.h src/include/66/utils.h src/66/66-scandir.o src/66/66-scandir.lo: src/66/66-scandir.c src/include/66/config.h src/include/66/constants.h src/include/66/utils.h src/66/66-start.o src/66/66-start.lo: src/66/66-start.c src/include/66/backup.h src/include/66/config.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/svc.h src/include/66/tree.h src/include/66/utils.h src/66/66-stop.o src/66/66-stop.lo: src/66/66-stop.c src/include/66/backup.h src/include/66/config.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/svc.h src/include/66/tree.h src/include/66/utils.h src/66/66-svctl.o src/66/66-svctl.lo: src/66/66-svctl.c src/include/66/constants.h src/include/66/tree.h src/include/66/utils.h src/66/66-tree.o src/66/66-tree.lo: src/66/66-tree.c src/include/66/config.h src/include/66/constants.h src/include/66/db.h src/include/66/tree.h src/include/66/utils.h +src/66/execl-cmdline.o src/66/execl-cmdline.lo: src/66/execl-cmdline.c src/lib66/backup_cmd_switcher.o src/lib66/backup_cmd_switcher.lo: src/lib66/backup_cmd_switcher.c src/include/66/constants.h src/include/66/enum.h src/include/66/utils.h src/lib66/backup_make_new.o src/lib66/backup_make_new.lo: src/lib66/backup_make_new.c src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/tree.h src/include/66/utils.h src/lib66/backup_realpath_sym.o src/lib66/backup_realpath_sym.lo: src/lib66/backup_realpath_sym.c src/include/66/constants.h src/include/66/enum.h src/include/66/utils.h @@ -64,8 +64,6 @@ src/lib66/tree_switch_tobackup.o src/lib66/tree_switch_tobackup.lo: src/lib66/tr 66-disable: src/66/66-disable.o ${LIB66} -loblibs -lskarnet 66-enable: EXTRA_LIBS := 66-enable: src/66/66-enable.o ${LIB66} -loblibs -lskarnet -lexecline -ls6 -66-execl: EXTRA_LIBS := -66-execl: src/66/66-execl.o -loblibs -lskarnet 66-init: EXTRA_LIBS := 66-init: src/66/66-init.o ${LIB66} -loblibs -ls6 -lskarnet 66-scandir: EXTRA_LIBS := @@ -78,6 +76,8 @@ src/lib66/tree_switch_tobackup.o src/lib66/tree_switch_tobackup.lo: src/lib66/tr 66-svctl: src/66/66-svctl.o ${LIB66} -loblibs -ls6 -lskarnet 66-tree: EXTRA_LIBS := 66-tree: src/66/66-tree.o ${LIB66} -loblibs -lskarnet +execl-cmdline: EXTRA_LIBS := +execl-cmdline: src/66/execl-cmdline.o -lexecline -loblibs -lskarnet ifeq ($(strip $(STATIC_LIBS_ARE_PIC)),) lib66.a.xyzzy: src/lib66/backup_cmd_switcher.o src/lib66/backup_make_new.o src/lib66/backup_realpath_sym.o src/lib66/db_cmd_master.o src/lib66/db_compile.o src/lib66/db_find_compiled_state.o src/lib66/db_get_permissions.o src/lib66/db_ok.o src/lib66/db_switch_to.o src/lib66/db_update.o src/lib66/dir_cmpndel.o src/lib66/find_sv_src.o src/lib66/get_enum.o src/lib66/get_uidgid.o src/lib66/get_userhome.o src/lib66/parser.o src/lib66/parser_utils.o src/lib66/parser_write.o src/lib66/resolve.o src/lib66/scandir_ok.o src/lib66/scandir_send_signal.o src/lib66/set_livedir.o src/lib66/set_livescan.o src/lib66/set_livetree.o src/lib66/set_ownerhome.o src/lib66/set_ownersysdir.o src/lib66/sv_alltype_zero.o src/lib66/svc_switch_to.o src/lib66/tree_cmd_state.o src/lib66/tree_cmd_switcher.o src/lib66/tree_copy.o src/lib66/tree_find_current.o src/lib66/tree_from_current.o src/lib66/tree_get_permissions.o src/lib66/tree_make_backup.o src/lib66/tree_sethome.o src/lib66/tree_switch_current.o src/lib66/tree_switch_tobackup.o else diff --git a/package/modes b/package/modes index 485cbdbf6591e59cd0cf9a92addd0fb0e17afc7b..63252212f4b74caae2c0bd876425afd71289260b 100644 --- a/package/modes +++ b/package/modes @@ -1,11 +1,11 @@ -66-scandir 0755 -66-init 0755 -66-tree 0755 -66-dbctl 0755 -66-enable 0755 -66-disable 0755 -66-start 0755 -66-stop 0755 -66-svctl 0755 -66-all 0755 -66-execl 0755 +66-scandir 0755 +66-init 0755 +66-tree 0755 +66-dbctl 0755 +66-enable 0755 +66-disable 0755 +66-start 0755 +66-stop 0755 +66-svctl 0755 +66-all 0755 +execl-cmdline 0755 diff --git a/package/targets.mak b/package/targets.mak index e28837d0040c2a021ce6bff0e7a581022d8de2c7..2a7bbacba32d038d18bae4705fd3dd65797cdf63 100644 --- a/package/targets.mak +++ b/package/targets.mak @@ -9,6 +9,6 @@ BIN_TARGETS := \ 66-stop \ 66-svctl \ 66-all \ -66-execl +execl-cmdline LIB_DEFS := 66=66 diff --git a/src/66/66-execl.c b/src/66/66-execl.c deleted file mode 100644 index 5d73de565963fa8642d1f726e4ca5f7266419dc8..0000000000000000000000000000000000000000 --- a/src/66/66-execl.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 66-execl.c - * - * Copyright (c) 2018 Eric Vidal <eric@obarun.org> - * - * All rights reserved. - * - * This file is part of Obarun. It is subject to the license terms in - * the LICENSE file found in the top-level directory of this - * distribution. - * This file may not be copied, modified, propagated, or distributed - * except according to the terms contained in the LICENSE file./ - */ - -#include <oblibs/string.h> -#include <oblibs/stralist.h> -#include <oblibs/error2.h> - -#include <skalibs/genalloc.h> -#include <skalibs/djbunix.h> -#include <skalibs/stralloc.h> - - -int main(int argc, char const *const *argv, char const *const *envp) -{ - - int r ; - PROG = "66-execl" ; - genalloc ga = GENALLOC_ZERO ; - if (argc < 2) strerr_diefu1x(111,"missing arguments") ; - argc-- ; argv++ ; - for (int i = 0 ;i < argc;i++,argv++) - { - r = clean_val(&ga,*argv) ; - if (!r) strerr_diefu2x(111,"clean_val: ",*argv) ; - } - - unsigned int m = genalloc_len(stralist,&ga) ; - char const *newarg[m+1] ; - unsigned int n = 0 ; - for (unsigned int i =0; i < genalloc_len(stralist,&ga); i++) - newarg[n++] = gaistr(&ga,i) ; - - newarg[n] = 0 ; - - xpathexec_run(newarg[0],newarg,envp) ; -} diff --git a/src/66/deps-exe/66-execl b/src/66/deps-exe/execl-cmdline similarity index 63% rename from src/66/deps-exe/66-execl rename to src/66/deps-exe/execl-cmdline index d24233ce5bfe994938345010c182fd45c2a1c1e9..c6b27401245136c5d4e0f2b82c6d623381aefe8b 100644 --- a/src/66/deps-exe/66-execl +++ b/src/66/deps-exe/execl-cmdline @@ -1,2 +1,3 @@ +-lexecline -loblibs -lskarnet diff --git a/src/66/execl-cmdline.c b/src/66/execl-cmdline.c new file mode 100644 index 0000000000000000000000000000000000000000..46f649796b1570283b19b3a7d8553cf19297a3f9 --- /dev/null +++ b/src/66/execl-cmdline.c @@ -0,0 +1,51 @@ +/* + * execl-cmdline.c + * + * Copyright (c) 2018 Eric Vidal <eric@obarun.org> + * + * All rights reserved. + * + * This file is part of Obarun. It is subject to the license terms in + * the LICENSE file found in the top-level directory of this + * distribution. + * This file may not be copied, modified, propagated, or distributed + * except according to the terms contained in the LICENSE file./ + */ + +#include <skalibs/stralloc.h> +#include <skalibs/strerr2.h> +#include <skalibs/env.h> + +#include <execline/execline.h> + +int main(int argc, char const **argv, char const *const *envp) +{ + + int r, argc1 ; + + PROG = "66-execl" ; + + stralloc modifs = STRALLOC_ZERO ; + + r = 0 ; + + argc1 = el_semicolon(++argv) ; + if (argc1 >= --argc) strerr_dief1x(100, "unterminated block") ; + + char const **newargv = argv ; + for (int i = 0;i<argc1;i++, newargv++) + { + if (!*newargv[0]) + continue ; + + stralloc_cats(&modifs,*newargv) ; + stralloc_0(&modifs) ; + r++; + } + + char const *newarg[r + 1] ; + if (!env_make(newarg, r, modifs.s, modifs.len)) strerr_diefu1sys(111, "env_make") ; + newarg[r] = 0 ; + + el_execsequence(newarg, argv+argc1+1, envp) ; +}