home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / altsrc / articles / 10688 < prev    next >
Text File  |  1994-06-19  |  92KB  |  5,339 lines

  1. Newsgroups: alt.sources
  2. Path: wupost!psuvax1!uwm.edu!spool.mu.edu!agate!ihnp4.ucsd.edu!pacbell.com!rtech!ingres!rca
  3. From: rca@Ingres.COM (Bob Arnold)
  4. Subject: saenv_alldisks OS research / backup tools (Alpha Release) Part 02/06
  5. Message-ID: <1994Jun17.235120.3413@pony.Ingres.COM>
  6. Lines: 5329
  7. Organization: Ingres Corporation, A subsidiary of The ASK Group, Inc.
  8. Date: 17 Jun 94 23:51:20 GMT
  9.  
  10.  
  11. Submitted-by: rca@ingres.com
  12. Archive-name: saenv_alld/part02
  13.  
  14. ---- Cut Here and feed the following to sh ----
  15. #!/bin/sh
  16. # this is saenv_alld.02 (part 2 of saenv_alld)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file dist/saenv.setup continued
  19. #
  20. if test ! -r _shar_seq_.tmp; then
  21.     echo 'Please unpack part 1 first!'
  22.     exit 1
  23. fi
  24. (read Scheck
  25.  if test "$Scheck" != 2; then
  26.     echo Please unpack part "$Scheck" next!
  27.     exit 1
  28.  else
  29.     exit 0
  30.  fi
  31. ) < _shar_seq_.tmp || exit 1
  32. if test ! -f _shar_wnt_.tmp; then
  33.     echo 'x - still skipping dist/saenv.setup'
  34. else
  35. echo 'x - continuing file dist/saenv.setup'
  36. sed 's/^X//' << 'SHAR_EOF' >> 'dist/saenv.setup' &&
  37. X        # test in $CRONCMD_B research code below
  38. X        if test ! -f $CRON_P ; then
  39. X            touch $CRON_P
  40. X        fi
  41. X    fi
  42. Xelse
  43. X    CRON_P=$cron_d/crontab
  44. Xfi
  45. Xecho "CRON_P=$CRON_P    # path to real crontab file" >> $tsaenv
  46. X
  47. X## CRONCMD_B - do we use the crontab command?
  48. Xif ( crontab -l ) > /dev/null 2>&1 ; then
  49. X    CRONCMD_B=true
  50. Xelse
  51. X    CRONCMD_B=false
  52. Xfi
  53. Xecho "CRONCMD_B=$CRONCMD_B    # do we use the crontab command?" >>$tsaenv
  54. X
  55. X# Oddball directories for ALIAS_D and SMCF_D:
  56. X#    /usr/adm/sendmail    AIX 3.x and OSF
  57. X#    /etc/sendmail        NeXT
  58. X#     /usr/lib/mail        Xenix
  59. X#    /etc/mail        Solaris 2.x
  60. X#    /usr/ucblib        SVR4 for ICL, NCR
  61. X
  62. X## SMCF_D - real dir for "sendmail.cf"
  63. Xsmcf_d=`$DTGTBIN/realdir sendmail.cf    /usr/lib /etc /usr/etc /usr/adm/sendmail /etc/sendmail /usr/lib/mail /etc/mail /usr/ucblib`
  64. Xecho "SMCF_D=$smcf_d    # real dir for sendmail.cf:  /usr/lib (old normal), /etc and /usr/etc (now common), /usr/adm/sendmail (AIX 3.x, OSF), /etc/sendmail (NeXT), /etc/mail (Solaris 2.x), /usr/ucblib (SVR4 for ICL, NCR)" >> $tsaenv
  65. X
  66. X## ALIAS_D - real dir for "aliases"
  67. Xalias_d=`$DTGTBIN/realdir aliases    /usr/lib /etc /usr/etc /usr/adm/sendmail /etc/sendmail /usr/lib/mail /etc/mail /usr/ucblib`
  68. Xecho "ALIAS_D=$alias_d    # real dir for aliases file: /usr/lib (old normal), /etc and /usr/etc (now common), /usr/adm/sendmail (AIX 3.x, OSF), /etc/sendmail (NeXT), /etc/mail (Solaris 2.x), /usr/lib/mail (XENIX), /usr/ucblib (SVR4 for ICL, NCR)" >> $tsaenv
  69. X
  70. X## MAILER - preferred mailer
  71. Xfor tmailer in Mail mailx mail ; do
  72. X    for i in `echo $PATH | tr : ' '` ; do
  73. X        if test -f $i/$tmailer ; then
  74. X            # the extra <SPACE><STAR> in egrep's RE is needed
  75. X            # for AIX 3.x 'ls -dF' output - this is a bug
  76. X            if ls -dF $i/$tmailer | egrep '\* *$' > /dev/null ; then
  77. X                MAILER=$tmailer
  78. X                break 2
  79. X            fi
  80. X        fi
  81. X    done
  82. Xdone
  83. Xecho "MAILER=$MAILER    # preferred mailer (Mail > mailx >> mail)" >> $tsaenv
  84. X
  85. X################################################################################
  86. X#### command arguments: df, echo, find, ls, mt, ps, ln
  87. X#### in roughly alphabetical order by VARIABLE_NAME
  88. X
  89. X## $DFFSTYPE_K and $LOCFSTYPE_S - Does "df" have a "type" key, and if so
  90. X## what is it and what is the name of the local filesystem type.
  91. X# This code relies on:
  92. X# a) "df > file" will produce no output if we are hung on NFS because df blocks.
  93. X# b) under some conditions we may not get a definite answer, in which case we
  94. X# break out of the loop and inherit $LOCFSTYPE_S and $DFFSTYPE_K from $SAENV
  95. X#
  96. X# need some loop to break out of - make sure we break out before final "done"
  97. Xcd $junkdir
  98. Xwhile : ; do
  99. X    dfsleep=5        # wait dfsleep time for df's to finish
  100. X    dfout=s.sdfout$$    # holds df output
  101. X    dfkout=s.sdfkout$$    # holds df $key output
  102. X    dfkerr=s.sdfkerr$$    # holds df $key stderr
  103. X    dfkerr=s.sdfkstat$$    # holds df $key exit status
  104. X    dfrmlist="$dfout $dfkout $dfkerr"
  105. X    for f in fstab vfstab ; do
  106. X        test -f /etc/$f && fstab=$f && break
  107. X    done
  108. X    ## no type key if fstab does not exist
  109. X    if test -z "$fstab" ; then
  110. X        DFFSTYPE_K=
  111. X        LOCFSTYPE_S=
  112. X        break
  113. X    fi
  114. X    ## no type key if $fstab does not have a filesytem type
  115. X    # egrep pattern works for both fstab and vfstab
  116. X    case $fstab in
  117. X    fstab)    fstype=`egrep '/dev/[^     ]+[     ]+/[     ]' /etc/$fstab 2> /dev/null | awk '{print $3}'` ;;
  118. X    vfstab)    fstype=`egrep '/dev/[^     ]+[     ]+/[     ]' /etc/$fstab 2> /dev/null | awk '{print $4}'` ;;
  119. X    esac
  120. X    if test -z "$fstype" ; then
  121. X        DFFSTYPE_K=
  122. X        LOCFSTYPE_S=
  123. X        break
  124. X    fi
  125. X    ## more research needed - try -F (SVR4) and -t (BSD) flags
  126. X    for key in -F -t ; do
  127. X        # do df's in background in case we NFS hang; sleep to give them a chance
  128. X        df > $dfout &
  129. X        df $key $fstype > $dfkout 2> $dfkerr &
  130. X        sleep $dfsleep
  131. X        ## no type key if df complains about $key
  132. X        if test -s $dfkerr ; then
  133. X            DFFSTYPE_K=
  134. X            LOCFSTYPE_S=
  135. X            continue
  136. X        fi
  137. X        ## no definitive answer if no devices in "df $key" output,
  138. X        ## since we are probably NFS hung
  139. X        if test `grep -c /dev/ $dfkout` -eq 0 ; then
  140. X            continue
  141. X        fi
  142. X        #### if we get this far, we have a definitive answer
  143. X        # if no devices in "df" output, we are probably NFS hung
  144. X        # but "df $key" might have worked
  145. X        test `grep -c /dev/ $dfout` -eq 0 && nfshang=true
  146. X        ndf=` wc -l < $dfout`
  147. X        ndfk=`wc -l < $dfkout`
  148. X        ## have type key if "df $key" worked and "df" hung on NFS
  149. X        if   test $ndf -lt $ndfk -a "$nfshang" = true ; then
  150. X            DFFSTYPE_K=$key
  151. X            LOCFSTYPE_S=$fstype
  152. X        ## no type key if we found SysV df -t
  153. X        elif test $ndf -lt $ndfk ; then
  154. X            DFFSTYPE_K=
  155. X            LOCFSTYPE_S=
  156. X        ## have type key if both df's worked and "df $key" had
  157. X        ## smaller or same number of filesystems
  158. X        else
  159. X            DFFSTYPE_K=$key
  160. X            LOCFSTYPE_S=$fstype
  161. X        fi
  162. X        ## break, since we have difinitive answer
  163. X        break
  164. X    done
  165. X    ## make sure we break out regardless of results
  166. X    break
  167. Xdone
  168. Xrm -f $dfrmlist
  169. Xecho "DFFSTYPE_K=$DFFSTYPE_K    # df filesystem type key: '-t' (BSD and OFS); '-F' (SVR4)" >> $tsaenv
  170. Xecho "LOCFSTYPE_S=$LOCFSTYPE_S    # local filesystem type: '4.2' ConvexOS, DYNIX, SunOS; 'ffs' MIPS, Motorola, Tandem; 'ufs' SVR4 and OFS" >> $tsaenv
  171. X
  172. X## $ECHOPRE and $ECHOSUF - what is echo's no-newline prefix/suffix
  173. Xif test `echo -n | wc -c` = 0 ; then
  174. X    epre="-n"    # normal bsd echo prefix
  175. X    esuf=        # normal bsd echo suffix
  176. Xelse
  177. X    epre=        # system V echo prefix
  178. X    esuf="\\\c"    # system V echo suffix
  179. Xfi
  180. Xecho "ECHOPRE='$epre'    # echo's no-newline prefix: '-n' (BSD), ''     (SysV)" >> $tsaenv
  181. Xecho "ECHOSUF='$esuf'    # echo's no-newline suffix: ''   (BSD), '\\\c' (SysV)" >> $tsaenv
  182. X
  183. X## FINDXDEV_S - does 'find' have the -xdev option?
  184. X## FINDFSTYPE_S - does find have '-fstype $LOCFSTYPE_S' or '-fsonly hfs' option?
  185. X# need to check stdout for -xdev since ConvexOS can return nonzero
  186. X# exit status even if it works :-(
  187. Xfor x in -xdev -mount ; do
  188. X    xdev=
  189. X    if find $junkdir $x -print 2> /dev/null | grep $junkdir > /dev/null ; then
  190. X        xdev=$x
  191. X        break
  192. X    fi
  193. Xdone
  194. X# exit status is sufficient for FINDFSTYPE_S; the "-fsonly hfs" is for HP-UX
  195. Xif test -n "$LOCFSTYPE_S" ; then
  196. X    findfstype="-fstype $LOCFSTYPE_S"
  197. Xfi
  198. Xfor x in "$findfstype" "-fsonly hfs" ; do
  199. X    fstype=
  200. X    if test -z "$x" ; then
  201. X        continue
  202. X    fi
  203. X    if find $junkdir $x -print > /dev/null 2>&1 ; then
  204. X        fstype="$x"
  205. X        break
  206. X    fi
  207. Xdone
  208. Xecho "FINDXDEV_S=$xdev        # find -xdev opt: '-xdev' (BSDish,SVR4), '-mount' (SVR3,Ultrix)" >> $tsaenv
  209. Xecho "FINDFSTYPE_S='$fstype'    # find: '-fstype <fstype>' (SunOS, Dynix, SVR4), '-fsonly hfs' (HP-UX)" >> $tsaenv
  210. X
  211. X## $LSGROUP_K - does "ls" need a "-g" key to force output of group info?
  212. Xif test `ls -lg /etc/passwd | wc -w` -gt `ls -l /etc/passwd | wc -w` ; then
  213. X    lsgroup='g'    # need -g to get group info
  214. Xelse
  215. X    lsgroup=''    # ls automatically puts out group info
  216. Xfi
  217. Xecho "LSGROUP_K=$lsgroup    # ls group info: 'g' (BSD), '' (SysV)" >> $tsaenv
  218. X
  219. X## $MT_K - do we have the "mt" mag tape program, and what is its key?
  220. X# The AIX 2.2.1 "mt" is a typesetter program!
  221. X# AIX 2.2.1    mt -e    mt: no input file
  222. X# HP/UX        mt -f    mt: unknown command "-f"
  223. X# IRIX        mt -f    mt [-t /dev/tapename] command [count]
  224. X# see if we have "mt", if so check key
  225. X# if we have the AIX 2.2.1 "mt", which is typesetter program :-(
  226. Xif ( mt -e ) 2>&1 | egrep 'mt: no input file' > /dev/null ; then
  227. X    # bummer, so define mt as none
  228. X    mtkey=''
  229. X# most Sys V boxes don't have an mt (AIX 3.0 has 2 spaces in 'mt:  not found')
  230. Xelif ( mt -f ) 2>&1 | egrep 'mt:  *not found' > /dev/null ; then
  231. X    # couldn't find the program
  232. X    mtkey=''
  233. X# else add key for mt command - HP/UX and IRIX use "-t", not the normal "-f"
  234. Xelif mt -f 2>&1 | egrep 'mt: unknown command "-f"|mt \[-t /dev/tapename\]' > /dev/null ; then
  235. X    mtkey=-t    # for HP and SGI
  236. X# we have the normal "mt"
  237. Xelse
  238. X    mtkey=-f    # for the normal BSD machines
  239. Xfi
  240. Xecho "MT_K=$mtkey    # mt key: '' (mt doesn't exist), '-t' (HP/UX,IRIX), '-f' (common)" >> $tsaenv
  241. X
  242. X## PS_C - ps command
  243. X## PSALL_K - ps key to get all processes
  244. X# NCR SysVR4 has /usr/ucb/ps and /sbin/ps (and symlinks from /bin and /usr/bin)
  245. Xps_c=ps        # in most cases
  246. Xps ax > /dev/null 2>&1
  247. Xstatax=$?
  248. Xps -e > /dev/null 2>&1
  249. Xstat_e=$?
  250. Xcase "$statax$stat_e" in
  251. X# BSD
  252. X0[1-9]*)
  253. X    psallkey=ax
  254. X;;
  255. X# SysV
  256. X[1-9]*0)
  257. X    psallkey=-e
  258. X;;
  259. X# HP-UX 8.0 allows both "ax" and "-e"
  260. X00)
  261. X    nlinesax=`ps ax 2>&1 | wc -l`
  262. X    nlinese=`ps  -e 2>&1 | wc -l`
  263. X    if test $nlinesax -gt $nlinese ; then
  264. X        psallkey=ax
  265. X    else
  266. X        psallkey=-e
  267. X    fi
  268. X;;
  269. X# NCR SysVR4 allows "/usr/ucb/ps -ax" and "/sbin/ps -e"
  270. X# we'd like to choose the UCB version, but we assume the SysV version is
  271. X# implemented more reliably so we check on it first.  Also, "-e" is
  272. X# more common that "-ax".  The full path is necessary if we end up here.
  273. X[1-9]*)
  274. X    if ( /sbin/ps -e ) > /dev/null 2>&1 ; then
  275. X        ps_c=/sbin/ps
  276. X        psallkey=-e
  277. X    elif ( /usr/ucb/ps -ax ) > /dev/null 2>&1 ; then
  278. X        ps_c=/usr/ucb/ps
  279. X        psallkey=-ax
  280. X    # else we have no idea what to do
  281. X    else
  282. X        psallkey=''
  283. X    fi
  284. X;;
  285. Xesac
  286. Xecho "PS_C=$ps_c    # ps command: 'ps' (most), '{/sbin,/usr/ucb}/ps' (NCR SysVR4)" >> $tsaenv
  287. Xecho "PSALL_K=$psallkey    # \$PS_C key to get all processes: 'ax' (BSD), '-e' (SysV)" >> $tsaenv
  288. X
  289. X## SLINK_B - does the system support symbolic links?
  290. Xcd $junkdir
  291. Xtouch x
  292. Xif ( ln -s x y ) > /dev/null 2>&1 ; then
  293. X    slink=true
  294. Xelse
  295. X    slink=false
  296. Xfi
  297. Xrm -f x y
  298. Xecho "SLINK_B=$slink    # does the system support symbolic links?" >> $tsaenv
  299. X
  300. X##############################################################################
  301. X#### file types e.g. 4.3BSD crontab formats, df outputs, etc.
  302. X
  303. X## CRON43_B - are we a 4.3 cron host?
  304. Xx=`awk '$1 !~ /^\#/ && $6 == "root" {print}' $CRON_P | wc -l`
  305. Xif test $x -gt 0 ; then
  306. X    crontab43=true
  307. Xelse
  308. X    crontab43=false
  309. Xfi
  310. Xecho "CRON43_B=$crontab43    # is the crontab file is in 4.3 BSD format?" >> $tsaenv
  311. X
  312. X################################################################################
  313. X#### special commands e.g. mkpasswd, mkhosts
  314. X
  315. X# MKHOSTS_B - do we have dbm'd hosts files?
  316. Xif test  -f /etc/mkhosts ; then
  317. X    MKHOSTS_B=true
  318. Xelse
  319. X    MKHOSTS_B=false
  320. Xfi
  321. Xecho "MKHOSTS_B=$MKHOSTS_B    # do we have dbm'd hosts files?" >> $tsaenv
  322. X
  323. X## MKPW_B - do we need to run the mkpasswd command?
  324. X# Note: Must remove passwd DB before running mkpasswd on 4.3 systems
  325. Xif test -f /etc/passwd.dir ; then
  326. X        MKPW_B=true
  327. Xelse
  328. X    MKPW_B=false
  329. Xfi
  330. Xecho "MKPW_B=$MKPW_B    # do we need to run the mkpasswd command?" >> $tsaenv
  331. X
  332. X##############################################################################
  333. X#### miscellaneous
  334. X
  335. X## INTERP_B - does exec(2|3) support '#!' file interpretation
  336. Xcat > $script << EOF
  337. X#!/bin/sh -x
  338. Xecho hello > /dev/null
  339. XEOF
  340. Xchmod 700 $script
  341. Xif { $script 2>&1 | egrep '^.*+.*' > /dev/null ; } ; then
  342. X    INTERP_B=true
  343. Xelse
  344. X    INTERP_B=false
  345. Xfi
  346. Xecho "INTERP_B=$INTERP_B    # does exec(2|3) support '#!' file interpretation" >> $tsaenv
  347. X
  348. X## SUIDSCRIPT_S - header string for setuid shellscripts
  349. Xrm -f $junkf
  350. X# 1) we need a "user" with a positive uid and a normal shell, since
  351. X# bad shells (e.g. /bin/false) can cause problems;
  352. X# the grep is sneaky - even if $CSH_P is null we still get ':$' which is OK
  353. X# 2) should be able to have the script simply say "touch $junkf", but some
  354. X# Ultrix's have a bug in touch which let's touch create the file but not
  355. X# change the mod date.  Other machines (Convex, Pyramid OSx) produce the
  356. X# wrong answer too, for reasons I'm not sure of.
  357. Xuser=`awk -F':' '$3>0 {print}' /etc/passwd \
  358. X| egrep ':$|:/bin/[ck]*sh$|:'$CSH_P'$' \
  359. X| awk -F':' '{print $1 ; exit}'`
  360. Xfor i in '#!/bin/sh' ':' ; do
  361. X    echo "$i" > $script
  362. X    echo "echo $pr: SUID testing > $junkf" >> $script
  363. X    chmod 4755 $script
  364. X    chown root $script
  365. X    su $user -c $script > /dev/null 2>&1
  366. X    if test $? -eq 0 ; then
  367. X        SUIDSCRIPT_S="$i"
  368. X        break
  369. X    fi
  370. X    SUIDSCRIPT_S=''
  371. Xdone
  372. Xecho "SUIDSCRIPT_S='$SUIDSCRIPT_S'    # header string for setuid shellscripts" >> $tsaenv
  373. X
  374. X## SUIDWRAP_B - if a script is run by a setuid binary, is it setuid too?
  375. Xecho 'main(argc, argv) char *argv[]; { execl("/bin/sh", "sh","'$script'",0); }' > $script.c
  376. X# do this in a subshell because we may not have "cc", especially with Solaris
  377. X(
  378. X    cc -o $wrapper $script.c
  379. X    chmod 4755 $wrapper
  380. X    chown root $wrapper
  381. X) 2> /dev/null
  382. Xsu $user -c $wrapper > /dev/null 2>&1
  383. Xif test $? -eq 0 ; then
  384. X    SUIDWRAP_B=true
  385. Xelse
  386. X    SUIDWRAP_B=false
  387. Xfi
  388. Xecho "SUIDWRAP_B=$SUIDWRAP_B    # if a script is run by a setuid binary, is it setuid too?" >> $tsaenv
  389. X
  390. X## SHFN_B - does sh support functions?
  391. Xecho ':
  392. Xhahaha() { echo funny ; }' > $script
  393. Xif sh $script 2>&1 | egrep funny > /dev/null 2>&1 ; then
  394. X    shfn_b=true
  395. Xelse
  396. X    shfn_b=false
  397. Xfi
  398. Xecho "SHFN_B=$shfn_b        # does sh support functions?" >> $tsaenv
  399. X
  400. X## PIPESIZE_N - how many characters in a pipe?
  401. X# We care about the size of the block that the second "dd" gets from the pipe.
  402. X# For some reason I can't figure out, on some hosts this line produces
  403. X# a blank line to standard error unless we do the dd's in a subshell
  404. X# like this:
  405. Xx=`(echo "$pr: get pipe size" | dd bs=100k conv=sync | dd bs=100k count=1) 2> /dev/null | wc -c`
  406. XPIPESIZE_N=`echo $x`    # strip leading spaces from 'wc'
  407. Xecho "PIPESIZE_N=$PIPESIZE_N    # how many characters in a pipe?" >> $tsaenv
  408. X#echo `( dd if=$bigfile bs=100k count=1 2> /dev/null | dd bs=100k count=1 2> /dev/null ) 2> /dev/null | wc -c`
  409. X
  410. X## ALIASRO_N - number of rotations on the aliases file
  411. XALIASRO_N=2        # assume we only need two old versions
  412. Xfor i in $ALIASCHG ; do
  413. X    if test $i = $HOST ; then
  414. X        ALIASRO_N=10    # we need 10 old versions
  415. X        break
  416. X    fi
  417. Xdone
  418. Xecho "ALIASRO_N=$ALIASRO_N    # number of rotations on the aliases file" >> $tsaenv
  419. X
  420. X## DSMCF_B - local sendmail config files need protection on some hosts
  421. XDSMCF_B=true
  422. Xfor i in $LOCSMCF ; do
  423. X    if test $i = $HOST ; then
  424. X        DSMCF_B=false
  425. X        break
  426. X    fi
  427. Xdone
  428. Xecho "DSMCF_B=$DSMCF_B    # does $HOST use the distributed sendmail config file? (mail gateways don't)" >> $tsaenv
  429. X
  430. X##############################################################################
  431. X#### get system info
  432. X
  433. Xtest -f $DTGTBIN/showsys && $DTGTBIN/showsys >> $tsaenv
  434. X
  435. X##############################################################################
  436. X#### local mods (if any) and exports done last
  437. X
  438. X## the last thing saenv should do is check if there is a "manual" file 
  439. X## that needs to be run, in case we have to override or add to
  440. X## saenv.setup's output.
  441. Xecho "test -f /etc/saenv.man && . /etc/saenv.man    # hack to allow temp local mods" >> $tsaenv
  442. X
  443. Xecho "export PATH"    >> $tsaenv
  444. X
  445. X##############################################################################
  446. X#### Finish up.
  447. X
  448. X## try to make sure that the temporary file is OK before we install it
  449. X# check the number of variables set in the temporary vs. real versions
  450. X# probably the newer version will have at least as many variables as the old one
  451. Xnvartmp=`egrep -c '^[A-Z0-9_]*=' $tsaenv`
  452. Xif test -f $SAENV ; then
  453. X    nvarreal=`egrep -c '^[A-Z0-9_]*=' $SAENV`
  454. Xelse
  455. X    nvarreal=0
  456. Xfi
  457. X#if test $nvartmp -ge $nvarreal ; then
  458. Xif test $nvartmp -ge 32 ; then
  459. X    exitstat=0
  460. X    mv $tsaenv $out
  461. X    chmod 444 $out
  462. Xelse
  463. X    exitstat=1
  464. X    echo "$ELESSVAR" 1>&2
  465. Xfi
  466. X
  467. X## clean up and exit
  468. Xcd /tmp        # go somewhere public
  469. Xrm -f  $rmlist
  470. Xrm -fr $rmrlist
  471. Xexit $exitstat
  472. SHAR_EOF
  473. echo 'File dist/saenv.setup is complete' &&
  474. chmod 0444 dist/saenv.setup ||
  475. echo 'restore of dist/saenv.setup failed'
  476. Wc_c="`wc -c < 'dist/saenv.setup'`"
  477. test 33376 -eq "$Wc_c" ||
  478.     echo 'dist/saenv.setup: original size 33376, current size' "$Wc_c"
  479. rm -f _shar_wnt_.tmp
  480. fi
  481. # ============= dist/crontab.dist ==============
  482. if test -f 'dist/crontab.dist' -a X"$1" != X"-c"; then
  483.     echo 'x - skipping dist/crontab.dist (File already exists)'
  484.     rm -f _shar_wnt_.tmp
  485. else
  486. > _shar_wnt_.tmp
  487. echo 'x - extracting dist/crontab.dist (Text)'
  488. sed 's/^X//' << 'SHAR_EOF' > 'dist/crontab.dist' &&
  489. X##<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  490. X##<> THE FOLLOWING LINES ARE CENTRALLY UPDATED AND MAINTAINED.        <>
  491. X##<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  492. X## FORMAT: <minute> <hour> <day of month> <month> <day of wk> <commands>
  493. X## update distribution files at night
  494. X0 21  * * *    /etc/dist/bin/upd-dist >> /usr/adm/cronerrs 2>&1
  495. X## run any automatic backups
  496. X# Do a full backup Fri 10pm and incremental backups Mon, Tue, Wed, and Thu 10pm
  497. X#00 22 * * 5   /home/backup/backup full alldisks video0 cron verifytoo 2>&1 | Mail root
  498. X#00 22 * * 1-4 /home/backup/backup incr alldisks video0 cron verifytoo 2>&1 | Mail root
  499. SHAR_EOF
  500. chmod 0644 dist/crontab.dist ||
  501. echo 'restore of dist/crontab.dist failed'
  502. Wc_c="`wc -c < 'dist/crontab.dist'`"
  503. test 676 -eq "$Wc_c" ||
  504.     echo 'dist/crontab.dist: original size 676, current size' "$Wc_c"
  505. rm -f _shar_wnt_.tmp
  506. fi
  507. # ============= dist/dlist ==============
  508. if test -f 'dist/dlist' -a X"$1" != X"-c"; then
  509.     echo 'x - skipping dist/dlist (File already exists)'
  510.     rm -f _shar_wnt_.tmp
  511. else
  512. > _shar_wnt_.tmp
  513. echo 'x - extracting dist/dlist (Text)'
  514. sed 's/^X//' << 'SHAR_EOF' > 'dist/dlist' &&
  515. Xbin/crontab.conv43
  516. Xbin/cut-paste
  517. Xbin/mkpath
  518. Xbin/realdir
  519. Xbin/showsys
  520. Xbin/sleep-number
  521. Xbin/upd-dist
  522. Xbkp.media
  523. Xbkp.opers
  524. Xbkp.site
  525. Xcrontab.dist
  526. Xsaenv.setup
  527. Xsahead
  528. SHAR_EOF
  529. chmod 0644 dist/dlist ||
  530. echo 'restore of dist/dlist failed'
  531. Wc_c="`wc -c < 'dist/dlist'`"
  532. test 159 -eq "$Wc_c" ||
  533.     echo 'dist/dlist: original size 159, current size' "$Wc_c"
  534. rm -f _shar_wnt_.tmp
  535. fi
  536. # ============= firstinst-saenv ==============
  537. if test -f 'firstinst-saenv' -a X"$1" != X"-c"; then
  538.     echo 'x - skipping firstinst-saenv (File already exists)'
  539.     rm -f _shar_wnt_.tmp
  540. else
  541. > _shar_wnt_.tmp
  542. echo 'x - extracting firstinst-saenv (Text)'
  543. sed 's/^X//' << 'SHAR_EOF' > 'firstinst-saenv' &&
  544. X:
  545. X# firstinst-saenv - installs sysadmin environment on sysadmin master host
  546. X
  547. X# Edit ./dist/sahead before you run this script.
  548. X
  549. XDOSETUP=true ; export DOSETUP
  550. X
  551. X# if we're not in the right directory
  552. Xif test ! -f ./dist/sahead ; then
  553. X    echo "$pr: Please run this script from the sysadmin directory"
  554. X    echo "$pr: where you extracted the 'seanv_alld' shar archive."
  555. X    exit 1
  556. X# else check to make sure that there are no blanks in sahead
  557. Xelif egrep "_____" ./dist/sahead > /dev/null ; then
  558. X    echo "$pr: You haven't filled in all the blanks in './dist/sahead'."
  559. X    echo "$pr: Please do that first, and then run this script again."
  560. X    exit 1
  561. Xfi
  562. X
  563. X# source the customized sahead
  564. X. ./dist/sahead
  565. X
  566. X# check usage
  567. Xhost=`(hostname) 2> /dev/null || uname -n`
  568. Xif test "$host" != "$SAHOST" ; then
  569. X    echo "$pr: This script should be run ONLY on your master sysadmin host."
  570. X    echo "$pr: If you want '$host' to be your master sysadmin host, then"
  571. X    echo "$pr: define '$host' as the 'SAHOST' in 'sahead', copy this"
  572. X    echo "$pr: source tree over to '$host', and try again."
  573. X    exit 1
  574. Xfi
  575. X
  576. X# build empty directories that the shar won't extract for us
  577. Xtest -d data || mkdir data
  578. Xmkdir     data/passwd data/saenv dist/stamp
  579. Xchmod 777 data/passwd data/saenv dist/stamp
  580. X
  581. Xecho "$pr: Setting umask to 2"
  582. Xumask 2
  583. X
  584. Xecho "$pr: Creating directory $DTGTBIN"
  585. Xif test ! -d $DTGTBIN ; then
  586. X    mkdir $DTGT $DTGTBIN
  587. Xfi
  588. X
  589. X# copy files into place
  590. Xecho "$pr: Copying files and scripts into place"
  591. X# these are for $SAHOST
  592. Xcd ./dist/bin    ; cp * $DTGTBIN
  593. Xcd ..            ; cp crontab.dist dlist sahead saenv.setup $DTGT
  594. X# these are for distribution via upd-dist from $SAHOST to other hosts
  595. Xcd ../src/backup ; cp bkp.media bkp.opers bkp.site ../../dist
  596. X
  597. X# go back home
  598. Xcd ../..
  599. X
  600. X# now we can do research on $SAHOST
  601. Xecho "$pr: Doing first time research on $host; this will take a bit"
  602. Xsh ./dist/saenv.setup
  603. X
  604. X# finish up
  605. Xecho "$pr: OK, the 'saenv' toolset has been bootstrapped onto on '$SAHOST'."
  606. Xecho "$pr: Enjoy!"
  607. X
  608. X# like it says, enjoy!
  609. SHAR_EOF
  610. chmod 0755 firstinst-saenv ||
  611. echo 'restore of firstinst-saenv failed'
  612. Wc_c="`wc -c < 'firstinst-saenv'`"
  613. test 1976 -eq "$Wc_c" ||
  614.     echo 'firstinst-saenv: original size 1976, current size' "$Wc_c"
  615. rm -f _shar_wnt_.tmp
  616. fi
  617. # ============= lib/rrun.hosts ==============
  618. if test ! -d 'lib'; then
  619.     echo 'x - creating directory lib'
  620.     mkdir 'lib'
  621. fi
  622. if test -f 'lib/rrun.hosts' -a X"$1" != X"-c"; then
  623.     echo 'x - skipping lib/rrun.hosts (File already exists)'
  624.     rm -f _shar_wnt_.tmp
  625. else
  626. > _shar_wnt_.tmp
  627. echo 'x - extracting lib/rrun.hosts (Text)'
  628. sed 's/^X//' << 'SHAR_EOF' > 'lib/rrun.hosts' &&
  629. X# This is $SALIB/rrun.hosts.  It is sourced by $SABIN/rrun.
  630. X#
  631. X# Written by Bob Arnold
  632. X# 
  633. X# Put the appropriate hosts in the appropriate lists, create your own
  634. X# new lists, and reclassify as you see fit.  rrun and rrun.hosts are
  635. X# provided in case you might be able to it.
  636. X#
  637. X# NOTE - classification is a religious topic, and some people a splitters
  638. X# while others are groupers.  Opinions also vary depending upon how many
  639. X# substantially different versions of UNIX you maintain from each of
  640. X# these vendors.  Feel free to develop your own classifications.
  641. X
  642. Xamdahlhosts=""
  643. Xatthosts=""
  644. Xauspexhosts=""
  645. Xbosxhosts=""
  646. Xbullhosts=""
  647. Xbsdihosts=""
  648. Xconvexhosts=""
  649. Xdecmipshosts=""                # Ultrix MIPS
  650. Xdecvaxhosts=""                # Ultrix VAX
  651. Xdecosfhosts=""
  652. Xdechosts="$decmipshosts $decvaxhosts $decosfhosts"    # DEC BSD hosts
  653. Xdghosts=""                # DG/UX
  654. Xdynixhosts=""                # BSD sequents
  655. Xdynixptxhosts=""            # SysV sequents
  656. Xencorehosts=""
  657. Xgouldhosts=""
  658. Xhphosts=""                # HP-UX
  659. Xmipshosts=""
  660. Xiclhosts=""
  661. Xmotorolahosts=""
  662. Xmtxinuhosts=""
  663. Xncrhosts=""
  664. Xpyramidbsdhosts=""            # OSx
  665. Xpyramidsysvhosts=""            # DC/OSx
  666. Xpyramidhosts="$pyramidbsdhosts $pyramidsysvhosts"
  667. Xrshosts=""                # IBM RS/6000s
  668. Xrthosts=""                # IBM RT
  669. Xscohosts=""
  670. Xsgihosts=""
  671. Xsolbournehosts=""
  672. Xstardenthosts=""
  673. Xsun3hosts=""
  674. Xsun3xhosts=""
  675. Xsun4hosts=""
  676. Xsun4chosts=""
  677. Xsun4mhosts=""
  678. Xsun4dhosts=""
  679. Xsunoshosts="$sun3hosts $sun3xhosts $sun4hosts $sun4chosts $sun4mhosts"
  680. Xsunsolarishosts="$sun4dhosts"
  681. Xsolarishosts="$sunsolarishosts"
  682. Xsunhosts="$sunoshosts $solarishosts"
  683. Xtandemhosts=""
  684. Xtihosts=""
  685. Xxenixhosts=""
  686. X
  687. X## build larger lists of machines
  688. X# aixhosts - might want to add $bosxhosts here and delete $rthosts
  689. Xaixhosts="$rshosts $rthosts"    
  690. Xsequenthosts="$dynixhosts $dynixptxhosts"
  691. Xbsdhosts="$auspexhosts $bsdihosts $convexhosts $dechosts $dynixhosts $gouldhosts $pyramidbsdhosts $solbournehosts $sunoshosts"
  692. Xsvr4hosts="$dghosts $iclhosts $ncrhosts $pyramidsysvhosts $solarishosts"
  693. Xsysvhosts="$aixhosts $amdahlhosts $atthosts $bosxhosts $bullhosts $dynixptxhosts $encorehosts $hphosts $mipshosts $motorolahosts $sgihosts $stardenthosts $tandemhosts $tihosts $xenixhosts"
  694. Xunixhosts="$bsdhosts $svr4hosts $sysvhosts"
  695. X# where do you maintain alldisks?
  696. Xalldiskshosts=""
  697. SHAR_EOF
  698. chmod 0664 lib/rrun.hosts ||
  699. echo 'restore of lib/rrun.hosts failed'
  700. Wc_c="`wc -c < 'lib/rrun.hosts'`"
  701. test 2176 -eq "$Wc_c" ||
  702.     echo 'lib/rrun.hosts: original size 2176, current size' "$Wc_c"
  703. rm -f _shar_wnt_.tmp
  704. fi
  705. # ============= saenv.paper.ps ==============
  706. if test -f 'saenv.paper.ps' -a X"$1" != X"-c"; then
  707.     echo 'x - skipping saenv.paper.ps (File already exists)'
  708.     rm -f _shar_wnt_.tmp
  709. else
  710. > _shar_wnt_.tmp
  711. echo 'x - extracting saenv.paper.ps (Text)'
  712. sed 's/^X//' << 'SHAR_EOF' > 'saenv.paper.ps' &&
  713. X%!
  714. X%%Creator: troff->tpscript
  715. X%%CreationDate: Fri Aug 16 15:02:51 1991
  716. X%%EndComments
  717. X/inch { 480 mul } bind def
  718. X/Xshowpage { showpage } bind def
  719. X/rotateit { /pgtop 11 inch def /pgwid 8.5 inch def  newpath } bind def
  720. X/scaleit { 72 480 div dup scale rotateit 1 setlinecap} def
  721. X/unscaleit { 480 72 div dup scale} def
  722. X/RBKFontDict 9 dict def /NEWDict 10 dict def
  723. XRBKFontDict begin
  724. X/FontType 3 def
  725. X/FontName (RBK specials) cvn def
  726. X/FontMatrix [ 0.001 0 0 0.001 0 0] def
  727. X/FontBBox [ -50 -250 1000 1000 ] def
  728. X/Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for
  729. XEncoding
  730. Xdup 2 /Csq put
  731. Xdup 3 /Cci put
  732. Xdup 4 /Cbx put
  733. Xdup 5 /CSu put
  734. Xdup 15 /Cbu put
  735. Xpop
  736. X/CharProcs 24 dict dup begin
  737. X  /setC { 0 -50 -250 1000 1000 setcachedevice} def
  738. X/Cbu { 0 0 moveto
  739. X600 setC
  740. X300 300 moveto 300 300 250 0 360 arc closepath fill } def
  741. X/Csq { 0 0 moveto
  742. X600 setC
  743. X50 50 moveto
  744. X500 0 rlineto 0 500 rlineto -500 0 rlineto closepath fill } def
  745. X/Cbx { 0 0 moveto
  746. X600 setC
  747. X70 setlinewidth
  748. X50 50 moveto 500 0 rlineto 0 500 rlineto -500 0 rlineto closepath stroke } def
  749. X/Cci { 0 0 moveto 600 setC
  750. X70 setlinewidth
  751. X550 300 moveto 300 300 250 0 360 arc closepath stroke } def
  752. X/CSu {
  753. X0 0 moveto
  754. X715 setC
  755. X700 700 scale
  756. X%% Kolstad & Horton/Polk 12/1989; Font:  kolstad 6/24/90
  757. X/divsq2 { 1.4142136 div } bind def /mulsq2 { 1.4142136 mul } bind def
  758. X/TW 0.62 def  %% top width
  759. X/MG 0.12 def  %% MidGap
  760. X/US TW 4 mul MG 6 mul add def  %% Uside
  761. X/UL US TW sub MG sub def  %% U length
  762. X/OR MG TW add def  %% outradius
  763. X/T2 TW divsq2 def
  764. X/U2 UL divsq2 def
  765. X/M2 MG divsq2 def
  766. X/SU {  %% sunU
  767. X    currentpoint
  768. X    T2 dup neg rlineto
  769. X    U2 neg dup rlineto
  770. X    currentpoint exch M2 add exch M2 sub MG 135 315 arc
  771. X    U2 dup rlineto
  772. X    T2 dup neg rlineto
  773. X    U2 neg dup rlineto
  774. X    currentpoint exch OR divsq2 sub exch OR divsq2 add OR 315 135 arcn
  775. X    closepath
  776. X    moveto
  777. X} def
  778. X/SU2 { SU currentpoint 0 US neg mulsq2 rmoveto 180 rotate SU -180 rotate
  779. X      moveto } def
  780. X   1 US mulsq2 2 mul div dup scale 
  781. X   US divsq2 US mulsq2 US divsq2 add rmoveto
  782. X   4 { M2 2 mul M2 2 mul rmoveto US mulsq2 0 rmoveto 270 rotate SU2 } repeat
  783. X%% 0 setlinewidth stroke
  784. X   fill
  785. X} def
  786. Xend def
  787. X
  788. X/BuildChar
  789. X{
  790. X    NEWDict begin
  791. X    /charcode exch def /fontdict exch def
  792. X    fontdict /CharProcs get begin
  793. X    fontdict /Encoding get
  794. X    charcode get load
  795. X    gsave 0 setlinecap 0 setgray newpath exec grestore
  796. X    end end
  797. X} def
  798. Xend
  799. X/RBKFont RBKFontDict definefont pop
  800. X%%%%%%%%%%%%%%% End special Font
  801. Xscaleit 0 0 moveto
  802. X/pagebot { showpage restore } def
  803. X/pagetop { save } def
  804. X/lastpage {} def
  805. X/pt { 6.666667 mul } bind def
  806. X/y { neg 0 exch rmoveto } bind def
  807. X/X { U moveto } bind def
  808. X/Y { pgtop exch sub currentpoint pop exch dup /U exch def moveto } bind def
  809. X/s { show } bind def
  810. X/S { dup gsave show grestore
  811. X    gsave true charpath 0 setgray stroke grestore } bind def
  812. X/l { neg rlineto currentpoint stroke dup /U exch def moveto } bind def
  813. X/c {
  814. X2 div /rad exch def currentpoint /y0 exch def /x0 exch def
  815. Xnewpath x0 rad add y0 rad 0 360 arc stroke
  816. Xx0 rad add rad add y0 dup /U exch def moveto
  817. X } def
  818. X/a {
  819. X/y2 exch neg def /x2 exch def /y1 exch neg def /x1 exch def
  820. Xx1 y1 rmoveto currentpoint
  821. Xcurrentpoint
  822. Xx2 x2 mul y2 y2 mul add sqrt
  823. Xy1 neg x1 neg atan
  824. Xy2 x2 atan
  825. Xnewpath arc stroke moveto x2 y2 rmoveto currentpoint /U exch def pop
  826. X} def
  827. X/e {
  828. X2 div /yrad exch def 2 div /xrad exch def
  829. Xcurrentpoint /y0 exch def /x0 exch def
  830. Xgsave x0 xrad add y0 translate xrad yrad scale
  831. XLS xrad yrad gt {xrad} {yrad} ifelse div setlinewidth
  832. Xnewpath 0 0 1 0 360 arc stroke grestore
  833. Xx0 xrad add xrad add y0 dup /U exch def moveto
  834. X} def
  835. X/spln {
  836. Xrcurveto currentpoint stroke dup /U exch def moveto
  837. X} def
  838. X
  839. X% stolen from greenbook page 115-116
  840. X/F { findfont exch scalefont setfont } bind def
  841. X/RE {   % re-encode
  842. X  findfont begin
  843. X   currentdict dup length dict begin
  844. X    { 1 index /FID ne {def} {pop pop} ifelse } forall
  845. X    /FontName exch def dup length 0 ne { % if
  846. X       /Encoding Encoding 256 array copy def
  847. X      0 exch
  848. X       {  % forall
  849. X         dup type /nametype eq  % if?
  850. X         { Encoding 2 index 2 index put pop 1 add }
  851. X         { exch pop }
  852. X         ifelse
  853. X       } forall
  854. X    } if
  855. X    pop currentdict dup
  856. X   end
  857. X  end
  858. X  /FontName get exch definefont pop
  859. X} bind def
  860. X
  861. X% use make.remap to make new stdencodings:
  862. X/stdencoding [ 1 /multiply /ntilde /eth /otilde /oacute /idieresis
  863. X/Ocircumflex /ograve /onequarter /scaron /uacute /odieresis
  864. X/Ucircumflex /ugrave /yacute /Thorn /zcaron /udieresis /threequarters
  865. X/threesuperior /ydieresis /aring /Ccedilla /twosuperior /acircumflex
  866. X/Atilde /Aacute /Agrave /ecircumflex /Eacute /copyright 127 /Adieresis
  867. X/Egrave /icircumflex /Iacute /onehalf /Edieresis /Igrave /Ntilde /Eth
  868. X/ocircumflex /Otilde /Oacute /Idieresis /mu /Ograve /Scaron
  869. X/ucircumflex /Uacute /Odieresis /Ugrave /Yacute /thorn /degree
  870. X/logicalnot /minus /Zcaron /Udieresis /registered /plusminus /ccedilla
  871. X/Ydieresis /Aring /atilde /aacute 176 /Acircumflex 181 /divide 190
  872. X/brokenbar 192 /agrave 201 /eacute 204 /Ecircumflex 209 /adieresis
  873. X/egrave /onesuperior /trademark /iacute /Icircumflex /edieresis /igrave
  874. X] def
  875. X/specdwidth 0 def /LS 0 def
  876. X/setwidth {/specdwidth 1 def dup /LS exch def setlinewidth} def
  877. X/ft { /fonttype exch def /xsiz exch def /ysiz exch def /sl exch def
  878. X fonttype [ xsiz pt 0 sl sin sl cos div ysiz pt mul ysiz pt 0 0 ]
  879. X makefont setfont
  880. X specdwidth 0 eq {xsiz 4 div dup /LS exch def setlinewidth} if
  881. X setgray } def
  882. X/Z { specdwidth 0 eq {dup 4 div dup /LS exch def setlinewidth} if
  883. X pt scalefont setfont } bind def
  884. X/M { pgtop exch sub moveto } bind def
  885. X/L { pgtop exch sub lineto } bind def
  886. X/cbox { gsave 100 div setgray
  887. Xcurrentpoint /nowy exch def /nowx exch def
  888. X/radius exch def /boxdown exch def /boxover exch def
  889. Xcurrentpoint newpath moveto radius 0 rmoveto
  890. Xnowx boxover add nowy nowx boxover add nowy boxdown sub radius arcto 
  891. Xpop pop pop pop
  892. Xnowx boxover add nowy boxdown sub nowx nowy boxdown sub radius arcto
  893. Xpop pop pop pop
  894. Xnowx nowy boxdown sub nowx nowy radius arcto pop pop pop pop
  895. Xnowx nowy nowx boxover add nowy radius arcto pop pop pop pop
  896. Xcurrentgray 1.0 ne { gsave fill grestore } if 0 setgray stroke
  897. Xgrestore } bind def
  898. X/f.Y /RBKFont findfont def
  899. X
  900. X0 Y
  901. Xsave
  902. X%%EndProlog
  903. X
  904. X0 Y
  905. X%%Page: 1 1
  906. Xpagetop
  907. Xstdencoding /NTimes-Roman /Times-Roman RE
  908. X/f.R /NTimes-Roman findfont def 
  909. X0.00 0.0 10 10 f.R ft
  910. X1181 X
  911. X521 Y
  912. X1305 X
  913. Xstdencoding /NTimes-Bold /Times-Bold RE
  914. X/f.B /NTimes-Bold findfont def 
  915. Xf.B 22 Z(If)s
  916. X1459 X(You've)s
  917. X1954 X(Seen)s
  918. X2294 X(One)s
  919. X2602 X(UNIX,)s
  920. X1181 X
  921. X667 Y
  922. X1441 X(You've)s
  923. X1936 X(Seen)s
  924. X2276 X(Them)s
  925. X2690 X(All)s
  926. X600 X
  927. X835 Y
  928. X1446 X
  929. Xstdencoding /NTimes-Italic /Times-Italic RE
  930. X/f.I /NTimes-Italic findfont def 
  931. Xf.I 12 Z(Bob)s
  932. X1601 X(Arnold)s
  933. X1849 X(\261)s
  934. X1915 X
  935. Xf.R 12 Z(ASK/Ingres)s
  936. X2324 X(Product)s
  937. X2599 X(Division)s
  938. X840 X
  939. X1011 Y
  940. X1912 X
  941. Xf.B 12 Z(ABSTRACT)s
  942. X840 X
  943. X1145 Y
  944. X984 X
  945. Xf.R 10 Z(The)s
  946. X1119 X(title)s
  947. X1257 X(is)s
  948. X1334 X(absurd,)s
  949. X1560 X(of)s
  950. X1647 X(course)s
  951. X1821 X(.)s
  952. X1892 X(One)s
  953. X2035 X(of)s
  954. X2122 X(the)s
  955. X2236 X(major)s
  956. X2424 X(challenges)s
  957. X2739 X(in)s
  958. X2823 X(a)s
  959. X2885 X(very)s
  960. X3035 X(heterogeneous)s
  961. X840 X
  962. X1218 Y
  963. Xf.R 8 Z(UNIX)s
  964. X1007 X
  965. Xf.R 10 Z(environment)s
  966. X1379 X(is)s
  967. X1459 X(to)s
  968. X1546 X(make)s
  969. X1726 X(system)s
  970. X1947 X(administration)s
  971. X2369 X(tools)s
  972. X2534 X(handle)s
  973. X2746 X(differences)s
  974. X3077 X(among)s
  975. X3288 X
  976. Xf.R 8 Z(UNIX)s
  977. X840 X
  978. X1291 Y
  979. Xf.R 10 Z(variants)s
  980. X1088 X(and)s
  981. X1220 X(differing)s
  982. X1489 X(local)s
  983. X1656 X(con\256gurations)s
  984. X2037 X(.)s
  985. X2112 X(In)s
  986. X2203 X(short,)s
  987. X2390 X(how)s
  988. X2541 X(can)s
  989. X2671 X(one)s
  990. X2804 X(write)s
  991. X2979 X(tools)s
  992. X3146 X(that)s
  993. X3284 X(work)s
  994. X840 X
  995. X1364 Y(everywhere?)s
  996. X1237 X(This)s
  997. X1390 X(paper)s
  998. X1572 X(describes)s
  999. X1855 X(an)s
  1000. X1952 X(approach)s
  1001. X2230 X(to)s
  1002. X2316 X(coping)s
  1003. X2531 X(with)s
  1004. X2684 X(this)s
  1005. X2815 X(challenge)s
  1006. X3105 X(\(and)s
  1007. X3256 X(at)s
  1008. X3338 X(the)s
  1009. X840 X
  1010. X1437 Y(same)s
  1011. X1004 X(time)s
  1012. X1150 X(making)s
  1013. X1376 X(the)s
  1014. X1484 X(title)s
  1015. X1616 X(seem,)s
  1016. X1797 X(well,)s
  1017. X1956 X(at)s
  1018. X2031 X(least)s
  1019. X2181 X(a)s
  1020. X2237 X(little)s
  1021. X2388 X(bit)s
  1022. X2485 X(less)s
  1023. X2612 X(ridiculous\))s
  1024. X2901 X(.)s
  1025. X2966 X(The)s
  1026. X3096 X(heart)s
  1027. X3256 X(of)s
  1028. X3338 X(the)s
  1029. X840 X
  1030. X1510 Y(technique)s
  1031. X1136 X(is)s
  1032. X1217 X(to)s
  1033. X1305 X(use)s
  1034. X1430 X(a)s
  1035. X1495 X(Bourne)s
  1036. X1725 X(shell)s
  1037. X1887 X(script)s
  1038. X2071 X(to)s
  1039. X2158 X(research)s
  1040. X2416 X(a)s
  1041. X2481 X(local)s
  1042. X2647 X(environment)s
  1043. X2984 X(.)s
  1044. X3058 X(The)s
  1045. X3197 X(research)s
  1046. X840 X
  1047. X1583 Y(results)s
  1048. X1039 X(are)s
  1049. X1145 X(written)s
  1050. X1359 X(to)s
  1051. X1436 X(a)s
  1052. X1491 X(con\256guration)s
  1053. X1871 X(\256le,)s
  1054. X1999 X(which)s
  1055. X2187 X(is)s
  1056. X2257 X(itself)s
  1057. X2417 X(a)s
  1058. X2472 X(shell)s
  1059. X2624 X(script)s
  1060. X2773 X(.)s
  1061. X2837 X(It)s
  1062. X2903 X(is)s
  1063. X2973 X(thus)s
  1064. X3109 X(suitable)s
  1065. X3343 X(for)s
  1066. X840 X
  1067. X1656 Y(direct)s
  1068. X1025 X(sourcing)s
  1069. X1286 X(by)s
  1070. X1384 X(any)s
  1071. X1512 X
  1072. Xf.B 10 Z(sh)s
  1073. X1607 X
  1074. Xf.R 10 Z(script,)s
  1075. X1805 X(and)s
  1076. X1933 X(can)s
  1077. X2057 X(be)s
  1078. X2151 X(easily)s
  1079. X2339 X(consulted)s
  1080. X2626 X(by)s
  1081. X2723 X(other)s
  1082. X2891 X(kinds)s
  1083. X3066 X(of)s
  1084. X3152 X(programs)s
  1085. X3403 X(.)s
  1086. X840 X
  1087. X1729 Y(This)s
  1088. X982 X(technique)s
  1089. X1265 X(depends)s
  1090. X1506 X(a\))s
  1091. X1582 X(on)s
  1092. X1672 X(the)s
  1093. X1778 X(availability)s
  1094. X2105 X(of)s
  1095. X2184 X(a)s
  1096. X2238 X(common)s
  1097. X2495 X(tool)s
  1098. X2623 X(set,)s
  1099. X2739 X(which)s
  1100. X2926 X(is)s
  1101. X2995 X(available)s
  1102. X3262 X(in)s
  1103. X3338 X(the)s
  1104. X840 X
  1105. X1802 Y(Version)s
  1106. X1086 X(7)s
  1107. X1154 X(utilities,)s
  1108. X1409 X(and)s
  1109. X1540 X(b\))s
  1110. X1630 X(a)s
  1111. X1695 X(dynamic)s
  1112. X1960 X(tool)s
  1113. X2099 X(design)s
  1114. X2308 X(approach)s
  1115. X2587 X(which)s
  1116. X2785 X(understands)s
  1117. X3138 X(and)s
  1118. X3268 X(copes)s
  1119. X840 X
  1120. X1875 Y(properly)s
  1121. X1087 X(with)s
  1122. X1228 X(the)s
  1123. X1332 X(differences)s
  1124. X1629 X(.)s
  1125. X1690 X(Related)s
  1126. X1917 X(techniques)s
  1127. X2225 X(and)s
  1128. X2343 X(experiences)s
  1129. X2681 X(are)s
  1130. X2785 X(also)s
  1131. X2915 X(discussed)s
  1132. X3171 X(.)s
  1133. X600 X
  1134. X2021 Y
  1135. X1150 X
  1136. Xf.B 10 Z(Introduction)s
  1137. X600 X
  1138. X2130 Y
  1139. X744 X
  1140. Xf.R 10 Z(In)s
  1141. X826 X(their)s
  1142. X976 X(never)s
  1143. X1151 X(ending)s
  1144. X1359 X(search)s
  1145. X1558 X(for)s
  1146. X1663 X(better)s
  1147. X1844 X(ways)s
  1148. X2009 X(of)s
  1149. X600 X
  1150. X2203 Y(doing)s
  1151. X796 X(things,)s
  1152. X1021 X(vendors)s
  1153. X1276 X(are)s
  1154. X1403 X(fond)s
  1155. X1569 X(of)s
  1156. X1669 X(tailoring)s
  1157. X1941 X(their)s
  1158. X600 X
  1159. X2276 Y(version\(s\))s
  1160. X893 X(of)s
  1161. X971 X
  1162. Xf.R 8 Z(UNIX)s
  1163. X1103 X
  1164. Xf.R 10 Z(.)s
  1165. X1169 X(The)s
  1166. X1301 X(sheer)s
  1167. X1470 X(variety)s
  1168. X1684 X(of)s
  1169. X1767 X(differences)s
  1170. X600 X
  1171. X2349 Y(makes)s
  1172. X825 X(life)s
  1173. X969 X(dif\256cult)s
  1174. X1235 X(for)s
  1175. X1366 X(a)s
  1176. X1450 X(system)s
  1177. X1690 X(administrator)s
  1178. X2047 X(.)s
  1179. X600 X
  1180. X2422 Y(Differences)s
  1181. X952 X(among)s
  1182. X1169 X
  1183. Xf.R 8 Z(UNIX)s
  1184. Xf.R 10 Z(s)s
  1185. X1368 X(are)s
  1186. X1491 X(commonly)s
  1187. X1817 X(found)s
  1188. X2012 X(in)s
  1189. X600 X
  1190. X2495 Y(these)s
  1191. X760 X(areas:)s
  1192. X600 X
  1193. X2568 Y
  1194. X663 X
  1195. Xf.Y 10 Z(\017)s
  1196. X734 X
  1197. Xf.R 10 Z(Procedures)s
  1198. X1052 X(for)s
  1199. X1151 X(changing)s
  1200. X1417 X(con\256guration)s
  1201. X1794 X(\256les)s
  1202. X600 X
  1203. X2641 Y
  1204. X663 X
  1205. Xf.Y 10 Z(\017)s
  1206. X734 X
  1207. Xf.R 10 Z(Con\256guration)s
  1208. X1125 X(\256le)s
  1209. X1233 X(location/name)s
  1210. X600 X
  1211. X2714 Y
  1212. X663 X
  1213. Xf.Y 10 Z(\017)s
  1214. X734 X
  1215. Xf.R 10 Z(Con\256guration)s
  1216. X1125 X(\256le)s
  1217. X1233 X(format)s
  1218. X600 X
  1219. X2787 Y
  1220. X663 X
  1221. Xf.Y 10 Z(\017)s
  1222. X734 X
  1223. Xf.R 10 Z(Command)s
  1224. X1033 X(syntaxes)s
  1225. X600 X
  1226. X2860 Y
  1227. X663 X
  1228. Xf.Y 10 Z(\017)s
  1229. X734 X
  1230. Xf.R 10 Z(Program)s
  1231. X985 X(availability)s
  1232. X600 X
  1233. X2933 Y
  1234. X663 X
  1235. Xf.Y 10 Z(\017)s
  1236. X734 X
  1237. Xf.R 10 Z(Program)s
  1238. X985 X(capabilities)s
  1239. X1314 X(and)s
  1240. X1432 X(behaviors)s
  1241. X600 X
  1242. X3006 Y
  1243. X663 X
  1244. Xf.Y 10 Z(\017)s
  1245. X734 X
  1246. Xf.R 10 Z(Program)s
  1247. X985 X(outputs)s
  1248. X600 X
  1249. X3079 Y
  1250. X663 X
  1251. Xf.Y 10 Z(\017)s
  1252. X734 X
  1253. Xf.R 10 Z(Program)s
  1254. X985 X(location/name)s
  1255. X600 X
  1256. X3173 Y
  1257. X744 X(One)s
  1258. X879 X(of)s
  1259. X958 X(the)s
  1260. X1064 X(keys)s
  1261. X1210 X(to)s
  1262. X1286 X(administering)s
  1263. X1679 X(many)s
  1264. X1852 X(systems)s
  1265. X600 X
  1266. X3246 Y(is)s
  1267. X670 X(to)s
  1268. X747 X(write)s
  1269. X909 X(tools)s
  1270. X1063 X(to)s
  1271. X1139 X(handle)s
  1272. X1341 X(as)s
  1273. X1421 X(many)s
  1274. X1593 X(common)s
  1275. X1850 X(tasks)s
  1276. X2008 X(as)s
  1277. X600 X
  1278. X3319 Y(possible)s
  1279. X819 X(.)s
  1280. X896 X(This)s
  1281. X1054 X(may)s
  1282. X1208 X(make)s
  1283. X1392 X(it)s
  1284. X1469 X(possible)s
  1285. X1727 X(to)s
  1286. X1818 X(automate)s
  1287. X600 X
  1288. X3392 Y(common)s
  1289. X872 X(tasks,)s
  1290. X1062 X(spend)s
  1291. X1255 X(less)s
  1292. X1394 X(time)s
  1293. X1552 X(on)s
  1294. X1656 X(them,)s
  1295. X1845 X(or)s
  1296. X1938 X(even)s
  1297. X600 X
  1298. X3465 Y(hand)s
  1299. X760 X(them)s
  1300. X925 X(off)s
  1301. X1033 X(to)s
  1302. X1116 X(other)s
  1303. X1284 X(people)s
  1304. X1462 X(.)s
  1305. X1532 X(Yet)s
  1306. X1660 X(in)s
  1307. X1744 X(an)s
  1308. X1839 X(environ-)s
  1309. X600 X
  1310. X3538 Y(ment)s
  1311. X759 X(with)s
  1312. X903 X(systems)s
  1313. X1140 X(from)s
  1314. X1294 X(many)s
  1315. X1466 X(vendors,)s
  1316. X1717 X(writing)s
  1317. X1934 X(tools)s
  1318. X600 X
  1319. X3611 Y(that)s
  1320. X723 X(work)s
  1321. X881 X(with)s
  1322. X1022 X(all)s
  1323. X1112 X(systems)s
  1324. X1346 X(can)s
  1325. X1461 X(be)s
  1326. X1546 X(dif\256cult)s
  1327. X1758 X(.)s
  1328. X600 X
  1329. X3738 Y
  1330. X1143 X
  1331. Xf.B 10 Z(Environment)s
  1332. X600 X
  1333. X3847 Y
  1334. X744 X
  1335. Xf.R 10 Z(The)s
  1336. X886 X(Data)s
  1337. X1051 X(Center)s
  1338. X1267 X(at)s
  1339. X1354 X(the)s
  1340. X1474 X(ASK/Ingres)s
  1341. X1831 X(Products)s
  1342. X600 X
  1343. X3920 Y(Division)s
  1344. X873 X(is)s
  1345. X961 X(responsible)s
  1346. X1308 X(for)s
  1347. X1428 X(supporting)s
  1348. X1755 X(\(at)s
  1349. X1868 X(various)s
  1350. X600 X
  1351. X3993 Y(levels\))s
  1352. X808 X(almost)s
  1353. X1016 X(300)s
  1354. X1141 X
  1355. Xf.R 8 Z(UNIX)s
  1356. X1303 X
  1357. Xf.R 10 Z(systems)s
  1358. X1545 X(from)s
  1359. X1704 X(well)s
  1360. X1850 X(over)s
  1361. X1998 X(20)s
  1362. X600 X
  1363. X4066 Y(vendors)s
  1364. X810 X(.)s
  1365. X874 X(Each)s
  1366. X1033 X(vendor)s
  1367. X1241 X(may)s
  1368. X1380 X(be)s
  1369. X1467 X(represented)s
  1370. X1799 X(by)s
  1371. X1889 X(one)s
  1372. X2009 X(or)s
  1373. X600 X
  1374. X4139 Y(more)s
  1375. X762 X(operating)s
  1376. X1040 X(systems,)s
  1377. X1295 X(sometimes)s
  1378. X1608 X(running)s
  1379. X1840 X(multiple)s
  1380. X600 X
  1381. X4212 Y(major)s
  1382. X797 X(releases)s
  1383. X1051 X(on)s
  1384. X1158 X(several)s
  1385. X1389 X(different)s
  1386. X1660 X(CPU)s
  1387. X1829 X(architec-)s
  1388. X600 X
  1389. X4285 Y(tures)s
  1390. X730 X(.)s
  1391. X803 X(New)s
  1392. X963 X(hardware)s
  1393. X1245 X(and)s
  1394. X1375 X(operating)s
  1395. X1661 X(systems)s
  1396. X1908 X(arrive)s
  1397. X600 X
  1398. X4358 Y(frequently,)s
  1399. X920 X(and)s
  1400. X1045 X(must)s
  1401. X1204 X(be)s
  1402. X1295 X(integrated)s
  1403. X1591 X(into)s
  1404. X1723 X(our)s
  1405. X1839 X(environ-)s
  1406. X600 X
  1407. X4431 Y(ment)s
  1408. X766 X(quickly)s
  1409. X966 X(.)s
  1410. X1038 X(This)s
  1411. X1190 X(process)s
  1412. X1423 X(has)s
  1413. X1545 X(been)s
  1414. X1704 X(going)s
  1415. X1888 X(on)s
  1416. X1987 X(for)s
  1417. X600 X
  1418. X4504 Y(years,)s
  1419. X793 X(so)s
  1420. X887 X(we)s
  1421. X999 X(also)s
  1422. X1141 X(have)s
  1423. X1301 X(a)s
  1424. X1365 X(number)s
  1425. X1602 X(of)s
  1426. X1691 X(relatively)s
  1427. X1979 X(old)s
  1428. X600 X
  1429. X4577 Y
  1430. Xf.R 8 Z(UNIX)s
  1431. X754 X
  1432. Xf.R 10 Z(platforms)s
  1433. X1032 X(to)s
  1434. X1106 X(support)s
  1435. X1305 X(.)s
  1436. X2256 X
  1437. X2021 Y
  1438. X2766 X
  1439. Xf.B 10 Z(Early)s
  1440. X2947 X(Attempts)s
  1441. X2256 X
  1442. X2130 Y
  1443. X2400 X
  1444. Xf.R 10 Z(Under)s
  1445. X2594 X(these)s
  1446. X2761 X(circumstances,)s
  1447. X3187 X(we)s
  1448. X3294 X(need)s
  1449. X3449 X(a)s
  1450. X3508 X(strategy)s
  1451. X2256 X
  1452. X2203 Y(for)s
  1453. X2370 X(making)s
  1454. X2607 X(our)s
  1455. X2732 X(tools)s
  1456. X2898 X(work)s
  1457. X3070 X(on)s
  1458. X3172 X(all)s
  1459. X3276 X(these)s
  1460. X3450 X(machines)s
  1461. X3703 X(.)s
  1462. X2256 X
  1463. X2276 Y(Early)s
  1464. X2425 X(attempts)s
  1465. X2677 X(at)s
  1466. X2751 X(getting)s
  1467. X2962 X(tools)s
  1468. X3117 X(to)s
  1469. X3194 X(work)s
  1470. X3355 X("everywhere")s
  1471. X2256 X
  1472. X2349 Y(included)s
  1473. X2520 X(variations)s
  1474. X2818 X(on)s
  1475. X2918 X(the)s
  1476. X3034 X(theme)s
  1477. X3232 X(below)s
  1478. X3395 X(.)s
  1479. X3467 X(Naturally)s
  1480. X2256 X
  1481. X2422 Y(they)s
  1482. X2393 X(broke)s
  1483. X2566 X(on)s
  1484. X2654 X(various)s
  1485. X2872 X(System)s
  1486. X3091 X(V)s
  1487. X3161 X(/)s
  1488. X3202 X(BSD)s
  1489. X3353 X(hybrids)s
  1490. X3552 X(.)s
  1491. Xstdencoding /NCourier /Courier RE
  1492. X/f.CW /NCourier findfont def 
  1493. X2256 X
  1494. X2524 Y
  1495. X2304 X
  1496. Xf.CW 10 Z(if)s
  1497. X2424 X(test)s
  1498. X2624 X(-f)s
  1499. X2744 X(/etc/inittab)s
  1500. X3264 X(;)s
  1501. X3344 X(then)s
  1502. X2256 X
  1503. X2597 Y
  1504. X2464 X(#)s
  1505. X2544 X(make)s
  1506. X2744 X(lots)s
  1507. X2944 X(of)s
  1508. X3064 X(System)s
  1509. X3344 X(V)s
  1510. X2256 X
  1511. X2670 Y
  1512. X2464 X(#)s
  1513. X2544 X(assumptions)s
  1514. X2256 X
  1515. X2743 Y
  1516. X2304 X(else)s
  1517. X2256 X
  1518. X2816 Y
  1519. X2464 X(#)s
  1520. X2544 X(make)s
  1521. X2744 X(lots)s
  1522. X2944 X(of)s
  1523. X3064 X(BSD)s
  1524. X2256 X
  1525. X2889 Y
  1526. X2464 X(#)s
  1527. X2544 X(assumptions)s
  1528. X2256 X
  1529. X2962 Y
  1530. X2304 X(fi)s
  1531. X2256 X
  1532. X3085 Y
  1533. X2400 X
  1534. Xf.R 10 Z(We)s
  1535. X2515 X(found)s
  1536. X2691 X(that)s
  1537. X2815 X(this)s
  1538. X2935 X(kind)s
  1539. X3076 X(of)s
  1540. X3154 X(research)s
  1541. X3400 X(code)s
  1542. X3549 X(had)s
  1543. X3668 X(to)s
  1544. X2256 X
  1545. X3158 Y(be)s
  1546. X2353 X(repeated)s
  1547. X2614 X(in)s
  1548. X2700 X(many)s
  1549. X2882 X(tools)s
  1550. X3012 X(.)s
  1551. X3085 X(And)s
  1552. X3233 X(it)s
  1553. X3305 X(was)s
  1554. X3442 X(tedious)s
  1555. X3668 X(to)s
  1556. X2256 X
  1557. X3231 Y(make)s
  1558. X2433 X(improvements)s
  1559. X2847 X(to)s
  1560. X2931 X(the)s
  1561. X3046 X(research)s
  1562. X3302 X(code)s
  1563. X3461 X(when)s
  1564. X3638 X(the)s
  1565. X2256 X
  1566. X3304 Y(same)s
  1567. X2416 X(\256xes)s
  1568. X2564 X(had)s
  1569. X2682 X(to)s
  1570. X2756 X(be)s
  1571. X2841 X(inserted)s
  1572. X3075 X(into)s
  1573. X3201 X(many)s
  1574. X3371 X(tools)s
  1575. X3501 X(.)s
  1576. X2256 X
  1577. X3398 Y
  1578. X2400 X(In)s
  1579. X2490 X(a)s
  1580. X2556 X(few)s
  1581. X2692 X(tools)s
  1582. X2858 X(we)s
  1583. X2972 X(tried)s
  1584. X3131 X(to)s
  1585. X3219 X(maintain)s
  1586. X3490 X(different)s
  1587. X2256 X
  1588. X3471 Y(versions)s
  1589. X2509 X(for)s
  1590. X2616 X(different)s
  1591. X2876 X(platforms)s
  1592. X3132 X(.)s
  1593. X3201 X(This)s
  1594. X3350 X(created)s
  1595. X3574 X(small)s
  1596. X2256 X
  1597. X3544 Y(porting)s
  1598. X2473 X(problems)s
  1599. X2747 X(and)s
  1600. X2869 X(large)s
  1601. X3029 X(source)s
  1602. X3229 X(code)s
  1603. X3381 X(maintenance)s
  1604. X2256 X
  1605. X3617 Y(nightmares)s
  1606. X2553 X(.)s
  1607. X2256 X
  1608. X3744 Y
  1609. X2514 X
  1610. Xf.B 10 Z(Con\256guration)s
  1611. X2935 X(Research)s
  1612. X3221 X(Strategy)s
  1613. X2256 X
  1614. X3853 Y
  1615. X2400 X
  1616. Xf.R 10 Z(Eventually,)s
  1617. X2747 X(all)s
  1618. X2855 X(of)s
  1619. X2950 X(this)s
  1620. X3087 X(became)s
  1621. X3332 X(ridiculous)s
  1622. X3599 X(.)s
  1623. X3679 X(It)s
  1624. X2256 X
  1625. X3926 Y(was)s
  1626. X2392 X(decided)s
  1627. X2632 X(that)s
  1628. X2765 X(we)s
  1629. X2875 X(would)s
  1630. X3073 X(try)s
  1631. X3179 X(to)s
  1632. X3263 X(dynamically)s
  1633. X3626 X(test)s
  1634. X2256 X
  1635. X3999 Y(for)s
  1636. X2366 X(everything)s
  1637. X2684 X(we)s
  1638. X2795 X(cared)s
  1639. X2973 X(about,)s
  1640. X3171 X(from)s
  1641. X3334 X(where)s
  1642. X3531 X(to)s
  1643. X3617 X(\256nd)s
  1644. X2256 X
  1645. X4072 Y
  1646. Xf.B 10 Z(csh)s
  1647. X2385 X
  1648. Xf.R 10 Z(to)s
  1649. X2473 X
  1650. Xf.B 10 Z(echo)s
  1651. Xf.R 10 Z('s)s
  1652. X2687 X(no)s
  1653. X2753 X(-newline)s
  1654. X3023 X(syntax)s
  1655. X3197 X(.)s
  1656. X3272 X(We)s
  1657. X3400 X(could)s
  1658. X3583 X(build)s
  1659. X2256 X
  1660. X4145 Y(one)s
  1661. X2395 X(script)s
  1662. X2587 X(to)s
  1663. X2682 X(do)s
  1664. X2791 X(all)s
  1665. X2902 X(the)s
  1666. X3028 X(research)s
  1667. X3295 X(and)s
  1668. X3435 X(report)s
  1669. X3638 X(the)s
  1670. X2256 X
  1671. X4218 Y(results)s
  1672. X2469 X(in)s
  1673. X2559 X(a)s
  1674. X2627 X(\257at)s
  1675. X2751 X(\256le)s
  1676. X2875 X(which)s
  1677. X3076 X(could)s
  1678. X3261 X(be)s
  1679. X3361 X(consulted)s
  1680. X3654 X(by)s
  1681. X2256 X
  1682. X4291 Y(other)s
  1683. X2417 X(tools)s
  1684. X2547 X(.)s
  1685. X2610 X(As)s
  1686. X2708 X(it)s
  1687. X2770 X(happens,)s
  1688. X3030 X(all)s
  1689. X3123 X(our)s
  1690. X3236 X(tools)s
  1691. X3391 X(that)s
  1692. X3517 X(have)s
  1693. X3668 X(to)s
  1694. X2256 X
  1695. X4364 Y(run)s
  1696. X2398 X(everywhere)s
  1697. X2762 X(are)s
  1698. X2897 X(Bourne)s
  1699. X3145 X(shell)s
  1700. X3325 X(scripts,)s
  1701. X3570 X(so)s
  1702. X3682 X(it)s
  1703. X2256 X
  1704. X4437 Y(quickly)s
  1705. X2487 X(became)s
  1706. X2723 X(obvious)s
  1707. X2965 X(that)s
  1708. X3098 X(the)s
  1709. X3212 X(\257at)s
  1710. X3330 X(\256le)s
  1711. X3448 X(should)s
  1712. X3657 X(be)s
  1713. X2256 X
  1714. X4510 Y(written)s
  1715. X2479 X(as)s
  1716. X2568 X(a)s
  1717. X2631 X(Bourne)s
  1718. X2859 X(shell)s
  1719. X3018 X(script)s
  1720. X3199 X(too)s
  1721. X3284 X(.)s
  1722. X3355 X(Thus)s
  1723. X3520 X(the)s
  1724. X3634 X(\257at)s
  1725. X2256 X
  1726. X4583 Y(\256le)s
  1727. X2384 X(could)s
  1728. X2574 X(be)s
  1729. X2679 X(directly)s
  1730. X2926 X(sourced)s
  1731. X3175 X(by)s
  1732. X3283 X
  1733. Xf.B 10 Z(sh)s
  1734. X3389 X
  1735. Xf.R 10 Z(scripts,)s
  1736. X3624 X(and)s
  1737. X2256 X
  1738. X4656 Y(without)s
  1739. X2488 X(too)s
  1740. X2601 X(much)s
  1741. X2777 X(work)s
  1742. X2941 X(could)s
  1743. X3117 X(be)s
  1744. X3207 X(consulted)s
  1745. X3490 X(by)s
  1746. X3583 X(other)s
  1747. X2256 X
  1748. X4729 Y(kinds)s
  1749. X2422 X(of)s
  1750. X2499 X(programs)s
  1751. X2750 X(.)s
  1752. X600 X
  1753. X4967 Y
  1754. Xf.B 10 Z(LISA)s
  1755. X777 X(V)s
  1756. X847 X(\261)s
  1757. X902 X(Sep)s
  1758. X1006 X(.)s
  1759. X1045 X(30)s
  1760. X1111 X(-Oct)s
  1761. X1237 X(.)s
  1762. X1276 X(3,)s
  1763. X1348 X(1991)s
  1764. X1502 X(\261)s
  1765. X1557 X(San)s
  1766. X1686 X(Diego,)s
  1767. X1888 X(CA)s
  1768. X3654 X(11)s
  1769. X5280 Y
  1770. Xpagebot
  1771. X
  1772. X%%Page: 12 2
  1773. Xpagetop
  1774. Xstdencoding /NTimes-Bold /Times-Bold RE
  1775. X/f.B /NTimes-Bold findfont def 
  1776. Xf.B 10 Z
  1777. X360 X
  1778. X448 Y
  1779. X504 X
  1780. Xstdencoding /NTimes-Roman /Times-Roman RE
  1781. X/f.R /NTimes-Roman findfont def 
  1782. Xf.R 10 Z(We)s
  1783. X628 X(decided)s
  1784. X867 X(to)s
  1785. X951 X(maintain)s
  1786. X1218 X(only)s
  1787. X1368 X(one)s
  1788. X1496 X(current)s
  1789. X1717 X(ver-)s
  1790. X360 X
  1791. X521 Y(sion)s
  1792. X501 X(of)s
  1793. X586 X(each)s
  1794. X739 X(tool)s
  1795. X843 X(.)s
  1796. X912 X(If)s
  1797. X986 X(a)s
  1798. X1046 X(tool)s
  1799. X1180 X(had)s
  1800. X1306 X(to)s
  1801. X1388 X(run)s
  1802. X1505 X(on)s
  1803. X1600 X(multiple)s
  1804. X360 X
  1805. X594 Y(platforms,)s
  1806. X672 X(then)s
  1807. X826 X(it)s
  1808. X903 X(had)s
  1809. X1038 X(to)s
  1810. X1129 X(be)s
  1811. X1231 X(coded)s
  1812. X1429 X(to)s
  1813. X1521 X(handle)s
  1814. X1739 X(OS)s
  1815. X360 X
  1816. X667 Y(differences)s
  1817. X657 X(.)s
  1818. X721 X(In)s
  1819. X800 X(other)s
  1820. X961 X(words,)s
  1821. X1164 X(such)s
  1822. X1310 X(a)s
  1823. X1364 X(tool)s
  1824. X1492 X(had)s
  1825. X1612 X(to)s
  1826. X1688 X(work)s
  1827. X360 X
  1828. X740 Y(as)s
  1829. X460 X(written,)s
  1830. X712 X(without)s
  1831. X961 X(porting)s
  1832. X1153 X(.)s
  1833. X1237 X(Tools)s
  1834. X1434 X(learned)s
  1835. X1676 X(about)s
  1836. X360 X
  1837. X813 Y(their)s
  1838. X505 X(environment)s
  1839. X864 X(from)s
  1840. X1015 X(the)s
  1841. X1119 X(research)s
  1842. X1364 X(tool's)s
  1843. X1538 X(report)s
  1844. X1697 X(.)s
  1845. X360 X
  1846. X4005 Y
  1847. X3120 0 l
  1848. X360 X
  1849. X4093 Y
  1850. X408 X
  1851. Xstdencoding /NCourier /Courier RE
  1852. X/f.CW /NCourier findfont def 
  1853. Xf.CW 10 Z(drwxr)s
  1854. X608 X(-xr)s
  1855. X728 X(-x)s
  1856. X848 X(3)s
  1857. X928 X(root)s
  1858. X1128 X(/etc/dist)s
  1859. X2048 X
  1860. Xf.R 10 Z(#)s
  1861. X2103 X(for)s
  1862. X2202 X(\256les)s
  1863. X2336 X(we)s
  1864. X2436 X(distribute)s
  1865. X360 X
  1866. X4173 Y
  1867. X408 X
  1868. Xf.CW 10 Z(drwxr)s
  1869. X608 X(-xr)s
  1870. X728 X(-x)s
  1871. X848 X(2)s
  1872. X928 X(root)s
  1873. X1128 X(/etc/dist/bin)s
  1874. X2048 X
  1875. Xf.R 10 Z(#)s
  1876. X2103 X(distributed)s
  1877. X2411 X(tools)s
  1878. X2563 X(go)s
  1879. X2651 X(here)s
  1880. X360 X
  1881. X4253 Y
  1882. X408 X
  1883. Xf.CW 10 Z(-rwxr)s
  1884. X608 X(-xr)s
  1885. X728 X(-x)s
  1886. X848 X(1)s
  1887. X928 X(root)s
  1888. X1128 X(/etc/dist/bin/r)s
  1889. X1728 X(ealdir)s
  1890. X2048 X
  1891. Xf.R 10 Z(#)s
  1892. X2103 X(used)s
  1893. X2247 X(by)s
  1894. X2335 X
  1895. Xf.B 10 Z(saenv)s
  1896. X2494 X(.setup)s
  1897. X360 X
  1898. X4333 Y
  1899. X408 X
  1900. Xf.CW 10 Z(-rwxr)s
  1901. X608 X(-xr)s
  1902. X728 X(-x)s
  1903. X848 X(1)s
  1904. X928 X(root)s
  1905. X1128 X(/etc/dist/bin/u)s
  1906. X1728 X(pd)s
  1907. X1808 X(-dist)s
  1908. X2048 X
  1909. Xf.R 10 Z(#)s
  1910. X2103 X(distribution)s
  1911. X2433 X(tool)s
  1912. X2559 X(run)s
  1913. X2669 X(nightly)s
  1914. X2880 X(by)s
  1915. X2968 X
  1916. Xf.B 10 Z(cron)s
  1917. X360 X
  1918. X4413 Y
  1919. X408 X
  1920. Xf.CW 10 Z(-r)s
  1921. X488 X(-)s
  1922. X528 X(-r)s
  1923. X608 X(-)s
  1924. X648 X(-r)s
  1925. X728 X(-)s
  1926. X768 X(-)s
  1927. X848 X(1)s
  1928. X928 X(root)s
  1929. X1128 X(/etc/dist/saenv)s
  1930. X1728 X(.setup)s
  1931. X2048 X
  1932. Xf.R 10 Z(#)s
  1933. X2103 X(research)s
  1934. X2348 X(tool)s
  1935. X2474 X(which)s
  1936. X2659 X(creates)s
  1937. X2868 X
  1938. Xf.B 10 Z(saenv)s
  1939. X360 X
  1940. X4493 Y
  1941. X408 X
  1942. Xf.CW 10 Z(-r)s
  1943. X488 X(-)s
  1944. X528 X(-r)s
  1945. X608 X(-)s
  1946. X648 X(-r)s
  1947. X728 X(-)s
  1948. X768 X(-)s
  1949. X848 X(1)s
  1950. X928 X(root)s
  1951. X1128 X(/etc/dist/sahea)s
  1952. X1728 X(d)s
  1953. X2048 X
  1954. Xf.R 10 Z(#)s
  1955. X2103 X(sourced)s
  1956. X2332 X(by)s
  1957. X2420 X(every)s
  1958. X2590 X(tool,)s
  1959. X2733 X(sources)s
  1960. X2955 X
  1961. Xf.B 10 Z(saenv)s
  1962. X360 X
  1963. X4573 Y
  1964. X408 X
  1965. Xf.CW 10 Z(-r)s
  1966. X488 X(-)s
  1967. X528 X(-r)s
  1968. X608 X(-)s
  1969. X648 X(-r)s
  1970. X728 X(-)s
  1971. X768 X(-)s
  1972. X848 X(1)s
  1973. X928 X(root)s
  1974. X1128 X(/etc/saenv)s
  1975. X2048 X
  1976. Xf.R 10 Z(#)s
  1977. X2103 X(host)s
  1978. X2214 X(-speci\256c)s
  1979. X2463 X(sysadmin)s
  1980. X2737 X(environment)s
  1981. X360 X
  1982. X4685 Y
  1983. X1171 X(Figure)s
  1984. X1367 X(1:)s
  1985. X1463 X(Setup)s
  1986. X1637 X(of)s
  1987. X1714 X(system)s
  1988. X1922 X(administration)s
  1989. X2331 X(environment)s
  1990. X360 X
  1991. X940 Y
  1992. X863 X
  1993. Xf.B 10 Z(Implementation)s
  1994. X360 X
  1995. X1049 Y
  1996. X504 X
  1997. Xf.R 10 Z(Implementation)s
  1998. X955 X(began)s
  1999. X1141 X(by)s
  2000. X1235 X(creating)s
  2001. X1479 X
  2002. Xf.B 10 Z(saenv)s
  2003. X1638 X(.setup)s
  2004. Xf.R 10 Z(,)s
  2005. X360 X
  2006. X1122 Y(the)s
  2007. X502 X(con\256guration)s
  2008. X917 X(research)s
  2009. X1200 X(tool)s
  2010. X1304 X(.)s
  2011. X1403 X(\(The)s
  2012. X1589 X(accepted)s
  2013. X360 X
  2014. X1195 Y(pronunciation)s
  2015. X782 X(is)s
  2016. X880 X(unfortunately)s
  2017. X1292 X(awkward:)s
  2018. X1608 X("ess)s
  2019. X1717 X(-ay)s
  2020. X1802 X(-)s
  2021. X360 X
  2022. X1268 Y(env)s
  2023. X456 X(-dot)s
  2024. X563 X(-setup")s
  2025. X753 X(.\))s
  2026. X856 X(This)s
  2027. X1017 X(script)s
  2028. X1208 X(investigates)s
  2029. X1567 X(topics)s
  2030. X1769 X(of)s
  2031. X360 X
  2032. X1341 Y(interest)s
  2033. X584 X(to)s
  2034. X662 X(our)s
  2035. X776 X(toolset)s
  2036. X955 X(.)s
  2037. X1020 X(The)s
  2038. X1150 X(report)s
  2039. X1335 X(it)s
  2040. X1400 X(writes)s
  2041. X1591 X(is)s
  2042. X1663 X(called)s
  2043. X360 X
  2044. X1414 Y
  2045. Xf.B 10 Z(saenv)s
  2046. X548 X
  2047. Xf.R 10 Z(\(said)s
  2048. X707 X("ess)s
  2049. X816 X(-ay)s
  2050. X901 X(-env")s
  2051. X1075 X(or)s
  2052. X1158 X("ess)s
  2053. X1267 X(-ay)s
  2054. X1352 X(-ee)s
  2055. X1434 X(-en)s
  2056. X1519 X(-vee"\),)s
  2057. X1728 X(and)s
  2058. X360 X
  2059. X1487 Y(it)s
  2060. X425 X(describes)s
  2061. X701 X(the)s
  2062. X811 X(local)s
  2063. X970 X(system)s
  2064. X1184 X(administration)s
  2065. X1599 X(environ-)s
  2066. X360 X
  2067. X1560 Y(ment)s
  2068. X494 X(.)s
  2069. X557 X(Any)s
  2070. X695 X
  2071. Xf.B 10 Z(sh)s
  2072. X782 X
  2073. Xf.R 10 Z(script)s
  2074. X955 X(can)s
  2075. X1072 X(source)s
  2076. X1269 X(it)s
  2077. X1330 X(directly,)s
  2078. X1575 X(using)s
  2079. X1742 X(the)s
  2080. X360 X
  2081. X1633 Y(Bourne)s
  2082. X577 X(shell)s
  2083. X726 X(")s
  2084. X753 X
  2085. Xf.CW 10 Z(.)s
  2086. Xf.R 10 Z(")s
  2087. X842 X(command)s
  2088. X1105 X(.)s
  2089. X360 X
  2090. X1727 Y
  2091. X504 X(When)s
  2092. X694 X(a)s
  2093. X755 X(new)s
  2094. X897 X(master)s
  2095. X1107 X(version)s
  2096. X1334 X(of)s
  2097. X1420 X
  2098. Xf.B 10 Z(saenv)s
  2099. X1579 X(.setup)s
  2100. X1779 X
  2101. Xf.R 10 Z(is)s
  2102. X360 X
  2103. X1800 Y(created,)s
  2104. X598 X(it)s
  2105. X663 X(is)s
  2106. X735 X(distributed)s
  2107. X1048 X(to)s
  2108. X1127 X(each)s
  2109. X1277 X(host)s
  2110. X1415 X(and)s
  2111. X1537 X(run)s
  2112. X1625 X(.)s
  2113. X1690 X(Each)s
  2114. X360 X
  2115. X1873 Y(host)s
  2116. X498 X(thus)s
  2117. X636 X(has)s
  2118. X752 X(its)s
  2119. X843 X(own)s
  2120. X985 X(version)s
  2121. X1209 X(of)s
  2122. X1292 X
  2123. Xf.B 10 Z(saenv)s
  2124. X1451 X
  2125. Xf.R 10 Z(.)s
  2126. X1518 X(This)s
  2127. X1665 X(\256le)s
  2128. X1779 X(is)s
  2129. X360 X
  2130. X1946 Y(static,)s
  2131. X562 X(until)s
  2132. X727 X(a)s
  2133. X799 X(new)s
  2134. X951 X(version)s
  2135. X1188 X(of)s
  2136. X1284 X
  2137. Xf.B 10 Z(saenv)s
  2138. X1443 X(.setup)s
  2139. X1653 X
  2140. Xf.R 10 Z(comes)s
  2141. X360 X
  2142. X2019 Y(along)s
  2143. X508 X(.)s
  2144. X360 X
  2145. X2113 Y
  2146. X504 X(To)s
  2147. X613 X(make)s
  2148. X793 X(use)s
  2149. X918 X(of)s
  2150. X1009 X
  2151. Xf.B 10 Z(saenv)s
  2152. Xf.R 10 Z(,)s
  2153. X1221 X(we)s
  2154. X1335 X(distribute)s
  2155. X1624 X(another)s
  2156. X360 X
  2157. X2186 Y(\256le,)s
  2158. X496 X
  2159. Xf.B 10 Z(sahead)s
  2160. X724 X
  2161. Xf.R 10 Z(\("ess)s
  2162. X855 X(-ay)s
  2163. X940 X(-head"\))s
  2164. X1137 X(.)s
  2165. X1208 X(This)s
  2166. X1359 X(script)s
  2167. X1540 X(is)s
  2168. X1617 X(sourced)s
  2169. X360 X
  2170. X2259 Y(by)s
  2171. X469 X(every)s
  2172. X660 X(tool;)s
  2173. X826 X(in)s
  2174. X921 X(fact)s
  2175. X1065 X(most)s
  2176. X1238 X(tools)s
  2177. X1411 X(source)s
  2178. X1628 X
  2179. Xf.B 10 Z(sahead)s
  2180. X360 X
  2181. X2332 Y
  2182. Xf.R 10 Z(before)s
  2183. X568 X(doing)s
  2184. X757 X(anything)s
  2185. X1028 X(else)s
  2186. X1133 X(.)s
  2187. X1210 X
  2188. Xf.B 10 Z(sahead)s
  2189. X1444 X
  2190. Xf.R 10 Z(\(and)s
  2191. X1600 X(the)s
  2192. X1720 X(tool)s
  2193. X360 X
  2194. X2405 Y(using)s
  2195. X527 X(it\))s
  2196. X610 X(exits)s
  2197. X760 X(with)s
  2198. X902 X(an)s
  2199. X989 X(appropriate)s
  2200. X1317 X(error)s
  2201. X1470 X(message)s
  2202. X1721 X(if)s
  2203. X1786 X(it)s
  2204. X360 X
  2205. X2478 Y(\256nds)s
  2206. X517 X(any)s
  2207. X641 X(problems)s
  2208. X917 X(with)s
  2209. X1064 X
  2210. Xf.B 10 Z(saenv)s
  2211. Xf.R 10 Z(;)s
  2212. X1270 X(otherwise)s
  2213. X1558 X(it)s
  2214. X1624 X(sources)s
  2215. X360 X
  2216. X2551 Y
  2217. Xf.B 10 Z(saenv)s
  2218. X545 X
  2219. Xf.R 10 Z(in)s
  2220. X624 X(turn)s
  2221. X731 X(.)s
  2222. X797 X
  2223. Xf.B 10 Z(sahead)s
  2224. X1020 X
  2225. Xf.R 10 Z(also)s
  2226. X1155 X(sets)s
  2227. X1283 X(variables)s
  2228. X1552 X(which)s
  2229. X1742 X(are)s
  2230. X360 X
  2231. X2624 Y(constant)s
  2232. X623 X(throughout)s
  2233. X954 X(our)s
  2234. X1082 X(environment)s
  2235. X1419 X(.)s
  2236. X1498 X(\(It)s
  2237. X1600 X(has)s
  2238. X1728 X(one)s
  2239. X360 X
  2240. X2697 Y(last)s
  2241. X478 X(duty,)s
  2242. X637 X(which)s
  2243. X824 X(is)s
  2244. X893 X(to)s
  2245. X969 X(\256gure)s
  2246. X1149 X(out)s
  2247. X1259 X(the)s
  2248. X1366 X(name)s
  2249. X1536 X(of)s
  2250. X1616 X(the)s
  2251. X1723 X(cal-)s
  2252. X360 X
  2253. X2770 Y(ling)s
  2254. X486 X(script)s
  2255. X635 X(.\))s
  2256. X360 X
  2257. X2864 Y
  2258. X504 X(In)s
  2259. X588 X(this)s
  2260. X714 X(way,)s
  2261. X872 X(each)s
  2262. X1025 X(tool)s
  2263. X1159 X(quickly)s
  2264. X1389 X(sets)s
  2265. X1520 X(many)s
  2266. X1698 X(vari-)s
  2267. X360 X
  2268. X2937 Y(ables)s
  2269. X530 X(that)s
  2270. X663 X(it)s
  2271. X733 X(needs)s
  2272. X885 X(.)s
  2273. X955 X(From)s
  2274. X1130 X
  2275. Xf.B 10 Z(sahead)s
  2276. Xf.R 10 Z(,)s
  2277. X1374 X(it)s
  2278. X1443 X(gets)s
  2279. X1582 X(variables)s
  2280. X360 X
  2281. X3010 Y(which)s
  2282. X545 X(are)s
  2283. X649 X(global)s
  2284. X838 X(to)s
  2285. X912 X(our)s
  2286. X1022 X(environment)s
  2287. X1359 X(.)s
  2288. X1420 X(From)s
  2289. X1587 X
  2290. Xf.B 10 Z(saenv)s
  2291. Xf.R 10 Z(,)s
  2292. X1786 X(it)s
  2293. X360 X
  2294. X3083 Y(gets)s
  2295. X495 X(variables)s
  2296. X764 X(which)s
  2297. X953 X(are)s
  2298. X1061 X(local)s
  2299. X1218 X(to)s
  2300. X1296 X(the)s
  2301. X1404 X(host)s
  2302. X1541 X(the)s
  2303. X1649 X(tool)s
  2304. X1779 X(is)s
  2305. X360 X
  2306. X3156 Y(running)s
  2307. X588 X(on)s
  2308. X654 X(.)s
  2309. X360 X
  2310. X3250 Y
  2311. X504 X(Each)s
  2312. X664 X(host)s
  2313. X801 X(administered)s
  2314. X1174 X(by)s
  2315. X1267 X(the)s
  2316. X1376 X(Data)s
  2317. X1530 X(Center)s
  2318. X1735 X(has)s
  2319. X360 X
  2320. X3323 Y(a)s
  2321. X421 X(setup)s
  2322. X593 X(that)s
  2323. X725 X(looks)s
  2324. X900 X(like)s
  2325. X1032 X(Figure)s
  2326. X1237 X(1)s
  2327. X1270 X(.)s
  2328. X1340 X(A)s
  2329. X1419 X(few)s
  2330. X1549 X(comments)s
  2331. X360 X
  2332. X3396 Y(are)s
  2333. X471 X(in)s
  2334. X552 X(order)s
  2335. X692 X(.)s
  2336. X760 X(First,)s
  2337. X929 X
  2338. Xf.B 10 Z(/etc/dist)s
  2339. X1182 X
  2340. Xf.R 10 Z(is)s
  2341. X1256 X(our)s
  2342. X1374 X(target)s
  2343. X1557 X(for)s
  2344. X1664 X(distri-)s
  2345. X360 X
  2346. X3469 Y(buted)s
  2347. X537 X(con\256guration)s
  2348. X921 X(\256les)s
  2349. X1062 X(like)s
  2350. X1192 X
  2351. Xf.B 10 Z(/etc/hosts)s
  2352. X1456 X
  2353. Xf.R 10 Z(.)s
  2354. X1523 X(Distributed)s
  2355. X360 X
  2356. X3542 Y(system)s
  2357. X597 X(administration)s
  2358. X1035 X(tools)s
  2359. X1216 X(live)s
  2360. X1368 X(in)s
  2361. X1471 X
  2362. Xf.B 10 Z(/etc/dist/bin)s
  2363. Xf.R 10 Z(,)s
  2364. X360 X
  2365. X3615 Y(including)s
  2366. X654 X(the)s
  2367. X778 X(distribution)s
  2368. X1128 X(script)s
  2369. X1319 X
  2370. Xf.B 10 Z(upd)s
  2371. X1430 X(-dist)s
  2372. X1597 X
  2373. Xf.R 10 Z(\("update)s
  2374. X360 X
  2375. X3688 Y(distribution"\))s
  2376. X747 X(itself,)s
  2377. X929 X(and)s
  2378. X1056 X
  2379. Xf.B 10 Z(realdir)s
  2380. X1254 X
  2381. Xf.R 10 Z(.)s
  2382. X1324 X(This)s
  2383. X1474 X(last)s
  2384. X1599 X(script)s
  2385. X1779 X(is)s
  2386. X360 X
  2387. X3761 Y(used)s
  2388. X515 X(by)s
  2389. X614 X
  2390. Xf.B 10 Z(saenv)s
  2391. X773 X(.setup)s
  2392. X975 X
  2393. Xf.R 10 Z(to)s
  2394. X1060 X(determine)s
  2395. X1361 X(the)s
  2396. X1475 X(real)s
  2397. X1608 X(location)s
  2398. X360 X
  2399. X3834 Y(for)s
  2400. X464 X(certain)s
  2401. X674 X(\256les)s
  2402. X813 X(\320)s
  2403. X907 X(for)s
  2404. X1011 X(example,)s
  2405. X1282 X(does)s
  2406. X1431 X
  2407. Xf.B 10 Z(aliases)s
  2408. X1644 X
  2409. Xf.R 10 Z(live)s
  2410. X1772 X(in)s
  2411. X360 X
  2412. X3907 Y
  2413. Xf.B 10 Z(/etc)s
  2414. X483 X
  2415. Xf.R 10 Z(or)s
  2416. X560 X
  2417. Xf.B 10 Z(/usr/lib)s
  2418. Xf.R 10 Z(?)s
  2419. X2016 X
  2420. X448 Y
  2421. X2160 X(Although)s
  2422. X2452 X(they)s
  2423. X2608 X(are)s
  2424. X2732 X(shell)s
  2425. X2901 X(scripts,)s
  2426. X3135 X
  2427. Xf.B 10 Z(saenv)s
  2428. X3294 X(.setup)s
  2429. Xf.R 10 Z(,)s
  2430. X2016 X
  2431. X521 Y
  2432. Xf.B 10 Z(sahead)s
  2433. Xf.R 10 Z(,)s
  2434. X2273 X(and)s
  2435. X2413 X
  2436. Xf.B 10 Z(saenv)s
  2437. X2616 X
  2438. Xf.R 10 Z(have)s
  2439. X2786 X(no)s
  2440. X2896 X(execute)s
  2441. X3144 X(permissions)s
  2442. X3463 X(.)s
  2443. X2016 X
  2444. X594 Y(The)s
  2445. X2145 X(last)s
  2446. X2264 X(two)s
  2447. X2389 X(are)s
  2448. X2496 X(intended)s
  2449. X2751 X(only)s
  2450. X2894 X(for)s
  2451. X2996 X(sourcing)s
  2452. X3251 X(by)s
  2453. X3343 X(other)s
  2454. X2016 X
  2455. X667 Y(tools)s
  2456. X2146 X(.)s
  2457. X2219 X(The)s
  2458. X2357 X(preferred)s
  2459. X2635 X(way)s
  2460. X2780 X(to)s
  2461. X2866 X(run)s
  2462. X2988 X
  2463. Xf.B 10 Z(saenv)s
  2464. X3147 X(.setup)s
  2465. X3350 X
  2466. Xf.R 10 Z(is)s
  2467. X3428 X(to)s
  2468. X2016 X
  2469. X740 Y(explicitly)s
  2470. X2295 X(use)s
  2471. X2409 X
  2472. Xf.B 10 Z(sh)s
  2473. Xf.R 10 Z(,)s
  2474. X2514 X(because)s
  2475. X2752 X(we)s
  2476. X2856 X(want)s
  2477. X3012 X(to)s
  2478. X3090 X(make)s
  2479. X3261 X(sure)s
  2480. X3398 X(the)s
  2481. X2016 X
  2482. X813 Y(script)s
  2483. X2206 X(isn't)s
  2484. X2365 X(run)s
  2485. X2493 X(by)s
  2486. X2599 X(some)s
  2487. X2780 X(other)s
  2488. X2957 X(interpreter)s
  2489. X3276 X(\(this)s
  2490. X3435 X(is)s
  2491. X2016 X
  2492. X886 Y(probably)s
  2493. X2274 X(overkill,)s
  2494. X2521 X(but)s
  2495. X2628 X(no)s
  2496. X2716 X(harm)s
  2497. X2875 X(done\))s
  2498. X3026 X(.)s
  2499. X2016 X
  2500. X988 Y
  2501. X2064 X
  2502. Xf.CW 10 Z(sh)s
  2503. X2184 X(/etc/dist/saenv)s
  2504. X2784 X(.setup)s
  2505. X2016 X
  2506. X1111 Y
  2507. Xf.R 10 Z(This)s
  2508. X2163 X(is)s
  2509. X2236 X(how)s
  2510. X2378 X
  2511. Xf.B 10 Z(upd)s
  2512. X2489 X(-dist)s
  2513. X2643 X
  2514. Xf.R 10 Z(does)s
  2515. X2793 X(it)s
  2516. X2859 X(whenever)s
  2517. X3147 X(it)s
  2518. X3214 X(uploads)s
  2519. X3450 X(a)s
  2520. X2016 X
  2521. X1184 Y(new)s
  2522. X2149 X(version)s
  2523. X2367 X(of)s
  2524. X2444 X
  2525. Xf.B 10 Z(saenv)s
  2526. X2603 X(.setup)s
  2527. X2772 X
  2528. Xf.R 10 Z(.)s
  2529. X2016 X
  2530. X1278 Y
  2531. X2160 X(Similarly,)s
  2532. X2458 X(because)s
  2533. X2701 X(they)s
  2534. X2847 X(are)s
  2535. X2960 X(distributed)s
  2536. X3278 X(but)s
  2537. X3395 X(not)s
  2538. X2016 X
  2539. X1351 Y(executable,)s
  2540. X2369 X
  2541. Xf.B 10 Z(saenv)s
  2542. X2528 X(.setup)s
  2543. X2746 X
  2544. Xf.R 10 Z(and)s
  2545. X2891 X
  2546. Xf.B 10 Z(sahead)s
  2547. X3135 X
  2548. Xf.R 10 Z(are)s
  2549. X3265 X(kept)s
  2550. X3428 X(in)s
  2551. X2016 X
  2552. X1424 Y
  2553. Xf.B 10 Z(/etc/dist)s
  2554. X2240 X
  2555. Xf.R 10 Z(.)s
  2556. X2302 X(Since)s
  2557. X2474 X
  2558. Xf.B 10 Z(saenv)s
  2559. X2656 X
  2560. Xf.R 10 Z(is)s
  2561. X2724 X(not)s
  2562. X2832 X(distributed,)s
  2563. X3158 X(we)s
  2564. X3259 X(put)s
  2565. X3367 X(it)s
  2566. X3428 X(in)s
  2567. X2016 X
  2568. X1497 Y
  2569. Xf.B 10 Z(/etc)s
  2570. X2117 X
  2571. Xf.R 10 Z(.)s
  2572. X2016 X
  2573. X1624 Y
  2574. X2609 X
  2575. Xf.B 10 Z(Examples)s
  2576. X2016 X
  2577. X1733 Y
  2578. X2160 X
  2579. Xf.R 10 Z(After)s
  2580. X2343 X(some)s
  2581. X2526 X(initialization,)s
  2582. X2927 X(the)s
  2583. X3052 X(\256rst)s
  2584. X3199 X(thing)s
  2585. X3379 X(that)s
  2586. X2016 X
  2587. X1806 Y
  2588. Xf.B 10 Z(saenv)s
  2589. X2175 X(.setup)s
  2590. X2369 X
  2591. Xf.R 10 Z(does)s
  2592. X2516 X(is)s
  2593. X2586 X(to)s
  2594. X2663 X(determine)s
  2595. X2956 X(a)s
  2596. X3011 X(valid)s
  2597. X3188 X
  2598. Xf.CW 10 Z(PATH)s
  2599. X3372 X
  2600. Xf.R 10 Z(\(see)s
  2601. X2016 X
  2602. X1879 Y(Figure)s
  2603. X2213 X(2\))s
  2604. X2268 X(.)s
  2605. X2330 X(It)s
  2606. X2394 X(tests)s
  2607. X2538 X(a)s
  2608. X2592 X(list)s
  2609. X2699 X(of)s
  2610. X2778 X(desirable)s
  2611. X3044 X(directory)s
  2612. X3309 X(names)s
  2613. X2016 X
  2614. X1952 Y(to)s
  2615. X2095 X(see)s
  2616. X2208 X(if)s
  2617. X2275 X(they)s
  2618. X2416 X(exist,)s
  2619. X2586 X(adding)s
  2620. X2793 X(each)s
  2621. X2942 X(directory)s
  2622. X3209 X(it)s
  2623. X3273 X(\256nds)s
  2624. X3428 X(to)s
  2625. X2016 X
  2626. X2025 Y(a)s
  2627. X2097 X(variable)s
  2628. X2382 X
  2629. Xf.CW 10 Z($path)s
  2630. X2582 X
  2631. Xf.R 10 Z(.)s
  2632. X2672 X(When)s
  2633. X2882 X(the)s
  2634. X3015 X(search)s
  2635. X3237 X(is)s
  2636. X3334 X(done,)s
  2637. X2016 X
  2638. X2098 Y
  2639. Xf.B 10 Z(saenv)s
  2640. X2175 X(.setup)s
  2641. X2366 X
  2642. Xf.R 10 Z(does)s
  2643. X2016 X
  2644. X2200 Y
  2645. X2064 X
  2646. Xf.CW 10 Z(PATH=$path)s
  2647. X2504 X(;)s
  2648. X2584 X(export)s
  2649. X2864 X(PATH)s
  2650. X2016 X
  2651. X2323 Y
  2652. Xf.R 10 Z(for)s
  2653. X2122 X(itself)s
  2654. X2257 X(.)s
  2655. X2325 X(It)s
  2656. X2396 X(also)s
  2657. X2534 X(puts)s
  2658. X2675 X(the)s
  2659. X2787 X(same)s
  2660. X2955 X(code)s
  2661. X3111 X(into)s
  2662. X3245 X(the)s
  2663. X3357 X(tem-)s
  2664. X2016 X
  2665. X2396 Y(porary)s
  2666. X2213 X(version)s
  2667. X2433 X(of)s
  2668. X2511 X
  2669. Xf.B 10 Z(saenv)s
  2670. X2693 X
  2671. Xf.R 10 Z(\(see)s
  2672. X2824 X(Figures)s
  2673. X3047 X(2)s
  2674. X3103 X(and)s
  2675. X3222 X(5\))s
  2676. X3277 X(.)s
  2677. X3339 X(After)s
  2678. X2016 X
  2679. X2469 Y(initial)s
  2680. X2201 X(comments,)s
  2681. X2520 X(setting)s
  2682. X2726 X(the)s
  2683. X2854 X
  2684. Xf.CW 10 Z(PATH)s
  2685. X3042 X
  2686. Xf.R 10 Z(will)s
  2687. X3175 X(be)s
  2688. X3266 X(the)s
  2689. X3376 X(\256rst)s
  2690. X2016 X
  2691. X2542 Y(thing)s
  2692. X2191 X(that)s
  2693. X2329 X
  2694. Xf.B 10 Z(saenv)s
  2695. X2525 X
  2696. Xf.R 10 Z(does)s
  2697. X2684 X(for)s
  2698. X2798 X(any)s
  2699. X2931 X(calling)s
  2700. X3151 X(script)s
  2701. X3300 X(.)s
  2702. X3376 X(The)s
  2703. X2016 X
  2704. X2615 Y
  2705. Xf.B 10 Z(saenv)s
  2706. X2175 X(.setup)s
  2707. X2376 X
  2708. Xf.R 10 Z(script)s
  2709. X2557 X(installs)s
  2710. X2780 X(the)s
  2711. X2894 X(temporary)s
  2712. X3200 X(version)s
  2713. X3428 X(in)s
  2714. X2016 X
  2715. X2688 Y
  2716. Xf.B 10 Z(/etc)s
  2717. X2143 X
  2718. Xf.R 10 Z(if)s
  2719. X2210 X(all)s
  2720. X2303 X(goes)s
  2721. X2450 X(well)s
  2722. X2566 X(.)s
  2723. X2630 X(Note)s
  2724. X2785 X(that)s
  2725. X2911 X
  2726. Xf.B 10 Z(saenv)s
  2727. X3095 X
  2728. Xf.R 10 Z(contains)s
  2729. X3343 X(com-)s
  2730. X2016 X
  2731. X2761 Y(ments)s
  2732. X2198 X(about)s
  2733. X2368 X(the)s
  2734. X2472 X(purpose)s
  2735. X2704 X(of)s
  2736. X2781 X(each)s
  2737. X2926 X(variable)s
  2738. X3142 X(.)s
  2739. X2016 X
  2740. X2855 Y
  2741. X2160 X(The)s
  2742. X2307 X(list)s
  2743. X2433 X(of)s
  2744. X2531 X(desirable)s
  2745. X2816 X(directories)s
  2746. X3142 X(is)s
  2747. X3231 X(compiled)s
  2748. X2016 X
  2749. X2928 Y(based)s
  2750. X2193 X(on)s
  2751. X2284 X(our)s
  2752. X2397 X(experience)s
  2753. X2711 X(with)s
  2754. X2854 X(different)s
  2755. X3104 X
  2756. Xf.R 8 Z(UNIX)s
  2757. Xf.R 10 Z(s)s
  2758. X3262 X(.)s
  2759. X3325 X(Many)s
  2760. X2016 X
  2761. X3001 Y(of)s
  2762. X2102 X(them)s
  2763. X2267 X(are)s
  2764. X2380 X(common)s
  2765. X2644 X(to)s
  2766. X2727 X(System)s
  2767. X2955 X(V,)s
  2768. X3051 X(BSD,)s
  2769. X3229 X(and)s
  2770. X3357 X(their)s
  2771. X2016 X
  2772. X3074 Y(derivitives)s
  2773. X2299 X(.)s
  2774. X2360 X(Others)s
  2775. X2560 X(are)s
  2776. X2664 X(vendor)s
  2777. X2870 X(speci\256c)s
  2778. X3075 X(.)s
  2779. X2016 X
  2780. X3168 Y
  2781. X2160 X(The)s
  2782. X2294 X
  2783. Xf.B 10 Z(cron)s
  2784. X2455 X
  2785. Xf.R 10 Z(setup)s
  2786. X2627 X(is)s
  2787. X2703 X(a)s
  2788. X2764 X(good)s
  2789. X2927 X(place)s
  2790. X3100 X(to)s
  2791. X3183 X(illustrate)s
  2792. X3450 X(a)s
  2793. X2016 X
  2794. X3241 Y(dynamic)s
  2795. X2279 X(testing)s
  2796. X2490 X(approach)s
  2797. X2734 X(.)s
  2798. X2805 X(We)s
  2799. X2930 X(can)s
  2800. X3055 X(show)s
  2801. X3227 X(examples)s
  2802. X2016 X
  2803. X3314 Y(of)s
  2804. X2093 X(several)s
  2805. X2305 X(of)s
  2806. X2382 X(the)s
  2807. X2486 X(items)s
  2808. X2654 X(listed)s
  2809. X2822 X(in)s
  2810. X2896 X(the)s
  2811. X3000 X(introduction:)s
  2812. X2016 X
  2813. X3387 Y
  2814. X2079 X
  2815. Xf.Y 10 Z(\017)s
  2816. X2150 X
  2817. Xf.R 10 Z(Procedures)s
  2818. X2468 X(for)s
  2819. X2567 X(changing)s
  2820. X2833 X(con\256guration)s
  2821. X3210 X(\256les)s
  2822. X3344 X(\(do)s
  2823. X2016 X
  2824. X3460 Y
  2825. X2150 X(we)s
  2826. X2274 X(have)s
  2827. X2446 X(to)s
  2828. X2544 X(run)s
  2829. X2678 X(the)s
  2830. X2805 X
  2831. Xf.B 10 Z(crontab)s
  2832. X3072 X
  2833. Xf.R 10 Z(command)s
  2834. X3380 X(to)s
  2835. X2016 X
  2836. X3533 Y
  2837. X2150 X(install)s
  2838. X2337 X(a)s
  2839. X2389 X(new)s
  2840. X2522 X
  2841. Xf.B 10 Z(crontab)s
  2842. X2766 X
  2843. Xf.R 10 Z(\256le\))s
  2844. X2016 X
  2845. X3606 Y
  2846. X2079 X
  2847. Xf.Y 10 Z(\017)s
  2848. X2150 X
  2849. Xf.R 10 Z(Con\256guration)s
  2850. X2583 X(\256le)s
  2851. X2733 X(location/name)s
  2852. X3177 X(\(the)s
  2853. X3346 X(\256le)s
  2854. X2016 X
  2855. X3679 Y
  2856. X2150 X
  2857. Xf.B 10 Z(/usr/lib/cront)s
  2858. X2527 X(ab)s
  2859. X2654 X
  2860. Xf.R 10 Z(vs)s
  2861. X2713 X(.)s
  2862. X2809 X(an)s
  2863. X2928 X(alternate)s
  2864. X3216 X(location)s
  2865. X2016 X
  2866. X3752 Y
  2867. X2150 X
  2868. Xf.B 10 Z(/usr/spool/cro)s
  2869. X2541 X(n/crontabs/root)s
  2870. X2982 X
  2871. Xf.R 10 Z(\))s
  2872. X2016 X
  2873. X3825 Y
  2874. X2079 X
  2875. Xf.Y 10 Z(\017)s
  2876. X2150 X
  2877. Xf.R 10 Z(Con\256guration)s
  2878. X2547 X(\256le)s
  2879. X2661 X(format)s
  2880. X2867 X(\(4)s
  2881. X2922 X(.3BSD)s
  2882. X3129 X(and)s
  2883. X3254 X(derivi-)s
  2884. X2016 X
  2885. X3898 Y
  2886. X2150 X(tives)s
  2887. X2299 X(vs)s
  2888. X2358 X(.)s
  2889. X2397 X(everybody)s
  2890. X2699 X(else\))s
  2891. X360 X
  2892. X4967 Y
  2893. Xf.B 10 Z(12)s
  2894. X2096 X(LISA)s
  2895. X2273 X(V)s
  2896. X2343 X(\261)s
  2897. X2398 X(Sep)s
  2898. X2502 X(.)s
  2899. X2541 X(30)s
  2900. X2607 X(-Oct)s
  2901. X2733 X(.)s
  2902. X2772 X(3,)s
  2903. X2844 X(1991)s
  2904. X2998 X(\261)s
  2905. X3053 X(San)s
  2906. X3182 X(Diego,)s
  2907. X3384 X(CA)s
  2908. X5280 Y
  2909. Xpagebot
  2910. X
  2911. X%%Page: 13 3
  2912. Xpagetop
  2913. Xstdencoding /NTimes-Bold /Times-Bold RE
  2914. X/f.B /NTimes-Bold findfont def 
  2915. Xf.B 10 Z
  2916. X600 X
  2917. X493 Y
  2918. Xstdencoding /NTimes-Roman /Times-Roman RE
  2919. X/f.R /NTimes-Roman findfont def 
  2920. Xf.R 10 Z
  2921. X3120 0 l
  2922. X600 X
  2923. X661 Y
  2924. X648 X
  2925. Xstdencoding /NCourier /Courier RE
  2926. X/f.CW /NCourier findfont def 
  2927. Xf.CW 10 Z(##)s
  2928. X768 X(This)s
  2929. X968 X(is)s
  2930. X1088 X(saenv)s
  2931. X1288 X(.setup)s
  2932. X1568 X(which)s
  2933. X1808 X(should)s
  2934. X2088 X(be)s
  2935. X2208 X(444)s
  2936. X2368 X(root)s
  2937. X2528 X(.)s
  2938. X2648 X([rest)s
  2939. X2888 X(of)s
  2940. X3008 X(header)s
  2941. X3288 X(deleted])s
  2942. X600 X
  2943. X821 Y
  2944. X648 X(##)s
  2945. X768 X(set)s
  2946. X928 X(PATH)s
  2947. X1128 X(environment)s
  2948. X1608 X(variable)s
  2949. X1928 X(.)s
  2950. X600 X
  2951. X901 Y
  2952. X648 X(#)s
  2953. X728 X(1\))s
  2954. X848 X(We)s
  2955. X968 X(always)s
  2956. X1248 X(want)s
  2957. X1448 X(the)s
  2958. X1608 X(stuff)s
  2959. X1848 X(in)s
  2960. X1968 X($local,)s
  2961. X2288 X(need)s
  2962. X2488 X(to)s
  2963. X2608 X(test)s
  2964. X2808 X(the)s
  2965. X2968 X(rest)s
  2966. X3128 X(.)s
  2967. X600 X
  2968. X981 Y
  2969. X648 X(#)s
  2970. X728 X(2\))s
  2971. X848 X(Want)s
  2972. X1048 X(BSD)s
  2973. X1208 X(dirs)s
  2974. X1408 X(before)s
  2975. X1688 X(SysV)s
  2976. X1888 X(dirs,)s
  2977. X2128 X(so)s
  2978. X2248 X(/usr/ucb)s
  2979. X2608 X(before)s
  2980. X2888 X({/usr,}/bin)s
  2981. X3328 X(.)s
  2982. X600 X
  2983. X1061 Y
  2984. X648 X(#)s
  2985. X728 X(3\))s
  2986. X848 X(Put)s
  2987. X1008 X(OS)s
  2988. X1128 X(bin)s
  2989. X1288 X(directories,)s
  2990. X1808 X(then)s
  2991. X2008 X(vendor)s
  2992. X2288 X(stuff,)s
  2993. X2568 X(and)s
  2994. X2728 X(local)s
  2995. X2968 X(stuff)s
  2996. X3208 X(last)s
  2997. X3368 X(.)s
  2998. X600 X
  2999. X1141 Y
  3000. X648 X(guesscommon="/u)s
  3001. X1248 X(sr/ucb)s
  3002. X1528 X(/usr/bin)s
  3003. X1888 X(/bin)s
  3004. X2088 X(/etc)s
  3005. X2288 X(/usr/etc")s
  3006. X600 X
  3007. X1221 Y
  3008. X648 X(guessvendor="/u)s
  3009. X1248 X(sr/sbin)s
  3010. X1568 X(/usr/amdahl/bin)s
  3011. X2208 X(/usr/lbin)s
  3012. X2608 X(/sbin")s
  3013. X600 X
  3014. X1301 Y
  3015. X648 X(for)s
  3016. X808 X(dir)s
  3017. X968 X(in)s
  3018. X1088 X($guesscommon)s
  3019. X1608 X($guessvendor)s
  3020. X2128 X(;)s
  3021. X2208 X(do)s
  3022. X600 X
  3023. X1381 Y
  3024. X968 X(if)s
  3025. X1088 X(test)s
  3026. X1288 X(-d)s
  3027. X1408 X($dir)s
  3028. X1608 X(;)s
  3029. X1688 X(then)s
  3030. X600 X
  3031. X1461 Y
  3032. X1288 X(path=$path:$di)s
  3033. X1848 X(r)s
  3034. X600 X
  3035. X1541 Y
  3036. X968 X(fi)s
  3037. X600 X
  3038. X1621 Y
  3039. X648 X(done)s
  3040. X600 X
  3041. X1701 Y
  3042. X648 X(path=`echo)s
  3043. X1088 X($path)s
  3044. X1328 X(|)s
  3045. X1408 X(sed)s
  3046. X1568 X(-e)s
  3047. X1688 X('s/^://'`)s
  3048. X2248 X(#)s
  3049. X2328 X(strip)s
  3050. X2568 X(leading)s
  3051. X2888 X(colon)s
  3052. X600 X
  3053. X1781 Y
  3054. X648 X(path="$path:$DT)s
  3055. X1248 X(GTBIN:/usr/loca)s
  3056. X1848 X(l/bin")s
  3057. X2248 X(#)s
  3058. X2328 X(add)s
  3059. X2488 X(local)s
  3060. X2728 X(directories)s
  3061. X600 X
  3062. X1861 Y
  3063. X648 X(PATH="$path")s
  3064. X1168 X(;)s
  3065. X1248 X(export)s
  3066. X1528 X(PATH)s
  3067. X2248 X(#)s
  3068. X2328 X(PATH)s
  3069. X2528 X(now)s
  3070. X2688 X(set)s
  3071. X2848 X(for)s
  3072. X3008 X(saenv)s
  3073. X3208 X(.setup)s
  3074. X600 X
  3075. X1981 Y
  3076. X648 X(##)s
  3077. X768 X(initial)s
  3078. X1088 X(setup)s
  3079. X1328 X(of)s
  3080. X1448 X(temporary)s
  3081. X1848 X(saenv)s
  3082. X600 X
  3083. X2061 Y
  3084. X648 X(tsaenv=/tmp/sae)s
  3085. X1248 X(nvt$$)s
  3086. X1608 X(#)s
  3087. X1688 X(temporary)s
  3088. X2088 X(sysadmin)s
  3089. X2448 X(environment)s
  3090. X2928 X(file)s
  3091. X600 X
  3092. X2141 Y
  3093. X648 X(echo)s
  3094. X848 X("$HEADER")s
  3095. X1248 X(>)s
  3096. X1328 X($tsaenv)s
  3097. X1928 X(#)s
  3098. X2008 X(create)s
  3099. X2288 X($tsaenv)s
  3100. X600 X
  3101. X2221 Y
  3102. X648 X(echo)s
  3103. X848 X("PATH=$PATH)s
  3104. X1608 X(#)s
  3105. X1688 X(exportable)s
  3106. X2128 X(PATH")s
  3107. X2368 X(>>)s
  3108. X2488 X($tsaenv)s
  3109. X600 X
  3110. X2301 Y
  3111. X648 X(echo)s
  3112. X848 X("export)s
  3113. X1168 X(PATH")s
  3114. X1408 X(>>)s
  3115. X1528 X($tsaenv)s
  3116. X600 X
  3117. X2413 Y
  3118. X1453 X
  3119. Xf.R 10 Z(Figure)s
  3120. X1649 X(2:)s
  3121. X1745 X(Sample)s
  3122. X1968 X(code)s
  3123. X2116 X(from)s
  3124. X2267 X
  3125. Xf.B 10 Z(saenv)s
  3126. X2426 X(.setup)s
  3127. X2617 X
  3128. Xf.R 10 Z(\320)s
  3129. X2706 X
  3130. Xf.CW 10 Z(PATH)s
  3131. X600 X
  3132. X2461 Y
  3133. Xf.R 10 Z
  3134. X3120 0 l
  3135. X600 X
  3136. X2573 Y
  3137. X648 X
  3138. Xf.CW 10 Z(##)s
  3139. X768 X(CRONCMD_B)s
  3140. X1168 X(-)s
  3141. X1248 X(do)s
  3142. X1368 X(we)s
  3143. X1488 X(use)s
  3144. X1648 X(the)s
  3145. X1808 X(crontab)s
  3146. X2128 X(command?)s
  3147. X600 X
  3148. X2733 Y
  3149. X648 X(bool=false)s
  3150. X600 X
  3151. X2813 Y
  3152. X648 X(if)s
  3153. X768 X(\()s
  3154. X848 X(crontab)s
  3155. X1168 X(-l)s
  3156. X1288 X(\))s
  3157. X1368 X(>)s
  3158. X1448 X(/dev/null)s
  3159. X1848 X(2>&1)s
  3160. X2048 X(;)s
  3161. X2128 X(then)s
  3162. X600 X
  3163. X2893 Y
  3164. X968 X(bool=true)s
  3165. X600 X
  3166. X2973 Y
  3167. X648 X(fi)s
  3168. X600 X
  3169. X3053 Y
  3170. X648 X(echo)s
  3171. X848 X("CRONCMD_B=$boo)s
  3172. X1448 X(l)s
  3173. X1608 X(#)s
  3174. X1688 X(do)s
  3175. X1808 X(we)s
  3176. X1928 X(use)s
  3177. X2088 X(the)s
  3178. X2248 X(crontab)s
  3179. X2568 X(command?")s
  3180. X2968 X(>>)s
  3181. X3088 X($tsaenv)s
  3182. X600 X
  3183. X3173 Y
  3184. X648 X(##)s
  3185. X768 X(CRON_P)s
  3186. X1048 X(-)s
  3187. X1128 X(Where)s
  3188. X1368 X(does)s
  3189. X1568 X(the)s
  3190. X1728 X(\(root\))s
  3191. X2008 X(crontab)s
  3192. X2328 X(file)s
  3193. X2528 X(really)s
  3194. X2808 X(live)s
  3195. X600 X
  3196. X3253 Y
  3197. X648 X(x=`/etc/dist/bi)s
  3198. X1248 X(n/realdir)s
  3199. X1648 X(crontab)s
  3200. X1968 X(/usr/etc)s
  3201. X2328 X(/etc)s
  3202. X2528 X(/usr/lib)s
  3203. X2888 X(/private)s
  3204. X3208 X(.MC68020/usr/li)s
  3205. X3808 X(b`)s
  3206. X600 X
  3207. X3333 Y
  3208. X648 X(if)s
  3209. X768 X(test)s
  3210. X968 X(-z)s
  3211. X1088 X("$x")s
  3212. X1288 X(;)s
  3213. X1368 X(then)s
  3214. X600 X
  3215. X3413 Y
  3216. X968 X(if)s
  3217. X1088 X([)s
  3218. X1168 X(-d)s
  3219. X1288 X(/usr/spool/cron)s
  3220. X1888 X(/crontabs)s
  3221. X2288 X(])s
  3222. X2368 X(;)s
  3223. X2448 X(then)s
  3224. X600 X
  3225. X3493 Y
  3226. X1288 X(cpath=/usr/spo)s
  3227. X1848 X(ol/cron/crontab)s
  3228. X2448 X(s/root)s
  3229. X600 X
  3230. X3573 Y
  3231. X968 X(fi)s
  3232. X600 X
  3233. X3653 Y
  3234. X648 X(else)s
  3235. X600 X
  3236. X3733 Y
  3237. X968 X(cpath=$x/cront)s
  3238. X1528 X(ab)s
  3239. X600 X
  3240. X3813 Y
  3241. X648 X(fi)s
  3242. X600 X
  3243. X3893 Y
  3244. X648 X(echo)s
  3245. X848 X("CRON_P=$cpath)s
  3246. X1608 X(#)s
  3247. X1688 X(path)s
  3248. X1888 X(to)s
  3249. X2008 X(real)s
  3250. X2208 X(crontab)s
  3251. X2528 X(file")s
  3252. X2768 X(>>)s
  3253. X2888 X($tsaenv)s
  3254. X600 X
  3255. X4013 Y
  3256. X648 X(##)s
  3257. X768 X(CRON43_B)s
  3258. X1128 X(-)s
  3259. X1208 X(Are)s
  3260. X1368 X(we)s
  3261. X1488 X(a)s
  3262. X1568 X(4)s
  3263. X1608 X(.3)s
  3264. X1728 X(crontab)s
  3265. X2048 X(host?)s
  3266. X600 X
  3267. X4093 Y
  3268. X648 X(#)s
  3269. X728 X(count)s
  3270. X968 X(lines)s
  3271. X1208 X(which)s
  3272. X1448 X(aren't)s
  3273. X1728 X(comments)s
  3274. X2088 X(and)s
  3275. X2248 X(have)s
  3276. X2448 X("root")s
  3277. X2728 X(as)s
  3278. X2848 X(the)s
  3279. X3008 X(sixth)s
  3280. X3248 X(field)s
  3281. X600 X
  3282. X4173 Y
  3283. X648 X(x=`awk)s
  3284. X928 X('$1)s
  3285. X1088 X(!~)s
  3286. X1208 X(/^#/)s
  3287. X1408 X(&&)s
  3288. X1528 X($6)s
  3289. X1648 X(==)s
  3290. X1768 X("root")s
  3291. X2048 X({print}')s
  3292. X2408 X($CRON_P)s
  3293. X2728 X(|)s
  3294. X2808 X(wc)s
  3295. X2928 X(-l`)s
  3296. X600 X
  3297. X4253 Y
  3298. X648 X(bool=false)s
  3299. X600 X
  3300. X4333 Y
  3301. X648 X(if)s
  3302. X768 X(test)s
  3303. X968 X($x)s
  3304. X1088 X(-gt)s
  3305. X1248 X(0)s
  3306. X1328 X(;)s
  3307. X1408 X(then)s
  3308. X600 X
  3309. X4413 Y
  3310. X968 X(bool=true)s
  3311. X600 X
  3312. X4493 Y
  3313. X648 X(fi)s
  3314. X600 X
  3315. X4573 Y
  3316. X648 X(echo)s
  3317. X848 X("CRON43_B=$bool)s
  3318. X1608 X(#)s
  3319. X1688 X(is)s
  3320. X1808 X(the)s
  3321. X1968 X(crontab)s
  3322. X2288 X(file)s
  3323. X2488 X(in)s
  3324. X2608 X(4)s
  3325. X2648 X(.3BSD)s
  3326. X2888 X(format?")s
  3327. X3248 X(>>)s
  3328. X3368 X($tsaenv)s
  3329. X600 X
  3330. X4685 Y
  3331. X1336 X
  3332. Xf.R 10 Z(Figure)s
  3333. X1532 X(3:)s
  3334. X1628 X(Sample)s
  3335. X1851 X(code)s
  3336. X1999 X(from)s
  3337. X2150 X
  3338. Xf.B 10 Z(saenv)s
  3339. X2309 X(.setup)s
  3340. X2500 X
  3341. Xf.R 10 Z(\320)s
  3342. X2589 X
  3343. Xf.B 10 Z(cron)s
  3344. X2741 X
  3345. Xf.R 10 Z(variables)s
  3346. X600 X
  3347. X4967 Y
  3348. Xf.B 10 Z(LISA)s
  3349. X777 X(V)s
  3350. X847 X(\261)s
  3351. X902 X(Sep)s
  3352. X1006 X(.)s
  3353. X1045 X(30)s
  3354. X1111 X(-Oct)s
  3355. X1237 X(.)s
  3356. X1276 X(3,)s
  3357. X1348 X(1991)s
  3358. X1502 X(\261)s
  3359. X1557 X(San)s
  3360. X1686 X(Diego,)s
  3361. X1888 X(CA)s
  3362. X3654 X(13)s
  3363. X5280 Y
  3364. Xpagebot
  3365. X
  3366. X%%Page: 14 4
  3367. Xpagetop
  3368. Xstdencoding /NTimes-Bold /Times-Bold RE
  3369. X/f.B /NTimes-Bold findfont def 
  3370. Xf.B 10 Z
  3371. X360 X
  3372. X448 Y
  3373. X504 X
  3374. Xstdencoding /NTimes-Roman /Times-Roman RE
  3375. X/f.R /NTimes-Roman findfont def 
  3376. Xf.R 10 Z(The)s
  3377. X640 X(code)s
  3378. X798 X(to)s
  3379. X882 X(research)s
  3380. X1138 X(these)s
  3381. X1309 X(items)s
  3382. X1488 X(is)s
  3383. X1566 X(shown)s
  3384. X1772 X(in)s
  3385. X360 X
  3386. X521 Y(Figure)s
  3387. X568 X(3,)s
  3388. X652 X(and)s
  3389. X782 X(the)s
  3390. X898 X(results)s
  3391. X1107 X(can)s
  3392. X1234 X(be)s
  3393. X1330 X(seen)s
  3394. X1482 X(in)s
  3395. X1567 X(Figure)s
  3396. X1774 X(5)s
  3397. X1807 X(.)s
  3398. X360 X
  3399. X594 Y(Since)s
  3400. X548 X
  3401. Xf.B 10 Z(saenv)s
  3402. X707 X(.setup)s
  3403. X915 X
  3404. Xf.R 10 Z(has)s
  3405. X1043 X(already)s
  3406. X1279 X(determined)s
  3407. X1620 X(a)s
  3408. X1690 X(valid)s
  3409. X360 X
  3410. X667 Y
  3411. Xstdencoding /NCourier /Courier RE
  3412. X/f.CW /NCourier findfont def 
  3413. Xf.CW 10 Z(PATH)s
  3414. Xf.R 10 Z(,)s
  3415. X565 X(the)s
  3416. X675 X(simplest)s
  3417. X927 X(way)s
  3418. X1066 X(to)s
  3419. X1146 X(see)s
  3420. X1260 X(if)s
  3421. X1329 X(the)s
  3422. X1438 X
  3423. Xf.B 10 Z(crontab)s
  3424. X1687 X
  3425. Xf.R 10 Z(com-)s
  3426. X360 X
  3427. X740 Y(mand)s
  3428. X530 X(is)s
  3429. X597 X(on)s
  3430. X686 X(this)s
  3431. X806 X(system)s
  3432. X1015 X(is)s
  3433. X1083 X(to)s
  3434. X1158 X(run)s
  3435. X1269 X(a)s
  3436. X1322 X(benign)s
  3437. X1544 X
  3438. Xf.CW 10 Z(crontab)s
  3439. X360 X
  3440. X813 Y
  3441. X360 X(-l)s
  3442. X466 X
  3443. Xf.R 10 Z(command)s
  3444. X729 X(.)s
  3445. X794 X(This)s
  3446. X939 X(is)s
  3447. X1010 X(done)s
  3448. X1165 X(in)s
  3449. X1243 X(a)s
  3450. X1299 X(subshell)s
  3451. X1544 X(so)s
  3452. X1628 X(we)s
  3453. X1731 X(can)s
  3454. X360 X
  3455. X886 Y(throw)s
  3456. X556 X(away)s
  3457. X738 X(any)s
  3458. X893 X
  3459. Xf.CW 10 Z(crontab:)s
  3460. X1273 X(not)s
  3461. X1453 X(found)s
  3462. X1695 X
  3463. Xf.R 10 Z(error)s
  3464. X360 X
  3465. X959 Y(messages)s
  3466. X651 X(from)s
  3467. X818 X
  3468. Xf.B 10 Z(sh)s
  3469. X919 X
  3470. Xf.R 10 Z(\(if)s
  3471. X1020 X(it)s
  3472. X1096 X(is)s
  3473. X1179 X(not)s
  3474. X1302 X(on)s
  3475. X1405 X(the)s
  3476. X1524 X(system\))s
  3477. X1769 X(or)s
  3478. X360 X
  3479. X1032 Y
  3480. Xf.B 10 Z(crontab)s
  3481. X623 X
  3482. Xf.R 10 Z(output)s
  3483. X834 X(\(if)s
  3484. X938 X(it)s
  3485. X1017 X(is\))s
  3486. X1084 X(.)s
  3487. X1164 X(The)s
  3488. X1309 X(exit)s
  3489. X1451 X(status)s
  3490. X1645 X(of)s
  3491. X1742 X(the)s
  3492. X360 X
  3493. X1105 Y
  3494. Xf.B 10 Z(crontab)s
  3495. X605 X
  3496. Xf.R 10 Z(subshell)s
  3497. X847 X(tells)s
  3498. X983 X(us)s
  3499. X1065 X(what)s
  3500. X1218 X(we)s
  3501. X1319 X(need)s
  3502. X1468 X(to)s
  3503. X1542 X(know,)s
  3504. X1728 X(and)s
  3505. X360 X
  3506. X1178 Y(we)s
  3507. X460 X(set)s
  3508. X575 X
  3509. Xf.CW 10 Z(CRONCMD_B)s
  3510. X957 X
  3511. Xf.R 10 Z(accordingly)s
  3512. X1272 X(.)s
  3513. X360 X
  3514. X2373 Y
  3515. X3120 0 l
  3516. X360 X
  3517. X2461 Y
  3518. X408 X
  3519. Xf.CW 10 Z(##)s
  3520. X528 X(DUMP_P)s
  3521. X808 X(-)s
  3522. X888 X(Find)s
  3523. X1088 X(path)s
  3524. X1288 X(to)s
  3525. X1408 X(BSD)s
  3526. X1568 X(dump)s
  3527. X1768 X(backup)s
  3528. X2048 X(program)s
  3529. X2368 X(-)s
  3530. X2448 X(avoid)s
  3531. X2688 X(SysV)s
  3532. X2888 X(dump)s
  3533. X360 X
  3534. X2541 Y
  3535. X408 X(.)s
  3536. X448 X(.)s
  3537. X488 X(.)s
  3538. X528 X(.)s
  3539. X568 X(.)s
  3540. X360 X
  3541. X2621 Y
  3542. X408 X(for)s
  3543. X568 X(guess)s
  3544. X808 X(in)s
  3545. X928 X(/usr/etc/dump)s
  3546. X1488 X(/bin/dump)s
  3547. X1888 X(/etc/dump)s
  3548. X2288 X(/etc/bsddump)s
  3549. X2808 X(\\)s
  3550. X360 X
  3551. X2701 Y
  3552. X408 X(/etc/fdump)s
  3553. X848 X(/etc/dumpfs)s
  3554. X1328 X(/etc/fsdump)s
  3555. X1808 X(;)s
  3556. X1888 X(do)s
  3557. X360 X
  3558. X2781 Y
  3559. X728 X(if)s
  3560. X848 X(ls)s
  3561. X968 X(-dF)s
  3562. X1128 X($guess)s
  3563. X1408 X(2>&1)s
  3564. X1608 X(|)s
  3565. X1688 X(grep)s
  3566. X1888 X('\\*)s
  3567. X2048 X(*$')s
  3568. X2208 X(>)s
  3569. X2288 X(/dev/null)s
  3570. X2688 X(;)s
  3571. X2768 X(then)s
  3572. X360 X
  3573. X2861 Y
  3574. X1048 X(if)s
  3575. X1168 X(test)s
  3576. X1368 X(-n)s
  3577. X1488 X("`$guess)s
  3578. X1848 X(W)s
  3579. X1928 X(2>)s
  3580. X2048 X(/dev/null`")s
  3581. X2528 X(;)s
  3582. X2608 X(then)s
  3583. X360 X
  3584. X2941 Y
  3585. X1368 X(dump=$guess)s
  3586. X2008 X(#)s
  3587. X2088 X(found)s
  3588. X2328 X(it)s
  3589. X360 X
  3590. X3021 Y
  3591. X408 X(.)s
  3592. X448 X(.)s
  3593. X488 X(.)s
  3594. X528 X(.)s
  3595. X568 X(.)s
  3596. X360 X
  3597. X3101 Y
  3598. X408 X(echo)s
  3599. X608 X("DUMP_P=$dump)s
  3600. X1368 X(#)s
  3601. X1448 X(BSD)s
  3602. X1608 X(dump)s
  3603. X1808 X(path:)s
  3604. X2048 X(many)s
  3605. X2248 X(variations")s
  3606. X2728 X(>>)s
  3607. X2848 X($tsaenv)s
  3608. X360 X
  3609. X3213 Y
  3610. X1134 X
  3611. Xf.R 10 Z(Figure)s
  3612. X1330 X(4:)s
  3613. X1426 X(Sample)s
  3614. X1649 X(code)s
  3615. X1797 X(from)s
  3616. X1948 X
  3617. Xf.B 10 Z(saenv)s
  3618. X2107 X(.setup)s
  3619. X2298 X
  3620. Xf.R 10 Z(\320)s
  3621. X2387 X(BSD)s
  3622. X2538 X
  3623. Xf.B 10 Z(dump)s
  3624. X360 X
  3625. X3261 Y
  3626. Xf.R 10 Z
  3627. X3120 0 l
  3628. X360 X
  3629. X3373 Y
  3630. X408 X
  3631. Xf.CW 10 Z(:)s
  3632. X360 X
  3633. X3453 Y
  3634. X408 X(#)s
  3635. X488 X(This)s
  3636. X688 X(is)s
  3637. X808 X(/etc/saenv)s
  3638. X1248 X(which)s
  3639. X1488 X(should)s
  3640. X1768 X(be)s
  3641. X1888 X(444)s
  3642. X2048 X(root)s
  3643. X2208 X(.)s
  3644. X2328 X([)s
  3645. X2408 X(rest)s
  3646. X2608 X(of)s
  3647. X2728 X(header)s
  3648. X3008 X(deleted)s
  3649. X3328 X(])s
  3650. X360 X
  3651. X3533 Y
  3652. X408 X(PATH=/usr/ucb:/)s
  3653. X1008 X(usr/bin:/bin:/e)s
  3654. X1608 X(tc:/usr/etc)s
  3655. X2328 X(#)s
  3656. X2408 X(exportable)s
  3657. X2848 X(PATH)s
  3658. X360 X
  3659. X3613 Y
  3660. X408 X(export)s
  3661. X688 X(PATH)s
  3662. X360 X
  3663. X3693 Y
  3664. X408 X(.)s
  3665. X448 X(.)s
  3666. X488 X(.)s
  3667. X528 X(.)s
  3668. X568 X(.)s
  3669. X360 X
  3670. X3773 Y
  3671. X408 X(CRONCMD_B=false)s
  3672. X1368 X(#)s
  3673. X1448 X(do)s
  3674. X1568 X(we)s
  3675. X1688 X(use)s
  3676. X1848 X(the)s
  3677. X2008 X(crontab)s
  3678. X2328 X(command?)s
  3679. X360 X
  3680. X3853 Y
  3681. X408 X(CRON_P=/etc/cro)s
  3682. X1008 X(ntab)s
  3683. X1368 X(#)s
  3684. X1448 X(path)s
  3685. X1648 X(to)s
  3686. X1768 X(real)s
  3687. X1968 X(crontab)s
  3688. X2288 X(file)s
  3689. X360 X
  3690. X3933 Y
  3691. X408 X(CRON43_B=false)s
  3692. X1368 X(#)s
  3693. X1448 X(is)s
  3694. X1568 X(the)s
  3695. X1728 X(crontab)s
  3696. X2048 X(file)s
  3697. X2248 X(in)s
  3698. X2368 X(4)s
  3699. X2408 X(.3BSD)s
  3700. X2648 X(format?)s
  3701. X360 X
  3702. X4013 Y
  3703. X408 X(.)s
  3704. X448 X(.)s
  3705. X488 X(.)s
  3706. X528 X(.)s
  3707. X568 X(.)s
  3708. X360 X
  3709. X4093 Y
  3710. X408 X(DUMP_P=/bin/dum)s
  3711. X1008 X(p)s
  3712. X1368 X(#)s
  3713. X1448 X(BSD)s
  3714. X1608 X(dump)s
  3715. X1808 X(path:)s
  3716. X2048 X(many)s
  3717. X2248 X(variations)s
  3718. X360 X
  3719. X4173 Y
  3720. X408 X(.)s
  3721. X448 X(.)s
  3722. X488 X(.)s
  3723. X528 X(.)s
  3724. X568 X(.)s
  3725. X360 X
  3726. X4253 Y
  3727. X408 X(HOST=howdy)s
  3728. X1368 X(#)s
  3729. X1448 X(the)s
  3730. X1608 X(name)s
  3731. X1808 X(of)s
  3732. X1928 X(this)s
  3733. X2128 X(host)s
  3734. X360 X
  3735. X4333 Y
  3736. X408 X(CSH_P=/usr/bin/)s
  3737. X1008 X(csh)s
  3738. X1368 X(#)s
  3739. X1448 X(path)s
  3740. X1648 X(to)s
  3741. X1768 X(csh)s
  3742. X360 X
  3743. X4413 Y
  3744. X408 X(ECHOPRE=')s
  3745. X768 X(-n')s
  3746. X1368 X(#)s
  3747. X1448 X(echo's)s
  3748. X1728 X(no)s
  3749. X1808 X(-newline)s
  3750. X2168 X(prefix:)s
  3751. X2488 X(')s
  3752. X2528 X(-n')s
  3753. X2688 X(\(BSD\),)s
  3754. X2968 X('')s
  3755. X3168 X(\(SysV\))s
  3756. X360 X
  3757. X4493 Y
  3758. X408 X(ECHOSUF='')s
  3759. X1368 X(#)s
  3760. X1448 X(echo's)s
  3761. X1728 X(no)s
  3762. X1808 X(-newline)s
  3763. X2168 X(suffix:)s
  3764. X2488 X('')s
  3765. X2688 X(\(BSD\),)s
  3766. X2968 X('\\c')s
  3767. X3168 X(\(SysV\))s
  3768. X360 X
  3769. X4573 Y
  3770. X408 X(PSALL_K=ax)s
  3771. X1368 X(#)s
  3772. X1448 X(ps)s
  3773. X1568 X(key)s
  3774. X1728 X(to)s
  3775. X1848 X(get)s
  3776. X2008 X(all)s
  3777. X2168 X(processes:)s
  3778. X2608 X('ax')s
  3779. X2808 X(\(BSD\),)s
  3780. X3088 X(')s
  3781. X3128 X(-e')s
  3782. X3288 X(\(SysV\))s
  3783. X360 X
  3784. X4685 Y
  3785. X781 X
  3786. Xf.R 10 Z(Figure)s
  3787. X977 X(5:)s
  3788. X1073 X(Sample)s
  3789. X1296 X(code)s
  3790. X1444 X(from)s
  3791. X1595 X
  3792. Xf.B 10 Z(saenv)s
  3793. X1776 X
  3794. Xf.R 10 Z(\(including)s
  3795. X2072 X(code)s
  3796. X2220 X(written)s
  3797. X2432 X(by)s
  3798. X2520 X(Figures)s
  3799. X2742 X(2,)s
  3800. X2814 X(3,)s
  3801. X2886 X(and)s
  3802. X3004 X(4\))s
  3803. X360 X
  3804. X1272 Y
  3805. X504 X(The)s
  3806. X634 X(full)s
  3807. X754 X(path)s
  3808. X896 X(to)s
  3809. X975 X(the)s
  3810. X1084 X
  3811. Xf.B 10 Z(crontab)s
  3812. X1333 X
  3813. Xf.R 10 Z(\256le,)s
  3814. X1463 X(including)s
  3815. X1742 X(the)s
  3816. X360 X
  3817. X1345 Y(directory)s
  3818. X646 X(it)s
  3819. X729 X(really)s
  3820. X927 X(lives)s
  3821. X1099 X(in,)s
  3822. X1213 X(is)s
  3823. X1303 X(established)s
  3824. X1646 X(in)s
  3825. X1742 X(the)s
  3826. X360 X
  3827. X1418 Y
  3828. Xf.CW 10 Z(CRON_P)s
  3829. X627 X
  3830. Xf.R 10 Z(paragraph)s
  3831. X893 X(.)s
  3832. X959 X(\(Our)s
  3833. X1111 X(tools)s
  3834. X1268 X(do)s
  3835. X1361 X(not)s
  3836. X1473 X(need)s
  3837. X1626 X(to)s
  3838. X1706 X(han-)s
  3839. X360 X
  3840. X1491 Y(dle)s
  3841. X477 X
  3842. Xf.B 10 Z(crontab)s
  3843. X734 X
  3844. Xf.R 10 Z(\256les)s
  3845. X881 X(for)s
  3846. X993 X(non)s
  3847. X1092 X(-root)s
  3848. X1256 X(users)s
  3849. X1393 X(.\))s
  3850. X1488 X(The)s
  3851. X1626 X
  3852. Xf.B 10 Z(realdir)s
  3853. X360 X
  3854. X1564 Y
  3855. Xf.R 10 Z(script)s
  3856. X539 X(is)s
  3857. X614 X(given)s
  3858. X792 X(a)s
  3859. X852 X(\256lename)s
  3860. X1113 X(to)s
  3861. X1195 X(look)s
  3862. X1343 X(for,)s
  3863. X1467 X(and)s
  3864. X1594 X(a)s
  3865. X1655 X(list)s
  3866. X1769 X(of)s
  3867. X360 X
  3868. X1637 Y(guesses)s
  3869. X587 X(about)s
  3870. X758 X(where)s
  3871. X944 X(to)s
  3872. X1019 X(\256nd)s
  3873. X1145 X(it)s
  3874. X1183 X(.)s
  3875. X1245 X(The)s
  3876. X1371 X(list)s
  3877. X1476 X(of)s
  3878. X1553 X(guesses)s
  3879. X1779 X(is)s
  3880. X360 X
  3881. X1710 Y(again)s
  3882. X545 X(based)s
  3883. X737 X(on)s
  3884. X843 X(our)s
  3885. X971 X(experience)s
  3886. X1261 X(.)s
  3887. X1341 X(The)s
  3888. X1504 X
  3889. Xf.CW 10 Z(CRON43_B)s
  3890. X360 X
  3891. X1783 Y
  3892. Xf.R 10 Z(paragraph)s
  3893. X651 X(assumes)s
  3894. X899 X(that)s
  3895. X1025 X(if)s
  3896. X1091 X(we)s
  3897. X1194 X(\256nd)s
  3898. X1321 X(the)s
  3899. X1427 X(word)s
  3900. X1587 X("root")s
  3901. X1772 X(in)s
  3902. X360 X
  3903. X1856 Y(the)s
  3904. X484 X(sixth)s
  3905. X656 X(\256eld)s
  3906. X817 X(in)s
  3907. X911 X(the)s
  3908. X1035 X
  3909. Xf.B 10 Z(crontab)s
  3910. X1299 X
  3911. Xf.R 10 Z(\256le,)s
  3912. X1445 X(then)s
  3913. X1603 X(it)s
  3914. X1684 X(is)s
  3915. X1772 X(in)s
  3916. X360 X
  3917. X1929 Y(4)s
  3918. X393 X(.3BSD)s
  3919. X594 X(format)s
  3920. X772 X(.)s
  3921. X360 X
  3922. X2023 Y
  3923. X504 X(This)s
  3924. X645 X(brings)s
  3925. X833 X(up)s
  3926. X921 X(the)s
  3927. X1025 X(problem)s
  3928. X1269 X(of)s
  3929. X1346 X(robustness)s
  3930. X1627 X(.)s
  3931. X1689 X(As)s
  3932. X1786 X(it)s
  3933. X360 X
  3934. X2096 Y(is)s
  3935. X442 X(currently)s
  3936. X720 X(written,)s
  3937. X964 X(the)s
  3938. X1083 X(test)s
  3939. X1214 X(for)s
  3940. X1328 X(whether)s
  3941. X1580 X(or)s
  3942. X1672 X(not)s
  3943. X1794 X(a)s
  3944. X360 X
  3945. X2169 Y(system's)s
  3946. X616 X
  3947. Xf.B 10 Z(crontab)s
  3948. X860 X
  3949. Xf.R 10 Z(\256le)s
  3950. X968 X(is)s
  3951. X1035 X(in)s
  3952. X1110 X(4)s
  3953. X1143 X(.3BSD)s
  3954. X1345 X(format)s
  3955. X1546 X(could)s
  3956. X1717 X(fail)s
  3957. X1807 X(.)s
  3958. X360 X
  3959. X2242 Y(When)s
  3960. X547 X(we)s
  3961. X653 X(install)s
  3962. X845 X(a)s
  3963. X902 X(master)s
  3964. X1108 X
  3965. Xf.B 10 Z(crontab)s
  3966. X1357 X
  3967. Xf.R 10 Z(\256le,)s
  3968. X1487 X(local)s
  3969. X1645 X(entries)s
  3970. X360 X
  3971. X2315 Y(at)s
  3972. X444 X(the)s
  3973. X561 X(beginning)s
  3974. X862 X(of)s
  3975. X953 X(the)s
  3976. X1071 X(\256le)s
  3977. X1193 X(are)s
  3978. X1311 X(preserved)s
  3979. X1570 X(.)s
  3980. X1645 X(In)s
  3981. X1736 X(our)s
  3982. X2016 X
  3983. X448 Y(environment,)s
  3984. X2405 X(the)s
  3985. X2522 X(primary)s
  3986. X2768 X(users)s
  3987. X2940 X(of)s
  3988. X3029 X(a)s
  3989. X3093 X(machine)s
  3990. X3354 X(have)s
  3991. X2016 X
  3992. X521 Y(root)s
  3993. X2158 X(access)s
  3994. X2365 X(to)s
  3995. X2452 X(that)s
  3996. X2589 X(machine)s
  3997. X2816 X(.)s
  3998. X2891 X(Although)s
  3999. X3178 X(unlikely,)s
  4000. X3450 X(a)s
  4001. X2016 X
  4002. X594 Y(superuser)s
  4003. X2320 X(of)s
  4004. X2423 X(a)s
  4005. X2501 X(non)s
  4006. X2600 X(-4)s
  4007. X2655 X(.3BSD)s
  4008. X2882 X(host)s
  4009. X3041 X(could)s
  4010. X3237 X(install)s
  4011. X3450 X(a)s
  4012. X2016 X
  4013. X667 Y
  4014. Xf.CW 10 Z(root)s
  4015. X2219 X
  4016. Xf.R 10 Z(command)s
  4017. X2526 X(as)s
  4018. X2626 X(a)s
  4019. X2700 X(local)s
  4020. X2875 X
  4021. Xf.B 10 Z(crontab)s
  4022. X3141 X
  4023. Xf.R 10 Z(entry)s
  4024. X3278 X(.)s
  4025. X3361 X(This)s
  4026. X2016 X
  4027. X740 Y(would)s
  4028. X2214 X(cause)s
  4029. X2395 X(the)s
  4030. X2509 X(test)s
  4031. X2635 X(to)s
  4032. X2719 X(give)s
  4033. X2866 X(a)s
  4034. X2928 X(wrong)s
  4035. X3128 X(answer)s
  4036. X3317 X(.)s
  4037. X3387 X(We)s
  4038. X2016 X
  4039. X813 Y(would)s
  4040. X2214 X(need)s
  4041. X2372 X(to)s
  4042. X2456 X(ask)s
  4043. X2577 X(the)s
  4044. X2691 X(user)s
  4045. X2834 X(to)s
  4046. X2918 X(change)s
  4047. X3140 X(the)s
  4048. X3255 X(program)s
  4049. X2016 X
  4050. X886 Y(name,)s
  4051. X2200 X(or)s
  4052. X2277 X(develop)s
  4053. X2510 X(a)s
  4054. X2562 X(more)s
  4055. X2721 X(robust)s
  4056. X2909 X(test)s
  4057. X3003 X(.)s
  4058. X2016 X
  4059. X980 Y
  4060. X2160 X(Like)s
  4061. X2338 X(system)s
  4062. X2579 X(administrators)s
  4063. X3018 X(everywhere,)s
  4064. X3402 X(we)s
  4065. X2016 X
  4066. X1053 Y(always)s
  4067. X2225 X(have)s
  4068. X2374 X(too)s
  4069. X2482 X(much)s
  4070. X2652 X(work)s
  4071. X2810 X(to)s
  4072. X2884 X(do)s
  4073. X2950 X(.)s
  4074. X3011 X(So,)s
  4075. X3120 X(we)s
  4076. X3220 X(get)s
  4077. X3324 X(a)s
  4078. X3376 X(tool)s
  4079. X2016 X
  4080. X1126 Y(working)s
  4081. X2268 X(and)s
  4082. X2395 X(leave)s
  4083. X2568 X(it)s
  4084. X2638 X(alone)s
  4085. X2783 X(.)s
  4086. X2854 X(If)s
  4087. X2930 X(it)s
  4088. X3000 X(breaks)s
  4089. X3206 X(frequently)s
  4090. X2016 X
  4091. X1199 Y(enough)s
  4092. X2236 X(or)s
  4093. X2316 X(in)s
  4094. X2393 X(a)s
  4095. X2448 X(really)s
  4096. X2626 X(ugly)s
  4097. X2769 X(fashion,)s
  4098. X3007 X(we)s
  4099. X3110 X(make)s
  4100. X3280 X(it)s
  4101. X3343 X(more)s
  4102. X2016 X
  4103. X1272 Y(robust)s
  4104. X2204 X(and)s
  4105. X2322 X(repeat)s
  4106. X2508 X(the)s
  4107. X2612 X(cycle)s
  4108. X2754 X(.)s
  4109. X2016 X
  4110. X1366 Y
  4111. X2160 X(When)s
  4112. X2364 X(creating)s
  4113. X2625 X(these)s
  4114. X2808 X(tests,)s
  4115. X2990 X(you)s
  4116. X3134 X(can)s
  4117. X3272 X(end)s
  4118. X3414 X(up)s
  4119. X2016 X
  4120. X1439 Y(learning)s
  4121. X2262 X(obscure)s
  4122. X2496 X(details)s
  4123. X2699 X(of)s
  4124. X2781 X(a)s
  4125. X2838 X(program's)s
  4126. X3138 X(behavior)s
  4127. X3371 X(.)s
  4128. X3436 X(If)s
  4129. X2016 X
  4130. X1512 Y(you)s
  4131. X2138 X(are)s
  4132. X2244 X(looking)s
  4133. X2471 X(for)s
  4134. X2572 X(the)s
  4135. X2678 X(BSD)s
  4136. X2831 X
  4137. Xf.B 10 Z(dump)s
  4138. X3022 X
  4139. Xf.R 10 Z(backup)s
  4140. X3238 X(program,)s
  4141. X2016 X
  4142. X1585 Y(you)s
  4143. X2142 X(have)s
  4144. X2295 X(to)s
  4145. X2373 X(make)s
  4146. X2544 X(sure)s
  4147. X2681 X(you)s
  4148. X2806 X(don't)s
  4149. X2972 X(\256nd)s
  4150. X3101 X(the)s
  4151. X3209 X(System)s
  4152. X3432 X(V)s
  4153. X2016 X
  4154. X1658 Y
  4155. Xf.B 10 Z(dump)s
  4156. X2218 X
  4157. Xf.R 10 Z(\256lesystem)s
  4158. X2525 X(description)s
  4159. X2857 X(tool)s
  4160. X2961 X(.)s
  4161. X3035 X(One)s
  4162. X3181 X(way)s
  4163. X3327 X(to)s
  4164. X3414 X(do)s
  4165. X2016 X
  4166. X1731 Y(this)s
  4167. X2143 X(is)s
  4168. X2218 X(to)s
  4169. X2300 X(test)s
  4170. X2424 X(known)s
  4171. X2634 X(paths)s
  4172. X2804 X(to)s
  4173. X2885 X(BSD)s
  4174. X3061 X
  4175. Xf.CW 10 Z(dump)s
  4176. X3250 X
  4177. Xf.R 10 Z(with)s
  4178. X3398 X(the)s
  4179. X2016 X
  4180. X1804 Y
  4181. Xf.CW 10 Z(W)s
  4182. X2085 X
  4183. Xf.R 10 Z(\257ag)s
  4184. X2185 X(.)s
  4185. X2253 X(The)s
  4186. X2386 X(heart)s
  4187. X2549 X(of)s
  4188. X2633 X(the)s
  4189. X2744 X(research)s
  4190. X2996 X(code)s
  4191. X3151 X(is)s
  4192. X3225 X(shown)s
  4193. X3428 X(in)s
  4194. X2016 X
  4195. X1877 Y(Figure)s
  4196. X2212 X(4,)s
  4197. X2284 X(and)s
  4198. X2402 X(the)s
  4199. X2506 X(results)s
  4200. X2703 X(are)s
  4201. X2807 X(in)s
  4202. X2881 X(Figure)s
  4203. X3077 X(5)s
  4204. X3110 X(.)s
  4205. X2016 X
  4206. X1971 Y
  4207. X2160 X(The)s
  4208. X2286 X(\256rst)s
  4209. X2430 X
  4210. Xf.CW 10 Z(if)s
  4211. X2550 X(ls)s
  4212. X2670 X(.)s
  4213. X2710 X(.)s
  4214. X2750 X(.)s
  4215. X2813 X
  4216. Xf.R 10 Z(is)s
  4217. X2881 X(an)s
  4218. X2967 X(attempt)s
  4219. X3192 X(to)s
  4220. X3267 X(emulate)s
  4221. X2016 X
  4222. X2044 Y
  4223. Xf.CW 10 Z(if)s
  4224. X2137 X(test)s
  4225. X2338 X(-x)s
  4226. X2459 X(.)s
  4227. X2499 X(.)s
  4228. X2539 X(.)s
  4229. X2602 X
  4230. Xf.R 10 Z(;)s
  4231. X2644 X(the)s
  4232. X2749 X(<space><star>)s
  4233. X3170 X(in)s
  4234. X3245 X(the)s
  4235. X3350 X
  4236. Xf.B 10 Z(grep)s
  4237. X2016 X
  4238. X2117 Y
  4239. Xf.R 10 Z(regular)s
  4240. X2229 X(expression)s
  4241. X2538 X(is)s
  4242. X2607 X(required)s
  4243. X2853 X(to)s
  4244. X2929 X(handle)s
  4245. X3131 X(a)s
  4246. X3185 X(bug)s
  4247. X3308 X(in)s
  4248. X3384 X(one)s
  4249. X2016 X
  4250. X2190 Y(vendor's)s
  4251. X2295 X
  4252. Xf.CW 10 Z(ls)s
  4253. X2422 X(-dF)s
  4254. X2570 X
  4255. Xf.R 10 Z(which)s
  4256. X2761 X(puts)s
  4257. X2900 X(a)s
  4258. X2958 X(trailing)s
  4259. X3180 X(space)s
  4260. X3357 X(after)s
  4261. X2016 X
  4262. X2263 Y(the)s
  4263. X2133 X(asterisk)s
  4264. X2338 X(.)s
  4265. X2412 X(The)s
  4266. X2551 X(second)s
  4267. X2789 X
  4268. Xf.CW 10 Z(if)s
  4269. X2904 X
  4270. Xf.R 10 Z(is)s
  4271. X2984 X(the)s
  4272. X3101 X(main)s
  4273. X3270 X(test)s
  4274. X3364 X(.)s
  4275. X3439 X(It)s
  4276. X2016 X
  4277. X2336 Y(relies)s
  4278. X2209 X(on)s
  4279. X2322 X(two)s
  4280. X2469 X(conditions)s
  4281. X2747 X(.)s
  4282. X2833 X(First,)s
  4283. X3020 X(it)s
  4284. X3104 X(expects)s
  4285. X3351 X(BSD)s
  4286. X360 X
  4287. X4967 Y
  4288. Xf.B 10 Z(14)s
  4289. X2096 X(LISA)s
  4290. X2273 X(V)s
  4291. X2343 X(\261)s
  4292. X2398 X(Sep)s
  4293. X2502 X(.)s
  4294. X2541 X(30)s
  4295. X2607 X(-Oct)s
  4296. X2733 X(.)s
  4297. X2772 X(3,)s
  4298. X2844 X(1991)s
  4299. X2998 X(\261)s
  4300. X3053 X(San)s
  4301. X3182 X(Diego,)s
  4302. X3384 X(CA)s
  4303. X5280 Y
  4304. Xpagebot
  4305. X
  4306. X%%Page: 15 5
  4307. Xpagetop
  4308. Xstdencoding /NTimes-Bold /Times-Bold RE
  4309. X/f.B /NTimes-Bold findfont def 
  4310. Xf.B 10 Z
  4311. X600 X
  4312. X448 Y
  4313. Xstdencoding /NCourier /Courier RE
  4314. X/f.CW /NCourier findfont def 
  4315. Xf.CW 10 Z(dump)s
  4316. X807 X(W)s
  4317. X876 X
  4318. Xstdencoding /NTimes-Roman /Times-Roman RE
  4319. X/f.R /NTimes-Roman findfont def 
  4320. Xf.R 10 Z(to)s
  4321. X957 X(put)s
  4322. X1071 X(something)s
  4323. X1379 X(on)s
  4324. X1475 X(standard)s
  4325. X1731 X(out)s
  4326. X1816 X(.)s
  4327. X1885 X(It)s
  4328. X1956 X(also)s
  4329. X600 X
  4330. X521 Y(expects)s
  4331. X824 X(System)s
  4332. X1044 X(V)s
  4333. X1133 X
  4334. Xf.CW 10 Z(dump)s
  4335. X1316 X
  4336. Xf.R 10 Z(to)s
  4337. X1391 X(choke)s
  4338. X1573 X(on)s
  4339. X1662 X(the)s
  4340. X1784 X
  4341. Xf.CW 10 Z(W)s
  4342. X1846 X
  4343. Xf.R 10 Z(\257ag)s
  4344. X1968 X(and)s
  4345. X600 X
  4346. X594 Y(produce)s
  4347. X836 X(no)s
  4348. X924 X(standard)s
  4349. X1172 X(output)s
  4350. X1342 X(.)s
  4351. X600 X
  4352. X1197 Y
  4353. X3120 0 l
  4354. X600 X
  4355. X1285 Y
  4356. X648 X
  4357. Xf.CW 10 Z(:)s
  4358. X600 X
  4359. X1365 Y
  4360. X648 X(#)s
  4361. X728 X(sahead)s
  4362. X1008 X(-)s
  4363. X1088 X(header)s
  4364. X1368 X(for)s
  4365. X1528 X(Data)s
  4366. X1728 X(Center)s
  4367. X2008 X(System)s
  4368. X2288 X(Administration)s
  4369. X2888 X(bourne)s
  4370. X3128 X(-shell)s
  4371. X3408 X(tools)s
  4372. X600 X
  4373. X1445 Y
  4374. X648 X(#)s
  4375. X728 X(written)s
  4376. X1048 X(by)s
  4377. X1168 X(rca)s
  4378. X600 X
  4379. X1525 Y
  4380. X648 X(#)s
  4381. X600 X
  4382. X1605 Y
  4383. X648 X(#)s
  4384. X728 X(This)s
  4385. X928 X(file)s
  4386. X1128 X(should)s
  4387. X1408 X(444)s
  4388. X1568 X(root,)s
  4389. X1808 X(and)s
  4390. X1968 X(should)s
  4391. X2248 X(be)s
  4392. X2368 X(sourced)s
  4393. X2688 X(via)s
  4394. X2848 X(")s
  4395. X2888 X(.)s
  4396. X2968 X(/etc/dist/sahea)s
  4397. X3568 X(d")s
  4398. X3648 X(.)s
  4399. X600 X
  4400. X1685 Y
  4401. X648 X(#)s
  4402. X728 X(It)s
  4403. X848 X(is)s
  4404. X968 X(distributed)s
  4405. X1448 X(automatically)s
  4406. X1968 X(.)s
  4407. X600 X
  4408. X1765 Y
  4409. X648 X(#)s
  4410. X600 X
  4411. X1845 Y
  4412. X648 X(#)s
  4413. X728 X(The)s
  4414. X888 X(code)s
  4415. X1088 X(includes)s
  4416. X1448 X(lots)s
  4417. X1648 X(of)s
  4418. X1768 X(variable)s
  4419. X2128 X(definitions)s
  4420. X2608 X(for)s
  4421. X2768 X(our)s
  4422. X600 X
  4423. X1925 Y
  4424. X648 X(#)s
  4425. X728 X(System)s
  4426. X1008 X(Administration)s
  4427. X1608 X(scripts)s
  4428. X1888 X(.)s
  4429. X600 X
  4430. X2045 Y
  4431. X648 X(#)s
  4432. X728 X(untested)s
  4433. X1088 X(PATH,)s
  4434. X1328 X(/etc/saenv)s
  4435. X1768 X(will)s
  4436. X1968 X(fix)s
  4437. X2128 X(later)s
  4438. X600 X
  4439. X2125 Y
  4440. X648 X(PATH=/bin:/etc:)s
  4441. X1248 X(/usr/bin:/usr/e)s
  4442. X1848 X(tc:/usr/ucb:/us)s
  4443. X2448 X(r/amdahl/bin:/u)s
  4444. X3048 X(sr/lbin:/sbin)s
  4445. X600 X
  4446. X2205 Y
  4447. X648 X(export)s
  4448. X928 X(PATH)s
  4449. X600 X
  4450. X2325 Y
  4451. X648 X(#)s
  4452. X728 X(The)s
  4453. X888 X(variable)s
  4454. X1248 X(names)s
  4455. X1488 X(in)s
  4456. X1608 X(all)s
  4457. X1768 X(these)s
  4458. X2008 X(scripts)s
  4459. X2328 X(often)s
  4460. X2568 X(use)s
  4461. X2728 X(the)s
  4462. X2888 X(following)s
  4463. X3288 X(conventions:)s
  4464. X600 X
  4465. X2405 Y
  4466. X648 X(#)s
  4467. X600 X
  4468. X2485 Y
  4469. X648 X(#)s
  4470. X728 X(abbr)s
  4471. X968 X(meaning)s
  4472. X2248 X(example\(s\))s
  4473. X600 X
  4474. X2565 Y
  4475. X648 X(#)s
  4476. X728 X(XX_F)s
  4477. X968 X(name)s
  4478. X1168 X(of)s
  4479. X1288 X(XX)s
  4480. X1408 X(file)s
  4481. X2248 X(CRON_F=root)s
  4482. X600 X
  4483. X2645 Y
  4484. X648 X(#)s
  4485. X728 X(XX_D)s
  4486. X968 X(directory)s
  4487. X1368 X(where)s
  4488. X1608 X(file)s
  4489. X1808 X(XX)s
  4490. X1928 X(lives)s
  4491. X2248 X(CRON_D=/usr/sp)s
  4492. X2808 X(ool/cron/cronta)s
  4493. X3408 X(bs)s
  4494. X600 X
  4495. X2725 Y
  4496. X648 X(#)s
  4497. X728 X(XX_P)s
  4498. X968 X(full)s
  4499. X1168 X(path)s
  4500. X1368 X(to)s
  4501. X1488 X(file)s
  4502. X1688 X(XX)s
  4503. X2248 X(CRON_P=/usr/sp)s
  4504. X2808 X(ool/cron/cronta)s
  4505. X3408 X(bs/root)s
  4506. X600 X
  4507. X2805 Y
  4508. X648 X(#)s
  4509. X728 X(XX_P)s
  4510. X968 X(XX_P=$XX_D/$XX)s
  4511. X1528 X(_F)s
  4512. X1648 X(by)s
  4513. X1768 X(definition)s
  4514. X2248 X(CRON_P=$CRON_D)s
  4515. X2808 X(/$CRON_F)s
  4516. X600 X
  4517. X2885 Y
  4518. X648 X(#)s
  4519. X728 X(XX_N)s
  4520. X968 X(number)s
  4521. X2248 X(ALIASRO_N=5)s
  4522. X2728 X(\(rotations)s
  4523. X3168 X(on)s
  4524. X3288 X("aliases"\))s
  4525. X600 X
  4526. X2965 Y
  4527. X648 X(#)s
  4528. X728 X(XX_K)s
  4529. X968 X(key)s
  4530. X2248 X(PSALL_K=ax)s
  4531. X2688 X(\(BSD\),)s
  4532. X2968 X(PSALL_K=)s
  4533. X3288 X(-e)s
  4534. X3408 X(\(SysV\))s
  4535. X600 X
  4536. X3045 Y
  4537. X648 X(#)s
  4538. X728 X(XX_B)s
  4539. X968 X(boolean)s
  4540. X2248 X(CRONCMD_B=true)s
  4541. X2848 X(if)s
  4542. X2968 X(crontab)s
  4543. X3288 X(command)s
  4544. X3608 X(exists)s
  4545. X600 X
  4546. X3125 Y
  4547. X648 X(#)s
  4548. X728 X(XX_C)s
  4549. X968 X(command)s
  4550. X2248 X(RSH_C=rsh)s
  4551. X2648 X(\(how)s
  4552. X2848 X(do)s
  4553. X2968 X(_you_)s
  4554. X3208 X(spell)s
  4555. X3448 X('rsh'?\))s
  4556. X600 X
  4557. X3205 Y
  4558. X648 X(#)s
  4559. X600 X
  4560. X3285 Y
  4561. X648 X(#)s
  4562. X728 X(Remember)s
  4563. X1088 X(-)s
  4564. X1168 X(only)s
  4565. X1368 X(the)s
  4566. X1528 X(first)s
  4567. X1768 X(8)s
  4568. X1848 X(characters)s
  4569. X2288 X(of)s
  4570. X2408 X(a)s
  4571. X2488 X(variable)s
  4572. X2848 X(name)s
  4573. X3048 X(are)s
  4574. X3208 X(significant)s
  4575. X3648 X(.)s
  4576. X600 X
  4577. X3365 Y
  4578. X648 X(#)s
  4579. X728 X(When)s
  4580. X928 X(choosing)s
  4581. X1288 X(variable)s
  4582. X1648 X(names)s
  4583. X1888 X(we)s
  4584. X2008 X(have)s
  4585. X2208 X(try)s
  4586. X2368 X(to)s
  4587. X2488 X(preserve)s
  4588. X2848 X(the)s
  4589. X3008 X("_X")s
  4590. X3208 X(part)s
  4591. X3368 X(.)s
  4592. X600 X
  4593. X3445 Y
  4594. X648 X(#)s
  4595. X600 X
  4596. X3525 Y
  4597. X648 X(#)s
  4598. X728 X(Many)s
  4599. X928 X(variables)s
  4600. X1328 X(are)s
  4601. X1488 X(set)s
  4602. X1648 X(to)s
  4603. X1768 X(null)s
  4604. X1968 X(if)s
  4605. X2088 X(they)s
  4606. X2288 X(do)s
  4607. X2408 X(not)s
  4608. X2568 X(exist)s
  4609. X2808 X(or)s
  4610. X2928 X(not)s
  4611. X3088 X(supported)s
  4612. X600 X
  4613. X3605 Y
  4614. X648 X(#)s
  4615. X728 X(on)s
  4616. X848 X(the)s
  4617. X1008 X(box)s
  4618. X1128 X(.)s
  4619. X1248 X(For)s
  4620. X1408 X(example,)s
  4621. X1768 X(/etc/saenv)s
  4622. X2208 X(would)s
  4623. X2448 X(say)s
  4624. X2608 X("CSH_P=")s
  4625. X2968 X(on)s
  4626. X3088 X(System)s
  4627. X3368 X(V)s
  4628. X600 X
  4629. X3685 Y
  4630. X648 X(#)s
  4631. X728 X(machines)s
  4632. X1088 X(because)s
  4633. X1408 X(they)s
  4634. X1608 X(do)s
  4635. X1728 X(not)s
  4636. X1888 X(support)s
  4637. X2208 X(csh)s
  4638. X2328 X(.)s
  4639. X600 X
  4640. X3805 Y
  4641. X648 X(##)s
  4642. X768 X(actual)s
  4643. X1048 X(variable)s
  4644. X1408 X(definitions)s
  4645. X600 X
  4646. X3885 Y
  4647. X648 X(DTGT=/etc/dist)s
  4648. X1608 X(#)s
  4649. X1688 X(distribution)s
  4650. X2208 X(target,)s
  4651. X2528 X(contains)s
  4652. X2888 X([links)s
  4653. X3168 X(to])s
  4654. X3328 X(config)s
  4655. X3608 X(files)s
  4656. X600 X
  4657. X3965 Y
  4658. X648 X(DTGTBIN=$DTGT/b)s
  4659. X1248 X(in)s
  4660. X1608 X(#)s
  4661. X1688 X(distributed)s
  4662. X2168 X(tools)s
  4663. X2408 X(live)s
  4664. X2608 X(here)s
  4665. X600 X
  4666. X4069 Y
  4667. X648 X(.)s
  4668. X688 X(.)s
  4669. X728 X(.)s
  4670. X768 X(.)s
  4671. X808 X(.)s
  4672. X600 X
  4673. X4173 Y
  4674. X648 X(if)s
  4675. X768 X(there)s
  4676. X1008 X(is)s
  4677. X1128 X(a)s
  4678. X1208 X(problem)s
  4679. X1528 X(with)s
  4680. X1728 X(/etc/saenv)s
  4681. X2168 X(;)s
  4682. X2248 X(then)s
  4683. X2568 X(#)s
  4684. X2648 X(pseudo)s
  4685. X2928 X(code)s
  4686. X600 X
  4687. X4253 Y
  4688. X968 X(echo)s
  4689. X1168 X("some)s
  4690. X1408 X(appropriate)s
  4691. X1888 X(error)s
  4692. X2128 X(message)s
  4693. X2448 X(about)s
  4694. X2688 X(/etc/saenv")s
  4695. X600 X
  4696. X4333 Y
  4697. X968 X(exit)s
  4698. X1168 X(1)s
  4699. X600 X
  4700. X4413 Y
  4701. X648 X(else)s
  4702. X600 X
  4703. X4493 Y
  4704. X968 X
  4705. X968 X(.)s
  4706. X1048 X(/etc/saenv)s
  4707. X1528 X(#)s
  4708. X1608 X(we're)s
  4709. X1848 X(fine)s
  4710. X2048 X(so)s
  4711. X2168 X(get)s
  4712. X2328 X(local)s
  4713. X2568 X(sysadmin)s
  4714. X2928 X(environment)s
  4715. X600 X
  4716. X4573 Y
  4717. X648 X(fi)s
  4718. X600 X
  4719. X4685 Y
  4720. X1646 X
  4721. Xf.R 10 Z(Figure)s
  4722. X1842 X(6:)s
  4723. X1938 X(Sample)s
  4724. X2161 X(code)s
  4725. X2309 X(from)s
  4726. X2460 X
  4727. Xf.B 10 Z(sahead)s
  4728. X2656 X
  4729. Xf.R 10 Z(.)s
  4730. X600 X
  4731. X688 Y
  4732. X744 X(It)s
  4733. X823 X(turns)s
  4734. X994 X(out,)s
  4735. X1134 X(however,)s
  4736. X1418 X(that)s
  4737. X1558 X(this)s
  4738. X1694 X(isn't)s
  4739. X1852 X(enough)s
  4740. X2047 X(.)s
  4741. X600 X
  4742. X761 Y(Other)s
  4743. X793 X(code)s
  4744. X960 X(\(not)s
  4745. X1107 X(shown\))s
  4746. X1342 X(has)s
  4747. X1471 X(to)s
  4748. X1563 X(deal)s
  4749. X1715 X(with)s
  4750. X1874 X(several)s
  4751. X600 X
  4752. X834 Y(situations)s
  4753. X857 X(.)s
  4754. X930 X(One)s
  4755. X1076 X(vendor)s
  4756. X1295 X(supplies)s
  4757. X1549 X(a)s
  4758. X1614 X(version)s
  4759. X1845 X(of)s
  4760. X1935 X(BSD)s
  4761. X600 X
  4762. X907 Y
  4763. Xf.B 10 Z(dump)s
  4764. X830 X
  4765. Xf.R 10 Z(which)s
  4766. X1056 X(gives)s
  4767. X1260 X(a)s
  4768. X1353 X("Segmentation)s
  4769. X1811 X(fault")s
  4770. X2023 X(if)s
  4771. X600 X
  4772. X980 Y
  4773. Xf.B 10 Z(/etc/dumpdates)s
  4774. X1061 X
  4775. Xf.R 10 Z(doesn't)s
  4776. X1284 X(exist,)s
  4777. X1455 X(so)s
  4778. X1541 X
  4779. Xf.B 10 Z(saenv)s
  4780. X1700 X(.setup)s
  4781. X1896 X
  4782. Xf.R 10 Z(has)s
  4783. X2012 X(to)s
  4784. X600 X
  4785. X1053 Y(create)s
  4786. X798 X(one)s
  4787. X931 X(temporarily)s
  4788. X1279 X(if)s
  4789. X1356 X(necessary)s
  4790. X1652 X(before)s
  4791. X1858 X(running)s
  4792. X600 X
  4793. X1126 Y(the)s
  4794. X716 X(above)s
  4795. X909 X(test)s
  4796. X1003 X(.)s
  4797. X1077 X(Another)s
  4798. X1330 X(vendor)s
  4799. X1549 X(supplies)s
  4800. X1803 X(a)s
  4801. X1868 X(version)s
  4802. X2256 X
  4803. X448 Y(which)s
  4804. X2446 X(requires)s
  4805. X2688 X(a)s
  4806. X2744 X(hyphen)s
  4807. X2965 X(as)s
  4808. X3047 X(the)s
  4809. X3155 X(\256rst)s
  4810. X3285 X(character)s
  4811. X3557 X(of)s
  4812. X3638 X(the)s
  4813. X2256 X
  4814. X521 Y(dump)s
  4815. X2431 X(key,)s
  4816. X2568 X(and)s
  4817. X2688 X(even)s
  4818. X2838 X(when)s
  4819. X3006 X(fed)s
  4820. X3116 X(a)s
  4821. X3189 X
  4822. Xf.CW 10 Z(-W)s
  4823. X3294 X
  4824. Xf.R 10 Z(key)s
  4825. X3415 X(only)s
  4826. X3558 X(works)s
  4827. X2256 X
  4828. X594 Y(if)s
  4829. X2339 X
  4830. Xf.CW 10 Z(TERM)s
  4831. X2523 X
  4832. Xf.R 10 Z(is)s
  4833. X2592 X(already)s
  4834. X2813 X(set)s
  4835. X2912 X(to)s
  4836. X2988 X(a)s
  4837. X3042 X(known)s
  4838. X3246 X(terminal)s
  4839. X3494 X(type)s
  4840. X3609 X(.)s
  4841. X3672 X(A)s
  4842. X2256 X
  4843. X667 Y(third)s
  4844. X2430 X(vendor)s
  4845. X2662 X(supplies)s
  4846. X2929 X(a)s
  4847. X3007 X(special)s
  4848. X3242 X(version)s
  4849. X3487 X(of)s
  4850. X3591 X(BSD)s
  4851. X2256 X
  4852. X740 Y
  4853. Xf.B 10 Z(dump)s
  4854. X2451 X
  4855. Xf.R 10 Z(which)s
  4856. X2642 X(is)s
  4857. X2715 X(meant)s
  4858. X2906 X(to)s
  4859. X2985 X(work)s
  4860. X3148 X(with)s
  4861. X3294 X(Exabyte)s
  4862. X3540 X(drives,)s
  4863. X2256 X
  4864. X813 Y(in)s
  4865. X2350 X(addition)s
  4866. X2611 X(to)s
  4867. X2705 X(the)s
  4868. X2829 X(normal)s
  4869. X3060 X(BSD)s
  4870. X3231 X
  4871. Xf.B 10 Z(dump)s
  4872. X3398 X
  4873. Xf.R 10 Z(.)s
  4874. X3479 X(Tracking)s
  4875. X2256 X
  4876. X886 Y(down)s
  4877. X2434 X(anomalies)s
  4878. X2737 X(like)s
  4879. X2869 X(these)s
  4880. X3037 X(can)s
  4881. X3160 X(make)s
  4882. X3335 X(for)s
  4883. X3442 X(frustrating)s
  4884. X2256 X
  4885. X959 Y(coding)s
  4886. X2437 X(.)s
  4887. X600 X
  4888. X4967 Y
  4889. Xf.B 10 Z(LISA)s
  4890. X777 X(V)s
  4891. X847 X(\261)s
  4892. X902 X(Sep)s
  4893. X1006 X(.)s
  4894. X1045 X(30)s
  4895. X1111 X(-Oct)s
  4896. X1237 X(.)s
  4897. X1276 X(3,)s
  4898. X1348 X(1991)s
  4899. X1502 X(\261)s
  4900. X1557 X(San)s
  4901. X1686 X(Diego,)s
  4902. X1888 X(CA)s
  4903. X3654 X(15)s
  4904. X5280 Y
  4905. Xpagebot
  4906. X
  4907. X%%Page: 16 6
  4908. Xpagetop
  4909. Xstdencoding /NTimes-Bold /Times-Bold RE
  4910. X/f.B /NTimes-Bold findfont def 
  4911. Xf.B 10 Z
  4912. X360 X
  4913. X448 Y
  4914. X801 X(Using)s
  4915. X986 X(The)s
  4916. X1119 X(Research)s
  4917. X360 X
  4918. X557 Y
  4919. X504 X
  4920. Xstdencoding /NTimes-Roman /Times-Roman RE
  4921. X/f.R /NTimes-Roman findfont def 
  4922. Xf.R 10 Z(For)s
  4923. X630 X(an)s
  4924. X727 X(example)s
  4925. X988 X(of)s
  4926. X1077 X(how)s
  4927. X1225 X(a)s
  4928. X1289 X(tool)s
  4929. X1427 X(might)s
  4930. X1618 X(use)s
  4931. X1742 X(the)s
  4932. X360 X
  4933. X630 Y(results)s
  4934. X558 X(of)s
  4935. X636 X(this)s
  4936. X756 X(research,)s
  4937. X1019 X(see)s
  4938. X1128 X(the)s
  4939. X1232 X
  4940. Xf.B 10 Z(upd)s
  4941. X1343 X(-dist)s
  4942. X1491 X
  4943. Xf.R 10 Z(code)s
  4944. X1639 X(in)s
  4945. X1713 X(Fig-)s
  4946. X360 X
  4947. X703 Y(ure)s
  4948. X467 X(7)s
  4949. X500 X(.)s
  4950. X561 X(When)s
  4951. X742 X(a)s
  4952. X794 X(host)s
  4953. X927 X(runs)s
  4954. X1063 X
  4955. Xf.B 10 Z(upd)s
  4956. X1174 X(-dist)s
  4957. Xf.R 10 Z(,)s
  4958. X1339 X(it)s
  4959. X1399 X(may)s
  4960. X1537 X(get)s
  4961. X1642 X(a)s
  4962. X1695 X(copy)s
  4963. X360 X
  4964. X776 Y(of)s
  4965. X441 X(a)s
  4966. X497 X(new)s
  4967. X634 X(master)s
  4968. X839 X
  4969. Xf.B 10 Z(crontab)s
  4970. X1087 X
  4971. Xf.R 10 Z(\256le)s
  4972. X1173 X(.)s
  4973. X1237 X(The)s
  4974. X1366 X(master)s
  4975. X1570 X(is)s
  4976. X1640 X(in)s
  4977. X1717 X(pre)s
  4978. X1802 X(-)s
  4979. X360 X
  4980. X849 Y(4)s
  4981. X393 X(.3BSD)s
  4982. X599 X(format)s
  4983. X777 X(.)s
  4984. X843 X(By)s
  4985. X948 X(sourcing)s
  4986. X1205 X
  4987. Xf.B 10 Z(sahead)s
  4988. Xf.R 10 Z(,)s
  4989. X1446 X(which)s
  4990. X1637 X(in)s
  4991. X1717 X(turn)s
  4992. X360 X
  4993. X922 Y(sources)s
  4994. X607 X
  4995. Xf.B 10 Z(saenv)s
  4996. X813 X
  4997. Xf.R 10 Z(\(see)s
  4998. X967 X(Figure)s
  4999. X1187 X(6\),)s
  5000. X1305 X
  5001. Xf.B 10 Z(upd)s
  5002. X1416 X(-dist)s
  5003. X1588 X
  5004. Xf.R 10 Z(gets)s
  5005. X1742 X(the)s
  5006. X360 X
  5007. X995 Y(information)s
  5008. X715 X(it)s
  5009. X793 X(needs)s
  5010. X985 X(to)s
  5011. X1078 X(determine)s
  5012. X1387 X(how)s
  5013. X1542 X(to)s
  5014. X1635 X(do)s
  5015. X1742 X(the)s
  5016. X360 X
  5017. X1068 Y(local)s
  5018. X520 X(installation)s
  5019. X819 X(.)s
  5020. X887 X(The)s
  5021. X1038 X
  5022. Xstdencoding /NCourier /Courier RE
  5023. X/f.CW /NCourier findfont def 
  5024. Xf.CW 10 Z($CRONCMD_B)s
  5025. X1467 X
  5026. Xf.R 10 Z(variable)s
  5027. X1711 X(tells)s
  5028. X360 X
  5029. X1141 Y
  5030. Xf.B 10 Z(upd)s
  5031. X471 X(-dist)s
  5032. X626 X
  5033. Xf.R 10 Z(whether)s
  5034. X870 X(the)s
  5035. X982 X
  5036. Xf.B 10 Z(crontab)s
  5037. X1234 X
  5038. Xf.R 10 Z(command)s
  5039. X1527 X(is)s
  5040. X1602 X(required)s
  5041. X360 X
  5042. X1214 Y(to)s
  5043. X437 X(install)s
  5044. X627 X(a)s
  5045. X682 X(new)s
  5046. X818 X
  5047. Xf.B 10 Z(crontab)s
  5048. X1065 X
  5049. Xf.R 10 Z(\256le)s
  5050. X1151 X(.)s
  5051. X1251 X
  5052. Xf.CW 10 Z($CRON_P)s
  5053. X1556 X
  5054. Xf.R 10 Z(is)s
  5055. X1625 X(the)s
  5056. X1731 X(full)s
  5057. X360 X
  5058. X1287 Y(path)s
  5059. X499 X(to)s
  5060. X575 X(the)s
  5061. X681 X
  5062. Xf.B 10 Z(crontab)s
  5063. X927 X
  5064. Xf.R 10 Z(\256le)s
  5065. X1013 X(.)s
  5066. X1076 X(The)s
  5067. X1223 X
  5068. Xf.CW 10 Z($CRON43_B)s
  5069. X1608 X
  5070. Xf.R 10 Z(variable)s
  5071. X360 X
  5072. X1360 Y(says)s
  5073. X530 X(whether)s
  5074. X799 X(to)s
  5075. X905 X(massage)s
  5076. X1186 X(the)s
  5077. X1322 X(new)s
  5078. X1487 X(master)s
  5079. X1720 X(into)s
  5080. X360 X
  5081. X1433 Y(4)s
  5082. X393 X(.3BSD)s
  5083. X594 X(format)s
  5084. X794 X(before)s
  5085. X986 X(installing)s
  5086. X1258 X(it)s
  5087. X1296 X(.)s
  5088. X360 X
  5089. X2005 Y
  5090. X3120 0 l
  5091. X360 X
  5092. X2093 Y
  5093. X408 X
  5094. Xf.CW 10 Z(:)s
  5095. X360 X
  5096. X2173 Y
  5097. X408 X(#)s
  5098. X488 X(this)s
  5099. X688 X(is)s
  5100. X808 X(upd)s
  5101. X928 X(-dist)s
  5102. X1168 X(-)s
  5103. X1248 X(originally)s
  5104. X1688 X(written)s
  5105. X2008 X(by)s
  5106. X2128 X(Diane)s
  5107. X2368 X(Alter)s
  5108. X360 X
  5109. X2253 Y
  5110. X408 X(.)s
  5111. X488 X(/etc/dist/sahea)s
  5112. X1088 X(d)s
  5113. X1288 X(#)s
  5114. X1368 X(to)s
  5115. X1488 X(get)s
  5116. X1648 X($DTGT)s
  5117. X1888 X(and)s
  5118. X2048 X(source)s
  5119. X2328 X(/etc/saenv)s
  5120. X360 X
  5121. X2333 Y
  5122. X408 X(.)s
  5123. X448 X(.)s
  5124. X488 X(.)s
  5125. X528 X(.)s
  5126. X568 X(.)s
  5127. X360 X
  5128. X2413 Y
  5129. X408 X(#)s
  5130. X488 X(if)s
  5131. X608 X(we)s
  5132. X728 X(got)s
  5133. X888 X(a)s
  5134. X968 X(new)s
  5135. X1128 X(crontab)s
  5136. X1448 X(file,)s
  5137. X1688 X(install)s
  5138. X2008 X(it)s
  5139. X360 X
  5140. X2493 Y
  5141. X408 X(if)s
  5142. X528 X(test)s
  5143. X728 X(-n)s
  5144. X848 X("`find)s
  5145. X1128 X($DTGT/crontab)s
  5146. X1648 X(.dist)s
  5147. X1888 X(-mtime)s
  5148. X2168 X(-1)s
  5149. X2288 X(-print)s
  5150. X2568 X(2>)s
  5151. X2688 X(/dev/null`")s
  5152. X3168 X(;)s
  5153. X3248 X(then)s
  5154. X360 X
  5155. X2573 Y
  5156. X728 X(current=/tmp/c)s
  5157. X1288 X(rontab)s
  5158. X1528 X(.cur)s
  5159. X360 X
  5160. X2653 Y
  5161. X728 X(new=/tmp/cront)s
  5162. X1288 X(ab)s
  5163. X1368 X(.new)s
  5164. X360 X
  5165. X2733 Y
  5166. X728 X(#)s
  5167. X808 X(get)s
  5168. X968 X(current)s
  5169. X1288 X(version)s
  5170. X360 X
  5171. X2813 Y
  5172. X728 X(if)s
  5173. X848 X(test)s
  5174. X1048 X("$CRONCMD_B")s
  5175. X1568 X(=)s
  5176. X1648 X(true)s
  5177. X1848 X(;)s
  5178. X1928 X(then)s
  5179. X360 X
  5180. X2893 Y
  5181. X1048 X(crontab)s
  5182. X1368 X(-l)s
  5183. X1488 X(>)s
  5184. X1568 X($current)s
  5185. X360 X
  5186. X2973 Y
  5187. X728 X(else)s
  5188. X360 X
  5189. X3053 Y
  5190. X1048 X(cp)s
  5191. X1168 X($CRON_P)s
  5192. X1488 X($current)s
  5193. X360 X
  5194. X3133 Y
  5195. X728 X(fi)s
  5196. X360 X
  5197. X3213 Y
  5198. X728 X(#)s
  5199. X808 X(get)s
  5200. X968 X(new)s
  5201. X1128 X(version,)s
  5202. X1488 X(converting)s
  5203. X1928 X(to)s
  5204. X2048 X(4)s
  5205. X2088 X(.3BSD)s
  5206. X2328 X(format)s
  5207. X2608 X(if)s
  5208. X2728 X(necessary)s
  5209. X360 X
  5210. X3293 Y
  5211. X728 X(if)s
  5212. X848 X(test)s
  5213. X1048 X("$CRON43_B")s
  5214. X1528 X(=)s
  5215. X1608 X("true")s
  5216. X1888 X(;)s
  5217. X1968 X(then)s
  5218. X360 X
  5219. X3373 Y
  5220. X1048 X($DTGTBIN/cront)s
  5221. X1608 X(ab)s
  5222. X1688 X(.conv43)s
  5223. X2008 X($DTGT/crontab)s
  5224. X2528 X(.dist)s
  5225. X2768 X(>)s
  5226. X2848 X($new)s
  5227. X360 X
  5228. X3453 Y
  5229. X728 X(else)s
  5230. X360 X
  5231. X3533 Y
  5232. X1048 X(cp)s
  5233. X1168 X($DTGT/crontab)s
  5234. X1688 X(.dist)s
  5235. X1928 X($new)s
  5236. X360 X
  5237. X3613 Y
  5238. X728 X(fi)s
  5239. X360 X
  5240. X3693 Y
  5241. X728 X(#)s
  5242. X808 X(merge)s
  5243. X1048 X(new)s
  5244. X1208 X(and)s
  5245. X1368 X(current)s
  5246. X1688 X(version,)s
  5247. X2048 X(preserving)s
  5248. X2488 X(local)s
  5249. X2728 X(entries)s
  5250. X360 X
  5251. X3773 Y
  5252. X728 X($DTGTBIN/cut)s
  5253. X1208 X(-paste)s
  5254. X1488 X($new)s
  5255. X1688 X($current)s
  5256. X360 X
  5257. X3853 Y
  5258. X728 X(#)s
  5259. X808 X(install)s
  5260. X1128 X(merged)s
  5261. X1408 X(version)s
  5262. X360 X
  5263. X3933 Y
  5264. X728 X(if)s
  5265. X848 X([)s
  5266. X928 X($CRONCMD_B)s
  5267. X1368 X(=)s
  5268. X1448 X(true)s
  5269. X1648 X(])s
  5270. X1728 X(;)s
  5271. X1808 X(then)s
  5272. X360 X
  5273. X4013 Y
  5274. X1048 X(crontab)s
  5275. X1368 X(-r)s
  5276. X360 X
  5277. X4093 Y
  5278. X1048 X(crontab)s
  5279. X1368 X($current)s
  5280. X360 X
  5281. X4173 Y
  5282. X728 X(else)s
  5283. X360 X
  5284. X4253 Y
  5285. X1048 X(cp)s
  5286. X1168 X($current)s
  5287. X1528 X($CRON_P)s
  5288. X360 X
  5289. X4333 Y
  5290. X728 X(fi)s
  5291. X360 X
  5292. X4413 Y
  5293. X728 X(#)s
  5294. X808 X(cleanup)s
  5295. X360 X
  5296. X4493 Y
  5297. X728 X(/bin/rm)s
  5298. X1048 X(-f)s
  5299. X1168 X($current)s
  5300. X1528 X($new)s
  5301. X360 X
  5302. X4573 Y
  5303. X408 X(fi)s
  5304. X360 X
  5305. X4685 Y
  5306. X1386 X
  5307. Xf.R 10 Z(Figure)s
  5308. X1582 X(7:)s
  5309. X1678 X(Sample)s
  5310. X1901 X(code)s
  5311. X2049 X(from)s
  5312. X2200 X
  5313. Xf.B 10 Z(upd)s
  5314. X2311 X(-dist)s
  5315. X2437 X
  5316. Xf.R 10 Z(.)s
  5317. X360 X
  5318. X1560 Y
  5319. X807 X
  5320. Xf.B 10 Z(Common)s
  5321. X1092 X(Tool)s
  5322. X1243 X(Base)s
  5323. X360 X
  5324. X1669 Y
  5325. X504 X
  5326. Xf.R 10 Z(It)s
  5327. SHAR_EOF
  5328. true || echo 'restore of saenv.paper.ps failed'
  5329. fi
  5330. echo 'End of saenv_alld part 2'
  5331. echo 'File saenv.paper.ps is continued in part 3'
  5332. echo 3 > _shar_seq_.tmp
  5333. exit 0
  5334. --
  5335.   __   _    _   Bob Arnold        Ingres, An ASK Group company
  5336. |/  \ / \  / \|             1080 Marina Village Parkway
  5337. |    /    /   |                Alameda, CA, 94501
  5338. |    \__/ \__/| rca@ingres.com        510/748-2819
  5339.