Package: makedev
Version: 2.3.1-87
Severity: normal

While trying to fix lirc for #393575 (lirc: mknod in maintainer script), 
I noticed that makedev's support for lirc seems to be broken:

        if [ -x /dev/MAKEDEV ]; then
                (cd /dev && ./MAKEDEV lirc) || true
        fi

leads to

        # LANG= ./MAKEDEV lirc
        udev active, devices will be created in /dev/.static/dev/
        mknod: extra operand `root'
        Try `mknod --help' for more information.
        Warning: MAKEDEV lircd p root lirc 0640 is missing parameter(s).
        mknod: extra operand `root'
        Fifos do not have major and minor device numbers.
        Try `mknod --help' for more information.
        makedev lircd p root lirc 0640: failed
        Warning: MAKEDEV lircm p root lirc 0640 is missing parameter(s).
        mknod: extra operand `root'
        Fifos do not have major and minor device numbers.
        Try `mknod --help' for more information.
        makedev lircm p root lirc 0640: failed

The attached patch seems to fix this issue by creating a new makefifo() 
function modelled after makedev() and fixing device node creation/ access
rights for lirc.

Regards
        Stefan Lippers-Hollmann

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.24-2.6.24.3.slh.11-sidux-amd64 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages makedev depends on:
ii  base-passwd                   3.5.17     Debian base system master password

makedev recommends no packages.

-- no debconf information
diff -u makedev-2.3.1/MAKEDEV makedev-2.3.1/MAKEDEV
--- makedev-2.3.1/MAKEDEV
+++ makedev-2.3.1/MAKEDEV
@@ -31,7 +31,7 @@
    coda="  root root   0600"
   ipsec="  root root   0200"
 readable="  root root   0444"
-   lirc="  root lirc   0640"
+   lirc="  root video   0640"
 
 MAXVT=63
 
@@ -153,0 +154,32 @@
+makefifo () { # usage: makefifo name owner group mode
+	if [ "$opt_v" ]
+	then	if [ "$opt_d" ]
+		then	echo "delete $1"
+		else	echo "create $1 $2:$3 $4" 
+		fi
+	fi
+	# missing parameters are a bug - bail - should we do an exit 1 here?
+	case :$1:$2:$3:$4: in
+		*::*) echo "Warning: MAKEFIFO $@ is missing parameter(s)." >&2;;
+	esac
+	if [ ! "$opt_n" ]
+	then	
+		if [ "$opt_d" ]
+		then
+			rm -f $1
+		else
+			rm -f $1-
+			if mknod $1- p &&
+			   chown $2:$3 $1- &&
+			   chmod $4 $1- &&
+			   mv $1- $1
+			then
+				:	# it worked
+			else
+					# Didn't work, clean up any mess...
+				echo "makefifo $@: failed"
+				rm -f $1-
+			fi
+		fi
+	fi
+}
@@ -2103,9 +2135,9 @@
 		done
                 ;;
         lirc)
-                mknod lirc c 61 0 $lirc
+                makedev lirc c 61 0 $lirc
                 for i in d m; do
-                   makedev lirc${i} p $lirc
+                   makefifo lirc${i} $lirc
                 done
                 ;;
 	update)

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to