#!/bin/sh # $Id$ # # binfmt-detector: Microsoft PE executable type detector. # # chkconfig: 2345 95 05 # # description: Microsoft PE executable type detector. User can run \ # programs using Wine or Mono simply by clicking on them \ # or typing ./file.exe # # Source function library . /etc/rc.d/init.d/functions BINFMT_DIR=/proc/sys/fs/binfmt_misc [ -d $BINFMT_DIR ] || exit 0 start() { if [ -f /var/lock/subsys/binfmt-detector ]; then msg_already_running "binfmt detector" return fi # check if binfmt_misc is not already mounted if ! grep -q ${BINFMT_DIR} /proc/mounts; then /bin/mount none -t binfmt_misc ${BINFMT_DIR} fi msg_starting "binfmt detector" if [ -e "$BINFMT_DIR/register" ]; then echo ':windows:M::MZ::/usr/bin/binfmt-detector:' > ${BINFMT_DIR}/register echo ':windowsPE:M::PE::/usr/bin/binfmt-detector:' > ${BINFMT_DIR}/register ok touch /var/lock/subsys/binfmt-detector else fail fi } stop() { if [ ! -f /var/lock/subsys/binfmt-detector ]; then msg_not_running "binfmt detector" return fi msg_stopping "binfmt detector" echo '-1' > ${BINFMT_DIR}/windows echo '-1' > ${BINFMT_DIR}/windowsPE rm -f /var/lock/subsys/binfmt-detector ok } condrestart() { if [ ! -f /var/lock/subsys/binfmt-detector ]; then msg_not_running "binfmt-detector" RETVAL=$1 return fi stop start } RETVAL=0 case "$1" in start|reload) start ;; stop) stop ;; restart) stop start ;; try-restart) condrestart 0 ;; force-reload) condrestart 7 ;; status) if [ ! -f /var/lock/subsys/binfmt-detector ]; then msg_not_running "binfmt detector" exit 1 fi for fmt in windows windowsPE; do printf "%s: %s; %s: %s\n" $fmt \ $(grep -E '(disabled|enabled)' $BINFMT_DIR/$fmt) \ $(grep -E 'interpreter' $BINFMT_DIR/$fmt) done ;; *) msg_usage "$0 {start|stop|restart|reload|try-restart|force-reload|status}" exit 3 esac exit $RETVAL