# Sample /etc/devfsd.conf configuration file.
# Richard Gooch  <rgooch@atnf.csiro.au>		17-FEB-2002
#
# adapted for busybox devfsd implementation by Tito <farmatito@tiscali.it>
#
# Enable full compatibility mode for old device names. You may comment these
# out if you don't use the old device names. Make sure you know what you're
# doing!
REGISTER	.*		MKOLDCOMPAT
UNREGISTER	.*		RMOLDCOMPAT

# You may comment out the above and uncomment the following if you've
# configured your system to use the original "new" devfs names or the really
# new names
#REGISTER	^vc/		MKOLDCOMPAT
#UNREGISTER	^vc/		RMOLDCOMPAT
#REGISTER	^pty/		MKOLDCOMPAT
#UNREGISTER	^pty/		RMOLDCOMPAT
#REGISTER	^misc/		MKOLDCOMPAT
#UNREGISTER	^misc/		RMOLDCOMPAT

# You may comment these out if you don't use the original "new" names
REGISTER	.*		MKNEWCOMPAT
UNREGISTER	.*		RMNEWCOMPAT

# Enable module autoloading. You may comment this out if you don't use
# autoloading
# Supported by busybox when CONFIG_DEVFSD_MODLOAD is set.
# This actually doesn't work with busybox  modutils but needs
# the real modutils' modprobe
LOOKUP		.*		MODLOAD

# Uncomment the following if you want to set the group to "tty" for the
# pseudo-tty devices. This is necessary so that mesg(1) can later be used to
# enable/disable talk requests and wall(1) messages.
REGISTER	^pty/s.*	PERMISSIONS	-1.tty	0600
#REGISTER	^pts/.*		PERMISSIONS	-1.tty	0600

# Restoring /dev/log on startup would trigger the minilogd/initlog deadlock
# (minilogd falsely assuming syslogd has been started).
REGISTER	^log$		IGNORE
CREATE		^log$		IGNORE
CHANGE		^log$		IGNORE
DELETE		^log$		IGNORE

#
# Uncomment this if you want permissions to be saved and restored
# Do not do this for pseudo-terminal devices
REGISTER	^pt[sy]		IGNORE
CREATE		^pt[sy]		IGNORE
CHANGE		^pt[sy]		IGNORE
DELETE		^pt[sy]		IGNORE
REGISTER	.*		COPY	/lib/dev-state/$devname $devpath
CREATE		.*		COPY	$devpath /lib/dev-state/$devname
CHANGE		.*		COPY	$devpath /lib/dev-state/$devname
#DELETE		.*		CFUNCTION GLOBAL unlink /lib/dev-state/$devname
# Busybox
DELETE		.*		EXECUTE /bin/rm -f		/lib/dev-state/$devname

RESTORE		/lib/dev-state

#
# Uncomment this if you want the old /dev/cdrom symlink
#REGISTER	^cdroms/cdrom0$	CFUNCTION GLOBAL mksymlink $devname cdrom
#UNREGISTER	^cdroms/cdrom0$	CFUNCTION GLOBAL unlink cdrom
# busybox
REGISTER	^cdroms/cdrom0$	EXECUTE /bin/ln -sf $devname cdrom
UNREGISTER	^cdroms/cdrom0$	EXECUTE /bin/rm -f cdrom

#REGISTER	^v4l/video0$	CFUNCTION GLOBAL mksymlink v4l/video0 video
#UNREGISTER	^v4l/video0$	CFUNCTION GLOBAL unlink video
#REGISTER	^radio0$	CFUNCTION GLOBAL mksymlink radio0 radio
#UNREGISTER	^radio0$	CFUNCTION GLOBAL unlink radio
# Busybox
REGISTER	^v4l/video0$	EXECUTE /bin/ln -sf v4l/video0 video
UNREGISTER	^v4l/video0$	EXECUTE /bin/rm -f video
REGISTER	^radio0$		EXECUTE /bin/ln -sf  radio0 radio
UNREGISTER	^radio0$		EXECUTE /bin/rm -f radio

# ALSA stuff
#LOOKUP		snd		MODLOAD ACTION snd

# Uncomment this to let PAM manage devfs
# Not supported by busybox
#REGISTER	.*		CFUNCTION /lib/security/pam_console_apply_devfsd.so pam_console_apply_single $devpath

# Uncomment this to manage USB mouse
# Not supported by busybox
#REGISTER	^input/mouse0$	CFUNCTION GLOBAL mksymlink $devname usbmouse
#UNREGISTER	^input/mouse0$	CFUNCTION GLOBAL unlink usbmouse
# Busybox
#REGISTER	^input/mouse0$	EXECUTE /bin/ln -sf $devname usbmouse
#UNREGISTER	^input/mouse0$	EXECUTE /bin/rm -f usbmouse
# Not supported by busybox
#REGISTER	^input/mice$	CFUNCTION GLOBAL mksymlink $devname usbmouse
#UNREGISTER	^input/mice$	CFUNCTION GLOBAL unlink usbmouse
# Busybox
REGISTER	^input/mice$	EXECUTE /bin/ln -sf $devname usbmouse
UNREGISTER	^input/mice$	EXECUTE /bin/rm -f usbmouse

# If you have removable media and want to force media revalidation when looking
# up new or old compatibility names, uncomment the following lines
# SCSI NEWCOMPAT  /dev/sd/* names
LOOKUP		^(sd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
# SCSI OLDCOMPAT  /dev/sd?? names
LOOKUP		^(sd[a-z]+)[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
# IDE NEWCOMPAT   /dev/ide/hd/* names
LOOKUP		^(ide/hd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
# IDE OLDCOMPAT   /dev/hd?? names
LOOKUP		^(hd[a-z])[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
# IDE-SCSI NEWCOMPAT  /dev/sd/* names
#LOOKUP		^(sd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
#SCSI OLDCOMPAT  /dev/scd? names
LOOKUP		^(scd+)[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1


REGISTER ^dvb/card[0-9]+/[^/]+$ PERMISSIONS root.video 0660
# Not supported by busybox
#REGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	CFUNCTION GLOBAL mksymlink /dev/$devname ost/\2\1
#UNREGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	CFUNCTION GLOBAL unlink ost/\2\1
# Busybox
REGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	EXECUTE /bin/ln -sf /dev/$devname ost/\2\1
UNREGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	EXECUTE /bin/rm -f ost/\2\1

# Include package-generated files from /etc/devfs/conf.d
# Supported by busybox
# INCLUDE   /etc/devfs/conf.d/
INCLUDE   /etc/devfs/busybox/
# Busybox: just for testing
#INCLUDE			/etc/devfs/nothing/
#INCLUDE			/etc/devfs/nothing/nothing
#OPTIONAL_INCLUDE	/etc/devfs/nothing/
#OPTIONAL_INCLUDE	/etc/devfs/nothing/nothing
