Article Listing 1 Listing 2 Listing 3 Sidebar jan2004.tar

Listing 2 globals

# Listing 2: globals
# The globals file sets the global variables, the OS specific environment,
# and alternate functions for the Sun ckyorn and ckstr functions.
# Also, provides a reboot function if the OS lacks one.

TRUE=0
FALSE=1

CHANGEIDENT_HOME_DIR=/opt/changeident
CHANGEIDENT_BIN_DIR=$CHANGEIDENT_HOME_DIR/bin
CHANGEIDENT_LIB_DIR=$CHANGEIDENT_HOME_DIR/lib
CHANGEIDENT_VAR_DIR=$CHANGEIDENT_HOME_DIR/var
CHANGEIDENT_ETC_DIR=$CHANGEIDENT_HOME_DIR/etc
CONFIG_DIR=$CHANGEIDENT_ETC_DIR/hosts

modules_file=example
os_name=$(uname)
if [ "$os_name" = SunOS ]
then
   modules_file=Solaris
   release_level=$(uname -r)
   if [ "$release_level" = 5.7 ]
   then
      modules_file=Solaris_7
      if [ $(pkginfo INTLitenv 2>/dev/null | wc -l) -gt 0 ]
      then
         modules_file=Intel_Solaris_7
      fi
   fi
fi

DEFAULT_MODULES_FILE=$CHANGEIDENT_ETC_DIR/modules/$modules_file
LOG_FILE=$CHANGEIDENT_VAR_DIR/changeident.log
CHANGELIST=$CHANGEIDENT_VAR_DIR/files.changed
REBOOT=$CHANGEIDENT_VAR_DIR/reboot.flag
PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/ccs/bin
EFFECTIVE_USER=$(id | cut -d\( -f2 | cut -d\) -f1)

if ! type reboot > /dev/null
then
function reboot {
   init 6
}
fi

if ! type ckyorn > /dev/null
then
# this function emulates the Solaris internal ckyorn function.
# optional parameters:
#    d - default value
#    p - user prompt
#    Q - disable q for quit
# return: Y, y, N, N and q, Q if Q option is not disabled.
function ckyorn {
   typeset option=
   typeset default=
   typeset prompt=
   typeset REPLY=
   typeset UREPLY=
   typeset Q=Qq

   while getopts :p:d:Q option
   do
      case $option
      in
         d) default=$OPTARG ;;
         p) prompt=$OPTARG ;;
         Q) typeset Q="" ;;
   esac
   done

   while echo "$prompt\c" 1>&2
   do
      read REPLY
      UREPLY=$REPLY
      case "${UREPLY:=$default}"
      in
         [ynYN$Q]*) break ;;
                 *) echo "ERROR: Please enter yes or no." 1>&2 ;;
      esac
   done

   echo "$UREPLY"
}
fi

if ! type ckstr > /dev/null
then
   function matchregex { expr "$1" : "$2" >/dev/null 2>&1; }

   # this function emulates the Solaris internal ckstr function.
   # paramters passed:
   # -d default value
   # -p prompt
   # -h help string
   # -r regular expression
   # this function returns the user entered value that satisfies
   # the regular expression.
   function ckstr {
      typeset option=''
      typeset default=''
      typeset prompt=''
      typeset REPLY=''
      typeset -i Q=1 # false
      typeset help=''
      typeset regex=''

      while getopts p:d:h:r:Q option
      do
         case $option
         in
         d)
         default=$OPTARG ;;
         p)
         prompt=$OPTARG ;;
         Q)
         Q=0 ;;
         h)
         help=$OPTARG ;;
         r)
         regex="$OPTARG" ;;
         esac
      done

      # redirect the 'prompt' to standard error
      while echo "$prompt\c" 1>&2
      do
         read REPLY
         REPLY=${REPLY:=$default}
         # stop if no regular expression
         [ -z $regex ] && break
         # return q if enabled
         [ $Q -eq 0 ] || case "$REPLY" in [qQ]*) break;; esac
         # check if help should be displayed
         [ "$REPLY" = "?" ] && [ ! -z "$help" ] && echo "$help" 1>&2 && continue
         # check the pattern
         matchregex "$REPLY" "$regex"  && break || \
            echo "ERROR: Pattern matching has failed" 1>&2
      done

      echo "$REPLY\c"
}

fi