-----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