Package: xvmount Version: 3.7-14 Severity: normal Tags: patch [EMAIL PROTECTED]:~# xvmountconfig
You may now select the user mountable devices from /etc/fstab which are to be made available for mounting by xvmount. uniq: invalid option -- W Try `uniq --help' for more information. [EMAIL PROTECTED]:~# grep uniq /usr/sbin/xvmountconfig sort -s |uniq -W 1 --separator='*'`" Those Debian-specific options have _both_ been removed in Etch coreutils. And now that I look into it, I notice that xvmountconfig's giant backtick process could be improved in several ways. First, there's no need for an initial egrep when you could do all the work in sed -r: sed -r /etc/fstab -e '/^[[:space:]]*#/d' \ -e '/([^[:space:]]+[[:space:]]+){3}.*\busers?\b/!d' \ -e 's/[[:space:]][[:space:]]*/ /g' \ -e 's/^ ?([^ ]*) ([^ ]*).*/\2*\1/' (Note that fstab lines with leading whitespace are valid!) Then the list is sorted, using asterisk as the field-separator rather than, say, NUL; this means the mountpoint "/mnt" sorts between "/mnt%99" and "/mnt/foo", which seems unfortunate. And shouldn't this be controlling for $LC_COLLATE? But never mind all this. Then you uniqify it, using uniq -W 1 --separator='*' to ensure that in cases like this: /dev/floppy /mnt auto rw,noauto,user /dev/cdrom /mnt iso9660 ro,noauto,user the /dev/floppy line (alphabetically later) is silently discarded. I don't see any way of keeping this behaviour with Etch's uniq, but is it really sensible to be uniqifying in the first place? Wouldn't it be more appropriate to bail out saying "I can't tell what you want to have mounting on /mnt!"? In other words: LIST=$(sed blah blah blah | sort) # do the check-for-valid-lines dance, then: DUPE=$(echo "$LIST" | sed 's/\*.*//' | uniq -d) if [ -n "${DUPE}" ] then do a similar complain/restoreconfig/die fi Patch to this effect attached. -- System Information: Debian Release: 4.0 APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i586) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18.hurakan Locale: LANG=en_GB.iso8859-1, LC_CTYPE=en_GB.iso8859-1 (charmap=ISO-8859-1) Versions of packages xvmount depends on: ii debconf [debconf-2.0] 1.5.11 Debian configuration management sy ii libc6 2.3.6.ds1-13 GNU C Library: Shared libraries ii xviewg 3.2p1.4-21.1 XView shared libraries xvmount recommends no packages. -- debconf information: * xvmount/generate_failed: xvmount/wrong_format: xvmount/convert_failed: xvmount/empty_fstab: xvmount/convert_old_config: true
--- /usr/sbin/xvmountconfig.old 2006-09-26 12:15:57.000000000 +0000 +++ /usr/sbin/xvmountconfig 2007-03-17 18:04:06.000000000 +0000 @@ -118,11 +118,10 @@ fi # Treat all device types -LIST="`egrep -e '([^[:space:]]+[[:space:]]+){3}.*,?user,?' /etc/fstab |\ -sed -e '/^[[:space:]]*#/d' \ - -e 's/[[:space:]][[:space:]]*/ /g' \ - -e 's/^\([^ ]*\) \([^ ]*\).*/\2*\1/' |\ -sort -s |uniq -W 1 --separator='*'`" +LIST=$(sed -r /etc/fstab -e '/^[[:space:]]*#/d' \ + -e '/([^[:space:]]+[[:space:]]+){3}.*\busers?\b/!d' \ + -e 's/[[:space:]][[:space:]]*/ /g' \ + -e 's/^ ?([^ ]*) ([^ ]*).*/\2*\1/') # Check for valid lines if [ -z "${LIST}" ] @@ -136,6 +135,21 @@ exit 8 fi +# Check for ambiguous mountpoints +DUPE=$(echo "$LIST" | sed 's/\*.*//' | uniq -d) + +if [ -n "${DUPE}" ] +then + echo "Ambiguous mountpoint found in /etc/fstab:" + echo "$DUPE" + if [ -r ${DIR}/${CONFIGFILE}.bak ] + then + echo "Your old configuration file is restored." + mv ${DIR}/${CONFIGFILE}.bak ${DIR}/${CONFIGFILE} + fi + exit 8 +fi + # Get input - loop DOUBLE=1 while [ ${DOUBLE} = 1 ] ; do