-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I had a look at the patch by Erik, and ended up doing the following
improvements:

  * Use GNU getopt to properly handle long-opts
  * Quote echo'ed strings
  * Redirect error messages to stderr
  * Use test -n
  * Emit error when failing version tests


Attached is both a diff and - due to the many changes - the complete
script after my messing with it. How do you like the changes?

Also, I wonder if the strings in the lines below should better be quoted
too?


host_upstream_version=${supported_host_version%%-*}

target_upstream_version=${supported_target_version%%-*}

VERSION=$1



 - Jonas


P.S.

I will fix this bug but not use time on switching to SVN this weekend.

- -- 
* Jonas Smedegaard - idealist og Internet-arkitekt
* Tlf.: +45 40843136  Website: http://dr.jones.dk/

 - Enden er nær: http://www.shibumi.org/eoti.htm
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDUV+Zn7DbMsAkQLgRAvG4AKCGG14182dgzgAjJKhKmeh5EZmeNwCfYN1C
gvxHISz+cNWxYLon2ROmJYs=
=u7K3
-----END PGP SIGNATURE-----
--- mkinitrd.yaird.orig 2005-10-13 02:43:17.000000000 +0200
+++ mkinitrd.yaird      2005-10-15 21:44:09.000000000 +0200
@@ -24,40 +24,78 @@
 PROG=mkinitrd.yaird
 outfile=''
 
-while getopts "d:km:o:r:" flag; do
-       case $flag in
-       d)
-               echo "$PROG: $flag unsupported"
+TEMP=`getopt -o d:km:o:r: --long 
supported-host-version:,supported-target-version: -n "$prg" -- "$@"`
+
+# Check for non-GNU getopt
+if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+
+eval set -- "$TEMP"
+
+while true ; do
+       case "$1" in
+       -d)
+               echo "$PROG: $1 unsupported" >&2
                exit 1
                ;;
-       k)
-               echo "$PROG: $flag unsupported"
+       -k)
+               echo "$PROG: $1 unsupported" >&2
                exit 1
                ;;
-       m)
-               # ignore 
-               ;;
-       o)
-               outfile="$OPTARG"
+       -m)
+               # ignore
+               shift 2
+               ;;
+       -o)
+               outfile="$2"
+               shift 2
                ;;
-       r)
-               echo "$PROG: $flag unsupported"
+       -r)
+               echo "$PROG: $1 unsupported" >&2
                exit 1
                ;;
+       --supported-host-version)
+               supported_host_version="$2"
+               shift 2
+               ;;
+       --supported-target-version)
+               supported_target_version="$2"
+               shift 2
+               ;;
+       --)
+               shift
+               break
+               ;;
        *)
-               echo "$PROG: unknown option $flag"
+               echo "Internal error!" >&2
                exit 1
                ;;
        esac
 done
-shift $(($OPTIND - 1))
+
+if [ -n "$supported_host_version" ] || [ -n "$supported_target_version" ]; then
+       if [ -n "$supported_host_version" ]; then
+               host_upstream_version=${supported_host_version%%-*}
+               if dpkg --compare-versions "$host_upstream_version" lt "2.6.8"; 
then
+                       echo "$PROG: host version too old" >&2
+                       exit 1
+               fi
+       fi
+       if [ -n "$supported_target_version" ]; then
+               target_upstream_version=${supported_target_version%%-*}
+               if dpkg --compare-versions "$target_upstream_version" lt 
"2.6.8"; then
+                       echo "$PROG: target version too old" >&2
+                       exit 1
+               fi
+       fi
+       exit 0
+fi
 
 if [ "$outfile" = "" ]; then
-       echo "$PROG: no output file specified"
+       echo "$PROG: no output file specified" >&2
        exit 1
 fi
 if [ $# -gt 1 ]; then
-       echo "$PROG: extra arguments found"
+       echo "$PROG: extra arguments found" >&2
        exit 1
 fi
 
@@ -76,7 +114,7 @@
 
 case $VERSION in
 */*)
-       echo $PROG: $VERSION is not a valid kernel version >&2
+       echo "$PROG: $VERSION is not a valid kernel version" >&2
        exit 1
        ;;
 esac

Attachment: mkinitrd.yaird
Description: Binary data

Reply via email to