#!/bin/sh PROGNAME=`basename $0` VERSION="$Id: config,v 1.3 1994/06/12 12:55:54 root Exp $" CONFIG_DIR=/homes/ops/lib/config MACLIST_FILE=$CONFIG_DIR/maclist CPPVERS_DIR=$CONFIG_DIR/cpp TRANSTBL_FILE=$CONFIG_DIR/trans TMP_FILE=/tmp/$PROGNAME.tmp.$$ REBUILDLST_FILE=/tmp/$PROGNAME.rbld.$$ list() { cat $MACLIST_FILE exit 0 } debug() { [ "$DEBUG_FLAG" = false ] && return echo "$PROGNAME: DEBUG: $@" } verbose() { [ "$VERB_FLAG" = false ] && return echo "$@" } fatal() { echo "$PROGNAME: ERROR: $@" >&2 exit 1 } warning() { echo "$PROGNAME: WARNING: $@" >&2 } usage() { # -q is quiet # -r is reboot echo "Usage: $PROGNAME [ -q ] [ -r ] [ -enable_mouse | -disable_mouse ] [ -enable_getty_on_s1 | -disable_getty on_s1 ]" 1>&2 exit 1 } add() { ( grep -v $1 $MACLIST_FILE; echo "#define $1" ) > $TMP_FILE mv $TMP_FILE $MACLIST_FILE ( grep -l $1 $CPPVERS_DIR/*; [ -f $REBUILDLST_FILE ] && cat $REBUILDLST_FILE ) | sort -u > $TMP_FILE mv $TMP_FILE $REBUILDLST_FILE } minus() { ( grep -v $1 $MACLIST_FILE; echo "#undef $1" ) > $TMP_FILE mv $TMP_FILE $MACLIST_FILE ( grep -l $1 $CPPVERS_DIR/*; [ -f $REBUILDLST_FILE ] && cat $REBUILDLST_FILE ) | sort -u > $TMP_FILE mv $TMP_FILE $REBUILDLST_FILE } main() { # Set default values for options REBOOT_FLAG=false VERB_FLAG=true DEBUG_FLAG=false # Process options while [ "X$1" != "X" ]; do case "$1" in +MULTI_VC) add MULTI_VC ;; -MULTI_VC) minus MULTI_VC ;; +XDM) add XDM minus GETTY_ON_S1 ;; -XDM) minus XDM ;; +SELECTION_ON_S1) add SELECTION_ON_S1 minus GETTY_ON_S1 ;; -SELECTION_ON_S1) minus SELECTION_ON_S1 ;; +GETTY_ON_S1) add GETTY_ON_S1 minus SELECTION_ON_S1 minus XDM ;; -GETTY_ON_S1) minus GETTY_ON_S1 ;; -r) REBOOT_FLAG=true ;; -d) DEBUG_FLAG=true ;; -q) VERB_FLAG=false ;; -l) list ;; -?) manual ;; -*) usage ;; *) break ;; esac shift done # No words are supplied, only options [ "$1" ] && usage [ ! -r $TRANSTBL_FILE ] && fatal "$TRANSTBL_FILE: can't read" rebuild [ "$REBOOT_FLAG" = "true" ] && { sync; sync; sync; /etc/shutdown -r -q now; } exit 0 } rebuild() { [ ! -f $REBUILDLST_FILE ] && { warning "No rebuilds necessary"; return; } [ ! -r $REBUILDLST_FILE ] && fatal "$REBUILDLST_FILE: can't read" [ ! -s $REBUILDLST_FILE ] && fatal "$REBUILDLST_FILE: empty!" for CPP_FILE in `cat $REBUILDLST_FILE`; do BASE_CPP_FILE=`basename $CPP_FILE` set X `grep "^$BASE_CPP_FILE:" $TRANSTBL_FILE | sed 's/:/ /g'` [ ! "$2" ] && { warning "no translation for file $BASE_CPP_FILE"; continue; } REAL_FILE=$3 REAL_FILE_OWNER=$4 REAL_FILE_GROUP=$5 REAL_FILE_PERMS=$6 debug "REAL_FILE is $REAL_FILE" verbose -n "Rebuilding $REAL_FILE ... " # Beware that cpp strips blank # lines /lib/cpp -P -C -undef -imacros $MACLIST_FILE $CPP_FILE > $REAL_FILE chown $REAL_FILE_OWNER.$REAL_FILE_GROUP $REAL_FILE chmod $REAL_FILE_PERMS $REAL_FILE verbose "done" done } manual() { cat <