diff options
| -rw-r--r-- | NEWS | 4 | ||||
| -rwxr-xr-x | configure | 15 | ||||
| -rw-r--r-- | doc/s6.conf.html | 6 | ||||
| -rw-r--r-- | doc/s6_repository.html | 15 | ||||
| -rw-r--r-- | doc/s6_set.html | 16 | ||||
| -rw-r--r-- | doc/upgrade.html | 1 | ||||
| -rw-r--r-- | package/configure-snippets/configure_case_lines | 1 | ||||
| -rw-r--r-- | package/configure-snippets/configure_generate_configh | 3 | ||||
| -rw-r--r-- | package/configure-snippets/configure_generate_make | 1 | ||||
| -rw-r--r-- | package/configure-snippets/configure_help_options | 1 | ||||
| -rw-r--r-- | package/configure-snippets/configure_init_vars | 1 | ||||
| -rw-r--r-- | src/s6-frontend/main.help.txt | 1 | ||||
| -rw-r--r-- | src/s6-frontend/repository.help.txt | 4 | ||||
| -rw-r--r-- | src/s6-frontend/repository_init.c | 17 | ||||
| -rw-r--r-- | src/s6-frontend/repository_sync.c | 17 | ||||
| -rw-r--r-- | src/s6-frontend/s6-frontend-internal.h | 2 | ||||
| -rw-r--r-- | src/s6-frontend/s6-frontend.c | 6 | ||||
| -rw-r--r-- | src/s6-frontend/set.help.txt | 2 | ||||
| -rw-r--r-- | src/s6-frontend/set_apply.c | 6 | ||||
| -rw-r--r-- | src/s6-frontend/set_commit.c | 6 |
20 files changed, 51 insertions, 74 deletions
@@ -5,6 +5,10 @@ In 0.1.0.0 - Bugfixes. - Documentation updates. + - New option: s6 -u|--user, for user services. + - New commands: s6 live reset, s6 apply. + - New shortcuts: s6 enable,disable,start,stop,kill,apply. + - The fdholder user is now a configuration variable. In 0.0.1.2 @@ -30,7 +30,7 @@ Fine tuning of the installation directories: --repodir=DIR default s6-rc repository [s6-rc default: /var/lib/s6-rc/repository] --bootdb=LINK location of the bootable s6-rc compiled db [s6-rc default: /etc/s6-rc/compiled/current] --stmpdir=DIR secure location for temporary s6-frontend files [/run/s6-frontend] - --conffile=FILE default configuration file for s6 command [SYSCONFDIR/s6-frontend.conf] + --conffile=FILE default configuration file for s6 command [SYSCONFDIR/s6.conf] If no --prefix option is given, by default libdir (but not dynlibdir) will be /usr/lib, and includedir will be /usr/include. @@ -58,8 +58,9 @@ Optional features: --disable-s6li do not use s6-linux-init functionality [enabled] --enable-util-linux use util-linux functionality [disabled] - --with-store-list=LIST list of service stores [PREFIX/share/s6-frontend/s6-rc/sources:SYSCONFDIR/s6-frontend/s6-rc/sources] + --with-store-list=LIST list of service stores [PREFIX/share/s6/sources:SYSCONFDIR/s6/sources] --with-default-bundle=NAME name of the bundle started at boot [s6-rc default: default] + --with-fdholder-user=USER s6-fdholderd user to embed in databases [s6-svscan user] EOF exit 0 @@ -186,9 +187,10 @@ livedir= repodir= bootdb= stmpdir=/run/s6-frontend -conffile='$sysconfdir/s6-frontend.conf' -storelist='$prefix/share/s6-frontend/s6-rc/sources:$sysconfdir/s6-frontend/s6-rc/sources' +conffile='$sysconfdir/s6.conf' +storelist='$prefix/share/s6/sources:$sysconfdir/s6/sources' defbundle= +fdhuser= usensss=false uses6li=true @@ -240,6 +242,7 @@ for arg ; do --conffile=*) conffile=${arg#*=} ;; --with-store-list=*) storelist=${arg#*=} ;; --with-default-bundle=*) defbundle=${arg#*=} ;; + --with-fdholder-user=*) fdhuser=${arg#*=} ;; --enable-nsss|--enable-nsss=yes) usensss=true ;; --disable-nsss|--enable-nsss=no) usensss=false ;; --enable-s6li|--enable-s6li=yes) uses6li=true ;; @@ -562,6 +565,7 @@ echo "REPODIR := $repodir" echo "BOOTDB := $bootdb" echo "STMPDIR := $stmpdir" echo "STORELIST := $storelist" +echo "FDHUSER := $fdhuser" if $usensss ; then echo "LIBNSSS := -lnsss" @@ -675,6 +679,9 @@ echo "#define ${package_macro_name}_CONF \"$conffile\"" echo "#undef ${package_macro_name}_STORELIST" echo "#define ${package_macro_name}_STORELIST \"$storelist\"" + +echo "#undef ${package_macro_name}_FDHUSER" +echo "#define ${package_macro_name}_FDHUSER \"$fdhuser\"" echo echo "#endif" exec 1>&3 3>&- diff --git a/doc/s6.conf.html b/doc/s6.conf.html index 39b1e76..8120603 100644 --- a/doc/s6.conf.html +++ b/doc/s6.conf.html @@ -99,6 +99,12 @@ The default is <tt>/usr/share/s6/sources:/etc/s6/sources</tt> terse (only print fatal error messages), 1 is normal (print error messages and warnings), over 1 is increasingly verbose (print informational messages, up to tracing and debug messages at level 4-5). The default is <strong>1</strong>. </dd> + +<dt> fdhuser </dt> +<dd> The system user for the internal fd-holding process spawned by +s6-rc. It must be a user defined in <tt>/etc/passwd</tt>. +The default is <strong>root</strong> and that is fine, but distributions +may want to set it to an unprivileged user. </dd> </dl> </body> diff --git a/doc/s6_repository.html b/doc/s6_repository.html index d9cfcc9..bda22b2 100644 --- a/doc/s6_repository.html +++ b/doc/s6_repository.html @@ -59,7 +59,7 @@ and usage of the <tt>s6 repository</tt> command. It is not as detailed as this p <h4> Interface </h4> <pre> - s6 repository init [ -f ] [ -U ] [ -h <em>fdhuser</em> ] + s6 repository init [ -f ] [ -U ] </pre> <ul> @@ -85,9 +85,6 @@ if the repository seems hopelessly broken. </dd> of stores. This commands needs to be run when the storelist variable has changed. </dd> -<dt> -h <em>fdhuser</em>, --fdholder-user=<em>fdhuser</em> </dt> -<dd> Specify the fdholder user for the reference database. This has -no impact whatsoever and this option can safely be ignored. </dd> </dl> <h3 id="list"> list </h3> @@ -154,7 +151,7 @@ change <tt>B</tt> to be unmasked or enabled as well. </dd> <h4> Interface </h4> <pre> - s6 repository sync [ -h <em>fdhuser</em> ] + s6 repository sync </pre> <ul> @@ -166,13 +163,5 @@ that defines a service. Ideally it should be added to a hook defined by the package manager. </li> </ul> -<h4> Options </h4> - -<dl> -<dt> -h <em>fdhuser</em>, --fdholder-user=<em>fdhuser</em> </dt> -<dd> Specify the fdholder user for the reference database. This has -no impact whatsoever and this option can safely be ignored. </dd> -</dl> - </body> </html> diff --git a/doc/s6_set.html b/doc/s6_set.html index a38a57d..683cbad 100644 --- a/doc/s6_set.html +++ b/doc/s6_set.html @@ -298,7 +298,7 @@ change <tt>B</tt> to be unmasked or enabled as well. </dd> <h4> Interface </h4> <pre> - s6 set commit [ -f ] [ -K ] [ -D <em>defaultbundle</em> ] [ -h <em>fdhuser</em> ] [ -s <em>setname</em> ] + s6 set commit [ -f ] [ -K ] [ -D <em>defaultbundle</em> ] [ -s <em>setname</em> ] </pre> <ul> @@ -333,12 +333,6 @@ services and that will be started at boot time. There is generally no reason to change the default, which depends on the distribution and is probably called <tt>default</tt>. </dd> -<dt> -h <em>fdhuser</em>, --fdholder-user=<em>fdhuser</em> </dt> -<dd> Specify the fdholder user for the compiled database built from -the set. This must be a user name defined in the <tt>/etc/passwd</tt> -file or whatever user database the system uses. The default is <tt>root</tt> -and that is fine. </dd> - <dt> <tt>-s <em>setname</em></tt>, <tt>--set=<em>setname</em></tt> </dt> <dd> Commit the set named <em>setname</em>, rather than <tt>current</tt>. </dd> </dl> @@ -348,7 +342,7 @@ and that is fine. </dd> <h4> Interface </h4> <pre> - s6 set apply [ -b ] [ -D <em>defaultbundle</em> ] [ -h <em>fdhuser</em> ] [ -s <em>setname</em> ] [ -t <em>timeout</em> ] + s6 set apply [ -b ] [ -D <em>defaultbundle</em> ] [ -s <em>setname</em> ] [ -t <em>timeout</em> ] </pre> <ul> @@ -378,12 +372,6 @@ database. The default is to fail with an error message instead. </dd> services, which will be the ones running on the machine when the command ends. The default depends on the distribution and is probably called <tt>default</tt>. </dd> -<dt> -h <em>fdhuser</em>, --fdholder-user=<em>fdhuser</em> </dt> -<dd> Specify the fdholder user for the compiled database built from -the set. This must be a user name defined in the <tt>/etc/passwd</tt> -file or whatever user database the system uses. The default is <tt>root</tt> -and that is fine. </dd> - <dt> <tt>-f <em>convfile</em></tt>, <tt>--conversion-file=<em>convfile</em></tt> </dt> <dd> Use <em>convfile</em> as a <a href="//skarnet.org/software/s6-rc/s6-rc-update.html#conversion">conversion file</a> for the underlying <a href="//skarnet.org/software/s6-rc/s6-rc-update.html">s6-rc-update</a> diff --git a/doc/upgrade.html b/doc/upgrade.html index db8801b..545e2e9 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -22,7 +22,6 @@ <h2> in 0.1.0.0 </h2> <ul> - <li> Support for disabling RPATH at configure time. </li> <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> dependency bumped to 2.15.0.1. </li> <li> <a href="//skarnet.org/software/nsss/">nsss</a> diff --git a/package/configure-snippets/configure_case_lines b/package/configure-snippets/configure_case_lines index 96ded94..ed2aaea 100644 --- a/package/configure-snippets/configure_case_lines +++ b/package/configure-snippets/configure_case_lines @@ -6,6 +6,7 @@ --conffile=*) conffile=${arg#*=} ;; --with-store-list=*) storelist=${arg#*=} ;; --with-default-bundle=*) defbundle=${arg#*=} ;; + --with-fdholder-user=*) fdhuser=${arg#*=} ;; --enable-nsss|--enable-nsss=yes) usensss=true ;; --disable-nsss|--enable-nsss=no) usensss=false ;; --enable-s6li|--enable-s6li=yes) uses6li=true ;; diff --git a/package/configure-snippets/configure_generate_configh b/package/configure-snippets/configure_generate_configh index 6fcb60a..3f99a88 100644 --- a/package/configure-snippets/configure_generate_configh +++ b/package/configure-snippets/configure_generate_configh @@ -72,3 +72,6 @@ echo "#define ${package_macro_name}_CONF \"$conffile\"" echo "#undef ${package_macro_name}_STORELIST" echo "#define ${package_macro_name}_STORELIST \"$storelist\"" + +echo "#undef ${package_macro_name}_FDHUSER" +echo "#define ${package_macro_name}_FDHUSER \"$fdhuser\"" diff --git a/package/configure-snippets/configure_generate_make b/package/configure-snippets/configure_generate_make index 1fa9ea2..d10c04a 100644 --- a/package/configure-snippets/configure_generate_make +++ b/package/configure-snippets/configure_generate_make @@ -4,6 +4,7 @@ echo "REPODIR := $repodir" echo "BOOTDB := $bootdb" echo "STMPDIR := $stmpdir" echo "STORELIST := $storelist" +echo "FDHUSER := $fdhuser" if $usensss ; then echo "LIBNSSS := -lnsss" diff --git a/package/configure-snippets/configure_help_options b/package/configure-snippets/configure_help_options index 1d79b20..8ce4586 100644 --- a/package/configure-snippets/configure_help_options +++ b/package/configure-snippets/configure_help_options @@ -4,4 +4,5 @@ --with-store-list=LIST list of service stores [PREFIX/share/s6/sources:SYSCONFDIR/s6/sources] --with-default-bundle=NAME name of the bundle started at boot [s6-rc default: default] + --with-fdholder-user=USER s6-fdholderd user to embed in databases [s6-svscan user] diff --git a/package/configure-snippets/configure_init_vars b/package/configure-snippets/configure_init_vars index e9af35a..a156235 100644 --- a/package/configure-snippets/configure_init_vars +++ b/package/configure-snippets/configure_init_vars @@ -6,6 +6,7 @@ stmpdir=/run/s6-frontend conffile='$sysconfdir/s6.conf' storelist='$prefix/share/s6/sources:$sysconfdir/s6/sources' defbundle= +fdhuser= usensss=false uses6li=true diff --git a/src/s6-frontend/main.help.txt b/src/s6-frontend/main.help.txt index 7837152..2b7e920 100644 --- a/src/s6-frontend/main.help.txt +++ b/src/s6-frontend/main.help.txt @@ -34,4 +34,5 @@ Global options: -c BOOTDB --bootdb=BOOTDB live database the system is booting on --stmpdir=STMPDIR root-only temporary directory --storelist=LIST list of service stores + --fdholder-user=USER the s6-fdholderd user embedded in service databases diff --git a/src/s6-frontend/repository.help.txt b/src/s6-frontend/repository.help.txt index 3a9ee1e..a418dbe 100644 --- a/src/s6-frontend/repository.help.txt +++ b/src/s6-frontend/repository.help.txt @@ -11,10 +11,8 @@ Subcommands: s6 repository init options: -f --force Overwrite existing repository -U --update-stores Update existing repository with new stores - -h USER --fdholder-user Set USER as reference fdholder owner -s6 repository sync options: - -h USER --fdholder-user Set USER as reference fdholder owner +s6 repository sync options: none s6 repository list options: none diff --git a/src/s6-frontend/repository_init.c b/src/s6-frontend/repository_init.c index 747c481..a4f6b8b 100644 --- a/src/s6-frontend/repository_init.c +++ b/src/s6-frontend/repository_init.c @@ -20,12 +20,6 @@ enum golb_e GOLB_UPDATE = 0x02, } ; -enum gola_e -{ - GOLA_FDHUSER, - GOLA_N -} ; - void repository_init (char const *const *argv) { static gol_bool const rgolb[] = @@ -33,18 +27,13 @@ void repository_init (char const *const *argv) { .so = 'f', .lo = "force", .clear = 0, .set = GOLB_FORCE }, { .so = 'U', .lo = "update-stores", .clear = 0, .set = GOLB_UPDATE }, } ; - static gol_arg const rgola[] = - { - { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER }, - } ; uint64_t wgolb = 0 ; unsigned int m = 0 ; unsigned int n = 0 ; - char const *wgola[GOLA_N] = { 0 } ; size_t len ; char fmtv[UINT_FMT] ; - argv += GOL_argv(argv, rgolb, rgola, &wgolb, wgola) ; + argv += gol_argv(argv, rgolb, sizeof(rgolb) / sizeof(gol_bool), 0, 0, &wgolb, 0) ; len = strlen(g->dirs.stol) ; char storage[len+1] ; @@ -64,10 +53,10 @@ void repository_init (char const *const *argv) newargv[m++] = g->dirs.repo ; if (wgolb & GOLB_FORCE) newargv[m++] = "-f" ; if (wgolb & GOLB_UPDATE) newargv[m++] = "-U" ; - if (wgola[GOLA_FDHUSER]) + if (g->fdhuser && g->fdhuser[0]) { newargv[m++] = "-h" ; - newargv[m++] = wgola[GOLA_FDHUSER] ; + newargv[m++] = g->fdhuser ; } newargv[m++] = "--" ; len = 0 ; diff --git a/src/s6-frontend/repository_sync.c b/src/s6-frontend/repository_sync.c index f3e25df..4f4fca3 100644 --- a/src/s6-frontend/repository_sync.c +++ b/src/s6-frontend/repository_sync.c @@ -7,23 +7,12 @@ #include "s6-frontend-internal.h" -enum gola_e -{ - GOLA_FDHUSER, - GOLA_N -} ; - void repository_sync (char const *const *argv) { - static gol_arg const rgola[] = - { - { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER }, - } ; unsigned int m = 0 ; - char const *wgola[GOLA_N] = { 0 } ; char fmtv[UINT_FMT] ; - argv += gol_argv(argv, 0, 0, rgola, GOLA_N, 0, wgola) ; + argv += gol_argv(argv, 0, 0, 0, 0, 0, 0) ; char const *newargv[9] ; newargv[m++] = S6RC_EXTBINPREFIX "s6-rc-repo-sync" ; @@ -35,10 +24,10 @@ void repository_sync (char const *const *argv) } newargv[m++] = "-r" ; newargv[m++] = g->dirs.repo ; - if (wgola[GOLA_FDHUSER]) + if (g->fdhuser && g->fdhuser[0]) { newargv[m++] = "-h" ; - newargv[m++] = wgola[GOLA_FDHUSER] ; + newargv[m++] = g->fdhuser ; } newargv[m++] = "--" ; newargv[m++] = 0 ; diff --git a/src/s6-frontend/s6-frontend-internal.h b/src/s6-frontend/s6-frontend-internal.h index 587b4e2..4089c15 100644 --- a/src/s6-frontend/s6-frontend-internal.h +++ b/src/s6-frontend/s6-frontend-internal.h @@ -119,6 +119,7 @@ struct global_s { unsigned int verbosity ; s6f_confdirs dirs ; + char const *fdhuser ; stralloc userstorage ; uint8_t isuser : 1 ; uint8_t istty : 1 ; @@ -136,6 +137,7 @@ struct global_s .stmp = S6_FRONTEND_STMPDIR, \ .stol = S6_FRONTEND_STORELIST, \ }, \ + .fdhuser = S6_FRONTEND_FDHUSER, \ .userstorage = STRALLOC_ZERO, \ .isuser = 0, \ .istty = 0, \ diff --git a/src/s6-frontend/s6-frontend.c b/src/s6-frontend/s6-frontend.c index 9e649a7..ff78f8b 100644 --- a/src/s6-frontend/s6-frontend.c +++ b/src/s6-frontend/s6-frontend.c @@ -22,7 +22,7 @@ #define USAGE "s6 [ generic options ] command [ command options ] command_arguments... Type \"s6 help\" for details." #define dieusage() strerr_dieusage(100, USAGE) -#define CLEANUP_MODIF "scandir\0livedir\0repodir\0bootdb\0stmpdir\0storelist\0verbosity" +#define CLEANUP_MODIF "scandir\0livedir\0repodir\0bootdb\0stmpdir\0storelist\0verbosity\0fdhuser" enum golb_e { @@ -40,6 +40,7 @@ enum gola_e GOLA_STMPDIR, GOLA_STORELIST, GOLA_VERBOSITY, + GOLA_FDHUSER, GOLA_COLOR, GOLA_N } ; @@ -114,6 +115,7 @@ int main (int argc, char const *const *argv) { .so = 0, .lo = "stmpdir", .i = GOLA_STMPDIR }, { .so = 0, .lo = "storelist", .i = GOLA_STORELIST }, { .so = 'v', .lo = "verbosity", .i = GOLA_VERBOSITY }, + { .so = 0, .lo = "fdholder-user", .i = GOLA_FDHUSER }, { .so = 0, .lo = "color", .i = GOLA_COLOR }, } ; static struct command_s const commands[] = @@ -151,6 +153,7 @@ int main (int argc, char const *const *argv) [GOLA_STMPDIR] = getenv("stmpdir"), [GOLA_STORELIST] = getenv("storelist"), [GOLA_VERBOSITY] = getenv("verbosity"), + [GOLA_FDHUSER] = getenv("fdhuser"), [GOLA_COLOR] = 0 } ; PROG = "s6-frontend" ; @@ -173,6 +176,7 @@ int main (int argc, char const *const *argv) if (wgola[GOLA_BOOTDB]) g->dirs.boot = wgola[GOLA_BOOTDB] ; if (wgola[GOLA_STMPDIR]) g->dirs.stmp = wgola[GOLA_STMPDIR] ; if (wgola[GOLA_STORELIST]) g->dirs.stol = wgola[GOLA_STORELIST] ; + if (wgola[GOLA_FDHUSER]) g->fdhuser = wgola[GOLA_FDHUSER] ; { int force_color = 0 ; diff --git a/src/s6-frontend/set.help.txt b/src/s6-frontend/set.help.txt index 9113f34..1da3a8a 100644 --- a/src/s6-frontend/set.help.txt +++ b/src/s6-frontend/set.help.txt @@ -49,13 +49,11 @@ s6 set commit options: -f --force compile db even if up-to-date -K --keep-old keep old db if any, print its path to stdout -D BUN --default-bundle=BUN name of the bundle containing enabled+essential services - -h USER --fdholder-user=USER user for the s6-fdholderd process (default: root - it's fine) -s SET --set=SET commit set SET (default: current) s6 set apply options: -b --block block if another s6-rc is running (default: fail) -D BUN --default-bundle=BUN name of the bundle containing enabled+essential services - -h USER --fdholder-user=USER user for the s6-fdholderd process (default: root - it's fine) -f CONVFILE --conversion-file=CONVFILE use CONVFILE when updating the service db (default: none) -s SET --set=SET apply set SET (default: current) -t TIMEOUT --timeout=TIMEOUT fail after TIMEOUT milliseconds (default: 0 (=infinite)) diff --git a/src/s6-frontend/set_apply.c b/src/s6-frontend/set_apply.c index b017212..85078ec 100644 --- a/src/s6-frontend/set_apply.c +++ b/src/s6-frontend/set_apply.c @@ -17,7 +17,6 @@ enum golb_e enum gola_e { GOLA_DEFBUNDLE, - GOLA_FDHUSER, GOLA_CONVFILE, GOLA_SET, GOLA_TIMEOUT, @@ -33,7 +32,6 @@ void set_apply (char const *const *argv) static gol_arg const rgola[] = { { .so = 'D', .lo = "default-bundle", .i = GOLA_DEFBUNDLE }, - { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER }, { .so = 'f', .lo = "conversion-file", .i = GOLA_CONVFILE }, { .so = 's', .lo = "set", .i = GOLA_SET }, { .so = 't', .lo = "timeout", .i = GOLA_TIMEOUT }, @@ -71,10 +69,10 @@ void set_apply (char const *const *argv) newargv[m++] = g->dirs.repo ; newargv[m++] = "-D" ; newargv[m++] = wgola[GOLA_DEFBUNDLE] ; - if (wgola[GOLA_FDHUSER]) + if (g->fdhuser && g->fdhuser[0]) { newargv[m++] = "-h" ; - newargv[m++] = wgola[GOLA_FDHUSER] ; + newargv[m++] = g->fdhuser ; } newargv[m++] = "--" ; newargv[m++] = wgola[GOLA_SET] ; diff --git a/src/s6-frontend/set_commit.c b/src/s6-frontend/set_commit.c index 3e0fae2..eb98bd5 100644 --- a/src/s6-frontend/set_commit.c +++ b/src/s6-frontend/set_commit.c @@ -17,7 +17,6 @@ enum golb_e enum gola_e { GOLA_DEFBUNDLE, - GOLA_FDHUSER, GOLA_SET, GOLA_N } ; @@ -32,7 +31,6 @@ void set_commit (char const *const *argv) static gol_arg const rgola[] = { { .so = 'D', .lo = "default-bundle", .i = GOLA_DEFBUNDLE }, - { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER }, { .so = 's', .lo = "set", .i = GOLA_SET }, } ; @@ -59,10 +57,10 @@ void set_commit (char const *const *argv) newargv[m++] = wgola[GOLA_DEFBUNDLE] ; if (wgolb & GOLB_FORCE) newargv[m++] = "-f" ; if (wgolb & GOLB_KEEPOLD) newargv[m++] = "-K" ; - if (wgola[GOLA_FDHUSER]) + if (g->fdhuser && g->fdhuser[0]) { newargv[m++] = "-h" ; - newargv[m++] = wgola[GOLA_FDHUSER] ; + newargv[m++] = g->fdhuser ; } newargv[m++] = "--" ; newargv[m++] = wgola[GOLA_SET] ; |
