Makefile.am | 9 ----
Makefile.in | 11 +----
ldap/admin/src/scripts/DSSharedLib.in | 39 ++++++++++++++---
ldap/admin/src/scripts/DSUtil.pm.in | 22 ++++++----
ldap/admin/src/scripts/restart-dirsrv.in | 17 ++++++-
ldap/admin/src/scripts/restart-slapd.in | 50 -----------------------
ldap/admin/src/scripts/start-dirsrv.in | 17 ++++++-
ldap/admin/src/scripts/start-slapd.in | 50 -----------------------
ldap/admin/src/scripts/stop-dirsrv.in | 17 ++++++-
ldap/admin/src/scripts/stop-slapd.in | 50 -----------------------
ldap/admin/src/scripts/template-restart-slapd.in | 6 --
ldap/admin/src/scripts/template-start-slapd.in | 7 +--
ldap/admin/src/scripts/template-stop-slapd.in | 6 --
13 files changed, 101 insertions(+), 200 deletions(-)
New commits:
commit a10e433c29a4ce3944efade9bb8d404af1577f85
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Thu Mar 21 13:25:43 2013 -0600
Ticket #47303 - start/stop/restart dirsrv scripts should report and error if no
instances
https://fedorahosted.org/389/ticket/47303
Reviewed by: mreynolds (Thanks!)
Branch: master
Fix Description: start/stop/restart dirsrv should report and error if no instances
Platforms tested: RHEL6 x86_64
Flag Day: no
Doc impact: yes
diff --git a/ldap/admin/src/scripts/restart-dirsrv.in
b/ldap/admin/src/scripts/restart-dirsrv.in
index c5825b9..d782124 100644
--- a/ldap/admin/src/scripts/restart-dirsrv.in
+++ b/ldap/admin/src/scripts/restart-dirsrv.in
@@ -54,6 +54,10 @@ if [ "$#" -eq 0 ]; then
# We're restarting all instances.
ret=0
for i in $initconfig_dir/@package_name@-*; do
+ if [ ! -f "$i" ] ; then
+ echo No instances found in $initconfig_dir
+ exit 1
+ fi
regex=s,$initconfig_dir/@package_name@-,,g
inst=`echo $i | sed -e $regex`
# check for admin server ID used by 389-admin pkg, and ignore it
diff --git a/ldap/admin/src/scripts/start-dirsrv.in
b/ldap/admin/src/scripts/start-dirsrv.in
index 7864ad9..2173b67 100755
--- a/ldap/admin/src/scripts/start-dirsrv.in
+++ b/ldap/admin/src/scripts/start-dirsrv.in
@@ -132,6 +132,10 @@ if [ "$#" -eq 0 ]; then
# We're starting all instances.
ret=0
for i in $initconfig_dir/@package_name@-*; do
+ if [ ! -f "$i" ] ; then
+ echo No instances found in $initconfig_dir
+ exit 1
+ fi
regex=s,$initconfig_dir/@package_name@-,,g
inst=`echo $i | sed -e $regex`
# check for admin server ID used by 389-admin pkg, and ignore it
diff --git a/ldap/admin/src/scripts/stop-dirsrv.in
b/ldap/admin/src/scripts/stop-dirsrv.in
index cec65d9..708c277 100755
--- a/ldap/admin/src/scripts/stop-dirsrv.in
+++ b/ldap/admin/src/scripts/stop-dirsrv.in
@@ -84,6 +84,10 @@ if [ "$#" -eq 0 ]; then
# We're stopping all instances.
ret=0
for i in $initconfig_dir/@package_name@-*; do
+ if [ ! -f "$i" ] ; then
+ echo No instances found in $initconfig_dir
+ exit 1
+ fi
regex=s,$initconfig_dir/@package_name@-,,g
inst=`echo $i | sed -e $regex`
# check for admin server ID used by 389-admin pkg, and ignore it
commit e75704b99a046e71fc0e54fcb0e42540b54058d8
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Thu Mar 21 12:04:45 2013 -0600
Ticket #47302 - get rid of sbindir start/stop/restart slapd scripts
https://fedorahosted.org/389/ticket/47302
Reviewed by: mreynolds (Thanks!)
Branch: master
Fix Description:
do not need sbindir -slapd scripts since we already had -dirsrv scripts -
start-dirsrv etc. - that already take an instance argument, although not
with -Z
Platforms tested: RHEL6 x86_64
Flag Day: no
Doc impact: Yes, if we have already documented sbindir start-slapd etc.
diff --git a/Makefile.am b/Makefile.am
index f25af58..6bff8e4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -122,9 +122,8 @@ CLEANFILES = dberrstrs.h ns-slapd.properties \
ldap/admin/src/scripts/db2index ldap/admin/src/scripts/db2ldif \
ldap/admin/src/scripts/dn2rdn ldap/admin/src/scripts/ldif2db \
ldap/admin/src/scripts/ldif2ldap ldap/admin/src/scripts/monitor \
- ldap/admin/src/scripts/restart-slapd ldap/admin/src/scripts/restoreconfig \
- ldap/admin/src/scripts/saveconfig ldap/admin/src/scripts/start-slapd \
- ldap/admin/src/scripts/stop-slapd ldap/admin/src/scripts/suffix2instance \
+ ldap/admin/src/scripts/restoreconfig ldap/admin/src/scripts/saveconfig \
+ ldap/admin/src/scripts/suffix2instance \
ldap/admin/src/scripts/upgradednformat ldap/admin/src/scripts/vlvindex \
ldap/admin/src/scripts/bak2db.pl ldap/admin/src/scripts/db2bak.pl \
ldap/admin/src/scripts/db2index.pl ldap/admin/src/scripts/db2ldif.pl \
@@ -345,11 +344,8 @@ sbin_SCRIPTS = ldap/admin/src/scripts/setup-ds.pl \
ldap/admin/src/scripts/ldif2db \
ldap/admin/src/scripts/ldif2ldap \
ldap/admin/src/scripts/monitor \
- ldap/admin/src/scripts/restart-slapd \
ldap/admin/src/scripts/restoreconfig \
ldap/admin/src/scripts/saveconfig \
- ldap/admin/src/scripts/start-slapd \
- ldap/admin/src/scripts/stop-slapd \
ldap/admin/src/scripts/suffix2instance \
ldap/admin/src/scripts/upgradednformat \
ldap/admin/src/scripts/vlvindex \
@@ -510,7 +506,6 @@ dist_man_MANS = man/man1/dbscan.1 \
man/man8/dbverify.8 man/man8/verify-db.pl.8 \
man/man8/dn2rdn.8 man/man8/ldif2ldap.8 \
man/man8/restoreconfig.8 man/man8/saveconfig.8 \
- man/man8/start-slapd.8 man/man8/stop-slapd.8 man/man8/restart-slapd.8 \
man/man8/suffix2instance.8 man/man8/monitor.8 \
man/man8/upgradednformat.8 man/man8/vlvindex.8 \
man/man8/cleanallruv.pl.8 man/man8/schema-reload.pl.8 \
diff --git a/Makefile.in b/Makefile.in
index c53b822..73c337a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1412,9 +1412,8 @@ CLEANFILES = dberrstrs.h ns-slapd.properties \
ldap/admin/src/scripts/db2index ldap/admin/src/scripts/db2ldif \
ldap/admin/src/scripts/dn2rdn ldap/admin/src/scripts/ldif2db \
ldap/admin/src/scripts/ldif2ldap ldap/admin/src/scripts/monitor \
- ldap/admin/src/scripts/restart-slapd ldap/admin/src/scripts/restoreconfig \
- ldap/admin/src/scripts/saveconfig ldap/admin/src/scripts/start-slapd \
- ldap/admin/src/scripts/stop-slapd ldap/admin/src/scripts/suffix2instance \
+ ldap/admin/src/scripts/restoreconfig ldap/admin/src/scripts/saveconfig \
+ ldap/admin/src/scripts/suffix2instance \
ldap/admin/src/scripts/upgradednformat ldap/admin/src/scripts/vlvindex \
ldap/admin/src/scripts/bak2db.pl ldap/admin/src/scripts/db2bak.pl \
ldap/admin/src/scripts/db2index.pl ldap/admin/src/scripts/db2ldif.pl \
@@ -1573,11 +1572,8 @@ sbin_SCRIPTS = ldap/admin/src/scripts/setup-ds.pl \
ldap/admin/src/scripts/ldif2db \
ldap/admin/src/scripts/ldif2ldap \
ldap/admin/src/scripts/monitor \
- ldap/admin/src/scripts/restart-slapd \
ldap/admin/src/scripts/restoreconfig \
ldap/admin/src/scripts/saveconfig \
- ldap/admin/src/scripts/start-slapd \
- ldap/admin/src/scripts/stop-slapd \
ldap/admin/src/scripts/suffix2instance \
ldap/admin/src/scripts/upgradednformat \
ldap/admin/src/scripts/vlvindex \
@@ -1735,7 +1731,6 @@ dist_man_MANS = man/man1/dbscan.1 \
man/man8/dbverify.8 man/man8/verify-db.pl.8 \
man/man8/dn2rdn.8 man/man8/ldif2ldap.8 \
man/man8/restoreconfig.8 man/man8/saveconfig.8 \
- man/man8/start-slapd.8 man/man8/stop-slapd.8 man/man8/restart-slapd.8 \
man/man8/suffix2instance.8 man/man8/monitor.8 \
man/man8/upgradednformat.8 man/man8/vlvindex.8 \
man/man8/cleanallruv.pl.8 man/man8/schema-reload.pl.8 \
@@ -10497,7 +10492,7 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
diff --git a/ldap/admin/src/scripts/restart-slapd.in
b/ldap/admin/src/scripts/restart-slapd.in
deleted file mode 100644
index 8a64e59..0000000
--- a/ldap/admin/src/scripts/restart-slapd.in
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-source @datadir@/dirsrv/data/DSSharedLib
-
-# Script that restarts the ns-slapd server.
-# Exit status can be:
-# 0: Server restarted successfully
-# 1: Server could not be started
-# 2: Server started successfully (was not running)
-# 3: Server could not be stopped
-
-usage ()
-{
- echo "Usage: restart-slapd [-Z serverID]"
-}
-
-while getopts "Z:SvVhi:d:w:" flag
-do
- case $flag in
- Z) servid=$OPTARG;;
- d) args=$args" -d $OPTARG";;
- v) args=$args" -v";;
- V) args=$args" -V";;
- i) args=$args" -i $OPTARG";;
- w) args=$args" -w $OPTARG";;
- S) args=$args" -S";;
- h) usage
- exit 0;;
- ?) usage
- exit 1;;
- esac
-done
-
-servid=$(get_server_id "@initconfigdir@" $servid)
-if [ $? == 1 ]
-then
- usage
- echo "You must supply a valid server instance identifier. Use -Z to specify
instance name"
- echo "Available instances: $servid"
- exit 1
-fi
-
-@sbindir@/restart-dirsrv -d @initconfigdir@ $servid $args
-if [ $? == 0 ]
-then
- echo Sucessfully restarted instance \"$servid\"
-else
- echo Failed to restart instance \"$servid\"
-fi
-exit $?
diff --git a/ldap/admin/src/scripts/start-slapd.in
b/ldap/admin/src/scripts/start-slapd.in
deleted file mode 100755
index f24aae7..0000000
--- a/ldap/admin/src/scripts/start-slapd.in
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-source @datadir@/dirsrv/data/DSSharedLib
-
-# Script that starts the ns-slapd server.
-# Exit status can be:
-# 0: Server started successfully
-# 1: Server could not be started
-# 2: Server already running
-
-usage ()
-{
- echo "Usage: start-slapd [-Z serverID]"
-}
-
-while getopts "Z:SvVhi:d:w:" flag
-do
- case $flag in
- Z) servid=$OPTARG;;
- d) args=$args" -d $OPTARG";;
- v) args=$args" -v";;
- V) args=$args" -V";;
- i) args=$args" -i $OPTARG";;
- w) args=$args" -w $OPTARG";;
- S) args=$args" -S";;
- h) usage
- exit 0;;
- ?) usage
- exit 1;;
- esac
-done
-
-servid=$(get_server_id "@initconfigdir@" $servid)
-if [ $? == 1 ]
-then
- usage
- echo "You must supply a valid server instance identifier. Use -Z to specify
instance name"
- echo "Available instances: $servid"
- exit 1
-fi
-
-@sbindir@/start-dirsrv -d @initconfigdir@ $servid $args
-if [ $? == 0 ]
-then
- echo Sucessfully started instance \"$servid\"
-else
- echo Failed to start instance \"$servid\"
-fi
-
-exit $?
diff --git a/ldap/admin/src/scripts/stop-slapd.in b/ldap/admin/src/scripts/stop-slapd.in
deleted file mode 100755
index 94d9858..0000000
--- a/ldap/admin/src/scripts/stop-slapd.in
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-source @datadir@/dirsrv/data/DSSharedLib
-
-# Script that stops the ns-slapd server.
-# Exit status can be:
-# 0: Server stopped successfully
-# 1: Server could not be stopped
-# 2: Server was not running
-
-usage ()
-{
- echo "Usage: stop-slapd [-Z serverID]"
-}
-
-while getopts "Z:SvVhi:d:w:" flag
-do
- case $flag in
- Z) servid=$OPTARG;;
- d) args=$args" -d $OPTARG";;
- v) args=$args" -v";;
- V) args=$args" -V";;
- i) args=$args" -i $OPTARG";;
- w) args=$args" -w $OPTARG";;
- S) args=$args" -S";;
- h) usage
- exit 0;;
- ?) usage
- exit 1;;
- esac
-done
-
-servid=$(get_server_id "@initconfigdir@" $servid)
-if [ $? == 1 ]
-then
- usage
- echo "You must supply a valid server instance identifier. Use -Z to specify
instance name"
- echo "Available instances: $servid"
- exit 1
-fi
-
-@sbindir@/stop-dirsrv -d @initconfigdir@ $servid $args
-if [ $? == 0 ]
-then
- echo Sucessfully stopped instance \"$servid\"
-else
- echo Failed to stop instance \"$servid\"
-fi
-
-exit $?
diff --git a/ldap/admin/src/scripts/template-restart-slapd.in
b/ldap/admin/src/scripts/template-restart-slapd.in
index d169432..7933806 100644
--- a/ldap/admin/src/scripts/template-restart-slapd.in
+++ b/ldap/admin/src/scripts/template-restart-slapd.in
@@ -1,5 +1,3 @@
#!/bin/sh
-
-cd {{SERVERBIN-DIR}}
-./restart-slapd "$@" -Z {{SERV-ID}}
-exit $?
\ No newline at end of file
+# DEPRECATED - use @sbindir@/restart-dirsrv instead
+exec @sbindir@/restart-dirsrv -d {{INITCONFIG-DIR}} {{SERV-ID}} "$@"
diff --git a/ldap/admin/src/scripts/template-start-slapd.in
b/ldap/admin/src/scripts/template-start-slapd.in
index c5a9ca9..be59404 100755
--- a/ldap/admin/src/scripts/template-start-slapd.in
+++ b/ldap/admin/src/scripts/template-start-slapd.in
@@ -1,5 +1,4 @@
#!/bin/sh
-
-cd {{SERVERBIN-DIR}}
-./start-slapd "$@" -Z {{SERV-ID}}
-exit $?
+# DEPRECATED - use @sbindir@/start-dirsrv instead
+INSTANCE={{SERV-ID}}
+exec @sbindir@/start-dirsrv -d {{INITCONFIG-DIR}} $INSTANCE "$@"
diff --git a/ldap/admin/src/scripts/template-stop-slapd.in
b/ldap/admin/src/scripts/template-stop-slapd.in
index 7e1820a..3bf358d 100755
--- a/ldap/admin/src/scripts/template-stop-slapd.in
+++ b/ldap/admin/src/scripts/template-stop-slapd.in
@@ -1,5 +1,3 @@
#!/bin/sh
-
-cd {{SERVERBIN-DIR}}
-./stop-slapd "$@" -Z {{SERV-ID}}
-exit $?
+# DEPRECATED - use @sbindir@/stop-dirsrv instead
+exec @sbindir@/stop-dirsrv -d {{INITCONFIG-DIR}} {{SERV-ID}} "$@"
commit 7f7f83cbf68f4ce88c00ad203889272812accd0e
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Thu Mar 21 10:20:19 2013 -0600
Ticket #47299 - allow cmdline scripts to work with non-root user
https://fedorahosted.org/389/ticket/47299
Reviewed by: mreynolds (Thanks!)
Branch: master
Fix Description: If running as non-root, look for the initconfig scripts/files
in ~/.dirsrv. If the INITCONFIGDIR env. var. is set, use that and do not
look anywhere else. Cannot depend on the value of $USER - must use id to
determine the effective user id. Also fixed a problem with return value
handling - the if test changes the value of $?, so have to save the value
just after starting the instance.
Platforms tested: RHEL6 x86_64
Flag Day: no
Doc impact: no
diff --git a/ldap/admin/src/scripts/DSSharedLib.in
b/ldap/admin/src/scripts/DSSharedLib.in
index 17079d7..1a66e28 100644
--- a/ldap/admin/src/scripts/DSSharedLib.in
+++ b/ldap/admin/src/scripts/DSSharedLib.in
@@ -20,13 +20,38 @@ get_server_id()
inst_count=0
instances="<none>"
rc=0
-
- for i in `ls $dir/dirsrv-* 2>/dev/null`
+
+ # convert
+ # uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),.....
+ # to
+ # 0
+ # this is the only portable, secure way to determine the id number
+ userid=`id | awk -F'[=(]+' '{print $2}'`
+ if [ "$userid" -ne 0 ] ; then
+ # magic - see start-dirsrv, DSCreate.pm::get_initconfigdir, etc.
+ dir=$HOME/.@package_name@
+ fi
+ if [ -n "$INITCONFIGDIR" ] ; then
+ dir=$INITCONFIGDIR
+ fi
+
+ # look first in user provided INITCONFIGDIR, then in the system/build location,
+ # then in the users home dir - cases
+ # 1. system install but running as non-root user
+ # in this case, we want to use the instance from $dir - it will
+ # fallback to $homedir in that case, and if that is a problem, the user will
+ # just have to temporarily move $homedir/dirsrv-sysinstancename out of the way
+ # while working on the system instance
+ # 2. prefix/non-system install
+ # in this case, we want to use $homedir - if for some reason there is a system
+ # instance in $dir with the same name, the user can use INITCONFIGDIR to
+ # override that and force the use of the one from $homedir
+ for i in `ls $dir/@package_name@-* 2>/dev/null`
do
- if [ $i != "$dir/dirsrv-admin" ]
+ if [ $i != "$dir/@package_name@-admin" ]
then
inst_count=`expr $inst_count + 1`
- id=$(expr "$i" : ".*dirsrv-\([^)]*\).*")
+ id=$(expr "$i" : ".*@package_name(a)-\([^)]*\).*")
if [ $first == "yes" ]
then
instances=$id
@@ -52,11 +77,11 @@ get_server_id()
elif [ $servid == slapd-* ]
then
servid=`echo "$servid" | sed -e 's/slapd-//'`
- elif [ $servid == dirsrv-* ]
+ elif [ $servid == @package_name@-* ]
then
- servid=`echo "$servid" | sed -e 's/dirsrv-//'`
+ servid=`echo "$servid" | sed -e 's/@package_name@-//'`
fi
- if ! [ -a "$dir/dirsrv-$servid" ]
+ if ! [ -a "$dir/@package_name@-$servid" ]
then
# invalid instance name, return the "valid" instance names
servid=$instances
diff --git a/ldap/admin/src/scripts/DSUtil.pm.in b/ldap/admin/src/scripts/DSUtil.pm.in
index e587671..b69cbb5 100644
--- a/ldap/admin/src/scripts/DSUtil.pm.in
+++ b/ldap/admin/src/scripts/DSUtil.pm.in
@@ -1287,13 +1287,21 @@ sub get_server_id {
my $instances = "<none>";
my $name;
my $file;
+
+ if (getLogin ne 'root') {
+ $dir = "$ENV{HOME}/.@package_name@";
+ }
+
+ if (defined $ENV{INITCONFIGDIR}) {
+ $dir = $ENV{INITCONFIGDIR};
+ }
opendir(DIR, "$dir");
my @files = readdir(DIR);
foreach $file (@files){
- if($file =~ /^dirsrv-/ && $file ne "dirsrv-admin"){
+ if($file =~ /^@package_name@-/ && $file ne
"@package_name@-admin"){
$instance_count++;
- if($file =~ /dirsrv-(.*)/){
+ if($file =~ /@package_name(a)-(.*)/){
if($first eq "yes"){
$instances=$1;
$first = "no";
@@ -1312,17 +1320,17 @@ sub get_server_id {
print "Available instances: $instances\n";
exit (1);
}
- } elsif ($servid =~ /^dirsrv-/){
- # strip off "dirsrv-"
- $servid =~ s/^dirsrv-//;
+ } elsif ($servid =~ /^@package_name@-/){
+ # strip off "@package_name@-"
+ $servid =~ s/^@package_name@-//;
} elsif ($servid =~ /^slapd-/){
# strip off "slapd-"
$servid =~ s/^slapd-//;
}
- unless ( -e "$dir/dirsrv-$servid" ){
+ unless ( -e "$dir/@package_name@-$servid" ){
print (STDERR "Invalid server identifer: $servid\n");
- print (STDERR "Available instances: $instances\n");
+ print (STDERR "Available instances in $dir: $instances\n");
exit (1);
}
diff --git a/ldap/admin/src/scripts/restart-dirsrv.in
b/ldap/admin/src/scripts/restart-dirsrv.in
index 74dc1cf..c5825b9 100644
--- a/ldap/admin/src/scripts/restart-dirsrv.in
+++ b/ldap/admin/src/scripts/restart-dirsrv.in
@@ -37,7 +37,13 @@ done
shift $(($OPTIND-1))
if [ "$initconfig_dir" = "" ]; then
- if [ $USER = root ] ; then
+ # convert
+ # uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),.....
+ # to
+ # 0
+ # this is the only portable, secure way to determine the id number
+ userid=`id | awk -F'[=(]+' '{print $2}'`
+ if [ "$userid" -eq 0 ] ; then
initconfig_dir=@initconfigdir@
else
initconfig_dir=$HOME/.@package_name@
@@ -56,8 +62,9 @@ if [ "$#" -eq 0 ]; then
fi
echo Restarting instance \"$inst\"
restart_instance $inst
- if [ "$?" -ne 0 ]; then
- ret=$?
+ rv=$?
+ if [ "$rv" -ne 0 ]; then
+ ret=$rv
fi
done
exit $ret
diff --git a/ldap/admin/src/scripts/start-dirsrv.in
b/ldap/admin/src/scripts/start-dirsrv.in
index b5f45f9..7864ad9 100755
--- a/ldap/admin/src/scripts/start-dirsrv.in
+++ b/ldap/admin/src/scripts/start-dirsrv.in
@@ -115,7 +115,13 @@ done
shift $(($OPTIND-1))
if [ "$initconfig_dir" = "" ]; then
- if [ $USER = root ] ; then
+ # convert
+ # uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),.....
+ # to
+ # 0
+ # this is the only portable, secure way to determine the id number
+ userid=`id | awk -F'[=(]+' '{print $2}'`
+ if [ "$userid" -eq 0 ] ; then
initconfig_dir=@initconfigdir@
else
initconfig_dir=$HOME/.@package_name@
@@ -134,8 +140,9 @@ if [ "$#" -eq 0 ]; then
fi
echo Starting instance \"$inst\"
start_instance $inst
- if [ "$?" -ne 0 ]; then
- ret=$?
+ rv=$?
+ if [ "$rv" -ne 0 ]; then
+ ret=$rv
fi
done
exit $ret
diff --git a/ldap/admin/src/scripts/stop-dirsrv.in
b/ldap/admin/src/scripts/stop-dirsrv.in
index 220fe92..cec65d9 100755
--- a/ldap/admin/src/scripts/stop-dirsrv.in
+++ b/ldap/admin/src/scripts/stop-dirsrv.in
@@ -67,7 +67,13 @@ done
shift $(($OPTIND-1))
if [ "$initconfig_dir" = "" ]; then
- if [ $USER = root ] ; then
+ # convert
+ # uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),.....
+ # to
+ # 0
+ # this is the only portable, secure way to determine the id number
+ userid=`id | awk -F'[=(]+' '{print $2}'`
+ if [ "$userid" -eq 0 ] ; then
initconfig_dir=@initconfigdir@
else
initconfig_dir=$HOME/.@package_name@
@@ -86,8 +92,9 @@ if [ "$#" -eq 0 ]; then
fi
echo Stopping instance \"$inst\"
stop_instance $inst
- if [ "$?" -ne 0 ]; then
- ret=$?
+ rv=$?
+ if [ "$rv" -ne 0 ]; then
+ ret=$rv
fi
done
exit $ret