home *** CD-ROM | disk | FTP | other *** search
- From: pjc@pcbox.UUCP (Paul J. Condie)
- Newsgroups: alt.sources
- Subject: menu(1) part 13 of 14
- Message-ID: <447@pcbox.UUCP>
- Date: 26 Dec 90 20:16:44 GMT
-
-
- #!/bin/sh
- # this is part 13 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file utilities.d/m.d/adduser continued
- #
- CurArch=13
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- echo "x - Continuing file utilities.d/m.d/adduser"
- sed 's/^X//' << 'SHAR_EOF' >> utilities.d/m.d/adduser
- X
- X
- X
- X### Add entry to password file
- X### $PWDFILE must be writable.
- XMenuMsg `tput lines` 0 "Adding entry to $PWDFILE"
- Xif [ ! -w "$PWDFILE" ]
- X then echo "$PWDFILE is not writable."
- X exit 1
- Xfi
- X
- X### Next line is for standard SYSV
- Xecho "$LOGNAME:$PASSWD:$UID:$GID:$NAME:$HOMEDIR:$LOGSHELL" >> $PWDFILE
- Xrcde=$?
- X
- X### Next Line is for the SUN
- X#$ECHO "/^+/i\\" > /tmp/adduser.script
- X#$ECHO "$LOGNAME:$PASSWD:$UID:$GID:$NAME:$HOMEDIR:$LOGSHELL" >> /tmp/adduser.script
- X#sed -f /tmp/adduser.script $PWDFILE > /tmp/newpasswd
- X#cp /tmp/newpasswd $PWDFILE
- X#rm -f /tmp/adduser.script
- X#rm -f /tmp/newpasswd
- X
- Xif [ $rcde -ne 0 ]
- X then echo "[$rcde] Unable to add entry to $PWDFILE"
- X exit 1
- Xfi
- X### Now that the entry has been added to the password file
- X### we can chown the home directory
- Xchown $LOGNAME $HOMEDIR
- Xchgrp $GROUP $HOMEDIR
- Xchmod 755 $HOMEDIR
- X
- X
- X
- X###
- X### Create .profile
- X###
- X
- Xif [ -n "$DPROFILE" ]
- X then MenuMsg `tput lines` 0 "Setting up the .profile."
- Xfi
- XNEWPROFILE=yes
- Xif [ -f $HOMEDIR/.profile ]
- X then reply=`MenuPrompt \`tput lines\` 0 "A .profile already exists in $HOMEDIR. Okay to use it. (y/n) ? "`
- X if [ "$reply" = "y" ]
- X then NEWPROFILE=no
- X MenuMsg `tput lines` 0 "Using existing .profile."
- X else rm -f "$HOMEDIR/.profile"
- X fi
- Xfi
- X
- Xif [ "$NEWPROFILE" = "yes" -a -n "$DPROFILE" ]
- X then MenuMsg `tput lines` 0 "Creating new .profile."
- X ### set default printer LPDEST
- X if [ -n "$PRINTER" ]
- X then sed "s/^LPDEST=local/LPDEST=$PRINTER/" $DPROFILE > $HOMEDIR/.profile
- X else cp $DPROFILE $HOMEDIR/.profile
- X fi
- X chown $LOGNAME $HOMEDIR/.profile
- X chgrp $GROUP $HOMEDIR/.profile
- X chmod 755 $HOMEDIR/.profile
- X chown $LOGNAME $HOMEDIR/.profile
- X MenuMsg `tput lines` 0 ".profile added for $LOGNAME."
- Xfi
- X
- X
- X
- X
- X###
- X### Create bin in HOMEDIR
- X###
- X
- XMenuMsg `tput lines` 0 "Setting up the bin directory."
- Xif [ -d $HOMEDIR/bin ]
- X then MenuMsg `tput lines` 0 "A bin directory already exists."
- X else MenuMsg `tput lines` 0 "Making direcotry $HOMEDIR/bin."
- X mkdir $HOMEDIR/bin
- X chown $LOGNAME $HOMEDIR/bin
- X chgrp $GROUP $HOMEDIR/bin
- X chmod 755 $HOMEDIR/bin
- X chown $LOGNAME $HOMEDIR/bin
- X MenuMsg `tput lines` 0 "Bin directory added for $LOGNAME."
- Xfi
- X
- X
- X
- X###
- X### Grant Database Permissions
- X###
- X
- X#DBPATH=/prod/date.d; export DBPATH
- X#/usr/informix/bin/isql - - <<END
- X#database dateme;
- X#grant select on techs to $LOGNAME;
- X#grant insert on techs to $LOGNAME;
- X#grant update on techs to $LOGNAME;
- X#grant delete on techs to $LOGNAME;
- X#grant connect to $LOGNAME;
- X#END
- X
- Xecho "$LOGNAME added."
- Xexit 1
- SHAR_EOF
- echo "File utilities.d/m.d/adduser is complete"
- chmod 6755 utilities.d/m.d/adduser || echo "restore of utilities.d/m.d/adduser fails"
- echo "x - extracting utilities.d/m.d/adduser.old (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/adduser.old &&
- X#! /bin/ksh
- X# %W% DeltaDate %G% ExtrDate %H%
- X
- X### adduser
- X### Add a new user login to the system.
- X### This script is designed to be run from the menu(1) program.
- X### Menu script file is sadmin.m
- X### This script needs to be run with a set uid to root program. You
- X### pick the one you want to use.
- X###
- X### Arguments:
- X### $1 = login ID
- X### $2 = encrypted password
- X### $3 = numerical user ID
- X### $4 = numerical group ID
- X### $5 = Text (Users Read Name)
- X### $6 = directory to create users home directory in
- X### $7 = program to use as Shell
- X### $8 = default .profile for user
- X### $9 = default printer
- X###
- X### Note:
- X### In order to get chgrp to work you need to chown to $LOGNAME first.
- X### The setuid does not work for chgrp ????
- X###
- X
- X### Validate argument count
- Xif [ $# -ne 9 ]
- X then exit 1
- Xfi
- X
- XLOGNAME=$1
- XPASSWD=$2
- XUID=$3
- XGID=$4
- XNAME=$5
- XHOMEDIR=$6/$LOGNAME
- XLOGSHELL=$7
- XDPROFILE=$8
- XPRINTER=$9
- X
- XPWDFILE=/etc/passwd
- XGROUPFILE=/etc/group
- XECHO=/bin/echo
- X
- X#stty sane erase '^h' echoe isig
- X
- Xtrap "$ECHO 'Adduser aborted.\nPress [ Return ] to continue...\c'; read reply; exit" 2 3 15
- X
- X$ECHO "\n"
- X
- Xif grep '^'$LOGNAME: $PWDFILE > /dev/null 2>&1
- X then $ECHO "Logname $LOGNAME is already in use."
- X $ECHO "Please try another."
- X $ECHO "Press [ Return ] to continue...\c"
- X read reply
- X exit 0
- Xfi
- X
- XGROUP=`awk 'BEGIN{FS=":"} {if($3 == g) print $1}' g=$GID $GROUPFILE`
- X
- X
- X
- X$ECHO "Logname: $LOGNAME"
- X$ECHO "Default Passwd: $PASSWD"
- X$ECHO "Real name: $NAME"
- X$ECHO "User id: $UID"
- X$ECHO "Group: $GROUP"
- X$ECHO "Group number: $GID"
- X$ECHO "Home directory: $HOMEDIR"
- X$ECHO "Default Printer: $PRINTER"
- X
- X#$ECHO "\nDatabase Permissions:"
- X#$ECHO "\tService Rep: $rep"
- X
- X$ECHO "\nOkay to add (y/n)? \c"
- Xread reply
- X
- X$ECHO "\n"
- Xif [ "$reply" = "y" ]
- X then trap "$ECHO 'Too late to abort adduser!'" 2 3 15
- X $ECHO "Adding entry to $PWDFILE"
- X ### Next line is for standard SYSV
- X $ECHO "$LOGNAME:$PASSWD:$UID:$GID:$NAME:$HOMEDIR:$LOGSHELL" >> $PWDFILE
- X if [ $? -ne 0 ]
- X then $ECHO "Unable to add entry to $PWDFILE"
- X $ECHO "Aborting add new user."
- X $ECHO "Press [ Return ] to continue...\c"
- X read reply
- X exit 0
- X fi
- X ### Next Line is for the SUN
- X# $ECHO "/^+/i\\" > /tmp/adduser.script
- X# $ECHO "$LOGNAME:$PASSWD:$UID:$GID:$NAME:$HOMEDIR:$LOGSHELL" >> /tmp/adduser.script
- X# sed -f /tmp/adduser.script $PWDFILE > /tmp/newpasswd
- X# cp /tmp/newpasswd $PWDFILE
- X# rm -f /tmp/adduser.script
- X# rm -f /tmp/newpasswd
- X else
- X $ECHO "$LOGNAME not added."
- X exit
- Xfi
- X
- X
- X### Make home directory
- XMAKEDIR=yes
- Xif [ -s $HOMEDIR ]
- X then $ECHO "Warning: $HOMEDIR exists. Okay to use it (y/n)? \c"
- X read reply
- X if [ "$reply" = "y" ]
- X then MAKEDIR=no
- X fi
- Xfi
- Xif [ "$MAKEDIR" = "yes" ]
- X then mkdir $HOMEDIR
- X if [ $? -ne 0 ]
- X then $ECHO "Could not create $HOMEDIR."
- X $ECHO "Aborting adduser."
- X $ECHO "Removing entry in $PWDFILE"
- X sed -e "/^$LOGNAME:/D" $PWDFILE > /tmp/passwd
- X if [ $? -ne 0 ]
- X then $ECHO "Unable to delete entry from password file."
- X exit
- X else chmod 744 $PWDFILE
- X cp /tmp/passwd $PWDFILE
- X rm -f /tmp/passwd
- X fi
- X $ECHO "Press [ Return ] to continue...\c"
- X read reply
- X exit
- X fi
- Xfi
- X# Correct mode of HOMEDIR
- Xchown $LOGNAME $HOMEDIR
- X/bin/chgrp $GROUP $HOMEDIR
- X/bin/chmod 754 $HOMEDIR
- Xchown $LOGNAME $HOMEDIR
- X
- X
- X
- X###
- X### If there is no .profile in HOMEDIR
- X### then Copy default .profile to HOMEDIR
- X###
- X
- Xif [ -f $HOMEDIR/.profile ]
- X then $ECHO "A .profile already exists in $HOMEDIR."
- X else
- X if [ -f $DPROFILE ]
- X then $ECHO "Placing a .profile in $HOMEDIR"
- X ### Next line is used to set default printer LPDEST
- X if [ "$PRINTER" != "NULL" ]
- X # fix this
- X then sed "s/^LPDEST=local/LPDEST=$PRINTER/" $DPROFILE > $HOMEDIR/.profile
- X else cp $DPROFILE $HOMEDIR/.profile
- X fi
- X chown $LOGNAME $HOMEDIR/.profile
- X /bin/chgrp $GROUP $HOMEDIR/.profile
- X /bin/chmod 754 $HOMEDIR/.profile
- X chown $LOGNAME $HOMEDIR/.profile
- X $ECHO "Default .profile added for $LOGNAME."
- X else $ECHO "The default .profile ($DPROFILE) was not found."
- X fi
- Xfi
- X
- X
- X
- X###
- X### Create bin in HOMEDIR
- X###
- X
- Xif [ -d $HOMEDIR/bin ]
- X then $ECHO "A bin directory already exists."
- X else
- X $ECHO "Making directory $HOMEDIR/bin"
- X mkdir $HOMEDIR/bin
- X chown $LOGNAME $HOMEDIR/bin
- X /bin/chgrp $GROUP $HOMEDIR/bin
- X /bin/chmod 755 $HOMEDIR/bin
- X chown $LOGNAME $HOMEDIR/bin
- X $ECHO "Bin directory added for $LOGNAME."
- Xfi
- X
- X
- X
- X###
- X### Grant Database Permissions
- X###
- X
- X#DBPATH=/prod/date.d; export DBPATH
- X#/usr/informix/bin/isql - - <<END
- X#database dateme;
- X#grant select on techs to $LOGNAME;
- X#grant insert on techs to $LOGNAME;
- X#grant update on techs to $LOGNAME;
- X#grant delete on techs to $LOGNAME;
- X#grant connect to $LOGNAME;
- X#END
- X
- X$ECHO "$LOGNAME added."
- X$ECHO "Press [ Return ] to continue...\c"
- Xread reply
- SHAR_EOF
- chmod 6755 utilities.d/m.d/adduser.old || echo "restore of utilities.d/m.d/adduser.old fails"
- echo "x - extracting utilities.d/m.d/deluser (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/deluser &&
- X#! /usr/lbin/ksh
- X# @(#)deluser.sh 1.1 DeltaDate 12/31/87 ExtrDate 12/31/87
- X###
- X### You need to chown all files in the home directory you want to delete
- X### to $LOGNAME before you can remove the home directory.
- X###
- X
- XLOGNAME=$1
- XECHO=echo
- XUIDBASE=2000
- X
- Xtrap "$ECHO 'Deluser aborted.'; exit 1" 2 3 15
- X
- Xtput clear
- X#stty sane erase '^h' echoe isig
- X
- X
- X
- Xcase $LOGNAME in
- X dateme|pjc|root|nobody|daemon|sys|bin|uucp|nuucp|news|informix|telic|cadsys)
- X $ECHO "Sorry, You don't have permission to delete that one."
- X continue
- X ;;
- Xesac
- X
- X###
- X### Check for validity - listed in password file.
- X###
- Xif grep '^'$LOGNAME: /etc/passwd > /dev/null 2>&1
- X then
- X ### Extract data for this user and display.
- X setthem=`sed -n "s/^$LOGNAME:\(.*\):\(.*\):\(.*\):\(.*\):\(.*\):\(.*\)/passwd=\1;uid=\2;gid=\3;realname='\4';homedir=\5;shell=\6/p" /etc/passwd`
- X eval $setthem
- X group=`awk 'BEGIN{FS=":"} {if($3 == g) print $1}' g=$gid /etc/group`
- X
- X ###
- X ### uid must be >= UIDBASE
- X ###
- X if [ "$uid" -lt $UIDBASE ]
- X then $ECHO "Sorry, You don't have permission to delete that one."
- X continue
- X fi
- X
- X $ECHO "\nLogname: $LOGNAME"
- X $ECHO "Real name: $realname"
- X $ECHO "User id: $uid"
- X $ECHO "Group: $group"
- X $ECHO "Group number: $gid"
- X $ECHO "Home directory: $homedir"
- X $ECHO "\n\n"
- X break
- X else
- X $ECHO "$LOGNAME is not listed in the password file. Try again."
- X read reply
- Xfi
- X
- X
- X
- Xwhile true
- Xdo
- X $ECHO "Do you wish to delete this user from the system (y/n): \c"
- X read reply
- X
- X case $reply in
- X n|N) break ;;
- X y|Y)
- X if [ "$homedir" != "/prod/date.d/cadsys.d" ]
- X then
- X ### Not a Service Rep
- X ### Service Reps never had permission here
- X DBPATH=/prod/date.d
- X export DBPATH
- X/usr/informix/bin/isql - - <<END
- Xdatabase dateme;
- Xrevoke all on techs from $LOGNAME;
- Xrevoke all on turfs from $LOGNAME;
- Xrevoke all on techtime from $LOGNAME;
- Xrevoke all on factors from $LOGNAME;
- Xrevoke all on turfs from $LOGNAME;
- XEND
- X fi
- X DBPATH=/prod/date.d/cadsys.d
- X export DBPATH
- X/usr/informix/bin/isql - - <<END
- Xdatabase cadsys;
- Xrevoke all on appt from $LOGNAME;
- Xrevoke all on grid from $LOGNAME;
- Xrevoke all on syserror from $LOGNAME;
- Xrevoke all on appt_time from $LOGNAME;
- Xrevoke all on sorder from $LOGNAME;
- Xrevoke all on sysdeflt from $LOGNAME;
- Xrevoke connect from $LOGNAME;
- XEND
- X sed -e "/^$LOGNAME:/D" /etc/passwd > /tmp/passwd
- X if [ $? -ne 0 ]
- X then $ECHO "Unable to delete from password file."
- X exit
- X fi
- X chmod 744 /etc/passwd
- X cp /tmp/passwd /etc/passwd
- X
- X ###
- X ### CUSTOMIZE
- X ### if this is a service rep we don't want to remove homedir
- X ###
- X if [ "$homedir" != "/prod/date.d/cadsys.d" ]
- X then
- X find $homedir -exec /etc/chown $LOGNAME {} \;
- X rm -r $homedir
- X fi
- X $ECHO "\nUser removed from system."
- X break;
- X ;;
- X *) $ECHO "Invalid reply."
- X continue ;;
- X esac
- SHAR_EOF
- chmod 0777 utilities.d/m.d/deluser || echo "restore of utilities.d/m.d/deluser fails"
- echo "x - extracting utilities.d/m.d/junk (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/junk &&
- X sed -e "/^$LOGNAME:/D" /etc/passwd > /tmp/passwd
- SHAR_EOF
- chmod 0644 utilities.d/m.d/junk || echo "restore of utilities.d/m.d/junk fails"
- echo "x - extracting utilities.d/m.d/junk.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/junk.m &&
- X###
- X### .POPMENU
- X### Printer Selection Menu
- X###
- X
- X.TITLE
- XPrinter Menu
- X
- X.TEXT 23 0
- XSelect A Printer.
- X
- X.SETENV BELL LPDEST=srv4e_700ps Printer (srv4e_700ps) selected.
- Xsrv4e_700ps
- X
- X.SETENV BELL LPDEST=srv4e_700dm Printer (srv4e_700dm) selected.
- Xsrv4e_700dm
- X
- X.SETENV BELL LPDEST=srv4e_811a Printer (srv4e_811a) selected.
- Xsrv4e_811a
- X
- X.SETENV BELL LPDEST=srv4e_760c Printer (srv4e_760c) selected.
- Xsrv4e_760c
- SHAR_EOF
- chmod 0644 utilities.d/m.d/junk.m || echo "restore of utilities.d/m.d/junk.m fails"
- echo "x - extracting utilities.d/m.d/passwdsrn.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/passwdsrn.m &&
- X.DEFINE_SCREEN passwdsrn
- X window_title = "Password Screen"
- X window_rows = 5
- X window_cols = 26
- X exit_last_field
- X
- X field_name = $PASSWD
- X field_label = Password
- X field_row = 2
- X field_col = 12
- X field_length = 8
- X field_edits = PROTECT
- X field_prompt = "Enter password."
- XENDSCREEN
- SHAR_EOF
- chmod 0644 utilities.d/m.d/passwdsrn.m || echo "restore of utilities.d/m.d/passwdsrn.m fails"
- echo "x - extracting utilities.d/m.d/printer2.sh (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/printer2.sh &&
- XFrom uucp Tue Nov 28 16:07 PST 1989
- X>From uucp Tue Nov 28 15:56 PST 1989 remote from pacbell
- X>From srv.PacBell.COM!pjcondie Tue Nov 28 14:35:31 1989 remote from mother
- XReceived: from pbuddy.srv.PacBell.COM (pbuddy-gw) by srv.PacBell.COM (4.0/SMI-4.0)
- X id AA17298; Tue, 28 Nov 89 14:35:31 PST
- XReceived: from lacm2.srv.PacBell.COM by pbuddy.srv.PacBell.COM (4.0/SMI-4.0)
- X id AA02251; Tue, 28 Nov 89 14:37:38 PST
- XDate: Tue, 28 Nov 89 14:37:38 PST
- XFrom: pjcondie@srv.PacBell.COM (Paul J. Condie)
- XMessage-Id: <8911282237.AA02251@pbuddy.srv.PacBell.COM>
- XTo: pcbox!pjc
- XSubject: Re: printers.sh
- XStatus: R
- X
- X
- X----- Begin Included Message -----
- X
- X>From pbear2!ssl Tue Nov 28 14:31:29 1989
- XSubject: printers.sh
- XTo: pjc (Paul J. Condie(baer))
- XX-Mailer: ELM [version 2.2 PL0]
- X
- X###
- X### Build lpoptions.m from lpoptions.menu
- X### Printer Selection Menu
- X###
- X
- XDUMMY="zzzzzzzz" # end-of-list marker
- X
- Xsetprinters() { # make a function
- Xlpstat -a | grep accept | cut -d' ' -f1 | ( sort ; echo $DUMMY ) |
- Xfor i in `cat`
- Xdo
- X if [ $i = $DUMMY ] # hit last one?
- X then
- X echo $PRINTERS
- X fi
- X PRINTERS=$PRINTERS","$i # concat
- Xdone ; }
- X
- XPRINTERS=$LPDEST`setprinters` # now build it
- Xsed -e s/\$PRINTERS/$PRINTERS/ $BVPS/misc/lpoptions.menu > lpoptions.m
- X
- X
- X----- End Included Message -----
- X
- X
- X
- SHAR_EOF
- chmod 0644 utilities.d/m.d/printer2.sh || echo "restore of utilities.d/m.d/printer2.sh fails"
- echo "x - extracting utilities.d/m.d/printers.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/printers.m &&
- X###
- X### .POPMENU
- X### Printer Selection Menu
- X###
- X
- X.TITLE
- XPrinter Menu
- X
- X.TEXT 23 0
- XSelect A Printer.
- X
- X.SETENV BELL LPDEST=srv4e_700ps Printer (srv4e_700ps) selected.
- Xsrv4e_700ps
- X
- X.SETENV BELL LPDEST=srv4e_700dm Printer (srv4e_700dm) selected.
- Xsrv4e_700dm
- X
- X.SETENV BELL LPDEST=srv4e_811a Printer (srv4e_811a) selected.
- Xsrv4e_811a
- X
- X.SETENV BELL LPDEST=srv4e_760c Printer (srv4e_760c) selected.
- Xsrv4e_760c
- X
- X.POPMENU printers.m
- XPOP
- SHAR_EOF
- chmod 0644 utilities.d/m.d/printers.m || echo "restore of utilities.d/m.d/printers.m fails"
- echo "x - extracting utilities.d/m.d/printers.sh (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/printers.sh &&
- X###
- X### Build a .POPMENU
- X### Printer Selection Menu
- X###
- X
- Xecho ".TITLE" > printers.m
- Xecho "Printer Menu" >> printers.m
- X
- Xecho ".TEXT 23 0" >> printers.m
- Xecho "Select A Printer." >> printers.m
- X
- Xlpstat -p | awk '{ print $2 }' |
- Xfor i in `cat`
- Xdo
- X echo ".SETENV BELL LPDEST=$i Printer ($i) selected." >> printers.m
- X echo "$i" >> printers.m
- Xdone
- SHAR_EOF
- chmod 0755 utilities.d/m.d/printers.sh || echo "restore of utilities.d/m.d/printers.sh fails"
- echo "x - extracting utilities.d/m.d/reportsrn.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/reportsrn.m &&
- X### Screen to prompt user for report options.
- X### Fields:
- X### $FDATE - From date.
- X### $TDATE - To date.
- X### $PRIORITY - Priority
- X### $LPDEST - Printer Destination
- X### $TARGET - Print to terminal or printer.
- X
- X.DEFINE_SCREEN reportsrn
- X window_title = "REPORT OPTIONS"
- X window_rows = 10
- X window_cols = 28
- X
- X ### $FDATE - From date.
- X
- X field_name = $FDATE
- X field_label = From
- X field_row = 2
- X field_col = 13
- X field_length = 6
- X field_type = DATE
- X field_mask = "MM/DD/YY"
- X field_mustenter
- X field_prompt = "Enter starting date."
- X
- X ### $TDATE - To date.
- X
- X field_name = $TDATE
- X field_label = To
- X field_row = 3
- X field_col = 13
- X field_length = 6
- X field_type = DATE
- X field_mask = "MM/DD/YY"
- X field_mustenter
- X field_prompt = "Enter starting date."
- X
- X field_name = $PRIORITY
- X field_label = Priority
- X field_row = 5
- X field_col = 13
- X field_length = 6
- X field_type = MENU
- X field_range = "LOW,MEDIUM,HIGH"
- X field_prompt = "Select priority level."
- X
- X field_name = $LPDEST
- X field_label = Printer
- X field_row = 6
- X field_col = 13
- X field_length = 11
- X field_type = SET
- X field_range = "srv4e_700ps,srv4e_811a"
- X field_prompt = "Select printer."
- X
- X field_name = $TARGET
- X field_label = "Print To"
- X field_row = 7
- X field_col = 13
- X field_length = 8
- X field_type = SET
- X field_range = "TERMINAL,PRINTER,BOTH"
- X field_prompt = "Print to terminal or printer."
- XENDSCREEN
- SHAR_EOF
- chmod 0644 utilities.d/m.d/reportsrn.m || echo "restore of utilities.d/m.d/reportsrn.m fails"
- echo "x - extracting utilities.d/m.d/sadmin.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/sadmin.m &&
- X### sadmin.m
- X### System administration menu(1) script file.
- X###
- X### Contains:
- X### Add New User To System.
- X### Remove User From System.
- X
- XGROUP=users # default group for new users
- XHOMEDIRS=/tmp # where to make home dir for new users
- XPRINTER="" # default printer destination
- XDPROFILE= # skeleton .profile for new users
- XLOGSHELL=/bin/ksh # default login shell for new users
- XPASSWDAGE=",O/" # password entry for new users
- XUIDBASE=1000 # new users uid start from here
- X
- XPWDFILE=/etc/passwd # password file
- XGROUPFILE=/etc/group
- X
- X.TITLE
- X$LOGNAME ...System Administration...$DATE
- X.TITLE
- X...Menu...$TIME
- X.LINE
- X
- X.GETINPUT adduser
- XAdd New User To System.
- X
- X.GETINPUT deluser
- XRemove User From System.
- X
- X.GETINPUT dbapermissions
- XSet Database Permissions.
- X
- X
- X
- X### Screen Definitions
- X
- X.DEFINE_SCREEN adduser
- X exit_on_cancel
- X after_screen = "adduser \"$logname\" \"$PASSWDAGE\" \"$UID\" \"$GID\" \
- X \"$realname\" \"$HOMEDIR\" \"$LOGSHELL\" \
- X \"$DPROFILE\" \"$PRINTER\" \"$PWDFILE\" \
- X \"$GROUPFILE\"
- X exit $?"
- X
- X field_name = $logname
- X field_label = "Login Name"
- X field_row = 2, field_col = 19
- X field_length = 8
- X field_type = ALPHANUM, field_mask = "A "
- X field_min = 3
- X field_mustenter
- X ### make sure logname is unique and tag on logname to homedirs
- X after_field = "grep $logname $PWDFILE >/dev/null 2>/dev/null
- X if [ $? -eq 0 ]
- X then echo \"Login already exists.\"
- X exit 1
- X else echo \"\$HOMEDIR=$HOMEDIRS/$logname\"
- X exit 0
- X fi"
- X
- X field_name = $realname
- X field_label = "Real Name"
- X field_row = 3, field_col = 19
- X field_length = 25
- X field_type = ALPHANUM
- X field_mustenter
- X
- X field_name = $UID
- X field_label = "User ID"
- X field_row = 4, field_col = 19
- X field_length = 5
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $GROUP
- X field_label = "Group"
- X field_row = 5, field_col = 19
- X field_length = 10
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $GID
- X field_label = "Group ID"
- X field_row = 6, field_col = 19
- X field_length = 5
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $HOMEDIR
- X field_label = "Home Directory"
- X field_row = 7, field_col = 19
- X field_length = 25
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $PRINTER
- X field_label = "Default Printer"
- X field_row = 8, field_col = 19
- X field_type = MENU
- X ### build field_range based on available printers
- X field_range = "`lpstat -p | awk '{ print $2 }' |
- X for printer in `cat`
- X do
- X if [ \"$printer\" = \"unknown\" ]
- X then continue
- X fi
- X if [ -z \"$RANGEVALUES\" ]
- X then RANGEVALUES=$printer
- X else RANGEVALUES=\"$RANGEVALUES,$printer\"
- X fi
- X echo $RANGEVALUES > /tmp/menu.tmpfile
- X done
- X cat /tmp/menu.tmpfile`"
- X
- X ### get next unused uid greater than UIDBASE from password file
- X ### get gid from group file using GROUP
- X field_defaults = "UID=`awk 'BEGIN{ FS=\":\" } { x[$3] = 1 } END \
- X { i = UIDBASE; while (x[i] == 1) { ++i }; print i }' \
- X UIDBASE=$UIDBASE $PWDFILE`
- X GID=`awk 'BEGIN{FS=\":\"} {if($1 == g) print $3}' g=$GROUP \
- X $GROUPFILE`
- X echo \\"\\" \\"\\" $UID $GROUP $GID $HOMEDIRS \\"$PRINTER\\""
- XENDSCREEN
- X
- X
- X
- X.DEFINE_SCREEN deluser
- X exit_on_cancel
- X after_screen = "deluser \"$logname\" \"$PWDFILE\"
- X exit $?"
- X
- X field_name = $logname
- X field_label = "Login Name"
- X field_row = 2, field_col = 19
- X field_length = 8
- X field_type = ALPHANUM, field_mask = "A "
- X field_min = 3
- X field_mustenter
- X ### make sure logname exists and set other fields
- X after_field = "grep $logname $PWDFILE >/dev/null 2>/dev/null
- X if [ $? -ne 0 ]
- X then echo \"Login not found.\"
- X exit 1
- X fi
- X setthem=`sed -n \"s/^$logname:\(.*\):\(.*\):\(.*\):\(.*\):\(.*\):\(.*\)/passwd=\1;uid=\2;gid=\3;realname='\4';homedir=\5;shell=\6/p\" /etc/passwd`
- X eval $setthem
- X group=`awk 'BEGIN{FS=\":\"} {if($3 == g) print $1}' g=$gid /etc/group`
- X if [ \"$uid\" -lt $UIDBASE ]
- X then echo \"Sorry, You don't have permission to delete that one.\"
- X exit 1
- X fi
- X echo \"$logname\" \"$realname\" \"$uid\" \"$group\" \"$gid\" \"$homedir\"
- X exit 0"
- X
- X field_name = $realname
- X field_label = "Real Name"
- X field_row = 3, field_col = 19
- X field_length = 25
- X field_type = ALPHANUM
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $UID
- X field_label = "User ID"
- X field_row = 4, field_col = 19
- X field_length = 5
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $GROUP
- X field_label = "Group"
- X field_row = 5, field_col = 19
- X field_length = 10
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $GID
- X field_label = "Group ID"
- X field_row = 6, field_col = 19
- X field_length = 5
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $HOMEDIR
- X field_label = "Home Directory"
- X field_row = 7, field_col = 19
- X field_length = 25
- X field_noinput
- X field_terminator = " "
- X
- X field_name = $DELETE
- X field_label = "Delete"
- X field_row = 9, field_col = 19
- X field_range = "YES,NO"
- X field_edits = SET
- X
- X
- X field_defaults = "echo \\"\\" \\"\\" \\"\\" \\"\\" \\"\\""
- XENDSCREEN
- X
- X
- X.DEFINE_SCREEN dbapermissions
- X after_screen = "setdbaperm hits he"
- X
- X ### Column Headings
- X text = 2 3 "\UUsers\N"
- X text = 2 16 "\USelect\N"
- X text = 2 23 "\UUpdate\N"
- X text = 2 30 "\UInsert\N"
- X text = 2 37 "\UDelete\N"
- X text = 2 44 "\UIndex\N"
- X text = 2 51 "\UAlter\N"
- X
- X ### Retrieve current database permissions
- X ### Save for latter comparison on what logins got changed.
- X ### Set variables with current permissions
- X field_defaults = "LINECNT=0
- X DATA=\"\"
- X isql hits - <<-END 2> /dev/null | tee -a /tmp/tmpfile2 |
- X info tables access for he;
- XEND
- X for i in `cat`
- X do
- X LINECNT=`expr $LINECNT + 1`
- X [ $LINECNT -le 7 ] && continue
- X DATA=\"$DATA $i\"
- X echo $DATA > /tmp/menu.tmpfile
- X done
- X cat /tmp/menu.tmpfile"
- X
- X field_name = $USER[0]
- X field_row = 3, field_col = 3
- X field_length = 10
- X field_edits = ALPHANUM
- X after_field = "[ \"${USER[0]}\" = \"public\" ] && exit 0
- X [ \"${USER[0]}\" = \"\" ] && exit 0
- X grep \"${USER[0]}\" $PWDFILE >/dev/null 2>/dev/null
- X if [ $? -ne 0 ]
- X then echo \"Login not found.\"
- X exit 1
- X else exit 0
- X fi"
- X
- X field_name = $SELECT[0]
- X field_row = 3, field_col = 17
- X field_edits = SET
- X field_range = ",All,No"
- X
- X field_name = $UPDATE[0]
- X field_row = 3, field_col = 24
- X field_edits = SET
- X field_range = ",All,No"
- X
- X field_name = $INSERT[0]
- X field_row = 3, field_col = 31
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $DELETE[0]
- X field_row = 3, field_col = 38
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $INDEX[0]
- X field_row = 3, field_col = 45
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $ALTER[0]
- X field_row = 3, field_col = 52
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $USER[1]
- X field_row = 4, field_col = 3
- X field_length = 10
- X field_edits = ALPHANUM
- X ### accept public login
- X after_field = "[ \"${USER[1]}\" = \"public\" ] && exit 0
- X [ \"${USER[1]}\" = \"\" ] && exit 0
- X grep \"${USER[1]}\" $PWDFILE >/dev/null 2>/dev/null
- X if [ $? -ne 0 ]
- X then echo \"Login not found.\"
- X exit 1
- X else [ \"${SELECT[1]}\" = \"\" ] && echo \"\$SELECT[1]=All \$UPDATE[1]=No \$INSERT[1]=No \$DELETE[1]=No \$INDEX[1]=No \$ALTER[1]=No\"
- X exit 0
- X fi"
- X
- X field_name = $SELECT[1]
- X field_row = 4, field_col = 17
- X field_edits = SET
- X field_range = ",All,No"
- X
- X field_name = $UPDATE[1]
- X field_row = 4, field_col = 24
- X field_edits = SET
- X field_range = ",All,No"
- X
- X field_name = $INSERT[1]
- X field_row = 4, field_col = 31
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $DELETE[1]
- X field_row = 4, field_col = 38
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $INDEX[1]
- X field_row = 4, field_col = 45
- X field_edits = SET
- X field_range = ",Yes,No"
- X
- X field_name = $ALTER[1]
- X field_row = 4, field_col = 52
- X field_edits = SET
- X field_range = ",Yes,No"
- XENDSCREEN
- SHAR_EOF
- chmod 0644 utilities.d/m.d/sadmin.m || echo "restore of utilities.d/m.d/sadmin.m fails"
- echo "x - extracting utilities.d/m.d/sample.m (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/sample.m &&
- X### Sample.Menu
- X### A sample menu script file.
- X
- X.TITLE
- X$LOGNAME ...SAMPLE...$DATE
- X.TITLE
- X$MAIL...MENU...$TIME
- X.LINE
- X
- X.GNAME sample sample.m
- X
- X.INCLUDE reportsrn.m
- X.INCLUDE passwdsrn.m
- X
- X.TEXT 22 61
- X"?" for help :
- X
- X.SYSTEM echo "Press [ ^d ] to return to menu ..."; ksh
- XUnix System.
- X
- X.SYSTEM who; \
- X echo "Press [ Return ] to continue ..."; \
- X read reply
- XShow Who Is On The System.
- X
- X.SYSTEM more sample.m; echo "Press [ Return ] to continue ...\c"; read reply
- XDisplay sample.m script file.
- X
- X.POPMENU printers.m
- XSelect Printer Menu ($LPDEST).
- X
- X.GETINPUT reportsrn
- XA Sample GETINPUT Screen.
- X
- X.GETINPUT passwdsrn
- XA Sample Password Screen.
- X
- X.SPACE
- X
- X.EXIT
- XExit Menu Program.
- SHAR_EOF
- chmod 0644 utilities.d/m.d/sample.m || echo "restore of utilities.d/m.d/sample.m fails"
- echo "x - extracting utilities.d/m.d/setdbaperm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/setdbaperm &&
- X#!/bin/ksh
- X
- X### $1 - database
- X### $2 - table name
- X
- X[ $# -ne 2 ] && exit 1 # validate argument count
- X
- XDATABASE=$1
- XTABLE=$2
- XTMPFILE=/tmp/menutmp
- X
- X
- X# Get current settings
- Xisql "$DATABASE" - <<-END 2> /dev/null > $TMPFILE
- X info tables access for $TABLE;
- XEND
- X
- X
- X# Loop through each user
- Xlet i=0
- Xfor dummy in "${USER[@]}"
- Xdo
- X GC="" # Grant Commands
- X grep "^${USER[i]}" $TMPFILE | read line
- X if [ $? -ne 0 ]
- X then # "No match "${USER[i]}" - add new login's permissions."
- X GC="${GC}grant connect to ${USER[i]};\n"
- X [ "${SELECT[i]}" = "All" ] &&
- X GC="${GC}grant select on $TABLE to ${USER[i]};\n"
- X [ "${UPDATE[i]}" = "All" ] &&
- X GC="${GC}grant update on $TABLE to ${USER[i]};\n"
- X [ "${INSERT[i]}" = "Yes" ] &&
- X GC="${GC}grant insert on $TABLE to ${USER[i]};\n"
- X [ "${DELETE[i]}" = "Yes" ] &&
- X GC="${GC}grant delete on $TABLE to ${USER[i]};\n"
- X [ "${INDEX[i]}" = "Yes" ] &&
- X GC="${GC}grant index on $TABLE to ${USER[i]};\n"
- X [ "${ALTER[i]}" = "Yes" ] &&
- X GC="${GC}grant alter on $TABLE to ${USER[i]};\n"
- X else # "Match "${USER[i]}" - check if permissions have changed."
- X set $line
- X PUSER=$1; PSELECT=$2; PUPDATE=$3; PINSERT=$4;
- X PDELETE=$5; PINDEX=$6; PALTER=$7
- X if [ "${SELECT[i]}" != "$PSELECT" ]
- X then # "Select changed. $PSELECT-${SELECT[i]}"
- X [ "${SELECT[i]}" = "All" ] &&
- X GC="${GC}grant select on $TABLE from ${USER[i]};\n"
- X [ "${SELECT[i]}" = "No" ] &&
- X GC="${GC}revoke select on $TABLE from ${USER[i]};\n"
- X fi
- X if [ "${UPDATE[i]}" != "$PUPDATE" ]
- X then # "Select changed. $PUPDATE-${UPDATE[i]}"
- X [ "${UPDATE[i]}" = "All" ] &&
- X GC="${GC}grant update on $TABLE from ${USER[i]};\n"
- X [ "${UPDATE[i]}" = "No" ] &&
- X GC="${GC}revoke update on $TABLE from ${USER[i]};\n"
- X fi
- X if [ "${INSERT[i]}" != "$PINSERT" ]
- X then # "Select changed. $PINSERT-${INSERT[i]}"
- X [ "${INSERT[i]}" = "Yes" ] &&
- X GC="${GC}grant insert on $TABLE from ${USER[i]};\n"
- X [ "${INSERT[i]}" = "No" ] &&
- X GC="${GC}revoke insert on $TABLE from ${USER[i]};\n"
- X fi
- X if [ "${DELETE[i]}" != "$PDELETE" ]
- X then # "Select changed. $PDELETE-${DELETE[i]}"
- X [ "${DELETE[i]}" = "Yes" ] &&
- X GC="${GC}grant delete on $TABLE from ${USER[i]};\n"
- X [ "${DELETE[i]}" = "No" ] &&
- X GC="${GC}revoke delete on $TABLE from ${USER[i]};\n"
- X fi
- X if [ "${INDEX[i]}" != "$PINDEX" ]
- X then # "Select changed. $PINDEX-${INDEX[i]}"
- X [ "${INDEX[i]}" = "Yes" ] &&
- X GC="${GC}grant index on $TABLE from ${USER[i]};\n"
- X [ "${INDEX[i]}" = "No" ] &&
- X GC="${GC}revoke index on $TABLE from ${USER[i]};\n"
- X fi
- X if [ "${ALTER[i]}" != "$PALTER" ]
- X then # "Select changed. $PALTER-${ALTER[i]}"
- X [ "${ALTER[i]}" = "Yes" ] &&
- X GC="${GC}grant alter on $TABLE from ${USER[i]};\n"
- X [ "${ALTER[i]}" = "No" ] &&
- X GC="${GC}revoke alter on $TABLE from ${USER[i]};\n"
- X fi
- X fi
- X echo "$GC\n" >> /tmp/grantstuff
- X let i=i+1 # increment index
- Xdone
- SHAR_EOF
- chmod 0755 utilities.d/m.d/setdbaperm || echo "restore of utilities.d/m.d/setdbaperm fails"
- echo "x - extracting utilities.d/m.d/suid_exec.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/m.d/suid_exec.c &&
- X#include <stdio.h>
- X#include <fcntl.h>
- X#include <sys/stat.h>
- X
- X#define ROOT 0
- X
- Xmain (argc, argv)
- X int argc;
- X char *argv[];
- X{
- X int fd;
- X struct stat sbuf;
- X char command[200];
- X int i;
- X
- X
- X if (argc < 2)
- X exit (1);
- X
- X if ((fd = open (argv[1], O_RDONLY)) <= 0)
- X exit (1); /* can't open */
- X
- X /* Get file status information */
- X if (fstat (fd, &sbuf) < 0)
- X exit (1);
- X
- X /* Is this a regular file */
- X if ((sbuf.st_mode & S_IFREG) != S_IFREG)
- X exit (1);
- X
- X /* does root own this file */
- X if (sbuf.st_uid != ROOT)
- X exit (1);
- X
- X /* Is file executable by owner(root) */
- X if ((sbuf.st_mode & S_IEXEC) != S_IEXEC)
- X exit (1);
- X
- X /* Is set uid bit on */
- X if ((sbuf.st_mode & S_ISUID) != S_ISUID)
- X exit (1);
- X
- X setuid (ROOT);
- X
- X strcpy (command, argv[1]); /* program name */
- X for (i = 2; i < argc; i++)
- X {
- X strcat (command, " ");
- X strcat (command, "\"");
- X strcat (command, argv[i]); /* program arguments */
- X strcat (command, "\"");
- X }
- X
- X system (command);
- X}
- X/* Paul J. Condie 2-89 */
- SHAR_EOF
- chmod 0644 utilities.d/m.d/suid_exec.c || echo "restore of utilities.d/m.d/suid_exec.c fails"
- echo "x - extracting utilities.d/msgbox.d/displaytxt.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/msgbox.d/displaytxt.c &&
- Xstatic char Sccsid[] = "%W% DeltaDate %G% ExtrDate %H%";
- X
- X/* FUNCTION: displaytext()
- X** Displays a string to the screen with atributes.
- X** ARGS:
- X** win curses window to display to
- X** row screen row
- X** col screen col
- X** s the string
- X** RETURNS: none
- X*/
- X
- X#include <curses.h>
- X
- Xdisplaytext (win, row, col, s)
- X WINDOW *win;
- X int row, col;
- X char s[];
- X{
- X int i;
- X
- X wmove (win, row, col);
- X
- X/*
- X** Now display looking for terminal attributes.
- X*/
- X for (i = 0; s[i] != '\0'; i++)
- X {
- X if (s[i] == '\\')
- X {
- X#ifdef BSD
- X if (s[i+1] != 'N') s[i+1] = 'S'; /* Berk only supports standout */
- X#endif
- X switch (s[++i])
- X {
- X case 'n': /* newline */
- X wmove (win, ++row, col);
- X break;
- X
- X case 'S':
- X#ifdef BSD
- X wstandout (win);
- X#else
- X wattrset (win, win->_attrs|A_STANDOUT);
- X#endif
- X break;
- X case 'B':
- X#ifdef SYS5
- X wattrset (win, win->_attrs|A_BOLD);
- X#endif
- X break;
- X case 'U':
- X#ifdef SYS5
- X wattrset (win, win->_attrs|A_UNDERLINE);
- X#endif
- X break;
- X case 'D':
- X#ifdef SYS5
- X wattrset (win, win->_attrs|A_DIM);
- X#endif
- X break;
- X case 'R':
- X#ifdef SYS5
- X wattrset (win, win->_attrs|A_REVERSE);
- X#endif
- X break;
- X case 'L':
- X#ifdef SYS5
- X wattrset (win, win->_attrs|A_BLINK);
- X#endif
- X break;
- X case 'N':
- X#ifdef BSD
- X wstandend (win);
- X#else
- X wattrset (win, A_NORMAL);
- X#endif
- X break;
- X }
- X }
- X else
- X waddch (win, s[i]);
- X }
- X}
- SHAR_EOF
- chmod 0644 utilities.d/msgbox.d/displaytxt.c || echo "restore of utilities.d/msgbox.d/displaytxt.c fails"
- echo "x - extracting utilities.d/msgbox.d/makefile (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/msgbox.d/makefile &&
- X### Special function targets begin with a dot.
- X### Target name that begin with a dot are never used as the starting
- X### target, unless specifically requested as an argument on the command
- X### line.
- X
- X#.SILENT: # inhibit the display of command lines (@)
- X#.IGNORE: # ignore exit codes from command lines (-)
- X
- XPGM = msgbox
- XINSTALLDIR =
- XTARGET_ARCH = sys5
- X
- XLIBS = ../../libgeti.a -lcurses
- X
- X### Flags
- XINCDIR = ../libgeti.d
- XCPPFLAGS =
- XCFLAGS = -O -I$(INCDIR)
- XLDFLAGS =
- XLINTFLAGS =
- X
- X### Source Files
- XPERFILES =
- XACEFILES =
- XCFILES = msgbox.c
- XC+FILES =
- XECFILES =
- XHFILES =
- X
- XOBJECTS = $(CFILES:.c=.o)
- XLINTFILES = $(SOURCES:.c=.ln)
- X
- X#all: $(PGM) install
- X
- X### Conditional Macro Definitions
- X#debug := CFLAGS= -g
- X#profile := CFLAGS= -pg -O
- X
- X### Targets and Dependencies
- X### target [target ...]: [dependency ...]
- X### [command] # target rule
- X### ...
- X### * If there is no rule for a target entry, make looks for an implicit
- X### rule to use.
- X### * Line breaks within a rule are significant in that each command line
- X### is performed by a separate process or shell.
- X### * Make invokes a shell to process a command line if that line contains
- X### any shell metacharacters, (;,<,>,>>,|,...).
- X### The $@ = target name
- X### @command - inhibit the display of a given command line
- X### -command - continue processing regardless of command's exit code.
- X### -@command - works
- X
- X$(PGM): $(OBJECTS)
- X $(CC) $(CFLAGS) $(OBJECTS) $(LIBS) -o $@
- X @echo
- X size $@
- X
- Xclean:
- Xcpio:
- X
- Xinstall:
- X mv *.frm $(INSTALLDIR)
- X
- Xlint: $(LINTFILES)
- X $(LINT.c) $(LINTFILES)
- X
- Xprint:
- Xshar:
- X
- X
- X### Implicit Rules
- X### Suffixes should be ordered from target to dependency
- X### Make scans the SUFFIXES from left to right until it finds a match.
- X### The .SUFFIXES: on a line by itself puts yours at the head of the list.
- X### ex: .o .c .c~
- X### Dynamic Macros:
- X### $@ Current target
- X### $? List of dependencies newer than the target.
- X### $< Name of the dependency file.
- X### $* Basename of the current target(stripped of suffix).
- X### $% For libraries, member being processed.
- X### Dynamic Macro Modifiers:
- X### F Filename part ex. $(@F)
- X### D Directory part
- X.SUFFIXES:
- X.SUFFIXES: .o .ec .ec~ .c .c~ .h .h~
- X
- X.c~.c:
- X $(GET) $<
- X.h~.h:
- X $(GET) $<
- X.c.o:
- X $(CC) -c $(CFLAGS) $*.c
- X.c~.o:
- X $(GET) -p $<> $*.c
- X $(CC) -c $(CFLAGS) $*.c
- X rm $*.c
- X.ec.o:
- X esql $(CFLAGS) -c $<
- X rm -f $*.c
- X.ec~.o:
- X $(GET) -p $<> $*.ec
- X esql $(CFLAGS) -c $<
- X rm $*.ec
- X rm $*.c
- SHAR_EOF
- chmod 0666 utilities.d/msgbox.d/makefile || echo "restore of utilities.d/msgbox.d/makefile fails"
- echo "x - extracting utilities.d/msgbox.d/msgbox.1 (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/msgbox.d/msgbox.1 &&
- X. \ %W% DeltaDate %G% ExtrDate %H%
- X.po 6
- X.TH MSGBOX 1 "" "Menu Utility"
- X
- X.SH \s9NAME\s0
- Xmsgbox \- place a message in a STANDOUT bordered box; center box horizontally
- X
- X.SH SYNOPSIS
- Xmsgbox msg [TopRow]
- X
- X.SH DESCRIPTION
- X.I Msgbox
- Xplaces \fBmsg\fP, a message of 1 - 78 characters in a curses window bordered
- Xby STANDOUT attributes. The window, called "box" from here on, is 5 rows
- Xhigh: Row 1 - STANDOUT border; Row 2 - blank; Row 3 - \fBmsg\fP; Row 4 - blank;
- XRow 5 - STANDOUT border.
- X.P
- XThe optional argument, \fBTopRow\fP, determines which screen row on which to
- Xstart the box. (0, 0 are assumed to be the home coordinates of the screen.)
- XIf \fBTopRow\fP is omitted, non-numeric, or out of the range 0 - 19, the box
- Xwill be started on row 0.
- X
- X.SH FILES
- X/eng/lib/libgeti.a, the \fBGetInput(3X)\fP library containing drawbox()
- X
- X.SH AUTHOR
- XR. Stephen Price
- X
- X.SH DIAGNOSTICS
- X\fImsgbox\fP returns exit code zero if it was successful, 1 if the arg count is
- Xbad, and 2 if \fBmsg\fP length is less than 1 or greater than 78.
- X
- X.SH BUGS
- XSTANDOUT attribute is not produced using the curses provided on Convergent
- XTechnologies Mighty Frame. The curses taken from a Convergent Technologies
- XMega Frame must be used on a Convergent Technologies Mighty Frame or S320.
- SHAR_EOF
- chmod 0644 utilities.d/msgbox.d/msgbox.1 || echo "restore of utilities.d/msgbox.d/msgbox.1 fails"
- echo "x - extracting utilities.d/msgbox.d/msgbox.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/msgbox.d/msgbox.c &&
- X
- Xstatic char Sccsid[] = "%W% DeltaDate %G% ExtrDate %H%";
- X
- X/* msgbox.c -- Displaying a user message in a STANDOUT box (window).
- X *
- X * Draw and center a curses window and place a message in the box.
- X * Center the box horizontally, making the box 2 characters
- X * wider than the message contained in argv[1].
- X * Place the top row of the box on the line indicated by argv[2].
- X *
- X * The box will be 5 rows in height:
- X * border (STANDOUT)
- X * blank row
- X * message
- X * blank row
- X * border (STANDOUT)
- X *
- X *
- X * files: /eng/lib/libgeti.a, the GetInput library containing drawbox()
- X *
- X * input: msg: argv[1] holds a message -- a string of 1 - 78 chars.
- X * (quotation mark delimited, if there is embedded whitespace)
- X * BoxTop: argv[2] holds the screen line on which to
- X * start the message box.
- X * [This is optional. If not given or if atoi(argv[2]) is
- X * out of range (0-19), 0 is used.]
- X *
- X * output: The MsgWind will appear with the msg on the terminal.
- X * There will ALWAYS be a MsgWind, even if there are parameter
- X * errors. See "exit value" below.
- X *
- X * exit value: Exit codes indicate execution status:
- X * NO_ERR -- Gut, alles in ordnung!
- X * ARG_COUNT_ERR -- Failure: improper arg count (should be 2 or 3)
- X * MSG_LEN_ERROR -- strlen(argv[2]) < 1 or > 78
- X *
- X * The legal range of rows is 0 - 19 to fit box on screen;
- X * If the legal range of rows is violated, 0 will be
- X * used for BoxTop. NO_ERR exit code will be used.
- X *
- X * If error, a USAGE message is displayed in the msgbox and the
- X * appropriate non zero exit code is used. Also a 5 second
- X * sleep is used to preserve the USAGE msg on the terminal before
- X * program termination.
- X *
- X * If no errors are found the user's message will appear as
- X * requesed and NO_ERR will be the exit value.
- X *
- X * note: Will clear stdscr, since initscr() is used.
- X *
- X * author: Steve Price (pacbell!pbhyf!rsp)
- X *
- X * bugs: The curses on Convergent Technologies Mighty Frame does not
- X * handle the STANDOUT attribute properly. Use the curses from
- X * a Convergent Technologies Mega Frame, in that case.
- X */
- X
- X
- X
- X
- X#include <signal.h>
- X#include <curses.h>
- X#include "GetInput.h"
- X
- X
- X#define MAX_ROW 19 /* last row at which a box can be started & still fit */
- X#define BOX_ROWS 5 /* total height of message box */
- X#define NO_ERR 0 /* it's cool, dude! */
- SHAR_EOF
- echo "End of part 13"
- echo "File utilities.d/msgbox.d/msgbox.c is continued in part 14"
- echo "14" > s2_seq_.tmp
- exit 0
-