home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume16 / dist2 / patch1 < prev    next >
Text File  |  1988-10-16  |  49KB  |  1,432 lines

  1. Subject:  v16i041:  Larry Wall's Configure generator, etc., Patch1
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Larry Wall <lwall@jpl-devvax.jpl.nasa.gov>
  7. Posting-number: Volume 16, Issue 41
  8. Archive-name: dist2/patch1
  9.  
  10. [  This is the first of two patches.  --r$  ]
  11.  
  12. [The latest patch for dist version 2.0 is #1.]
  13.  
  14. System: dist version 2.0
  15. Patch #: 1
  16. Priority: MEDIUM
  17. Subject: new and fixed units
  18. Subject: scripts now depend on perlpath
  19.  
  20. Description:
  21.     We've got a bunch of new units.
  22.  
  23.     Perl scripts now use the perlpath variable to find perl.
  24.  
  25.     You now have better choice over which C compiler to use.
  26.  
  27.     Various other fixes.
  28.  
  29. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your dist source
  30.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  31.     If you don't have the patch program, apply the following by hand,
  32.     or get patch (version 2.0, latest patchlevel).
  33.  
  34.     After patching:
  35.         *** DO NOTHING ***  Apply patch2 next.
  36.  
  37.     If patch indicates that patchlevel is the wrong version, you may need
  38.     to apply one or more previous patches, or the patch may already
  39.     have been applied.  See the patchlevel.h file to find out what has or
  40.     has not been applied.  In any event, don't continue with the patch.
  41.  
  42.     If you are missing previous patches (hah!) they can be obtained from me:
  43.  
  44.     Larry Wall
  45.     lwall@jpl-devvax.Jpl.Nasa.Gov
  46.  
  47.     If you send a mail message of the following form it will greatly speed
  48.     processing:
  49.  
  50.     Subject: Command
  51.     @SH mailpatch PATH dist 2.0 LIST
  52.            ^ note the c
  53.  
  54.     where PATH is a return path FROM ME TO YOU either in Internet notation,
  55.     or in bang notation from some well-known host, and LIST is the number
  56.     of one or more patches you need, separated by spaces, commas, and/or
  57.     hyphens.  Saying 35- says everything from 35 to the end.
  58.  
  59.  
  60.     You can also get the patches via anonymous FTP from
  61.     jpl-devvax.Jpl.Nasa.Gov.  (128.149.8.43)
  62.  
  63. Index: patchlevel.h
  64. Prereq: 0
  65. 1c1
  66. < #define PATCHLEVEL 0
  67. ---
  68. > #define PATCHLEVEL 1
  69.  
  70. Index: Configure
  71. Prereq: 2.0
  72. *** Configure.old    Fri Aug  5 00:53:26 1988
  73. --- Configure    Fri Aug  5 00:53:27 1988
  74. ***************
  75. *** 8,14 ****
  76.   # and edit it to reflect your system.  Some packages may include samples
  77.   # of config.h for certain machines, so you might look for one of those.)
  78.   #
  79. ! # $Header: Configure,v 2.0 88/06/28 23:11:40 lwall Exp $
  80.   #
  81.   # Yes, you may rip this off to use in other distribution packages.
  82.   # (Note: this Configure script was generated automatically.  Rather than
  83. --- 8,14 ----
  84.   # and edit it to reflect your system.  Some packages may include samples
  85.   # of config.h for certain machines, so you might look for one of those.)
  86.   #
  87. ! # $Header: Configure,v 2.0.1.1 88/08/04 23:43:07 lwall Exp $
  88.   #
  89.   # Yes, you may rip this off to use in other distribution packages.
  90.   # (Note: this Configure script was generated automatically.  Rather than
  91. ***************
  92. *** 66,71 ****
  93. --- 66,72 ----
  94.   mailx=''
  95.   mail=''
  96.   cpp=''
  97. + perl=''
  98.   Log=''
  99.   Header=''
  100.   bin=''
  101. ***************
  102. *** 86,91 ****
  103. --- 87,93 ----
  104.   passcat=''
  105.   orgname=''
  106.   package=''
  107. + perlpath=''
  108.   spitshell=''
  109.   shsharp=''
  110.   sharpbang=''
  111. ***************
  112. *** 115,127 ****
  113.       eunicefix=/etc/unixtovms.exe
  114.   fi
  115.   
  116.   attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
  117.   attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
  118.   attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
  119.   attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
  120. ! attrlist="$attrlist $mc68k __STDC__"
  121. ! pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /lib"
  122. ! d_newshome="../../NeWS"
  123.   defvoidused=7
  124.   
  125.   : some greps do not return status, grrr.
  126. --- 117,136 ----
  127.       eunicefix=/etc/unixtovms.exe
  128.   fi
  129.   
  130. + : Now test for existence of everything in MANIFEST
  131. + echo "First let's make sure your kit is complete.  Checking..."
  132. + (cd ..; cat `awk 'NR>4{print $1}' MANIFEST` >/dev/null || kill $$)
  133. + echo " "
  134.   attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
  135.   attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
  136. + attrlist="$attrlist hpux hp9000s300 hp9000s500 hp9000s800"
  137.   attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
  138.   attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
  139. ! attrlist="$attrlist $mc68k __STDC__ UTS M_I8086 M_I186 M_I286 M_I386"
  140. ! pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /lib /usr/local/lib"
  141. ! d_newshome="/usr/NeWS"
  142.   defvoidused=7
  143.   
  144.   : some greps do not return status, grrr.
  145. ***************
  146. *** 299,304 ****
  147. --- 308,314 ----
  148.   test
  149.   inews
  150.   vi
  151. + perl
  152.   "
  153.   for file in $loclist; do
  154.       xxx=`loc $file $file $pth`
  155. ***************
  156. *** 341,354 ****
  157.       echo "Hopefully test is built into your sh."
  158.       ;;
  159.   /bin/test)
  160. !     echo " "
  161. !     dflt=n
  162. !     rp="Is your "'"'"test"'"'" built into sh? [$dflt] (OK to guess)"
  163. !     echo $n "$rp $c"
  164. !     . myread
  165. !     case "$ans" in
  166. !     y*) test=test ;;
  167. !     esac
  168.       ;;
  169.   *)
  170.       test=test
  171. --- 351,360 ----
  172.       echo "Hopefully test is built into your sh."
  173.       ;;
  174.   /bin/test)
  175. !     if sh -c "PATH= test true" >/dev/null 2>&1; then
  176. !     echo "Using the test built into your sh."
  177. !     test=test
  178. !     fi
  179.       ;;
  180.   *)
  181.       test=test
  182. ***************
  183. *** 428,438 ****
  184.   fi
  185.   echo " "
  186.   $echo $n "Extracting names from $libc for later perusal...$c"
  187. ! nm $libc 2>/dev/null | sed -n -e 's/^.* T _//p' -e 's/^.* T //p' > libc.list
  188.   if $contains '^printf$' libc.list >/dev/null 2>&1; then
  189.       echo "done"
  190.   else
  191. !     nm $libc 2>/dev/null | sed -n -e 's/^.* D _//p' -e 's/^.* D //p' > libc.list
  192.       if $contains '^printf$' libc.list >/dev/null 2>&1; then
  193.       echo "done"
  194.       else
  195. --- 434,448 ----
  196.   fi
  197.   echo " "
  198.   $echo $n "Extracting names from $libc for later perusal...$c"
  199. ! nm $libc 2>/dev/null >libc.tmp
  200. ! sed -n -e 's/^.* [AT] _//p' -e 's/^.* [AT] //p' <libc.tmp >libc.list
  201.   if $contains '^printf$' libc.list >/dev/null 2>&1; then
  202.       echo "done"
  203.   else
  204. !     sed -n -e 's/^.* D _//p' -e 's/^.* D //p' <libc.tmp >libc.list
  205. !     $contains '^printf$' libc.list >/dev/null 2>&1 || \
  206. !        sed -n -e 's/^_//' \
  207. !           -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' <libc.tmp >libc.list
  208.       if $contains '^printf$' libc.list >/dev/null 2>&1; then
  209.       echo "done"
  210.       else
  211. ***************
  212. *** 439,445 ****
  213.       echo " "
  214.       echo "nm didn't seem to work right."
  215.       echo "Trying ar instead..."
  216. -     rmlist="$rmlist libc.tmp"
  217.       if ar t $libc > libc.tmp; then
  218.           sed -e 's/\.o$//' < libc.tmp > libc.list
  219.           echo "Ok."
  220. --- 449,454 ----
  221. ***************
  222. *** 455,461 ****
  223.       fi
  224.       fi
  225.   fi
  226. ! rmlist="$rmlist libc.list"
  227.   
  228.   : make some quick guesses about what we are up against
  229.   echo " "
  230. --- 464,470 ----
  231.       fi
  232.       fi
  233.   fi
  234. ! rmlist="$rmlist libc.tmp libc.list"
  235.   
  236.   : make some quick guesses about what we are up against
  237.   echo " "
  238. ***************
  239. *** 804,810 ****
  240.   : determine where manual pages go
  241.   case "$mansrc" in
  242.   '')
  243. !     dflt=`loc . /usr/man/man1 /usr/man/mann /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1`
  244.       ;;
  245.   *)  dflt="$mansrc"
  246.       ;;
  247. --- 813,819 ----
  248.   : determine where manual pages go
  249.   case "$mansrc" in
  250.   '')
  251. !     dflt=`loc . /usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1`
  252.       ;;
  253.   *)  dflt="$mansrc"
  254.       ;;
  255. ***************
  256. *** 959,964 ****
  257. --- 968,1014 ----
  258.       orgname="$ans"
  259.   done
  260.   
  261. + : determine default editor
  262. + case "$perlpath" in
  263. + '')
  264. +     if test -f /usr/bin/perl; then
  265. +     dflt=/usr/bin/perl
  266. +     else
  267. +     case "$_perl" in
  268. +     */*) dflt="$_perl";;
  269. +     *) dflt=/usr/bin/perl;;
  270. +     esac
  271. +     fi
  272. +     ;;
  273. + *)  dflt="$perlpath"
  274. +     ;;
  275. + esac
  276. + cont=true
  277. + while $test "$cont" ; do
  278. +     echo " "
  279. +     rp="Where is perl located on your system? [$dflt]"
  280. +     $echo $n "$rp $c"
  281. +     . myread
  282. +     perlpath="$ans"
  283. +     case "$ans" in
  284. +     /*) if test -f $ans; then
  285. +         cont=''
  286. +     else
  287. +         dflt=n
  288. +         rp="File $ans doesn't exist.  Use that name anyway? [$dflt]"
  289. +         $echo $n "$rp $c"
  290. +         . myread
  291. +         dflt=''
  292. +         case "$ans" in
  293. +         y*) cont='';;
  294. +         esac
  295. +     fi
  296. +     ;;
  297. +     *) echo "Please use an absolute path name."
  298. +     ;;
  299. +     esac
  300. + done
  301.   echo " "
  302.   echo "End of configuration questions."
  303.   echo " "
  304. ***************
  305. *** 1002,1007 ****
  306. --- 1052,1058 ----
  307.   mailx='$mailx'
  308.   mail='$mail'
  309.   cpp='$cpp'
  310. + perl='$perl'
  311.   Log='$Log'
  312.   Header='$Header'
  313.   bin='$bin'
  314. ***************
  315. *** 1022,1027 ****
  316. --- 1073,1079 ----
  317.   passcat='$passcat'
  318.   orgname='$orgname'
  319.   package='$package'
  320. + perlpath='$perlpath'
  321.   spitshell='$spitshell'
  322.   shsharp='$shsharp'
  323.   sharpbang='$sharpbang'
  324.  
  325. Index: mcon/U/Cppsym.U
  326. Prereq: 2.0
  327. *** mcon/U/Cppsym.U.old    Fri Aug  5 00:53:53 1988
  328. --- mcon/U/Cppsym.U    Fri Aug  5 00:53:54 1988
  329. ***************
  330. *** 1,4 ****
  331. ! ?RCS:$Header: Cppsym.U,v 2.0 88/06/28 23:12:50 lwall Exp $
  332.   ?X: 
  333.   ?X: This unit produces a shell script called Cppsym, which can be used to
  334.   ?X: determine whether any in a list of symbols is defined by the C preprocessor.
  335. --- 1,4 ----
  336. ! ?RCS:$Header: Cppsym.U,v 2.0.1.1 88/08/04 23:56:40 lwall Exp $
  337.   ?X: 
  338.   ?X: This unit produces a shell script called Cppsym, which can be used to
  339.   ?X: determine whether any in a list of symbols is defined by the C preprocessor.
  340. ***************
  341. *** 7,12 ****
  342. --- 7,15 ----
  343.   ?X: it in Myinit.U.
  344.   ?X: 
  345.   ?RCS: $Log:    Cppsym.U,v $
  346. + ?RCS: Revision 2.0.1.1  88/08/04  23:56:40  lwall
  347. + ?RCS: patch1: added some new symbols
  348. + ?RCS: 
  349.   ?RCS: Revision 2.0  88/06/28  23:12:50  lwall
  350.   ?RCS: Baseline.
  351.   ?RCS: 
  352. ***************
  353. *** 14,22 ****
  354.   ?MAKE:    -pick add $@ %*
  355.   ?INIT:attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
  356.   ?INIT:attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
  357.   ?INIT:attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
  358.   ?INIT:attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
  359. ! ?INIT:attrlist="$attrlist $mc68k __STDC__"
  360.   : get C preprocessor symbols handy
  361.   echo " "
  362.   echo $attrlist | $tr '[ - ]' '[\012-\012]' >Cppsym.know
  363. --- 17,26 ----
  364.   ?MAKE:    -pick add $@ %*
  365.   ?INIT:attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
  366.   ?INIT:attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
  367. + ?INIT:attrlist="$attrlist hpux hp9000s300 hp9000s500 hp9000s800"
  368.   ?INIT:attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
  369.   ?INIT:attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
  370. ! ?INIT:attrlist="$attrlist $mc68k __STDC__ UTS M_I8086 M_I186 M_I286 M_I386"
  371.   : get C preprocessor symbols handy
  372.   echo " "
  373.   echo $attrlist | $tr '[ - ]' '[\012-\012]' >Cppsym.know
  374.  
  375. Index: mcon/U/Init.U
  376. Prereq: 2.0
  377. *** mcon/U/Init.U.old    Fri Aug  5 00:53:58 1988
  378. --- mcon/U/Init.U    Fri Aug  5 00:53:59 1988
  379. ***************
  380. *** 1,9 ****
  381. ! ?RCS:$Header: Init.U,v 2.0 88/06/28 23:13:17 lwall Exp $
  382.   ?X: 
  383.   ?X: This file initializes certain default variables used by Configure.  They
  384.   ?X: may be overridden or added to by definitions in Myinit.U.
  385.   ?X: 
  386.   ?RCS: $Log:    Init.U,v $
  387.   ?RCS: Revision 2.0  88/06/28  23:13:17  lwall
  388.   ?RCS: Baseline.
  389.   ?RCS: 
  390. --- 1,12 ----
  391. ! ?RCS:$Header: Init.U,v 2.0.1.1 88/08/04 23:57:36 lwall Exp $
  392.   ?X: 
  393.   ?X: This file initializes certain default variables used by Configure.  They
  394.   ?X: may be overridden or added to by definitions in Myinit.U.
  395.   ?X: 
  396.   ?RCS: $Log:    Init.U,v $
  397. + ?RCS: Revision 2.0.1.1  88/08/04  23:57:36  lwall
  398. + ?RCS: patch1: added test of MANIFEST files
  399. + ?RCS: 
  400.   ?RCS: Revision 2.0  88/06/28  23:13:17  lwall
  401.   ?RCS: Baseline.
  402.   ?RCS: 
  403. ***************
  404. *** 30,33 ****
  405. --- 33,42 ----
  406.   if test -f /etc/unixtovms.exe; then
  407.       eunicefix=/etc/unixtovms.exe
  408.   fi
  409. + : Now test for existence of everything in MANIFEST
  410. + echo "First let's make sure your kit is complete.  Checking..."
  411. + (cd ..; cat `awk 'NR>4{print $1}' MANIFEST` >/dev/null || kill $$)
  412. + echo " "
  413.   
  414.  
  415. Index: mcon/U/Loc.U
  416. Prereq: 2.0
  417. *** mcon/U/Loc.U.old    Fri Aug  5 00:54:02 1988
  418. --- mcon/U/Loc.U    Fri Aug  5 00:54:03 1988
  419. ***************
  420. *** 1,4 ****
  421. ! ?RCS:$Header: Loc.U,v 2.0 88/06/28 23:13:25 lwall Exp $
  422.   ?X: 
  423.   ?X: This unit produces a shell script "loc" which can be used to find out
  424.   ?X: where in a list of directories something is.  It then uses loc to
  425. --- 1,4 ----
  426. ! ?RCS:$Header: Loc.U,v 2.0.1.1 88/08/04 23:59:16 lwall Exp $
  427.   ?X: 
  428.   ?X: This unit produces a shell script "loc" which can be used to find out
  429.   ?X: where in a list of directories something is.  It then uses loc to
  430. ***************
  431. *** 10,21 ****
  432.   ?X: the loclist or trylist variable.
  433.   ?X: 
  434.   ?RCS: $Log:    Loc.U,v $
  435.   ?RCS: Revision 2.0  88/06/28  23:13:25  lwall
  436.   ?RCS: Baseline.
  437.   ?RCS: 
  438. ! ?MAKE:Loc loclist expr sed echo cat rm mv cp tail tr mkdir sort uniq grep trylist test inews egrep more pg Mcc vi mailx mail cpp: startsh eunicefix n c Myread Oldconfig
  439.   ?MAKE:    -pick weed $@ %*
  440. ! ?INIT:pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /lib"
  441.   : find out where common programs are
  442.   echo " "
  443.   echo "Locating common programs..."
  444. --- 10,26 ----
  445.   ?X: the loclist or trylist variable.
  446.   ?X: 
  447.   ?RCS: $Log:    Loc.U,v $
  448. + ?RCS: Revision 2.0.1.1  88/08/04  23:59:16  lwall
  449. + ?RCS: patch1: can now find executables in /usr/local/lib
  450. + ?RCS: patch1: now locates perl
  451. + ?RCS: patch1: can now determine for itself if test is built into sh
  452. + ?RCS: 
  453.   ?RCS: Revision 2.0  88/06/28  23:13:25  lwall
  454.   ?RCS: Baseline.
  455.   ?RCS: 
  456. ! ?MAKE:Loc loclist expr sed echo cat rm mv cp tail tr mkdir sort uniq grep trylist test inews egrep more pg Mcc vi mailx mail cpp perl: startsh eunicefix n c Myread Oldconfig
  457.   ?MAKE:    -pick weed $@ %*
  458. ! ?INIT:pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /lib /usr/local/lib"
  459.   : find out where common programs are
  460.   echo " "
  461.   echo "Locating common programs..."
  462. ***************
  463. *** 79,84 ****
  464. --- 84,90 ----
  465.   ?mailx:mailx
  466.   ?mail:mail
  467.   ?cpp:cpp
  468. + ?perl:perl
  469.   "
  470.   for file in $loclist; do
  471.       xxx=`loc $file $file $pth`
  472. ***************
  473. *** 121,135 ****
  474.       echo "Hopefully test is built into your sh."
  475.       ;;
  476.   /bin/test)
  477. !     echo " "
  478. !     dflt=n
  479. !     rp="Is your "'"'"test"'"'" built into sh? [$dflt] (OK to guess)"
  480. ! ?X: we don't know how $echo treats $n and $c yet, so use builtin
  481. !     echo $n "$rp $c"
  482. !     . myread
  483. !     case "$ans" in
  484. !     y*) test=test ;;
  485. !     esac
  486.       ;;
  487.   *)
  488.       test=test
  489. --- 127,136 ----
  490.       echo "Hopefully test is built into your sh."
  491.       ;;
  492.   /bin/test)
  493. !     if sh -c "PATH= test true" >/dev/null 2>&1; then
  494. !     echo "Using the test built into your sh."
  495. !     test=test
  496. !     fi
  497.       ;;
  498.   *)
  499.       test=test
  500.  
  501. Index: MANIFEST
  502. *** MANIFEST.old    Fri Aug  5 00:53:33 1988
  503. --- MANIFEST    Fri Aug  5 00:53:34 1988
  504. ***************
  505. *** 4,128 ****
  506.   --------        --- -----------
  507.   Configure                1 Portability tool.
  508.   MANIFEST                 2 This list of files.
  509. ! Makefile                 6 A makefile to run subsidiary makefiles.
  510.   README                   1 Basic instructions.
  511.   config.h.SH              3 Produces config.h.
  512.   kit/Makefile.SH          4 Builds kit builder.
  513.   kit/README               1 Instructions on makedist.
  514.   kit/makeSH               5 Does most of turning a script into an SH file.
  515. ! kit/makedist.SH          2 Makes a set of kits in the current directory.
  516. ! mcon/Makefile.SH         4 Builds metaconfig.
  517.   mcon/README              1 Instructions on using metaconfig.
  518. ! mcon/U/AAAAA.U           5 Does magic before Head.U.
  519. ! mcon/U/Chk_whoami.U      6 A unit which checks for conflicts.
  520. ! mcon/U/Config_h.U        4 Makes config.h.SH--bizarrity here.
  521.   mcon/U/Config_sh.U       6 Makes config.sh.
  522. ! mcon/U/Cppsym.U          3 Makes program to test for cpp symbols.
  523.   mcon/U/End.U             6 "End of configuration questions"
  524.   mcon/U/Filexp.U          5 Makes program to do tilde expansion.
  525. ! mcon/U/Finish.U          3 A unit which always goes last.
  526.   mcon/U/Guess.U           3 Hazard guesses as to overall philosophy.
  527. ! mcon/U/Head.U            4 First unit, does "#!/bin/sh" et al.
  528. ! mcon/U/Init.U            5 Magically gathers ?Init: lines from other units.
  529. ! mcon/U/Instruct.U        1 Prints instructions.
  530.   mcon/U/Loc.U             2 Look for common programs.
  531. ! mcon/U/Log.U             6 Some stupid redefinitions to keep RCS happy.
  532. ! mcon/U/Myinit.U          6 For copying to private U directories.
  533. ! mcon/U/Myread.U          5 Makes program to do read with shell escape.
  534. ! mcon/U/Null.U            6 Zeroes out variables.  Probably unnecessary.
  535. ! mcon/U/Oldconfig.U       5 Looks for old config.sh file.
  536.   mcon/U/Warn_v7EXT.U      6 V7 has some ideosyncracies.
  537.   mcon/U/Warn_v7ND.U       6 V7 has no O_NDELAY read.
  538. ! mcon/U/active.U          4 Find the news active file.
  539. ! mcon/U/bin.U             5 Find where to install public executables.
  540. ! mcon/U/cc.U              4 Find special compilers and options.
  541. ! mcon/U/contains.U        5 Makes status-returning grep.
  542. ! mcon/U/cpp.U             6 Where is the C preprocessor.
  543. ! mcon/U/d_bcopy.U         5 Do we have bcopy() or memcpy()?
  544.   mcon/U/d_charsprf.U      5 How is sprintf() defined?
  545. ! mcon/U/d_crypt.U         5 Does crypt() exist?
  546.   mcon/U/d_fcntl.U         6 Do we have fcntl()?
  547.   mcon/U/d_flexfnam.U      5 Long filenames?
  548. ! mcon/U/d_ftime.U         5 Do we have ftime()?
  549. ! mcon/U/d_gethname.U      2 What is the C function to get host name?
  550. ! mcon/U/d_getpwent.U      5 How is passwd info gotten?
  551. ! mcon/U/d_havetlib.U      3 Where is termlib?
  552.   mcon/U/d_hidnet.U        4 Do hiddennet stuff?
  553. ! mcon/U/d_index.U         4 index() vs strchr().
  554.   mcon/U/d_internet.U      5 Use internet addresses?
  555. ! mcon/U/d_ioctl.U         5 Does sys/ioctl.h exist?
  556. ! mcon/U/d_news.U          3 What kind of NeWS is here?
  557. ! mcon/U/d_newsadm.U       4 Who is news administrator?
  558.   mcon/U/d_nolnbuf.U       4 Is stdout line buffered?
  559.   mcon/U/d_normsig.U       5 signal() vs sigset().
  560. ! mcon/U/d_portable.U      4 How portable do we want to be?
  561. ! mcon/U/d_raster.U        5 Is this a Raster Tech machine?
  562. ! mcon/U/d_rdchk.U         5 Is rdchk() there to check for input?
  563. ! mcon/U/d_scorfl.U        4 Keep scoreboards by full name?
  564. ! mcon/U/d_sgndchr.U       5 Are chars signed?
  565.   mcon/U/d_speedopt.U      5 Optimize speed vs memory?
  566. ! mcon/U/d_statblks.U      5 Does stat know about blksize and blocks?
  567. ! mcon/U/d_stdstdio.U      5 How standard is stdio?
  568. ! mcon/U/d_strctcpy.U      5 Do we do struct copies?
  569. ! mcon/U/d_symlink.U       5 Does symlink() exist?
  570.   mcon/U/d_termio.U        5 Termio vs sgtty.
  571. ! mcon/U/d_tminsys.U       5 Is struct tm in <sys/time.h>?
  572.   mcon/U/d_usendir.U       4 Use our own ndir routines?
  573. ! mcon/U/d_vfork.U         5 vfork() vs fork().
  574. ! mcon/U/d_voidsig.U       5 How is signal() declared?
  575.   mcon/U/d_whoami.U        6 Is there a whoami.h file?
  576. ! mcon/U/defeditor.U       5 Find default editor.
  577.   mcon/U/filexp.U          6 Finds location of filexp made by Filexp.U.
  578. ! mcon/U/fpu.U             4 What kind of Sun fpu is in use?
  579. ! mcon/U/hostname.U        2 How to determine hostname from shell.
  580.   mcon/U/libc.U            4 Where is libc?
  581. ! mcon/U/libnm.U           5 New math library?
  582. ! mcon/U/locdist.U         2 Find distribution names for news.
  583. ! mcon/U/maildir.U         5 Where is mail spooled.
  584.   mcon/U/mailer.U          5 What delivers mail?
  585. ! mcon/U/mailfile.U        5 What filename in maildir?
  586. ! mcon/U/mallocsrc.U       4 Use malloc included in kit?
  587.   mcon/U/mansrc.U          5 Where to put manual pages source.
  588. ! mcon/U/mboxchar.U        4 How to determine if file is mailbox.
  589.   mcon/U/models.U          2 Large vs small, split I&D, etc.
  590. ! mcon/U/n.U               5 How to suppress newline with echo.
  591.   mcon/U/nametype.U        3 How to get user's fullname.
  592.   mcon/U/newslevel.U       5 What version of news are we running?
  593.   mcon/U/newslib.U         4 Where is the news library?
  594. ! mcon/U/newsspool.U       4 Where is news spooled?
  595. ! mcon/U/orgname.U         4 What is the organizaton name?
  596. ! mcon/U/package.U         3 Gets package name from .package magically.
  597.   mcon/U/pager.U           5 What's the pager, more or less?
  598. ! mcon/U/prefshell.U       4 Preferred user shell.
  599.   mcon/U/privlib.U         5 Where is the private library?
  600. ! mcon/U/randbits.U        4 How many bits in rand()?
  601. ! mcon/U/registers.U       3 How many register declarations to use.
  602. ! mcon/U/rootid.U          4 Root user id.
  603. ! mcon/U/spitshell.U       4 Shell comment stripper, maybe.
  604. ! mcon/U/startsh.U         5 How to guarantee sh startup.
  605. ! mcon/U/stdchar.U         5 Are chars unsigned in stdio?
  606. ! mcon/U/sunscanf.U        5 Is this Sun's version of scanf()?
  607.   mcon/U/voidflags.U       3 How supported is void?
  608.   mcon/makegloss           3 Extracts Glossary from Unit files.
  609.   mcon/metaconfig.SH       1 Writes Configure scripts for you.
  610.   packinit.SH              2 Creates a .package file describing your package.
  611.   pat/Makefile.SH          4 Builds patch generator.
  612.   pat/README               1 Directions for patch generator.
  613. ! pat/mailagent            3 A sample mail agent.
  614.   pat/mailpatch            4 A sample automatic patch mailer.
  615. ! pat/pat.SH               3 Check in, do diffs, make patch, send it.
  616.   pat/patbase.SH           4 To set the base for future differences.
  617. ! pat/patchlevel.h         6 A prototype patchlevel.h file.
  618. ! pat/patcil.SH            3 Check in the latest changes.
  619. ! pat/patdiff.SH           2 Find the differences since patbase.
  620.   pat/patftp.SH            4 Puts patches in ftp pub directory.
  621. ! pat/patindex             6 Generate an index of patches sent out.
  622.   pat/patmake.SH           3 Put together a patch file.
  623.   pat/patpost.SH           3 Sends patches via news.
  624. ! pat/patsend.SH           3 Sends patches via mail.
  625. ! patchlevel.h             6 The current patchlevel for dist.
  626.   pl/fullname.pl           6 Perl library to get full name.
  627.   pl/logname.pl            2 Perl library to get login name.
  628.   pl/package.pl            6 Perl library to read .package.
  629.   pl/rangeargs.pl          6 Perl library to expand number lists.
  630. ! pl/rcsargs.pl            5 Perl library to expand rcs filename lists.
  631. --- 4,147 ----
  632.   --------        --- -----------
  633.   Configure                1 Portability tool.
  634.   MANIFEST                 2 This list of files.
  635. ! Makefile                 4 A makefile to run subsidiary makefiles.
  636.   README                   1 Basic instructions.
  637.   config.h.SH              3 Produces config.h.
  638.   kit/Makefile.SH          4 Builds kit builder.
  639.   kit/README               1 Instructions on makedist.
  640.   kit/makeSH               5 Does most of turning a script into an SH file.
  641. ! kit/makeSH.man           5 Manual page for same.
  642. ! kit/makedist.SH          3 Makes a set of kits in the current directory.
  643. ! kit/makedist.man         4 Manual page for same.
  644. ! mcon/Makefile.SH         5 Builds metaconfig.
  645.   mcon/README              1 Instructions on using metaconfig.
  646. ! mcon/U/AAAAA.U           7 Does magic before Head.U.
  647. ! mcon/U/Chk_whoami.U      7 A unit which checks for conflicts.
  648. ! mcon/U/Config_h.U        5 Makes config.h.SH--bizarrity here.
  649.   mcon/U/Config_sh.U       6 Makes config.sh.
  650. ! mcon/U/Cppsym.U          4 Makes program to test for cpp symbols.
  651.   mcon/U/End.U             6 "End of configuration questions"
  652.   mcon/U/Filexp.U          5 Makes program to do tilde expansion.
  653. ! mcon/U/Finish.U          4 A unit which always goes last.
  654.   mcon/U/Guess.U           3 Hazard guesses as to overall philosophy.
  655. ! mcon/U/Head.U            5 First unit, does "#!/bin/sh" et al.
  656. ! mcon/U/Init.U            6 Magically gathers ?Init: lines from other units.
  657. ! mcon/U/Instruct.U        4 Prints instructions.
  658.   mcon/U/Loc.U             2 Look for common programs.
  659. ! mcon/U/Log.U             5 Some stupid redefinitions to keep RCS happy.
  660. ! mcon/U/Myinit.U          7 For copying to private U directories.
  661. ! mcon/U/Myread.U          6 Makes program to do read with shell escape.
  662. ! mcon/U/Null.U            7 Zeroes out variables.  Probably unnecessary.
  663. ! mcon/U/Oldconfig.U       6 Looks for old config.sh file.
  664.   mcon/U/Warn_v7EXT.U      6 V7 has some ideosyncracies.
  665.   mcon/U/Warn_v7ND.U       6 V7 has no O_NDELAY read.
  666. ! mcon/U/active.U          5 Find the news active file.
  667. ! mcon/U/bin.U             6 Find where to install public executables.
  668. ! mcon/U/cc.U              5 Find special compilers and options.
  669. ! mcon/U/contains.U        6 Makes status-returning grep.
  670. ! mcon/U/cppstdin.U          0
  671. ! mcon/U/d_bcopy.U         6 Do we have bcopy() or memcpy()?
  672.   mcon/U/d_charsprf.U      5 How is sprintf() defined?
  673. ! mcon/U/d_crypt.U         6 Does crypt() exist?
  674. ! mcon/U/d_dosuid.U        4 Do they want setuid emulation?
  675. ! mcon/U/d_fchmod.U        6 Do we have fchmod()?
  676. ! mcon/U/d_fchown.U        6 Do we have fchown()?
  677.   mcon/U/d_fcntl.U         6 Do we have fcntl()?
  678.   mcon/U/d_flexfnam.U      5 Long filenames?
  679. ! mcon/U/d_ftime.U         6 Do we have ftime()?
  680. ! mcon/U/d_getgrps.U       6 Do we have getgroups()?
  681. ! mcon/U/d_gethname.U      3 What is the C function to get host name?
  682. ! mcon/U/d_getpwent.U      6 How is passwd info gotten?
  683. ! mcon/U/d_havetlib.U      4 Where is termlib?
  684.   mcon/U/d_hidnet.U        4 Do hiddennet stuff?
  685. ! mcon/U/d_index.U         5 index() vs strchr().
  686.   mcon/U/d_internet.U      5 Use internet addresses?
  687. ! mcon/U/d_ioctl.U         6 Does sys/ioctl.h exist?
  688. ! mcon/U/d_killpg.U        6 Do we have killpg()?
  689. ! mcon/U/d_memcpy.U        6 Do we have memcpy()?
  690. ! mcon/U/d_news.U          4 What kind of NeWS is here?
  691. ! mcon/U/d_newsadm.U       5 Who is news administrator?
  692.   mcon/U/d_nolnbuf.U       4 Is stdout line buffered?
  693.   mcon/U/d_normsig.U       5 signal() vs sigset().
  694. ! mcon/U/d_portable.U      5 How portable do we want to be?
  695. ! mcon/U/d_raster.U        6 Is this a Raster Tech machine?
  696. ! mcon/U/d_rdchk.U         6 Is rdchk() there to check for input?
  697. ! mcon/U/d_rename.U        6 Do we have rename()?
  698. ! mcon/U/d_scorfl.U        5 Keep scoreboards by full name?
  699. ! mcon/U/d_setegid.U       6 Do we have setegid()?
  700. ! mcon/U/d_seteuid.U       6 Do we have seteuid()?
  701. ! mcon/U/d_setrgid.U       6 Do we have setrgid()?
  702. ! mcon/U/d_setruid.U       6 Do we have setruid()?
  703. ! mcon/U/d_sgndchr.U       6 Are chars signed?
  704.   mcon/U/d_speedopt.U      5 Optimize speed vs memory?
  705. ! mcon/U/d_statblks.U      6 Does stat know about blksize and blocks?
  706. ! mcon/U/d_stdstdio.U      6 How standard is stdio?
  707. ! mcon/U/d_strcspn.U       6 Do we have strcspn()?
  708. ! mcon/U/d_strctcpy.U      6 Do we do struct copies?
  709. ! mcon/U/d_symlink.U       6 Does symlink() exist?
  710.   mcon/U/d_termio.U        5 Termio vs sgtty.
  711. ! mcon/U/d_tminsys.U       6 Is struct tm in <sys/time.h>?
  712.   mcon/U/d_usendir.U       4 Use our own ndir routines?
  713. ! mcon/U/d_vfork.U         6 vfork() vs fork().
  714. ! mcon/U/d_voidsig.U       6 How is signal() declared?
  715.   mcon/U/d_whoami.U        6 Is there a whoami.h file?
  716. ! mcon/U/defeditor.U       6 Find default editor.
  717.   mcon/U/filexp.U          6 Finds location of filexp made by Filexp.U.
  718. ! mcon/U/fpu.U             5 What kind of Sun fpu is in use?
  719. ! mcon/U/gidtype.U         5 What is the type of gids?
  720. ! mcon/U/hostname.U        3 How to determine hostname from shell.
  721.   mcon/U/libc.U            4 Where is libc?
  722. ! mcon/U/libnm.U           6 New math library?
  723. ! mcon/U/locdist.U         3 Find distribution names for news.
  724. ! mcon/U/maildir.U         6 Where is mail spooled.
  725.   mcon/U/mailer.U          5 What delivers mail?
  726. ! mcon/U/mailfile.U        1 What filename in maildir?
  727. ! mcon/U/mallocsrc.U       5 Use malloc included in kit?
  728.   mcon/U/mansrc.U          5 Where to put manual pages source.
  729. ! mcon/U/mboxchar.U        5 How to determine if file is mailbox.
  730.   mcon/U/models.U          2 Large vs small, split I&D, etc.
  731. ! mcon/U/n.U               6 How to suppress newline with echo.
  732.   mcon/U/nametype.U        3 How to get user's fullname.
  733.   mcon/U/newslevel.U       5 What version of news are we running?
  734.   mcon/U/newslib.U         4 Where is the news library?
  735. ! mcon/U/newsspool.U       5 Where is news spooled?
  736. ! mcon/U/orgname.U         5 What is the organizaton name?
  737. ! mcon/U/package.U         7 Gets package name from .package magically.
  738.   mcon/U/pager.U           5 What's the pager, more or less?
  739. ! mcon/U/prefshell.U       5 Preferred user shell.
  740.   mcon/U/privlib.U         5 Where is the private library?
  741. ! mcon/U/randbits.U        5 How many bits in rand()?
  742. ! mcon/U/registers.U       4 How many register declarations to use.
  743. ! mcon/U/rootid.U          6 Root user id.
  744. ! mcon/U/spitshell.U       5 Shell comment stripper, maybe.
  745. ! mcon/U/startsh.U         6 How to guarantee sh startup.
  746. ! mcon/U/stdchar.U         6 Are chars unsigned in stdio?
  747. ! mcon/U/sunscanf.U        6 Is this Sun's version of scanf()?
  748. ! mcon/U/uidtype.U         6 What is the type of uids?
  749.   mcon/U/voidflags.U       3 How supported is void?
  750.   mcon/makegloss           3 Extracts Glossary from Unit files.
  751.   mcon/metaconfig.SH       1 Writes Configure scripts for you.
  752. + mcon/metaconfig.man      2 Manual page for same.
  753.   packinit.SH              2 Creates a .package file describing your package.
  754.   pat/Makefile.SH          4 Builds patch generator.
  755.   pat/README               1 Directions for patch generator.
  756. ! pat/mailagent            4 A sample mail agent.
  757.   pat/mailpatch            4 A sample automatic patch mailer.
  758. ! pat/pat.SH               4 Check in, do diffs, make patch, send it.
  759. ! pat/pat.man              2 Manual page for same.
  760.   pat/patbase.SH           4 To set the base for future differences.
  761. ! pat/patchlevel.h         7 A prototype patchlevel.h file.
  762. ! pat/patcil.SH            2 Check in the latest changes.
  763. ! pat/patdiff.SH           3 Find the differences since patbase.
  764.   pat/patftp.SH            4 Puts patches in ftp pub directory.
  765. ! pat/patindex             7 Generate an index of patches sent out.
  766.   pat/patmake.SH           3 Put together a patch file.
  767.   pat/patpost.SH           3 Sends patches via news.
  768. ! pat/patsend.SH           4 Sends patches via mail.
  769. ! patchlevel.h             3 The current patchlevel for dist.
  770. ! pl/comment.pl            6 Perl library to find comment in front of $Log.
  771.   pl/fullname.pl           6 Perl library to get full name.
  772.   pl/logname.pl            2 Perl library to get login name.
  773.   pl/package.pl            6 Perl library to read .package.
  774.   pl/rangeargs.pl          6 Perl library to expand number lists.
  775. ! pl/rcsargs.pl            6 Perl library to expand rcs filename lists.
  776.  
  777. Index: README
  778. *** README.old    Fri Aug  5 00:53:38 1988
  779. --- README    Fri Aug  5 00:53:39 1988
  780. ***************
  781. *** 6,11 ****
  782. --- 6,13 ----
  783.   make money off it, or pretend that you wrote it.
  784.   --------------------------------------------------------------------------
  785.   
  786. + NOTE: This version of dist requires you to have version 2.0 of perl.
  787.   Please read all the directions below before you proceed any further, and
  788.   then follow them carefully.  Failure to do so may void your warranty. :-)
  789.   
  790.  
  791. Index: mcon/U/cc.U
  792. Prereq: 2.0
  793. *** mcon/U/cc.U.old    Fri Aug  5 00:54:05 1988
  794. --- mcon/U/cc.U    Fri Aug  5 00:54:06 1988
  795. ***************
  796. *** 1,55 ****
  797. ! ?RCS:$Header: cc.U,v 2.0 88/06/28 23:14:06 lwall Exp $
  798. ! ?RCS: $Log:    cc.U,v $
  799. ! ?RCS: Revision 2.0  88/06/28  23:14:06  lwall
  800. ! ?RCS: Baseline.
  801. ! ?RCS: 
  802. ! ?MAKE:cc: echo mansrc cat n c Mcc Myread Guess Oldconfig large
  803. ! ?MAKE:    -pick add $@ %*
  804. ! ?S:cc:
  805. ! ?S:    This variable holds the name of a command to execute a C compiler which
  806. ! ?S:    can resolve multiple global references that happen to have the same
  807. ! ?S:    name.  Usual values are "cc", "Mcc", and "cc -M".
  808. ! ?S:.
  809. ! : see if we need a special compiler
  810. ! echo " "
  811. ! if usg; then
  812. !     case "$cc" in
  813. !     '')
  814. !     case "$Mcc" in
  815. !     /*) dflt='Mcc'
  816. !         ;;
  817. !     *)
  818. !         case "$large" in
  819. !         -M*)
  820. !         dflt='cc'
  821. !         ;;
  822. !         *)
  823. !         if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
  824. !             dflt='cc -M'
  825. !         else
  826. !             dflt='cc'
  827. !         fi
  828. !         ;;
  829. !         esac
  830. !         ;;
  831. !     esac
  832. !     ;;
  833. !     *)  dflt="$cc";;
  834. !     esac
  835. !     $cat <<'EOM'
  836. !  
  837. ! On some systems the default C compiler will not resolve multiple global
  838. ! references that happen to have the same name.  On some such systems the
  839. ! "Mcc" command may be used to force these to be resolved.  On other systems
  840. ! a "cc -M" command is required.  (Note that the -M flag on other systems
  841. ! indicates a memory model to use!)  What command will force resolution on
  842. ! EOM
  843. !     $echo $n "this system? [$dflt] $c"
  844. !     rp="Command to resolve multiple refs? [$dflt]"
  845. !     . myread
  846. !     cc="$ans"
  847. ! else
  848. !     echo "Not a USG system--assuming cc can resolve multiple definitions."
  849. !     cc=cc
  850. ! fi
  851. --- 1 ----
  852. ! ?X: delete me
  853.  
  854. Index: pl/comment.pl
  855. No differences encountered
  856.  
  857. Index: config.h.SH
  858. *** config.h.SH.old    Fri Aug  5 00:53:43 1988
  859. --- config.h.SH    Fri Aug  5 00:53:43 1988
  860. ***************
  861. *** 83,86 ****
  862. --- 83,91 ----
  863.    */
  864.   #define ORGNAME "$orgname"        /**/
  865.   
  866. + /* PERLPATH:
  867. +  *    This symbol contains the absolute location of the perl interpeter.
  868. +  */
  869. + #define PERLPATH "$perlpath"        /**/
  870.   !GROK!THIS!
  871.  
  872. Index: mcon/U/cppstdin.U
  873. *** mcon/U/cppstdin.U.old    Fri Aug  5 00:54:08 1988
  874. --- mcon/U/cppstdin.U    Fri Aug  5 00:54:10 1988
  875. ***************
  876. *** 0 ****
  877. --- 1,131 ----
  878. + ?RCS:$Header: cppstdin.U,v 2.0.1.1 88/08/05 00:41:49 lwall Exp $
  879. + ?RCS: $Log:    cppstdin.U,v $
  880. + ?RCS: Revision 2.0.1.1  88/08/05  00:41:49  lwall
  881. + ?RCS: dummy null revision.
  882. + ?RCS: 
  883. + ?RCS: Revision 1.0.1.1  88/01/21  22:53:18  lwall
  884. + ?RCS: Now assumes input to cpp will be via stdin.  cppminus is '-' if necessary.
  885. + ?RCS: 
  886. + ?RCS: Revision 1.0  87/05/22  12:30:23  lwall
  887. + ?RCS: Initial revision
  888. + ?RCS: 
  889. + ?MAKE:cppstdin cppminus: contains echo n c Myread Oldconfig Loc cpp cc
  890. + ?MAKE:    -pick add $@ %*
  891. + ?S:cppstdin:
  892. + ?S:    This variable contains the command which will invoke the C
  893. + ?S:    preprocessor on standard input and put the output to stdout.
  894. + ?S:    It is primarily used by other Configure units that ask about
  895. + ?S:    preprocessor symbols.
  896. + ?S:.
  897. + ?S:cppminus:
  898. + ?S:    This variable contains the second part of the string which will invoke
  899. + ?S:    the C preprocessor on the standard input and produce to standard
  900. + ?S:    output.  This variable will have the value "-" if cppstdin needs a minus
  901. + ?S:    to specify standard input, otherwise the value is "".
  902. + ?S:.
  903. + ?C:CPPSTDIN:
  904. + ?C:    This symbol contains the first part of the string which will invoke
  905. + ?C:    the C preprocessor on the standard input and produce to standard
  906. + ?C:    output.     Typical value of "cc -E" or "/lib/cpp".
  907. + ?C:.
  908. + ?C:CPPMINUS:
  909. + ?C:    This symbol contains the second part of the string which will invoke
  910. + ?C:    the C preprocessor on the standard input and produce to standard
  911. + ?C:    output.  This symbol will have the value "-" if CPPSTDIN needs a minus
  912. + ?C:    to specify standard input, otherwise the value is "".
  913. + ?C:.
  914. + ?H:?%1:#define CPPSTDIN "$cppstdin"
  915. + ?H:?%1:#define CPPMINUS "$cppminus"
  916. + ?H:?%1:
  917. + : see how we invoke the C preprocessor
  918. + echo " "
  919. + echo "Now, how can we feed standard input to your C preprocessor..."
  920. + cat <<'EOT' >testcpp.c
  921. + #define ABC abc
  922. + #define XYZ xyz
  923. + ABC.XYZ
  924. + EOT
  925. + echo 'Maybe "'"$cc"' -E" will work...'
  926. + $cc -E <testcpp.c >testcpp.out 2>&1
  927. + if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  928. +     echo "Yup, it does."
  929. +     cppstdin="$cc -E"
  930. +     cppminus='';
  931. + else
  932. +     echo 'Nope, maybe "'$cpp'" will work...'
  933. +     $cpp <testcpp.c >testcpp.out 2>&1
  934. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  935. +     echo "Yup, it does."
  936. +     cppstdin="$cpp"
  937. +     cppminus='';
  938. +     else
  939. +     echo 'No such luck...maybe "'$cpp' -" will work...'
  940. +     $cpp - <testcpp.c >testcpp.out 2>&1
  941. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  942. +         echo "It works!"
  943. +         cppstdin="$cpp"
  944. +         cppminus='-';
  945. +     else
  946. +         echo 'Nixed again...maybe "'"$cc"' -E -" will work...'
  947. +         $cc -E - <testcpp.c >testcpp.out 2>&1
  948. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  949. +         echo "Hooray, it works!  I was beginning to wonder."
  950. +         cppstdin="$cc -E"
  951. +         cppminus='-';
  952. +         else
  953. +         echo 'Nope...maybe "'"$cc"' -P" will work...'
  954. +         $cc -P <testcpp.c >testcpp.out 2>&1
  955. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  956. +             echo "Yup, that does."
  957. +             cppstdin="$cc -P"
  958. +             cppminus='';
  959. +         else
  960. +             echo 'Nope...maybe "'"$cc"' -P -" will work...'
  961. +             $cc -P - <testcpp.c >testcpp.out 2>&1
  962. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  963. +             echo "Yup, that does."
  964. +             cppstdin="$cc -P"
  965. +             cppminus='-';
  966. +             else
  967. +             echo 'Hmm...perhaps you already told me...'
  968. +             case "$cppstdin" in
  969. +             '') ;;
  970. +             *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
  971. +             esac
  972. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  973. +                 echo "Hooray, you did!  I was beginning to wonder."
  974. +             else
  975. +                 echo 'Uh-uh.  Time to get fancy...'
  976. +                 cd ..
  977. +                 echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  978. +                 echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  979. +                 chmod 755 cppstdin
  980. +                 cppstdin=`pwd`/cppstdin
  981. +                 cppminus='';
  982. +                 cd UU
  983. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  984. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  985. +                 echo "Eureka!."
  986. +                 else
  987. +                 dflt=blurfl
  988. +                 $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
  989. +                 rp='Name a C preprocessor:'
  990. +                 . myread
  991. +                 cppstdin="$ans"
  992. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  993. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  994. +                     echo "OK, that will do."
  995. +                 else
  996. +                     echo "Sorry, I can't get that to work.  Go find one."
  997. +                     exit 1
  998. +                 fi
  999. +                 fi
  1000. +             fi
  1001. +             fi
  1002. +         fi
  1003. +         fi
  1004. +     fi
  1005. +     fi
  1006. + fi
  1007. + rm -f testcpp.c testcpp.out
  1008.  
  1009. Index: mcon/U/d_charsprf.U
  1010. Prereq: 2.0
  1011. *** mcon/U/d_charsprf.U.old    Fri Aug  5 00:54:12 1988
  1012. --- mcon/U/d_charsprf.U    Fri Aug  5 00:54:13 1988
  1013. ***************
  1014. *** 1,9 ****
  1015. ! ?RCS:$Header: d_charsprf.U,v 2.0 88/06/28 23:14:20 lwall Exp $
  1016.   ?RCS: $Log:    d_charsprf.U,v $
  1017.   ?RCS: Revision 2.0  88/06/28  23:14:20  lwall
  1018.   ?RCS: Baseline.
  1019.   ?RCS: 
  1020. ! ?MAKE:d_charsprf: contains
  1021.   ?MAKE:    -pick add $@ %*
  1022.   ?S:d_charsprf:
  1023.   ?S:    This variable conditionally defines CHARSPRINTF if this system
  1024. --- 1,12 ----
  1025. ! ?RCS:$Header: d_charsprf.U,v 2.0.1.1 88/08/05 00:01:24 lwall Exp $
  1026.   ?RCS: $Log:    d_charsprf.U,v $
  1027. + ?RCS: Revision 2.0.1.1  88/08/05  00:01:24  lwall
  1028. + ?RCS: patch1: made it call the right version of cc
  1029. + ?RCS: 
  1030.   ?RCS: Revision 2.0  88/06/28  23:14:20  lwall
  1031.   ?RCS: Baseline.
  1032.   ?RCS: 
  1033. ! ?MAKE:d_charsprf: contains cc
  1034.   ?MAKE:    -pick add $@ %*
  1035.   ?S:d_charsprf:
  1036.   ?S:    This variable conditionally defines CHARSPRINTF if this system
  1037. ***************
  1038. *** 23,29 ****
  1039.   cat >.ucbsprf.c <<'EOF'
  1040.   main() { char buf[10]; exit((unsigned long)sprintf(buf,"%s","foo") > 10L); }
  1041.   EOF
  1042. ! if cc .ucbsprf.c -o .ucbsprf >/dev/null 2>&1 && .ucbsprf; then
  1043.       echo "Your sprintf() returns (int)."
  1044.       d_charsprf="$undef"
  1045.   else
  1046. --- 26,32 ----
  1047.   cat >.ucbsprf.c <<'EOF'
  1048.   main() { char buf[10]; exit((unsigned long)sprintf(buf,"%s","foo") > 10L); }
  1049.   EOF
  1050. ! if $cc .ucbsprf.c -o .ucbsprf >/dev/null 2>&1 && .ucbsprf; then
  1051.       echo "Your sprintf() returns (int)."
  1052.       d_charsprf="$undef"
  1053.   else
  1054.  
  1055. Index: mcon/U/d_dosuid.U
  1056. Prereq: 2.0
  1057. *** mcon/U/d_dosuid.U.old    Fri Aug  5 00:54:16 1988
  1058. --- mcon/U/d_dosuid.U    Fri Aug  5 00:54:17 1988
  1059. ***************
  1060. *** 1,5 ****
  1061. ! ?RCS:$Header: d_dosuid.U,v 2.0 88/06/29 00:18:20 lwall Exp $
  1062.   ?RCS: $Log:    d_dosuid.U,v $
  1063.   ?RCS: Revision 2.0  88/06/29  00:18:20  lwall
  1064.   ?RCS: Baseline.
  1065.   ?RCS: 
  1066. --- 1,8 ----
  1067. ! ?RCS:$Header: d_dosuid.U,v 2.0.1.1 88/08/05 00:01:46 lwall Exp $
  1068.   ?RCS: $Log:    d_dosuid.U,v $
  1069. + ?RCS: Revision 2.0.1.1  88/08/05  00:01:46  lwall
  1070. + ?RCS: patch1: now defaults to no
  1071. + ?RCS: 
  1072.   ?RCS: Revision 2.0  88/06/29  00:18:20  lwall
  1073.   ?RCS: Baseline.
  1074.   ?RCS: 
  1075. ***************
  1076. *** 27,38 ****
  1077.   ?H:?%1:
  1078.   : now see if they want to do setuid emulation
  1079.   case "$d_dosuid" in
  1080. ! '') if bsd; then
  1081. !     dflt=y
  1082. !     else
  1083. !     dflt=n
  1084. !     fi
  1085. !     ;;
  1086.   *undef*) dflt=n;;
  1087.   *) dflt=y;;
  1088.   esac
  1089. --- 30,36 ----
  1090.   ?H:?%1:
  1091.   : now see if they want to do setuid emulation
  1092.   case "$d_dosuid" in
  1093. ! '') dflt=n;;
  1094.   *undef*) dflt=n;;
  1095.   *) dflt=y;;
  1096.   esac
  1097.  
  1098. Index: mcon/U/d_getopt.U
  1099. *** mcon/U/d_getopt.U.old    Fri Aug  5 00:54:21 1988
  1100. --- mcon/U/d_getopt.U    Fri Aug  5 00:54:23 1988
  1101. ***************
  1102. *** 0 ****
  1103. --- 1,29 ----
  1104. + ?RCS: $Header: d_getopt.U,v 2.0.1.1 88/08/05 00:44:06 lwall Exp $
  1105. + ?X: d_getopt.U, from d_ftime.U 1.0
  1106. + ?X:
  1107. + ?RCS: $Log:    d_getopt.U,v $
  1108. + ?RCS: Revision 2.0.1.1  88/08/05  00:44:06  lwall
  1109. + ?RCS: dummy null revision.
  1110. + ?RCS: 
  1111. + ?MAKE:d_getopt: contains libc
  1112. + ?MAKE:    -pick add $@ %*
  1113. + ?S:d_getopt:
  1114. + ?S:    This variable conditionally defines the GETOPT symbol, which indicates
  1115. + ?S:    that the getopt() routine exists.  The getopt() routine parses command
  1116. + ?S:    line options in a standard fashion.
  1117. + ?S:.
  1118. + ?C:GETOPT:
  1119. + ?C:    This symbol, if defined, indicates that the getopt() routine exists.
  1120. + ?C:.
  1121. + ?H:?%1:#$d_getopt    GETOPT        /**/
  1122. + ?H:?%1:
  1123. + : see if getopt exists
  1124. + echo " "
  1125. + if $contains getopt libc.list >/dev/null 2>&1; then
  1126. +     echo 'getopt() found.'
  1127. +     d_getopt="$define"
  1128. + else
  1129. +     echo 'getopt() not found--will use our getopt instead.'
  1130. +     d_getopt="$undef"
  1131. + fi
  1132.  
  1133. Index: mcon/U/d_itimer.U
  1134. *** mcon/U/d_itimer.U.old    Fri Aug  5 00:54:25 1988
  1135. --- mcon/U/d_itimer.U    Fri Aug  5 00:54:26 1988
  1136. ***************
  1137. *** 0 ****
  1138. --- 1,45 ----
  1139. + ?RCS: $Header: d_itimer.U,v 2.0.1.1 88/08/05 00:44:50 lwall Exp $
  1140. + ?X: d_itimer.U, from d_ftime.U 1.0
  1141. + ?X:
  1142. + ?RCS: $Log:    d_itimer.U,v $
  1143. + ?RCS: Revision 2.0.1.1  88/08/05  00:44:50  lwall
  1144. + ?RCS: patch1: created
  1145. + ?RCS: 
  1146. + ?MAKE:d_itimer d_systime: contains libc
  1147. + ?MAKE:    -pick add $@ %*
  1148. + ?S:d_itimer:
  1149. + ?S:    This variable conditionally defines the ITIMER symbol, which indicates
  1150. + ?S:    that the setitimer() routine exists.  The setitimer() routine supports
  1151. + ?S:    sub-second accuracy for one real-time and two cpu clocks.
  1152. + ?S:.
  1153. + ?S:d_systime:
  1154. + ?S:    This variable contains the path of the include file which contains the
  1155. + ?S:    struct timeval and itimer definitions.
  1156. + ?S:.
  1157. + ?C:ITIMER:
  1158. + ?C:    This symbol, if defined, indicates that the setitimer() routine exists.
  1159. + ?C:.
  1160. + ?C:SYSTIME:
  1161. + ?C:    This symbol is the include file which contains the struct timeval and
  1162. + ?C:    itimer definitions.
  1163. + ?C:.
  1164. + ?H:?%1:#$d_itimer    ITIMER        /**/
  1165. + ?H:?%1:
  1166. + ?H:?%1:#define    SYSTIME    "$d_systime"    /**/
  1167. + ?H:?%1:
  1168. + : see if setitimer exists
  1169. + echo " "
  1170. + if $contains setitimer libc.list >/dev/null 2>&1; then
  1171. +     echo 'setitimer() found.'
  1172. +     d_itimer="$define"
  1173. +     if test -f /usr/include/sys/time.h; then
  1174. +     d_systime=/usr/include/sys/time.h
  1175. +     else
  1176. +     d_systime=/usr/include/time.h
  1177. +     fi
  1178. + else
  1179. +     echo 'setitimer() not found--timing may be less accurate.'
  1180. +     d_itimer="$undef"
  1181. +     d_systime=/usr/include/time.h
  1182. + fi
  1183.  
  1184. Index: mcon/U/d_mkdir.U
  1185. *** mcon/U/d_mkdir.U.old    Fri Aug  5 00:54:31 1988
  1186. --- mcon/U/d_mkdir.U    Fri Aug  5 00:54:33 1988
  1187. ***************
  1188. *** 0 ****
  1189. --- 1,31 ----
  1190. + ?RCS:$Header: d_mkdir.U,v 2.0.1.1 88/08/05 00:45:52 lwall Exp $
  1191. + ?RCS: $Log:    d_mkdir.U,v $
  1192. + ?RCS: Revision 2.0.1.1  88/08/05  00:45:52  lwall
  1193. + ?RCS: patch1: created
  1194. + ?RCS: 
  1195. + ?RCS: 
  1196. + ?RCS: 
  1197. + ?MAKE:d_mkdir: contains Guess
  1198. + ?MAKE:    -pick add $@ %*
  1199. + ?S:d_mkdir:
  1200. + ?S:    This variable conditionally defines the MKDIR symbol, which
  1201. + ?S:    indicates to the C program that the mkdir() routine is available
  1202. + ?S:    to create directories..
  1203. + ?S:.
  1204. + ?C:MKDIR:
  1205. + ?C:    This symbol, if defined, indicates that the mkdir routine is available
  1206. + ?C:    to create directories.  Otherwise you should fork off a new process to
  1207. + ?C:    exec /bin/mkdir.
  1208. + ?C:.
  1209. + ?H:?%1:#$d_mkdir    MKDIR        /**/
  1210. + ?H:?%1:
  1211. + : see if mkdir exists
  1212. + echo " "
  1213. + if $contains '^mkdir$' libc.list >/dev/null 2>&1; then
  1214. +     echo 'mkdir() found.'
  1215. +     d_mkdir="$define"
  1216. + else
  1217. +     echo 'mkdir() not found.'
  1218. +     d_mkdir="$undef"
  1219. + fi
  1220.  
  1221. Index: mcon/U/d_news.U
  1222. Prereq: 2.0
  1223. *** mcon/U/d_news.U.old    Fri Aug  5 00:54:35 1988
  1224. --- mcon/U/d_news.U    Fri Aug  5 00:54:36 1988
  1225. ***************
  1226. *** 1,4 ****
  1227. ! ?RCS:$Header: d_news.U,v 2.0 88/06/28 23:15:12 lwall Exp $
  1228.   ?RCS: 
  1229.   ?RCS: Revision 1.0  87/05/22  12:30:34  siegel
  1230.   ?RCS: This unit looks to see what window system you are using
  1231. --- 1,4 ----
  1232. ! ?RCS:$Header: d_news.U,v 2.0.1.1 88/08/05 00:10:39 lwall Exp $
  1233.   ?RCS: 
  1234.   ?RCS: Revision 1.0  87/05/22  12:30:34  siegel
  1235.   ?RCS: This unit looks to see what window system you are using
  1236. ***************
  1237. *** 6,12 ****
  1238.   ?RCS: 
  1239.   ?MAKE:d_news d_news0 d_newshome d_textcan: contains echo n Myread c
  1240.   ?MAKE:    -pick add $@ %*
  1241. ! ?INIT:d_newshome="../../NeWS"
  1242.   ?S:d_news:
  1243.   ?S:    Set if running NeWS 1.1
  1244.   ?S:.
  1245. --- 6,12 ----
  1246.   ?RCS: 
  1247.   ?MAKE:d_news d_news0 d_newshome d_textcan: contains echo n Myread c
  1248.   ?MAKE:    -pick add $@ %*
  1249. ! ?INIT:d_newshome="/usr/NeWS"
  1250.   ?S:d_news:
  1251.   ?S:    Set if running NeWS 1.1
  1252.   ?S:.
  1253.  
  1254. Index: mcon/U/d_nolnbuf.U
  1255. Prereq: 2.0
  1256. *** mcon/U/d_nolnbuf.U.old    Fri Aug  5 00:54:39 1988
  1257. --- mcon/U/d_nolnbuf.U    Fri Aug  5 00:54:40 1988
  1258. ***************
  1259. *** 1,9 ****
  1260. ! ?RCS:$Header: d_nolnbuf.U,v 2.0 88/06/28 23:15:22 lwall Exp $
  1261.   ?RCS: $Log:    d_nolnbuf.U,v $
  1262.   ?RCS: Revision 2.0  88/06/28  23:15:22  lwall
  1263.   ?RCS: Baseline.
  1264.   ?RCS: 
  1265. ! ?MAKE:d_nolnbuf: Guess n c echo test Myread
  1266.   ?MAKE:    -pick add $@ %*
  1267.   ?S:d_nolnbuf:
  1268.   ?S:    This variable conditionally defines the NOLINEBUF symbol, which
  1269. --- 1,12 ----
  1270. ! ?RCS:$Header: d_nolnbuf.U,v 2.0.1.1 88/08/05 00:11:08 lwall Exp $
  1271.   ?RCS: $Log:    d_nolnbuf.U,v $
  1272. + ?RCS: Revision 2.0.1.1  88/08/05  00:11:08  lwall
  1273. + ?RCS: patch1: made depend on cc
  1274. + ?RCS: 
  1275.   ?RCS: Revision 2.0  88/06/28  23:15:22  lwall
  1276.   ?RCS: Baseline.
  1277.   ?RCS: 
  1278. ! ?MAKE:d_nolnbuf: Guess n c echo test Myread cc
  1279.   ?MAKE:    -pick add $@ %*
  1280.   ?S:d_nolnbuf:
  1281.   ?S:    This variable conditionally defines the NOLINEBUF symbol, which
  1282. ***************
  1283. *** 33,39 ****
  1284.       putchar('\n');
  1285.   }
  1286.   EOT
  1287. !     cc blurfl.c -o blurfl
  1288.       rm -f blurfl.c
  1289.       cat <<'EOM'
  1290.   Checking for buffering of stdout to terminal.
  1291. --- 36,42 ----
  1292.       putchar('\n');
  1293.   }
  1294.   EOT
  1295. !     $cc blurfl.c -o blurfl
  1296.       rm -f blurfl.c
  1297.       cat <<'EOM'
  1298.   Checking for buffering of stdout to terminal.
  1299.  
  1300. Index: mcon/U/d_psignal.U
  1301. *** mcon/U/d_psignal.U.old    Fri Aug  5 00:54:42 1988
  1302. --- mcon/U/d_psignal.U    Fri Aug  5 00:54:43 1988
  1303. ***************
  1304. *** 0 ****
  1305. --- 1,29 ----
  1306. + ?RCS: $Header: d_psignal.U,v 2.0.1.1 88/08/05 00:46:36 lwall Exp $
  1307. + ?X: d_psignal.U, from d_ftime.U 1.0
  1308. + ?X:
  1309. + ?RCS: $Log:    d_psignal.U,v $
  1310. + ?RCS: Revision 2.0.1.1  88/08/05  00:46:36  lwall
  1311. + ?RCS: patch1: created
  1312. + ?RCS: 
  1313. + ?MAKE:d_psignal: contains libc
  1314. + ?MAKE:    -pick add $@ %*
  1315. + ?S:d_psignal:
  1316. + ?S:    This variable conditionally defines the PSIGNAL symbol, which indicates
  1317. + ?S:    that the psignal() routine exists.  The psignal() routine prints a
  1318. + ?S:    description of a signal on the standard error output.
  1319. + ?S:.
  1320. + ?C:PSIGNAL:
  1321. + ?C:    This symbol, if defined, indicates that the psignal() routine exists.
  1322. + ?C:.
  1323. + ?H:?%1:#$d_psignal    PSIGNAL        /**/
  1324. + ?H:?%1:
  1325. + : see if psignal exists
  1326. + echo " "
  1327. + if $contains psignal libc.list >/dev/null 2>&1; then
  1328. +     echo 'psignal() found.'
  1329. +     d_psignal="$define"
  1330. + else
  1331. +     echo 'psignal() not found--descriptions in siglist.h will be used.'
  1332. +     d_psignal="$undef"
  1333. + fi
  1334.  
  1335. Index: mcon/U/d_rusage.U
  1336. *** mcon/U/d_rusage.U.old    Fri Aug  5 00:54:46 1988
  1337. --- mcon/U/d_rusage.U    Fri Aug  5 00:54:47 1988
  1338. ***************
  1339. *** 0 ****
  1340. --- 1,30 ----
  1341. + ?RCS: $Header: d_rusage.U,v 2.0.1.1 88/08/05 00:47:20 lwall Exp $
  1342. + ?X: d_rusage.U, from d_ftime.U 1.0
  1343. + ?X:
  1344. + ?RCS: $Log:    d_rusage.U,v $
  1345. + ?RCS: Revision 2.0.1.1  88/08/05  00:47:20  lwall
  1346. + ?RCS: patch1: created
  1347. + ?RCS: 
  1348. + ?RCS: 
  1349. + ?MAKE:d_rusage: contains libc
  1350. + ?MAKE:    -pick add $@ %*
  1351. + ?S:d_rusage:
  1352. + ?S:    This variable conditionally defines the RUSAGE symbol, which indicates
  1353. + ?S:    that the getrusage() routine exists.  The getrusage() routine supports
  1354. + ?S:    sub-second accuracy for process cpu accounting.
  1355. + ?S:.
  1356. + ?C:RUSAGE:
  1357. + ?C:    This symbol, if defined, indicates that the getrusage() routine exists.
  1358. + ?C:.
  1359. + ?H:?%1:#$d_rusage    RUSAGE        /**/
  1360. + ?H:?%1:
  1361. + : see if getrusage exists
  1362. + echo " "
  1363. + if $contains getrusage libc.list >/dev/null 2>&1; then
  1364. +     echo 'getrusage() found.'
  1365. +     d_rusage="$define"
  1366. + else
  1367. +     echo 'getrusage() not found--cpu accounting may be less accurate.'
  1368. +     d_rusage="$undef"
  1369. + fi
  1370.  
  1371. Index: mcon/U/d_sgndchr.U
  1372. Prereq: 2.0
  1373. *** mcon/U/d_sgndchr.U.old    Fri Aug  5 00:54:53 1988
  1374. --- mcon/U/d_sgndchr.U    Fri Aug  5 00:54:54 1988
  1375. ***************
  1376. *** 1,9 ****
  1377. ! ?RCS:$Header: d_sgndchr.U,v 2.0 88/06/28 23:15:43 lwall Exp $
  1378.   ?RCS: $Log:    d_sgndchr.U,v $
  1379.   ?RCS: Revision 2.0  88/06/28  23:15:43  lwall
  1380.   ?RCS: Baseline.
  1381.   ?RCS: 
  1382. ! ?MAKE:d_sgndchr: cat rm
  1383.   ?MAKE:    -pick add $@ %*
  1384.   ?S:d_sgndchr:
  1385.   ?S:    This variable conditionally defines the SIGNEDCHAR symbol, which
  1386. --- 1,12 ----
  1387. ! ?RCS:$Header: d_sgndchr.U,v 2.0.1.1 88/08/05 00:13:54 lwall Exp $
  1388.   ?RCS: $Log:    d_sgndchr.U,v $
  1389. + ?RCS: Revision 2.0.1.1  88/08/05  00:13:54  lwall
  1390. + ?RCS: patch1: made depend on cc
  1391. + ?RCS: 
  1392.   ?RCS: Revision 2.0  88/06/28  23:15:43  lwall
  1393.   ?RCS: Baseline.
  1394.   ?RCS: 
  1395. ! ?MAKE:d_sgndchr: cat rm cc
  1396.   ?MAKE:    -pick add $@ %*
  1397.   ?S:d_sgndchr:
  1398.   ?S:    This variable conditionally defines the SIGNEDCHAR symbol, which
  1399. ***************
  1400. *** 28,34 ****
  1401.       exit(c >= 0);
  1402.   }
  1403.   EOCP
  1404. ! cc -o a.out try.c
  1405.   if a.out; then
  1406.       d_sgndchr="$define"
  1407.       echo "It certainly can."
  1408. --- 31,37 ----
  1409.       exit(c >= 0);
  1410.   }
  1411.   EOCP
  1412. ! $cc -o a.out try.c
  1413.   if a.out; then
  1414.       d_sgndchr="$define"
  1415.       echo "It certainly can."
  1416.  
  1417.  
  1418.