r4505 - dists/trunk/utils/initrd-tools

Jonas Smedegaard js at costa.debian.org
Mon Oct 17 08:40:20 UTC 2005


Author: js
Date: 2005-10-17 08:40:19 +0000 (Mon, 17 Oct 2005)
New Revision: 4505

Modified:
   dists/trunk/utils/initrd-tools/mkinitrd
Log:
Use GNU getopt (instead of bash builtin getopts) for improved long-opts handling.

Modified: dists/trunk/utils/initrd-tools/mkinitrd
===================================================================
--- dists/trunk/utils/initrd-tools/mkinitrd	2005-10-17 07:27:40 UTC (rev 4504)
+++ dists/trunk/utils/initrd-tools/mkinitrd	2005-10-17 08:40:19 UTC (rev 4505)
@@ -1309,51 +1309,62 @@
 CONFDIR=/etc/mkinitrd
 unset keep croot cmkimage out || :
 
-while getopts "d:km:o:r:-:" flag; do
-	case $flag in
-	d)
-		CONFDIR="$OPTARG"
+TEMP=`getopt -o d:km:o:r: --long supported-host-version:,supported-target-version: -n "$PROG" -- "$@"`
+
+# Check for non-GNU getopt
+if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+
+eval set -- "$TEMP"
+
+while true ; do
+	case "$1" in
+	-d)
+		CONFDIR="$2"
+		shift 2
 		if [ ! -d "$CONFDIR" ]; then
 			echo "$PROG: $CONFDIR: Not a directory" >&2
 			exit 1
 		fi
 		[ -z "${CONFDIR##/*}" ] || CONFDIR="$ORIGDIR/$CONFDIR"
 		;;
-	k)
+	-k)
 		keep=yes
+		shift 1
 		;;
-	m)
-		cmkimage=$OPTARG
+	-m)
+		cmkimage=$2
+		shift 2
 		;;
-	o)
-		initrd_file="${OPTARG}"
+	-o)
+		initrd_file="$2"
+		shift 2
 		if [ "$initrd_file" = "${initrd_file#/}" ]; then
 			initrd_file="${ORIGDIR}/$initrd_file"
 		fi
 		out=yes
 		;;
-	r)
-		croot=$OPTARG
+	-r)
+		croot=$2
+		shift 2
 		;;
-	-)
-		case ${OPTARG%=*} in
-			supported-host-version)
-				supported_host_version=${OPTARG#*=}
-				;;
-			supported-target-version)
-				supported_target_version=${OPTARG#*=}
-				;;
-			*)
-				usage
-				;;
-		esac
+	--supported-host-version)
+		supported_host_version="$2"
+		shift 2
 		;;
+	--supported-target-version)
+		supported_target_version="$2"
+		shift 2
+		;;
+	--)
+		shift
+		break
+		;;
 	*)
+		echo "Internal error!" >&2
 		usage
 		;;
 	esac
 done
-shift $(($OPTIND - 1))
 
 if [ "$supported_host_version" ] || [ "$supported_target_version" ]; then
 	if [ "$supported_host_version" ]; then




More information about the Kernel-svn-changes mailing list