Fix bashisms in scripts 86/15686/3
Boris Egorov [Wed, 10 Dec 2014 05:45:27 +0000 (11:45 +0600)]
Do not use bash-specific features in scripts with '#!/bin/sh'
interpreter; it can be some other shell instead of bash.

Exit codes converted to non-negative values identical to those before
(to not break some scripts relying on old behavior).

Implementation of $RANDOM taken from Debian package apt script
(apt.cron.daily).

Change-Id: I994da43efd94076ee1afc0744ba229dd597bef4b
Fixes: https://bugs.debian.org/772410
Signed-off-by: Clément David <clement.david@scilab-enterprises.com>

scilab/CHANGES_5.5.X
scilab/bin/scilab
scilab/config/install-sh
scilab/modules/dynamic_link/src/scripts/install-sh
scilab/modules/dynamic_link/src/scripts/scicompile.sh
scilab/modules/helptools/src/script/dispatchHelp.sh

index 4f8e338..2a85e63 100644 (file)
@@ -39,6 +39,8 @@ Scilab Bug Fixes
 
 * Bug #13694 fixed - Calling wfir without input arguments produced an error instead of calling wfir_gui.
 
+* Bug #13695 fixed - Scilab used bash-specific features in scripts.
+
 * Bug #13712 fixed - Details added in strcat help page for strcat(strings, "", "r") case.
 
 
index 1ff46fe..4ab3343 100755 (executable)
@@ -50,7 +50,7 @@ if test -n "$SCI"; then
     if test ! -d "$SCI/modules"; then
         echo "Cannot find directory $SCI/modules/ !"
         echo "SCI should point to the root data directory of Scilab"
-        exit -1
+        exit 255
     fi
 fi
 
@@ -814,7 +814,7 @@ case $OS in
         # When started as an Application, the default path was "/"
         # It is not really useful. Changing to HOME.
         # See bugs 8339 and 10575 for rational
-        if test "$(pwd)" == "/"; then
+        if test "$(pwd)" = "/"; then
             cd $HOME
         fi
 
index 377bb86..ba479c1 100755 (executable)
@@ -345,6 +345,10 @@ do
            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
            ;;
          *)
+           if [ -z "$RANDOM" ] ; then
+             # A fix for shells that do not have this bash feature
+             RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+           fi
            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
index 377bb86..ba479c1 100755 (executable)
@@ -345,6 +345,10 @@ do
            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
            ;;
          *)
+           if [ -z "$RANDOM" ] ; then
+             # A fix for shells that do not have this bash feature
+             RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+           fi
            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
index 9426218..694761f 100755 (executable)
@@ -18,13 +18,13 @@ ORIGINALLIBNAME=libsciexternal
 
 if test ! -s Makefile.orig; then 
        echo "The compiler detection has been performed. Please launch compilerDetection.sh before."
-       exit -1
+       exit 255
 fi
 
 # Check number of parameters
 if test $# -lt 2; then
        echo "Syntax : $0 libname sources"
-       exit -2
+       exit 254
 fi
 
 # retrieve parameters
@@ -38,7 +38,7 @@ for file in $SOURCES_TEMP; do
        FFILE=`echo $file|sed -e 's|\.o$|\.f|g'`
        if [ ! -s $file -a -s $CFILE -a -s $FFILE ]; then 
                echo "Error: Cannot find $file"
-               exit -3
+               exit 253
        fi
        # It is an include file, do not build it!
        if [ ! `echo $file|grep -i -E "(\.h$|\.hh$|\.hxx$|\.H$)"` ]; then
index 987eb45..e8ee6e8 100644 (file)
@@ -5,7 +5,7 @@
 
 if test -z "$SCI"; then
         echo "Please define the variable SCI"
-        exit -2
+        exit 254
 fi
 
 REFERENCE_LANG=en_US