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

  1. Subject:  v16i037:  Larry Wall's Configure generator, etc., Part04/07
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: lwall@jpl-devvax.jpl.nasa.gov (Larry Wall)
  7. Posting-number: Volume 16, Issue 37
  8. Archive-name: dist2/part04
  9.  
  10. #! /bin/sh
  11.  
  12. # Make a new directory for the dist sources, cd to it, and run kits 1
  13. # thru 7 through sh.  When all 7 kits have been run, read README.
  14.  
  15. echo "This is dist 2.0 kit 4 (of 7).  If kit 4 is complete, the line"
  16. echo '"'"End of kit 4 (of 7)"'" will echo at the end.'
  17. echo ""
  18. export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
  19. mkdir kit mcon mcon/U pat 2>/dev/null
  20. echo Extracting mcon/U/d_news.U
  21. sed >mcon/U/d_news.U <<'!STUFFY!FUNK!' -e 's/X//'
  22. X?RCS:$Header: d_news.U,v 2.0 88/06/28 23:15:12 lwall Locked $
  23. X?RCS: 
  24. X?RCS: Revision 1.0  87/05/22  12:30:34  siegel
  25. X?RCS: This unit looks to see what window system you are using
  26. X?RCS: Initial revision
  27. X?RCS: 
  28. X?MAKE:d_news d_news0 d_newshome d_textcan: contains echo n Myread c
  29. X?MAKE:    -pick add $@ %*
  30. X?INIT:d_newshome="../../NeWS"
  31. X?S:d_news:
  32. X?S:    Set if running NeWS 1.1
  33. X?S:.
  34. X?S:d_news0:
  35. X?S:    Set if running NeWS 1.0
  36. X?S:.
  37. X?S:d_newshome:
  38. X?S:    Path to the top directory of the NeWS structure.
  39. X?S:.
  40. X?S:d_textcan:
  41. X?S:    Path to where the textcan.ps stuff is...
  42. X?S:.
  43. X?C:NEWS1_1:
  44. X?C:    This symbol defined if running NeWS 1.1.
  45. X?C:.
  46. X?C:NEWS1_0:
  47. X?C:    This symbol defined if running NeWS 1.0.
  48. X?C:.
  49. X?C:TEXTCAN:
  50. X?C:    Tells path to where the textcan.ps stuff is...
  51. X?C:.
  52. X?H:?%1:#$d_news            NEWS1_1     /**/
  53. X?H:?%1:#$d_news0        NEWS1_0     /**/
  54. X?H:?%1:#define TEXTCAN    $d_textcan /**/
  55. X?H:?%1:
  56. X: Check to see what version of NeWS is being run?
  57. Xcd ..
  58. Xecho " "
  59. X$echo "Now for the interesting stuff... Lets see what kind of NeWS"
  60. X$echo "they grow round here...."
  61. Xecho " "
  62. X
  63. Xdflt='y'
  64. X
  65. Xans='foobar'
  66. X
  67. Xif $test -d $d_newshome; then
  68. Xd_newshome=`(cd $d_newshome ; /bin/pwd)`
  69. X$echo "Ah...found myself a NeWS in $d_newshome..."
  70. X$echo $n "Is this the NeWS you want your children to grow up with? [$dflt] $c"
  71. Xrp="use $d_newshome? [$dflt] "
  72. X. UU/myread
  73. Xfi
  74. X
  75. Xwhile $test $ans = "n" -o ! -d $d_newshome; do
  76. X    ans='y'
  77. X    $echo $n "Path to NeWS you want [$d_newshome] $c"
  78. X    rp="NeWS to use [$d_newshome] "
  79. X    . UU/myread
  80. X    d_newshome=$ans
  81. X    if $test ! -d $d_newshome; then
  82. X    $echo "No directory with the name of $d_newshome.."
  83. X    fi
  84. X    ans='y'
  85. Xdone
  86. X
  87. Xecho " "
  88. Xif $test ! -d $d_newshome/lib; then
  89. X    $echo "ARG!  No lib directory in $d_newshome!!!"
  90. X    $rm -f kit*isdone
  91. X    $rm -rf UU
  92. X    set -t; $echo " sorry... no NeWS is bad news..."
  93. Xfi
  94. X
  95. Xif $test -r $d_newshome/lib/NeWS/colors.ps ; then
  96. X    $echo 'Ahh... your running NeWS 1.1!  Boy... that makes stuff'
  97. X    $echo 'easy....'
  98. X    echo " "
  99. X    d_news="$define" 
  100. X    d_news0="$undef"
  101. X    if $test -r $d_newshome/lib/NeWS/textcan.ps; then
  102. X    d_textcan=$d_newshome/lib/NeWS
  103. X    $echo "The textcan.ps stuff seems to be in :"
  104. X    $echo $n "   "
  105. X    $echo $d_textcan
  106. X    else
  107. X    d_textcan=$d_newshome/clientsrc/client/nterm
  108. X    if $test ! -r $d_textcan/textcan.ps; then
  109. X            d_news="$undef"
  110. X            d_news0="$define"
  111. X        $echo 'Hmm... must have been fooled... gotta be NeWS 1.1 beta!'
  112. X    else
  113. X        $echo "The textcan.ps stuff seems to be in :"
  114. X        $echo $n "   "
  115. X        $echo $d_textcan
  116. X    fi
  117. X    fi
  118. Xelse
  119. X    $echo 'snif... snif... I smell the dilapidated smell of NeWS 1.0..'
  120. X    $echo 'Some things will not work under NeWS 1.0...'
  121. X    echo " "
  122. X    d_news="$undef"
  123. X    d_news0="$define"
  124. Xfi
  125. Xcd UU
  126. X
  127. !STUFFY!FUNK!
  128. echo Extracting pat/mailagent
  129. sed >pat/mailagent <<'!STUFFY!FUNK!' -e 's/X//'
  130. X#!/usr/bin/perl
  131. X
  132. X# You'll need to set up a .forward file that feeds your mail to this script.
  133. X# Mine looks like this:
  134. X#   "| /a/lwall/bin/mailagent /a/lwall lwall Larry >>/usr/spool/mail/lwall 2>&1"
  135. X# Actually, this doesn't work real good, since I don't lock the mail file.
  136. X# Someday I'll fix this.  For now, put something like
  137. X#   lwall, "| /a/lwall/bin/mailagent /a/lwall lwall Larry >>/a/lwall/.bak 2>&1"
  138. X
  139. X($HOME, $USER, $NAME) = @ARGV;
  140. X
  141. X$ENV{'PATH'}="$1:/bin:/usr/bin:/usr/ucb";
  142. X$ENV{'IFS'} = '' if $ENV{'IFS'};
  143. X
  144. X$hostname = `hostname`;
  145. X
  146. Xexec '/bin/cat' unless $NAME;
  147. Xexec '/bin/cat' unless chdir $HOME;
  148. Xexec '/bin/cat' unless $hostname =~ /vax/;
  149. X
  150. X$HOME=`pwd`;
  151. Xchop($HOME);
  152. X$ENV{'HOME'} = $HOME;
  153. X$ENV{'USER'} = $USER;
  154. X$ENV{'NAME'} = $NAME;
  155. X
  156. Xumask(022);
  157. X
  158. Xif (open(commands,".commands")) {
  159. X    while (<commands>) {
  160. X    chop;
  161. X    $command{$_} = 1;
  162. X    }
  163. X    close(commands);
  164. X}
  165. X
  166. X$dest = $USER;
  167. X$cmd = "set -x\n";
  168. Xline: while (<stdin>) {
  169. X    $all .= $_;
  170. X    s/^From ([^     ]*).*$/$1/ && ($dest = $1);
  171. X    /@RR/ && ($ack = 1);
  172. X    if (1 .. /^$/) {
  173. X    if (/^Apparently-To:.*admin/) { $admin = 1; }
  174. X    if (/^To:.*admin/) { $admin = 1; }
  175. X    if (/^Cc:.*admin/) { $admin = 1; }
  176. X    }
  177. X    if (/^Subject:[ \t]*(.*)/) { $subj = $1; }
  178. X    if (/^Title:[ \t]*(.*)/) { $subj = $1; }
  179. X    if (/^Subject:[     ]*[Cc]ommand[     ]*$/ .. 99) {
  180. X    s/^    @SH/@SH/;
  181. X    if (/^@SH/) {
  182. X        s/\\!/!/g;
  183. X        if (/[=$^&*([{}`\\|;>?]/) {
  184. X        s/^@SH/bad cmd:/;
  185. X        $bad .= $_;
  186. X        next line;
  187. X        }
  188. X        s/ PATH/ $dest/;
  189. X        s/SH mailpath/SH mailpatch/;
  190. X        s/@SH[     ]*//;
  191. X        if (/^([^ \t]+)[ \t]/) {
  192. X        $first = $1;
  193. X        }
  194. X        else {
  195. X        $first = $_;
  196. X        chop($first);
  197. X        }
  198. X        if (!$command{$first}) {
  199. X        s/^/unk cmd: /;
  200. X        $bad .= $_;
  201. X        next line;
  202. X        }
  203. X        $cmd .= $_;
  204. X    }
  205. X    }
  206. X}
  207. X
  208. Xif ($dest ne $USER) {
  209. X
  210. X    if ($cmd ne "set -x\n") {
  211. X    open(cmd,">/tmp/mess.cmd$$");
  212. X    print cmd $cmd;
  213. X    close cmd;
  214. X    $tmp = `sh -x /tmp/mess.cmd$$ 2>&1`;
  215. X    if ($?) {
  216. X        open(mailer,"|/bin/mail $dest $USER");
  217. X        print mailer
  218. X"Subject: the following returned a non-zero status
  219. XTo: $dest
  220. X
  221. X$tmp
  222. X
  223. Xmailagent speaking for $USER
  224. X";
  225. X        close mailer;
  226. X    }
  227. X    unlink "/tmp/mess.cmd$$";
  228. X    }
  229. X
  230. X    if ($ack) {
  231. X    open(mailer,"|/bin/mail $dest $USER");
  232. X    print mailer
  233. X"Subject: $subj
  234. XTo: $dest
  235. X
  236. XHere is the receipt you requested.
  237. X
  238. Xmailagent speaking for $USER
  239. X";
  240. X    close mailer;
  241. X    }
  242. X
  243. X    if ($bad) {
  244. X    open(mailer,"|/bin/mail $dest $USER");
  245. X    print mailer
  246. X"Subject: the following commands were not executed
  247. XTo: $dest
  248. X
  249. X$bad
  250. X
  251. XIf $NAME can figure out what you wanted he may do it anyway.
  252. X
  253. Xmailagent speaking for $USER
  254. X";
  255. X    close mailer;
  256. X    }
  257. X}
  258. X
  259. Xif ($admin) {
  260. X    open(out,">>.junk");
  261. X    select(out);
  262. X}
  263. X
  264. Xprint $all,"\n\n";
  265. X
  266. !STUFFY!FUNK!
  267. echo Extracting mcon/U/registers.U
  268. sed >mcon/U/registers.U <<'!STUFFY!FUNK!' -e 's/X//'
  269. X?RCS:$Header: registers.U,v 2.0 88/06/28 23:18:11 lwall Locked $
  270. X?RCS: $Log:    registers.U,v $
  271. X?RCS: Revision 2.0  88/06/28  23:18:11  lwall
  272. X?RCS: Baseline.
  273. X?RCS: 
  274. X?MAKE:registers reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 reg12 reg13 reg14 reg15 reg16: Cppsym echo n c Myread Oldconfig
  275. X?MAKE:    -pick add $@ %*
  276. X?S:registers:
  277. X?S:    This variable contains the number of register declarations paid
  278. X?S:    attention to by the C compiler.
  279. X?S:.
  280. X?S:reg1:
  281. X?S:    This variable, along with reg2, reg3, etc. contains the eventual
  282. X?S:    value for the symbols Reg1, Reg2, Reg3, etc.  It has either the
  283. X?S:    value "register" or is null.
  284. X?S:.
  285. X?C:Reg1:
  286. X?C:    This symbol, along with Reg2, Reg3, etc. is either the word "register"
  287. X?C:    or null, depending on whether the C compiler pays attention to this
  288. X?C:    many register declarations.  The intent is that you don't have to
  289. X?C:    order your register declarations in the order of importance, so you
  290. X?C:    can freely declare register variables in sub-blocks of code and as
  291. X?C:    function parameters.  Do not use Reg<n> more than once per routine.
  292. X?C:.
  293. X?H:?%1:
  294. X?H:?%1:#define Reg1 $reg1        /**/
  295. X?H:?%1:#define Reg2 $reg2        /**/
  296. X?H:?%1:#define Reg3 $reg3        /**/
  297. X?H:?%1:#define Reg4 $reg4        /**/
  298. X?H:?%1:#define Reg5 $reg5        /**/
  299. X?H:?%1:#define Reg6 $reg6        /**/
  300. X?H:?%1:#define Reg7 $reg7        /**/
  301. X?H:?%1:#define Reg8 $reg8        /**/
  302. X?H:?%1:#define Reg9 $reg9        /**/
  303. X?H:?%1:#define Reg10 $reg10        /**/
  304. X?H:?%1:#define Reg11 $reg11        /**/
  305. X?H:?%1:#define Reg12 $reg12        /**/
  306. X?H:?%1:#define Reg13 $reg13        /**/
  307. X?H:?%1:#define Reg14 $reg14        /**/
  308. X?H:?%1:#define Reg15 $reg15        /**/
  309. X?H:?%1:#define Reg16 $reg16        /**/
  310. X?H:?%1:
  311. X: see how many register declarations we want to use
  312. Xcase "$registers" in
  313. X'')
  314. X    if Cppsym vax; then
  315. X    dflt=6
  316. X    elif Cppsym sun mc68000; then
  317. X    dflt=10
  318. X    elif Cppsym pyr; then
  319. X    dflt=14
  320. X    elif Cppsym ns32000 ns16000; then
  321. X    dflt=5
  322. X    elif Cppsym $smallmach; then
  323. X    dflt=3
  324. X    else
  325. X    : if you have any other numbers for me, send them in
  326. X    dflt=6
  327. X    fi
  328. X    ;;
  329. X*)  dflt=$registers ;;
  330. Xesac
  331. Xcat <<EOM
  332. XDifferent C compilers on different machines pay attention to different
  333. Xnumbers of register declarations.  About how many register declarations in
  334. XEOM
  335. X$echo $n "each routine does your C compiler pay attention to? (OK to guess) [$dflt] $c"
  336. Xrp="# register declarations used? [$dflt]"
  337. X. myread
  338. Xregisters=$ans
  339. Xreg1=''
  340. Xawk "BEGIN { for (i=1; i<=16; i++) printf \"reg%d=''\n\", i}" </dev/null >.foo
  341. X. .foo
  342. Xawk "BEGIN { for (i=1; i<=$registers; i++) printf \"reg%d=register\n\", i}" \
  343. X    </dev/null >.foo
  344. X. .foo
  345. Xrm -f .foo
  346. X
  347. !STUFFY!FUNK!
  348. echo Extracting pat/pat.SH
  349. sed >pat/pat.SH <<'!STUFFY!FUNK!' -e 's/X//'
  350. Xcase $CONFIG in
  351. X'')
  352. X    if test ! -f config.sh; then
  353. X    ln ../config.sh . || \
  354. X    ln ../../config.sh . || \
  355. X    ln ../../../config.sh . || \
  356. X    (echo "Can't find config.sh."; exit 1)
  357. X    echo "Using config.sh from above..."
  358. X    fi
  359. X    . ./config.sh
  360. X    ;;
  361. Xesac
  362. X: This forces SH files to create target in same directory as SH file.
  363. X: This is so that make depend always knows where to find SH derivatives.
  364. Xcase "$0" in
  365. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  366. Xesac
  367. Xecho "Extracting pat (with variable substitutions)"
  368. Xcat >pat <<!GROK!THIS!
  369. X#!/usr/bin/perl
  370. X    eval "exec /usr/bin/perl -S \$0 \$*"
  371. X        if \$running_under_some_shell;
  372. X
  373. X# $Header: pat.SH,v 2.0 88/06/28 23:19:17 lwall Locked $
  374. X#
  375. X# $Log:    pat.SH,v $
  376. X# Revision 2.0  88/06/28  23:19:17  lwall
  377. X# Baseline.
  378. X# 
  379. X# 
  380. X
  381. X!GROK!THIS!
  382. X
  383. X: In the following dollars and backticks do not need the extra backslash.
  384. Xcat >>pat <<'!NO!SUBS!'
  385. X
  386. Xdie "pat [files]\n" unless $#ARGV >= 0;
  387. X
  388. Xdo readpackage();
  389. X
  390. Xif ($ARGV[0] eq '-n') {
  391. X    open(FIND, "find . -type f -newer patchlevel.h -print | sort |") ||
  392. X    die "Can't run find.\n";
  393. X    open(NEWER,">.newer") || die "Can't create .newer.\n";
  394. X    open(MANI,"MANIFEST.new");
  395. X    while (<MANI>) {
  396. X        ($name,$foo) = split;
  397. X        $mani{$name} = 1;
  398. X    }
  399. X    close MANI;
  400. X    while (<FIND>) {
  401. X    s|^\./||;
  402. X    chop;
  403. X    if (!$mani{$_}) {
  404. X        next if m|^MANIFEST.new$|;
  405. X        next if m|^Wanted$|;
  406. X        next if m|^bugs|;
  407. X        next if m|^UU/|;
  408. X        next if m|^RCS/|;
  409. X        next if m|/RCS/|;
  410. X        next if m|^config.sh$|;
  411. X        next if m|/config.sh$|;
  412. X        next if m|^make.out$|;
  413. X        next if m|/make.out$|;
  414. X        next if m|^all$|;
  415. X        next if m|/all$|;
  416. X        next if m|^core$|;
  417. X        next if m|/core$|;
  418. X        next if m|^foo|;
  419. X        next if m|/foo|;
  420. X        next if m|^blurfl|;
  421. X        next if m|/blurfl|;
  422. X        next if m|^\.|;
  423. X        next if m|/\.|;
  424. X        next if m|\.o$|;
  425. X        next if m|\.old$|;
  426. X        next if m|\.orig$|;
  427. X        next if $mani{$_ . ".SH"};
  428. X        next if m|(.*)\.c$| && $mani{$1 . ".y"};
  429. X        next if -x $_;
  430. X    }
  431. X    print NEWER $_,"\n";
  432. X    }
  433. X    close FIND;
  434. X    close NEWER;
  435. X    print "Please remove unwanted files...\n";
  436. X    sleep(2);
  437. X    system '${EDITOR-vi} .newer';
  438. X    @ARGV = split(' ',`cat .newer`);
  439. X}
  440. Xelsif ($ARGV[0] eq '-a') {
  441. X    open(MANI,"MANIFEST.new") || die "No MANIFEST.new found.\n";
  442. X    @ARGV = ();
  443. X    while (<MANI>) {
  444. X    chop;
  445. X    ($_) = split(' ');
  446. X    push(@ARGV,$_);
  447. X    }
  448. X    close MANI;
  449. X}
  450. X
  451. Xunlink <bugs/*.[1-9] bugs/*.[1-9][0-9]>;
  452. X
  453. Xsystem 'perl', '-S', 'patcil', '-p', @ARGV;
  454. Xsystem 'perl', '-S', 'patdiff', @ARGV;
  455. Xsystem 'perl', '-S', 'patmake';
  456. X
  457. X!NO!SUBS!
  458. Xcat ../pl/package.pl >>pat
  459. Xchmod +x pat
  460. X$eunicefix pat
  461. !STUFFY!FUNK!
  462. echo Extracting pat/patsend.SH
  463. sed >pat/patsend.SH <<'!STUFFY!FUNK!' -e 's/X//'
  464. Xcase $CONFIG in
  465. X'')
  466. X    if test ! -f config.sh; then
  467. X    ln ../config.sh . || \
  468. X    ln ../../config.sh . || \
  469. X    ln ../../../config.sh . || \
  470. X    (echo "Can't find config.sh."; exit 1)
  471. X    echo "Using config.sh from above..."
  472. X    fi
  473. X    . ./config.sh
  474. X    ;;
  475. Xesac
  476. X: This forces SH files to create target in same directory as SH file.
  477. X: This is so that make depend always knows where to find SH derivatives.
  478. Xcase "$0" in
  479. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  480. Xesac
  481. Xecho "Extracting patsend (with variable substitutions)"
  482. Xcat >patsend <<!GROK!THIS!
  483. X#!/usr/bin/perl
  484. X        eval "exec /usr/bin/perl -S \$0 \$*"
  485. X                if \$running_under_some_shell;
  486. X
  487. X# $Header: patsend.SH,v 2.0 88/06/28 23:19:54 lwall Locked $
  488. X#
  489. X# $Log:    patsend.SH,v $
  490. X# Revision 2.0  88/06/28  23:19:54  lwall
  491. X# Baseline.
  492. X# 
  493. X
  494. X\$orgname='$orgname';
  495. X!GROK!THIS!
  496. X
  497. X: In the following dollars and backticks do not need the extra backslash.
  498. Xcat >>patsend <<'!NO!SUBS!'
  499. X
  500. Xchop($orgname = `cat $orgname`) if $orgname =~ m|^/|;
  501. X
  502. Xchdir '..' if -f '../.package';
  503. X
  504. Xdo readpackage();
  505. X
  506. Xwhile ($_ = shift) {
  507. X    if (/^(patch)?[1-9][\d,-]*$/) {
  508. X    s/^patch//;
  509. X    push(@argv,$_);
  510. X    }
  511. X    else {
  512. X    push(@dest,$_);
  513. X    }
  514. X}
  515. X$dest = join(' ',@dest);
  516. Xdie "patsend dest [patches]\n" unless $dest;
  517. X
  518. X@ARGV = @argv;
  519. X
  520. Xopen(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
  521. Xwhile (<PL>) {
  522. X    $maxnum = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
  523. X}
  524. Xclose PL;
  525. Xdie "Malformed patchlevel.h file.\n" if $maxnum eq '';
  526. X
  527. Xif ($#ARGV < 0) {
  528. X    $argv = $maxnum;
  529. X    @ARGV = $argv;
  530. X}
  531. Xelse {
  532. X    $argv = do rangeargs(@ARGV);
  533. X    @ARGV = split(' ',$argv);
  534. X}
  535. X
  536. X$argv =~ s/ $//;
  537. X
  538. Xif ($#ARGV < 0) {
  539. X    die "No patches specified.\n";
  540. X}
  541. Xelsif ($#ARGV) {
  542. X    print "Sending $package $baserev patches $argv to $dest...\n";
  543. X}
  544. Xelse {
  545. X    print "Sending $package $baserev patch $argv to $dest...\n";
  546. X}
  547. X
  548. Xchdir 'bugs' || die "Can't cd to bugs\n";
  549. X
  550. Xfork && exit;
  551. X
  552. Xuntil ($#ARGV < 0) {
  553. X    $patnum = shift;
  554. X    open(XHEAD,">.xhead$$") || die "Can't create temp file.\n";
  555. X    print XHEAD
  556. X"Subject: $package $baserev patch #$patnum
  557. XOrganization: $orgname
  558. X
  559. X[The latest patch for $package version $baserev is #$maxnum.]
  560. X
  561. X";
  562. X    open(PATCH,"patch$patnum") || die "Can't open patch$_\n";
  563. X    while (<PATCH>) {
  564. X        print XHEAD;
  565. X    }
  566. X    close XHEAD;
  567. X    system "/bin/mail $dest <.xhead$$";
  568. X}
  569. Xunlink ".xhead$$";
  570. X
  571. X!NO!SUBS!
  572. Xcat ../pl/package.pl >>patsend
  573. Xcat ../pl/rangeargs.pl >>patsend
  574. Xchmod +x patsend
  575. X$eunicefix patsend
  576. !STUFFY!FUNK!
  577. echo Extracting mcon/U/d_havetlib.U
  578. sed >mcon/U/d_havetlib.U <<'!STUFFY!FUNK!' -e 's/X//'
  579. X?RCS:$Header: d_havetlib.U,v 2.0 88/06/28 23:14:50 lwall Locked $
  580. X?RCS: $Log:    d_havetlib.U,v $
  581. X?RCS: Revision 2.0  88/06/28  23:14:50  lwall
  582. X?RCS: Baseline.
  583. X?RCS: 
  584. X?MAKE:d_havetlib termlib: echo contains n c Myread Loc Filexp Oldconfig
  585. X?MAKE:    -pick add $@ %*
  586. X?S:d_havetlib:
  587. X?S:    This variable conditionally defines the HAVETERMLIB symbol, which
  588. X?S:    indicates to the C program that termlib-style routines are available.
  589. X?S:.
  590. X?S:termlib:
  591. X?S:    This variable contains the argument to pass to the loader to get
  592. X?S:    termlib-style routines.  It is up to the Makefile.SH to make sure
  593. X?S:    the value gets to the right command.  Note that on many systems the
  594. X?S:    termlib routines are emulated by the curses or terminfo library.
  595. X?S:.
  596. X?C:HAVETERMLIB:
  597. X?C:    This symbol, when defined, indicates that termlib-style routines
  598. X?C:    are available.  There is nothing to include.
  599. X?C:.
  600. X?H:?%1:#$d_havetlib    HAVETERMLIB    /**/
  601. X?H:?%1:
  602. X: where do we get termlib routines from
  603. Xecho " "
  604. Xans=`loc libcurses.a x $libpth`
  605. Xcase "$ans" in
  606. X/*)
  607. X    ar t $ans >grimble
  608. X    if $contains tputs.o grimble >/dev/null 2>&1; then
  609. X    termlib='-lcurses'
  610. X    d_havetlib="$define"
  611. X    echo "Terminfo library found."
  612. X    else
  613. X    ans=x
  614. X    fi
  615. X    rm -f grimble
  616. X    ;;
  617. Xesac
  618. Xcase "$ans" in
  619. Xx)
  620. X    ans=`loc libtermlib.a x $libpth`
  621. X    case "$ans" in
  622. X    /usr/lib*|/lib*)
  623. X    termlib='-ltermlib'
  624. X    d_havetlib="$define"
  625. X    echo "Termlib library found."
  626. X    ;;
  627. X    /*)
  628. X    termlib="$ans"
  629. X    d_havetlib="$define"
  630. X    echo "Termlib library found."
  631. X    ;;
  632. X    *)
  633. X    ans=`loc libtermcap.a x $libpth`
  634. X    case "$ans" in
  635. X    /usr/lib*|/lib*)
  636. X        termlib='-ltermcap'
  637. X        d_havetlib="$define"
  638. X        echo "Termcap library found."
  639. X        ;;
  640. X    /*)
  641. X        termlib="$ans"
  642. X        d_havetlib="$define"
  643. X        echo "Termcap library found."
  644. X        ;;
  645. X    *)
  646. X        case "$termlib" in
  647. X        '')
  648. X        dflt=y
  649. X        rp="Your system appears to NOT have termlib-style routines.  Is this true? [$dflt]"
  650. X        $echo $n "$rp $c"
  651. X        . myread
  652. X        case "$ans" in
  653. X            n*|f*) d_havetlib="$define"
  654. X              echo "Then where are the termlib-style routines kept (specify either -llibname"
  655. X              $echo $n " or full pathname (~name ok))? $c"
  656. X              rp='Specify termlib:'
  657. X              . myread
  658. X              termlib=`filexp $ans`
  659. X              ;;
  660. X            *)    d_havetlib="$undef"
  661. X              termlib=''
  662. X              echo "You will have to play around with term.c then."
  663. X              ;;
  664. X        esac
  665. X        echo " "
  666. X        ;;
  667. X        *)  echo "You said termlib was $termlib before."
  668. X        ;;
  669. X        esac
  670. X        ;;
  671. X    esac
  672. X    ;;
  673. X    esac
  674. X    ;;
  675. Xesac
  676. X
  677. !STUFFY!FUNK!
  678. echo Extracting mcon/U/Instruct.U
  679. sed >mcon/U/Instruct.U <<'!STUFFY!FUNK!' -e 's/X//'
  680. X?RCS:$Header: Instruct.U,v 2.0 88/06/28 23:13:21 lwall Locked $
  681. X?X: 
  682. X?X: This unit spew out the directions that we want everyone to read.  I try to
  683. X?X: keep the first "pagefull" much less than a page since they don't know it
  684. X?X: isn't going to go shooting off the top of the screen, and we don't want
  685. X?X: to panic them yet.
  686. X?X: 
  687. X?RCS: $Log:    Instruct.U,v $
  688. X?RCS: Revision 2.0  88/06/28  23:13:21  lwall
  689. X?RCS: Baseline.
  690. X?RCS: 
  691. X?MAKE:Instruct: package n c Myread
  692. X?MAKE:    -pick add $@ %*
  693. X: general instructions
  694. Xcat <<EOH
  695. XThis installation shell script will examine your system and ask you questions
  696. Xto determine how the $package package should be installed.  If you get stuck
  697. Xon a question, you may use a ! shell escape to start a subshell or execute
  698. Xa command.  Many of the questions will have default answers in square
  699. Xbrackets--typing carriage return will give you the default.
  700. X
  701. XOn some of the questions which ask for file or directory names you are
  702. Xallowed to use the ~name construct to specify the login directory belonging
  703. Xto "name", even if you don't have a shell which knows about that.  Questions
  704. Xwhere this is allowed will be marked "(~name ok)".
  705. X
  706. XEOH
  707. Xrp="[Type carriage return to continue]"
  708. X?X: echo not set yet so use builtin, not $echo
  709. Xecho $n "$rp $c"
  710. X. myread
  711. Xcat <<EOH
  712. X
  713. XMuch effort has been expended to ensure that this shell script will run
  714. Xon any Unix system.  If despite that it blows up on you, your best bet is
  715. Xto edit Configure and run it again. Also, let me (lwall@jpl-devvax.jpl.nasa.gov)
  716. Xknow how I blew it.  If you can't run Configure for some reason, you'll have
  717. Xto generate a config.sh file by hand.
  718. X
  719. XThis installation script affects things in two ways: 1) it may do direct
  720. Xvariable substitutions on some of the files included in this kit, and
  721. X2) it builds a config.h file for inclusion in C programs.  You may edit
  722. Xany of these files as the need arises after running this script.
  723. X
  724. XIf you make a mistake on a question, there is no easy way to back up to it
  725. Xcurrently.  The easiest thing to do is to edit config.sh and rerun all the
  726. XSH files.  Configure will offer to let you do this before it runs the SH files.
  727. X
  728. XEOH
  729. Xrp="[Type carriage return to continue]"
  730. Xecho $n "$rp $c"
  731. X. myread
  732. X
  733. !STUFFY!FUNK!
  734. echo Extracting pat/mailpatch
  735. sed >pat/mailpatch <<'!STUFFY!FUNK!' -e 's/X//'
  736. X#!/bin/sh
  737. X
  738. X# You'll have to customize this to know about your own packages.  Also, copy
  739. X# rangeargs to your private bin directory, or change invocations below.
  740. X
  741. Xcmd=`date`"  $@ "
  742. Xcd $HOME
  743. X
  744. Xdest=$1
  745. Xshift
  746. Xsystem=$1
  747. Xshift
  748. Xversion=$1
  749. Xshift
  750. Xcase "$system" in
  751. Xdist)
  752. X    cd /u/sfoc/lwall/src/dist/bugs
  753. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel.h`
  754. X    curversion='1.0'
  755. X    ;;
  756. Xperl)
  757. X    cd /usr/local/src/perl/bugs
  758. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel.h`
  759. X    curversion='2.0'
  760. X    ;;
  761. Xrn)
  762. X    cd /u/sfoc/lwall/src/rn/bugs
  763. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel`
  764. X    curversion='4.3'
  765. X    ;;
  766. Xpatch)
  767. X    cd /u/sfoc/lwall/src/patch/bugs
  768. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel.h`
  769. X    curversion='2.0'
  770. X    ;;
  771. Xwarp)
  772. X    cd /u/sfoc/lwall/src/warp/bugs
  773. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel.h`
  774. X    curversion='7.0'
  775. X    ;;
  776. Xcdiff)
  777. X    cd /u/sfoc/lwall/src/cdiff/bugs
  778. X    maxnum=`/bin/sed -n -e 's/^[^0-9]*\([1-9][0-9]*\).*$/\1/p' ../patchlevel.h`
  779. X    curversion='1.1'
  780. X    ;;
  781. X*)
  782. X    /bin/mail $dest $USER <<EOM
  783. XI don't know how to send patches for a program called $system.  Sorry.
  784. X
  785. XIf $NAME can figure out what you meant you'll get the patches anyway.
  786. X
  787. Xmailpatch speaking for $USER
  788. XEOM
  789. X    echo $cmd FAILED >> $HOME/.patchlog
  790. X    exit 1
  791. X    ;;
  792. Xesac
  793. X
  794. Xcase "$version" in
  795. X$curversion) ;;
  796. X*)
  797. X    /bin/mail $dest $USER <<EOM
  798. XI don't know how to send patches for version $version of $system.  Sorry.
  799. X
  800. XIf $NAME can figure out what you meant you'll get the patches anyway.
  801. X
  802. Xmailpatch speaking for $USER
  803. XEOM
  804. X    echo $cmd FAILED >> $HOME/.patchlog
  805. X    exit 1
  806. X    ;;
  807. Xesac
  808. X
  809. Xargs="$*"
  810. X
  811. Xset `$HOME/bin/rangeargs -m "$maxnum" $*`
  812. X
  813. Xcase $# in
  814. X0) set `$HOME/bin/rangeargs -m 100 $args`
  815. X    set $1
  816. X    ;;
  817. Xesac
  818. X
  819. Xfor num do
  820. X    /bin/cat <<EOM >/tmp/mp$$
  821. XSubject: $system version $version patch #$num
  822. X
  823. X[The latest patch for $system version $version is #$maxnum.]
  824. X
  825. Xmailpatch speaking for $USER
  826. X
  827. XEOM
  828. X    if test -f patch$num; then
  829. X    /bin/cat <patch$num >>/tmp/mp$$
  830. X    fi
  831. X    /bin/mail $dest </tmp/mp$$
  832. Xdone
  833. Xrm -f /tmp/mp$$
  834. Xecho $cmd OK >> $HOME/.patchlog
  835. !STUFFY!FUNK!
  836. echo Extracting kit/makedist.man
  837. sed >kit/makedist.man <<'!STUFFY!FUNK!' -e 's/X//'
  838. X.rn '' }`
  839. X''' $Header: makedist.man,v 2.0 88/06/28 23:12:21 lwall Locked $
  840. X''' 
  841. X''' $Log:    makedist.man,v $
  842. X''' Revision 2.0  88/06/28  23:12:21  lwall
  843. X''' Baseline.
  844. X''' 
  845. X''' 
  846. X.de Sh
  847. X.br
  848. X.ne 5
  849. X.PP
  850. X\fB\\$1\fR
  851. X.PP
  852. X..
  853. X.de Sp
  854. X.if t .sp .5v
  855. X.if n .sp
  856. X..
  857. X'''
  858. X'''     Set up \*(-- to give an unbreakable dash;
  859. X'''     string Tr holds user defined translation string.
  860. X'''     Bell System Logo is used as a dummy character.
  861. X'''
  862. X.ie n \{\
  863. X.tr \(*W-\*(Tr
  864. X.ds -- \(*W-
  865. X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  866. X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  867. X.ds L" ""
  868. X.ds R" ""
  869. X.ds L' '
  870. X.ds R' '
  871. X'br\}
  872. X.el\{\
  873. X.ds -- \(em\|
  874. X.tr \*(Tr
  875. X.ds L" ``
  876. X.ds R" ''
  877. X.ds L' `
  878. X.ds R' '
  879. X'br\}
  880. X.TH MAKEDIST 1 LOCAL
  881. X.SH NAME
  882. Xmakedist - a distribution kit maker
  883. X.SH SYNOPSIS
  884. X.B makedist
  885. X[options] 
  886. X.SH DESCRIPTION
  887. X.I Makedist
  888. Xis a rather simpleminded shar program that knows how to pack files
  889. Xinto multiple kits of approximately 50000 bytes each.
  890. XThe shar scripts produced assume very little about the target machine;
  891. Xthere is correspondingly little error checking done compared to other
  892. Xshar programs.
  893. X.PP
  894. XIn order to run makedist you have to do two things:
  895. X.IP 1) 4
  896. XCreate a .package file in the package's top-level directory by running packinit.
  897. XThis program will ask you about your package and remember what you tell
  898. Xit so that all the dist programs can be smart.
  899. X.IP 2) 4
  900. XCreate a MANIFEST.new file in your top-level directory that lists all the
  901. Xfiles in your package.
  902. XThe filename should be the first field on each line.
  903. XAfter some whitespace you can add a comment which will end up in MANIFEST.
  904. X.PP
  905. XThe only option is a \-v, which turns on verbose mode.
  906. XAfter running makedist, you will have a set of kits in your top-level directory.
  907. XIf your package name is "foo", they will be named foo.kit1, foo.kit2, etc.
  908. X.SH AUTHOR
  909. XLarry Wall <lwall@jpl-devvax.jpl.nasa.gov>
  910. X.SH ENVIRONMENT
  911. XNo environment variables are used by
  912. X.IR makedist .
  913. X.SH FILES
  914. XCreates ./$package.kit*.
  915. X.SH SEE ALSO
  916. Xpat(1)
  917. X.br
  918. Xmetaconfig(1)
  919. X.SH DIAGNOSTICS
  920. X.SH BUGS
  921. XIt ought to know how to split and recombine files longer than 50000 bytes.
  922. X.rn }` ''
  923. !STUFFY!FUNK!
  924. echo Extracting pat/patbase.SH
  925. sed >pat/patbase.SH <<'!STUFFY!FUNK!' -e 's/X//'
  926. Xcase $CONFIG in
  927. X'')
  928. X    if test ! -f config.sh; then
  929. X    ln ../config.sh . || \
  930. X    ln ../../config.sh . || \
  931. X    ln ../../../config.sh . || \
  932. X    (echo "Can't find config.sh."; exit 1)
  933. X    fi
  934. X    . ./config.sh
  935. X    ;;
  936. Xesac
  937. X: This forces SH files to create target in same directory as SH file.
  938. X: This is so that make depend always knows where to find SH derivatives.
  939. Xcase "$0" in
  940. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  941. Xesac
  942. Xecho "Extracting patbase (with variable substitutions)"
  943. Xcat >patbase <<!GROK!THIS!
  944. X#!/usr/bin/perl
  945. X        eval "exec /usr/bin/perl -S \$0 \$*"
  946. X                if \$running_under_some_shell;
  947. X
  948. X# $Header: patbase.SH,v 2.0 88/06/28 23:19:25 lwall Locked $
  949. X#
  950. X# $Log:    patbase.SH,v $
  951. X# Revision 2.0  88/06/28  23:19:25  lwall
  952. X# Baseline.
  953. X# 
  954. X# 
  955. X
  956. X!GROK!THIS!
  957. X
  958. X: In the following dollars and backticks do not need the extra backslash.
  959. Xcat >>patbase <<'!NO!SUBS!'
  960. X
  961. Xdie "pat [files]\n" unless $#ARGV >= 0;
  962. X
  963. Xdo readpackage();
  964. X
  965. X$RCSEXT = ',v' unless $RCSEXT;
  966. X
  967. Xif ($ARGV[0] eq '-a') {
  968. X    open(MANI,"MANIFEST.new") || die "No MANIFEST.new found.\n";
  969. X    @ARGV = ();
  970. X    while (<MANI>) {
  971. X        chop;
  972. X    ($_) = split(' ');
  973. X        push(@ARGV,$_);
  974. X    }
  975. X    close MANI;
  976. X}
  977. X
  978. Xforeach $file (@ARGV) {
  979. X    $files = do rcsargs($file);
  980. X    @files = split(' ',$files);
  981. X    $revs=0;
  982. X    $rlog = `rlog -r$baserev -r$revbranch $files 2>&1`;
  983. X    ($revs) = ($rlog =~ /selected revisions: (\d+)/);
  984. X    if (!$revs) {
  985. X    print "patbase: $file has never been checked in--checking in...\n";
  986. X    $comment = rcscomment($file);
  987. X    system 'rcs', '-i', "-c$comment", @files if $comment;
  988. X    (system 'ci', "-l$baserev", @files) ||
  989. X      (system 'rcs', "-Nlastpat:$baserev", @files);
  990. X    }
  991. X    elsif ($revs == 1) {
  992. X    print "Last revision for $file is $baserev.\n";
  993. X    system 'rcs', "-Nlastpat:$baserev", @files;
  994. X    }
  995. X    else {
  996. X    ($lastrev) = ($rlog =~ /revision $revbranch\.(\d+)/);
  997. X    print "Last revision for $file is $revbranch.$lastrev.\n";
  998. X    system 'rcs', "-Nlastpat:$revbranch.$lastrev", @files;
  999. X    }
  1000. X}
  1001. Xunlink ".rlog$$";
  1002. X
  1003. X!NO!SUBS!
  1004. Xcat ../pl/package.pl >>patbase
  1005. Xcat ../pl/rcsargs.pl >>patbase
  1006. Xcat ../pl/comment.pl >>patbase
  1007. Xchmod +x patbase
  1008. X$eunicefix patbase
  1009. !STUFFY!FUNK!
  1010. echo Extracting mcon/U/Finish.U
  1011. sed >mcon/U/Finish.U <<'!STUFFY!FUNK!' -e 's/X//'
  1012. X?RCS:$Header: Finish.U,v 2.0 88/06/28 23:13:02 lwall Locked $
  1013. X?X: 
  1014. X?X: This unit is the very last one in the Configure script.  It runs all the
  1015. X?X: SH files, which among other things produce config.h and (usually) Makefile.
  1016. X?X: It offers to do a make depend if the Makefile contains that target.
  1017. X?X: 
  1018. X?RCS: $Log:    Finish.U,v $
  1019. X?RCS: Revision 2.0  88/06/28  23:13:02  lwall
  1020. X?RCS: Baseline.
  1021. X?RCS: 
  1022. X?MAKE:Finish: grep echo n c rm contains Myread Config_sh Config_h expr
  1023. X?MAKE:    -pick add $@ %*
  1024. XCONFIG=true
  1025. X
  1026. Xecho " "
  1027. Xdflt=''
  1028. Xfastread=''
  1029. Xecho "If you didn't make any mistakes, then just type a carriage return here."
  1030. Xrp="If you need to edit config.sh, do it as a shell escape here:"
  1031. X$echo $n "$rp $c"
  1032. X. UU/myread
  1033. Xcase "$ans" in
  1034. X'') ;;
  1035. X*) : in case they cannot read
  1036. X    eval $ans;;
  1037. Xesac
  1038. X. ./config.sh
  1039. X
  1040. Xecho " "
  1041. Xecho "Doing variable substitutions on .SH files..."
  1042. Xset x `awk '{print $1}' <MANIFEST | $grep '\.SH'`
  1043. Xshift
  1044. Xcase $# in
  1045. X0) set x *.SH; shift;;
  1046. Xesac
  1047. Xif test ! -f $1; then
  1048. X    shift
  1049. Xfi
  1050. Xfor file in $*; do
  1051. X    case "$file" in
  1052. X    */*)
  1053. X    dir=`$expr X$file : 'X\(.*\)/'`
  1054. X    file=`$expr X$file : 'X.*/\(.*\)'`
  1055. X    (cd $dir && . $file)
  1056. X    ;;
  1057. X    *)
  1058. X    . $file
  1059. X    ;;
  1060. X    esac
  1061. Xdone
  1062. Xif test -f config.h.SH; then
  1063. X    if test ! -f config.h; then
  1064. X    : oops, they left it out of MANIFEST, probably, so do it anyway.
  1065. X    . config.h.SH
  1066. X    fi
  1067. Xfi
  1068. X
  1069. Xif $contains '^depend:' Makefile >/dev/null 2>&1; then
  1070. X    dflt=n
  1071. X    $cat <<EOM
  1072. X
  1073. XNow you need to generate make dependencies by running "make depend".
  1074. XYou might prefer to run it in background: "make depend > makedepend.out &"
  1075. XIt can take a while, so you might not want to run it right now.
  1076. X
  1077. XEOM
  1078. X    rp="Run make depend now? [$dflt]"
  1079. X    $echo $n "$rp $c"
  1080. X    . UU/myread
  1081. X    case "$ans" in
  1082. X    y*) make depend
  1083. X    echo "Now you must run a make."
  1084. X    ;;
  1085. X    *)  echo "You must run 'make depend' then 'make'."
  1086. X    ;;
  1087. X    esac
  1088. Xelif test -f Makefile; then
  1089. X    echo " "
  1090. X    echo "Now you must run a make."
  1091. Xelse
  1092. X    echo "Done."
  1093. Xfi
  1094. X
  1095. X$rm -f kit*isdone
  1096. X: the following is currently useless
  1097. Xcd UU && $rm -f $rmlist
  1098. X: since this removes it all anyway
  1099. Xcd .. && $rm -rf UU
  1100. X: end of Configure
  1101. !STUFFY!FUNK!
  1102. echo Extracting mcon/U/libc.U
  1103. sed >mcon/U/libc.U <<'!STUFFY!FUNK!' -e 's/X//'
  1104. X?RCS:$Header: libc.U,v 2.0 88/06/28 23:16:50 lwall Locked $
  1105. X?RCS: $Log:    libc.U,v $
  1106. X?RCS: Revision 2.0  88/06/28  23:16:50  lwall
  1107. X?RCS: Baseline.
  1108. X?RCS: 
  1109. X?MAKE:libc: echo n c Myread Oldconfig Loc
  1110. X?MAKE:    -pick add $@ %*
  1111. X?S:libc:
  1112. X?S:    This variable contains the location of the C library.
  1113. X?S:.
  1114. X: get list of predefined functions in a handy place
  1115. Xecho " "
  1116. Xif test -f /lib/libc.a; then
  1117. X    echo "Your C library is in /lib/libc.a.  You're normal."
  1118. X    libc=/lib/libc.a
  1119. Xelse
  1120. X    ans=`loc libc.a blurfl/dyick $libpth`
  1121. X    if test ! -f $ans; then
  1122. X    ans=`loc clib blurfl/dyick $libpth`
  1123. X    fi
  1124. X    if test ! -f $ans; then
  1125. X    ans=`loc libc blurfl/dyick $libpth`
  1126. X    fi
  1127. X    if test -f $ans; then
  1128. X    echo "Your C library is in $ans, of all places."
  1129. X    libc=$ans
  1130. X    else
  1131. X    if test -f "$libc"; then
  1132. X        echo "Your C library is in $libc, like you said before."
  1133. X    else
  1134. X        cat <<EOM
  1135. XI can't seem to find your C library.  I've looked in the following places:
  1136. X
  1137. X    $libpth
  1138. X
  1139. XNone of these seems to contain your C library.  What is the full name
  1140. XEOM
  1141. X        dflt=None
  1142. X        $echo $n "of your C library? $c"
  1143. X        rp='C library full name?'
  1144. X        . myread
  1145. X        libc="$ans"
  1146. X    fi
  1147. X    fi
  1148. Xfi
  1149. Xecho " "
  1150. X$echo $n "Extracting names from $libc for later perusal...$c"
  1151. Xnm $libc 2>/dev/null | sed -n -e 's/^.* T _//p' -e 's/^.* T //p' > libc.list
  1152. Xif $contains '^printf$' libc.list >/dev/null 2>&1; then
  1153. X    echo "done"
  1154. Xelse
  1155. X    nm $libc 2>/dev/null | sed -n -e 's/^.* D _//p' -e 's/^.* D //p' > libc.list
  1156. X    if $contains '^printf$' libc.list >/dev/null 2>&1; then
  1157. X    echo "done"
  1158. X    else
  1159. X    echo " "
  1160. X    echo "nm didn't seem to work right."
  1161. X    echo "Trying ar instead..."
  1162. X    rmlist="$rmlist libc.tmp"
  1163. X    if ar t $libc > libc.tmp; then
  1164. X        sed -e 's/\.o$//' < libc.tmp > libc.list
  1165. X        echo "Ok."
  1166. X    else
  1167. X        echo "ar didn't seem to work right."
  1168. X        echo "Maybe this is a Cray...trying bld instead..."
  1169. X        if bld t $libc | sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then
  1170. X        echo "Ok."
  1171. X        else
  1172. X            echo "That didn't work either.  Giving up."
  1173. X            exit 1
  1174. X        fi
  1175. X    fi
  1176. X    fi
  1177. Xfi
  1178. Xrmlist="$rmlist libc.list"
  1179. X
  1180. !STUFFY!FUNK!
  1181. echo Extracting mcon/U/Cppsym.U
  1182. sed >mcon/U/Cppsym.U <<'!STUFFY!FUNK!' -e 's/X//'
  1183. X?RCS:$Header: Cppsym.U,v 2.0 88/06/28 23:12:50 lwall Locked $
  1184. X?X: 
  1185. X?X: This unit produces a shell script called Cppsym, which can be used to
  1186. X?X: determine whether any in a list of symbols is defined by the C preprocessor.
  1187. X?X: It can determine the status of any symbol, though the symbols in attrlist
  1188. X?X: are more easily determined.  If you want to add to attrlist you can do
  1189. X?X: it in Myinit.U.
  1190. X?X: 
  1191. X?RCS: $Log:    Cppsym.U,v $
  1192. X?RCS: Revision 2.0  88/06/28  23:12:50  lwall
  1193. X?RCS: Baseline.
  1194. X?RCS: 
  1195. X?MAKE:Cppsym: eunicefix Guess cppstdin cat tr sed rm
  1196. X?MAKE:    -pick add $@ %*
  1197. X?INIT:attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
  1198. X?INIT:attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
  1199. X?INIT:attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
  1200. X?INIT:attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
  1201. X?INIT:attrlist="$attrlist $mc68k __STDC__"
  1202. X: get C preprocessor symbols handy
  1203. Xecho " "
  1204. Xecho $attrlist | $tr '[ - ]' '[\012-\012]' >Cppsym.know
  1205. X$cat <<EOSS >Cppsym
  1206. X$startsh
  1207. Xcase "\$1" in
  1208. X-l) list=true
  1209. X    shift
  1210. X    ;;
  1211. Xesac
  1212. Xunknown=''
  1213. Xcase "\$list\$#" in
  1214. X1|2)
  1215. X    for sym do
  1216. X    if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
  1217. X        exit 0
  1218. X    elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
  1219. X        :
  1220. X    else
  1221. X        unknown="\$unknown \$sym"
  1222. X    fi
  1223. X    done
  1224. X    set X \$unknown
  1225. X    shift
  1226. X    ;;
  1227. Xesac
  1228. Xcase \$# in
  1229. X0) exit 1;;
  1230. Xesac
  1231. Xecho \$* | $tr '[ - ]' '[\012-\012]' | $sed -e 's/\(.*\)/\\
  1232. X#ifdef \1\\
  1233. Xexit 0; _ _ _ _\1\\     \1\\
  1234. X#endif\\
  1235. X/' >/tmp/Cppsym\$\$
  1236. Xecho exit 1 >>/tmp/Cppsym\$\$
  1237. X$cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$
  1238. Xcase "\$list" in
  1239. Xtrue) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;;
  1240. X*)
  1241. X    sh /tmp/Cppsym2\$\$
  1242. X    status=\$?
  1243. X    ;;
  1244. Xesac
  1245. X$rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$
  1246. Xexit \$status
  1247. XEOSS
  1248. Xchmod +x Cppsym
  1249. X$eunicefix Cppsym
  1250. Xecho "Your C preprocessor defines the following symbols:"
  1251. XCppsym -l $attrlist >Cppsym.true
  1252. Xcat Cppsym.true
  1253. Xrmlist="$rmlist Cppsym Cppsym.know Cppsym.true"
  1254. X
  1255. !STUFFY!FUNK!
  1256. echo Extracting mcon/U/d_nolnbuf.U
  1257. sed >mcon/U/d_nolnbuf.U <<'!STUFFY!FUNK!' -e 's/X//'
  1258. X?RCS:$Header: d_nolnbuf.U,v 2.0 88/06/28 23:15:22 lwall Locked $
  1259. X?RCS: $Log:    d_nolnbuf.U,v $
  1260. X?RCS: Revision 2.0  88/06/28  23:15:22  lwall
  1261. X?RCS: Baseline.
  1262. X?RCS: 
  1263. X?MAKE:d_nolnbuf: Guess n c echo test Myread
  1264. X?MAKE:    -pick add $@ %*
  1265. X?S:d_nolnbuf:
  1266. X?S:    This variable conditionally defines the NOLINEBUF symbol, which
  1267. X?S:    indicates to the C program that stdout is not buffered, so that
  1268. X?S:    the program can call setbuf() or setlinebuf() for efficiency.
  1269. X?S:.
  1270. X?C:NOLINEBUF:
  1271. X?C:    This symbol, if defined, indicates that stdout is not buffered, so that
  1272. X?C:    the program can call setbuf() or setlinebuf() for efficiency.
  1273. X?C:.
  1274. X?H:?%1:#$d_nolnbuf    NOLINEBUF    /**/
  1275. X?H:?%1:
  1276. X: check for buffering of stdout
  1277. Xecho " "
  1278. Xcase "$d_nolnbuf" in
  1279. X'')
  1280. X    cat <<'EOT' >blurfl.c
  1281. X#include <stdio.h>
  1282. Xmain()
  1283. X{
  1284. X    int i;
  1285. X
  1286. X    for (i=0; i<5; i++) {
  1287. X    putchar(i+'a');
  1288. X    sleep(1);
  1289. X    }
  1290. X    putchar('\n');
  1291. X}
  1292. XEOT
  1293. X    cc blurfl.c -o blurfl
  1294. X    rm -f blurfl.c
  1295. X    cat <<'EOM'
  1296. XChecking for buffering of stdout to terminal.
  1297. X
  1298. XObserve the following characters as they are printed out, to see whether they
  1299. Xprint out all at once, or with a 1 second pause between each of them.  If they
  1300. Xprint out one by one, you don't have buffering.  If they print together (after
  1301. Xabout a 5 second pause), you do have buffering.
  1302. X
  1303. XEOM
  1304. X    rp="Type return to start printing the test characters:"
  1305. X    $echo $n "$rp $c"
  1306. X    . myread
  1307. X    ans=y
  1308. X    while $test "$ans" = 'y'; do
  1309. X    blurfl
  1310. X    dflt=n
  1311. X    rp='Would you like to see that again? [n]'
  1312. X    $echo $n "$rp $c"
  1313. X    . myread
  1314. X    done
  1315. X    dflt=y
  1316. X    rp="Do you have buffering (printed all at once)? [$dflt]"
  1317. X    $echo $n "$rp $c"
  1318. X    . myread
  1319. X    case "$ans" in
  1320. X    n*) d_nolnbuf="$define";;
  1321. X    *)  d_nolnbuf="$undef";;
  1322. X    esac
  1323. X    ;;
  1324. X*)
  1325. X    case "$d_nolnbuf" in
  1326. X    "$define") dflt=n;;
  1327. X    *)        dflt=y;;
  1328. X    esac
  1329. X    rp="Do you have buffering on stdout to terminals? [$dflt]"
  1330. X    $echo $n "$rp $c"
  1331. X    . myread
  1332. X    case "$ans" in
  1333. X    n*) d_nolnbuf="$define";;
  1334. X    *)  d_nolnbuf="$undef";;
  1335. X    esac
  1336. X    ;;
  1337. Xesac
  1338. X
  1339. !STUFFY!FUNK!
  1340. echo Extracting pat/Makefile.SH
  1341. sed >pat/Makefile.SH <<'!STUFFY!FUNK!' -e 's/X//'
  1342. Xcase $CONFIG in
  1343. X'')
  1344. X    if test ! -f config.sh; then
  1345. X    ln ../config.sh . || \
  1346. X    ln ../../config.sh . || \
  1347. X    ln ../../../config.sh . || \
  1348. X    (echo "Can't find config.sh."; exit 1)
  1349. X    echo "Using config.sh from above..."
  1350. X    fi
  1351. X    . ./config.sh
  1352. X    ;;
  1353. Xesac
  1354. X: This forces SH files to create target in same directory as SH file.
  1355. X: This is so that make depend always knows where to find SH derivatives.
  1356. Xcase "$0" in
  1357. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1358. Xesac
  1359. Xecho "Extracting Makefile (with variable substitutions)"
  1360. Xcat >Makefile <<!GROK!THIS!
  1361. X# $Header: Makefile.SH,v 2.0 88/06/28 23:19:00 lwall Locked $
  1362. X#
  1363. X# $Log:    Makefile.SH,v $
  1364. X# Revision 2.0  88/06/28  23:19:00  lwall
  1365. X# Baseline.
  1366. X# 
  1367. X
  1368. Xbin = $bin
  1369. Xmansrc = $mansrc
  1370. Xmanext = $manext
  1371. X
  1372. X!GROK!THIS!
  1373. Xcat >>Makefile <<'!NO!SUBS!'
  1374. X
  1375. Xpublic = pat patcil patbase patdiff patmake patpost patsend patftp \
  1376. X    patindex
  1377. Xprivate = 
  1378. Xmanpages = pat.man
  1379. Xutil = Makefile
  1380. X
  1381. Xc = 
  1382. X
  1383. Xobj = 
  1384. X
  1385. Xaddedbyconf = pat patmake patpost patsend
  1386. X
  1387. X# grrr
  1388. XSHELL = /bin/sh
  1389. X
  1390. Xall: $(public) $(private) $(util)
  1391. X    touch all
  1392. Xpat: pat.SH ../pl/package.pl
  1393. X    sh pat.SH
  1394. X
  1395. Xpatbase: patbase.SH ../pl/package.pl ../pl/rcsargs.pl ../pl/comment.pl
  1396. X    sh patbase.SH
  1397. X
  1398. Xpatcil: patcil.SH ../pl/package.pl ../pl/rcsargs.pl ../pl/comment.pl
  1399. X    sh patcil.SH
  1400. X
  1401. Xpatdiff: patdiff.SH ../pl/package.pl ../pl/rcsargs.pl
  1402. X    sh patdiff.SH
  1403. X
  1404. Xpatmake: patmake.SH ../pl/package.pl
  1405. X    sh patmake.SH
  1406. X
  1407. Xpatpost: patpost.SH ../pl/package.pl ../pl/rangeargs.pl
  1408. X    sh patpost.SH
  1409. X
  1410. Xpatsend: patsend.SH ../pl/package.pl ../pl/rangeargs.pl
  1411. X    sh patsend.SH
  1412. X
  1413. Xpatftp: patftp.SH ../pl/package.pl ../pl/rangeargs.pl
  1414. X    sh patftp.SH
  1415. X
  1416. XMakefile: Makefile.SH
  1417. X    sh Makefile.SH
  1418. X
  1419. X# won't work with csh
  1420. Xinstall: $(public)
  1421. X    export PATH || exit 1
  1422. X    - if test `pwd` != $(bin); then cp $(public) $(bin); fi
  1423. X    cd $(bin); chmod +x $(public)
  1424. X    - if test `pwd` != $(mansrc); then \
  1425. Xfor page in $(manpages); do \
  1426. Xcp $$page $(mansrc)/`basename $$page .man`.$(manext); \
  1427. Xdone; \
  1428. Xfi
  1429. X
  1430. Xclean:
  1431. X
  1432. Xrealclean:
  1433. X    rm -f core $(addedbyconf)
  1434. X
  1435. X!NO!SUBS!
  1436. X$eunicefix Makefile
  1437. !STUFFY!FUNK!
  1438. echo Extracting mcon/U/d_dosuid.U
  1439. sed >mcon/U/d_dosuid.U <<'!STUFFY!FUNK!' -e 's/X//'
  1440. X?RCS:$Header: d_dosuid.U,v 2.0 88/06/29 00:18:20 lwall Locked $
  1441. X?RCS: $Log:    d_dosuid.U,v $
  1442. X?RCS: Revision 2.0  88/06/29  00:18:20  lwall
  1443. X?RCS: Baseline.
  1444. X?RCS: 
  1445. X?MAKE:d_dosuid: echo contains sed test n c Myread Oldconfig Guess
  1446. X?MAKE:    -pick add $@ %*
  1447. X?S:d_dosuid:
  1448. X?S:    This variable conditionally defines the symbol DOSUID, which
  1449. X?S:    tells the C program that it should insert setuid emulation code
  1450. X?S:    on hosts which have setuid #! scripts disabled.
  1451. X?S:.
  1452. X?C:DOSUID:
  1453. X?C:    This symbol, if defined, indicates that the C program should
  1454. X?C:    check the script that it is executing for setuid/setgid bits, and
  1455. X?C:    attempt to emulate setuid/setgid on systems that have disabled
  1456. X?C:    setuid #! scripts because the kernel can't do it securely.
  1457. X?C:    It is up to the package designer to make sure that this emulation
  1458. X?C:    is done securely.  Among other things, it should do an fstat on
  1459. X?C:    the script it just opened to make sure it really is a setuid/setgid
  1460. X?C:    script, it should make sure the arguments passed correspond exactly
  1461. X?C:    to the argument on the #! line, and it should not trust any
  1462. X?C:    subprocesses to which it must pass the filename rather than the
  1463. X?C:    file descriptor of the script to be executed.
  1464. X?C:.
  1465. X?H:?%1:#$d_dosuid DOSUID        /**/
  1466. X?H:?%1:
  1467. X: now see if they want to do setuid emulation
  1468. Xcase "$d_dosuid" in
  1469. X'') if bsd; then
  1470. X    dflt=y
  1471. X    else
  1472. X    dflt=n
  1473. X    fi
  1474. X    ;;
  1475. X*undef*) dflt=n;;
  1476. X*) dflt=y;;
  1477. Xesac
  1478. Xcat <<EOM
  1479. XSome sites have disabled setuid #! scripts because of a bug in the kernel
  1480. Xthat prevents them from being secure.  If you are on such a system, the
  1481. Xsetuid/setgid bits on scripts are currently useless.  It is possible for
  1482. X$package to detect those bits and emulate setuid/setgid in a secure fashion
  1483. Xuntil a better solution is devised for the kernel problem.
  1484. X
  1485. XEOM
  1486. Xrp="Do you want to do setuid/setgid emulation? [$dflt]"
  1487. Xecho $n "$rp $c"
  1488. X. myread
  1489. Xcase "$ans" in
  1490. X'') $ans="$dflt";;
  1491. Xesac
  1492. Xcase "$ans" in
  1493. Xy*)  d_dosuid="$define";;
  1494. X*) d_dosuid="$undef";;
  1495. Xesac
  1496. X
  1497. !STUFFY!FUNK!
  1498. echo Extracting mcon/U/d_hidnet.U
  1499. sed >mcon/U/d_hidnet.U <<'!STUFFY!FUNK!' -e 's/X//'
  1500. X?RCS:$Header: d_hidnet.U,v 2.0 88/06/28 23:14:54 lwall Locked $
  1501. X?RCS: $Log:    d_hidnet.U,v $
  1502. X?RCS: Revision 2.0  88/06/28  23:14:54  lwall
  1503. X?RCS: Baseline.
  1504. X?RCS: 
  1505. X?MAKE:d_hidnet hiddennet: echo contains sed test n c Myread Oldconfig Guess
  1506. X?MAKE:    -pick add $@ %*
  1507. X?S:d_hidnet:
  1508. X?S:    This variable conditionally defines the symbol HIDDENNET, which
  1509. X?S:    tells the C program that it should pretend it is on a different
  1510. X?S:    host for purposes of advertising a mailing address.
  1511. X?S:.
  1512. X?S:hiddennet:
  1513. X?S:    This variable contains the value eventually given to the symbol
  1514. X?S:    HIDDENNET, if d_hidnet defines it.  If defined, it's the name
  1515. X?S:    of the host which serves as the mail server for a network that
  1516. X?S:    is invisible to the outside world.
  1517. X?S:.
  1518. X?C:HIDDENNET:
  1519. X?C:    This symbol, if defined, contains the host name that you want to
  1520. X?C:    advertise to the outside world.  This name can be different from
  1521. X?C:    your actual host name, as long as the machine you specify knows
  1522. X?C:    how to forward mail to you.
  1523. X?C:.
  1524. X?H:?%1:#$d_hidnet HIDDENNET "$hiddennet"    /**/
  1525. X?H:?%1:
  1526. X: now get the host name to advertise as our mailing address
  1527. Xcase "$hiddennet" in
  1528. X'') dflt=n;;
  1529. X*) dflt=y;;
  1530. Xesac
  1531. Xcat <<EOM
  1532. XSome sites are on "hidden" networks, in the sense that the network appears
  1533. Xto the outside world as a single machine.  The advertised name of any host
  1534. Xon this hidden network is the name of one machine on the local network which
  1535. Xknows how to forward mail to any other host on the hidden network.
  1536. X
  1537. XDo you wish to advertise a different hostname to the world than the one your
  1538. XEOM
  1539. Xrp="own host ($hostname$mydomain) has? [$dflt]"
  1540. Xecho $n "$rp $c"
  1541. Xrp="Use HIDDENNET? [$dflt]"
  1542. X. myread
  1543. Xcase "$ans" in
  1544. Xn*) d_hidnet="$undef" hiddennet='';;
  1545. X*)
  1546. X    d_hidnet="$define"
  1547. X    echo " "
  1548. X    case "$hiddennet" in
  1549. X    '') dflt='???';;
  1550. X    *) dflt="$hiddennet";;
  1551. X    esac
  1552. X    rp="What hostname do you wish to advertise? [$dflt]"
  1553. X    echo $n "$rp $c"
  1554. X    . myread
  1555. X    hiddennet="$ans"
  1556. X    ;;
  1557. Xesac
  1558. X
  1559. !STUFFY!FUNK!
  1560. echo Extracting pat/patftp.SH
  1561. sed >pat/patftp.SH <<'!STUFFY!FUNK!' -e 's/X//'
  1562. Xcase $CONFIG in
  1563. X'')
  1564. X    if test ! -f config.sh; then
  1565. X    ln ../config.sh . || \
  1566. X    ln ../../config.sh . || \
  1567. X    ln ../../../config.sh . || \
  1568. X    (echo "Can't find config.sh."; exit 1)
  1569. X    echo "Using config.sh from above..."
  1570. X    fi
  1571. X    . ./config.sh
  1572. X    ;;
  1573. Xesac
  1574. X: This forces SH files to create target in same directory as SH file.
  1575. X: This is so that make depend always knows where to find SH derivatives.
  1576. Xcase "$0" in
  1577. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1578. Xesac
  1579. Xecho "Extracting patftp (with variable substitutions)"
  1580. Xcat >patftp <<!GROK!THIS!
  1581. X#!/usr/bin/perl
  1582. X        eval "exec /usr/bin/perl -S \$0 \$*"
  1583. X                if \$running_under_some_shell;
  1584. X
  1585. X# $Header: patftp.SH,v 2.0 88/06/28 23:19:57 lwall Locked $
  1586. X#
  1587. X# $Log:    patftp.SH,v $
  1588. X# Revision 2.0  88/06/28  23:19:57  lwall
  1589. X# Baseline.
  1590. X# 
  1591. X
  1592. X\$orgname='$orgname';
  1593. X!GROK!THIS!
  1594. X
  1595. X: In the following dollars and backticks do not need the extra backslash.
  1596. Xcat >>patftp <<'!NO!SUBS!'
  1597. X
  1598. Xchop($orgname = `cat $orgname`) if $orgname =~ m|^/|;
  1599. X
  1600. Xchdir '..' if -f '../.package';
  1601. X
  1602. Xdo readpackage();
  1603. X
  1604. Xif ($#ARGV < 0) {
  1605. X    open(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
  1606. X    while (<PL>) {
  1607. X        $argv = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
  1608. X    }
  1609. X    close PL;
  1610. X    die "Malformed patchlevel.h file.\n" if $argv eq '';
  1611. X    @ARGV = $argv;
  1612. X}
  1613. Xelse {
  1614. X    for (@ARGV) {
  1615. X    s/^patch//;
  1616. X    }
  1617. X    $argv = do rangeargs(@ARGV);
  1618. X    @ARGV = split(' ',$argv);
  1619. X}
  1620. X
  1621. Xif ($#ARGV < 0) {
  1622. X    die "No patches specified.\n";
  1623. X}
  1624. Xelsif ($#ARGV) {
  1625. X    print "Copying $package $baserev patches $argv to $ftpdir...\n";
  1626. X}
  1627. Xelse {
  1628. X    print "Copying $package $baserev patch $argv to $ftpdir...\n";
  1629. X}
  1630. X
  1631. Xchdir 'bugs' || die "Can't cd to bugs\n";
  1632. X
  1633. Xuntil ($#ARGV < 0) {
  1634. X    $patnum = shift;
  1635. X    `cp patch$patnum $ftpdir`;
  1636. X}
  1637. X
  1638. X!NO!SUBS!
  1639. Xcat ../pl/package.pl >>patftp
  1640. Xcat ../pl/rangeargs.pl >>patftp
  1641. Xchmod +x patftp
  1642. X$eunicefix patftp
  1643. !STUFFY!FUNK!
  1644. echo Extracting mcon/U/newslib.U
  1645. sed >mcon/U/newslib.U <<'!STUFFY!FUNK!' -e 's/X//'
  1646. X?RCS:$Header: newslib.U,v 2.0 88/06/28 23:17:41 lwall Locked $
  1647. X?RCS: $Log:    newslib.U,v $
  1648. X?RCS: Revision 2.0  88/06/28  23:17:41  lwall
  1649. X?RCS: Baseline.
  1650. X?RCS: 
  1651. X?MAKE:newslib newslibexp: test echo n c d_portable inews Myread Filexp Oldconfig
  1652. X?MAKE:    -pick add $@ %*
  1653. X?S:newslib:
  1654. X?S:    This variable contains the eventual value of the NEWSLIB symbol,
  1655. X?S:    which holds the name of the directory serving as the news library.
  1656. X?S:    It may have a ~ on the front.  See newslibexp for expanded version.
  1657. X?S:.
  1658. X?S:newslibexp
  1659. X?S:    This variable contains the ~ expanded name of the news library
  1660. X?S:    directory.  See newslib.
  1661. X?S:.
  1662. X?C:NEWSLIB
  1663. X?C:    This symbol contains the name of the directory serving as the news
  1664. X?C:    library.  The program must be prepared to do ~ expansion on it.
  1665. X?C:.
  1666. X?H:?%1:#define NEWSLIB "$newslib"        /**/
  1667. X?H:?%1:
  1668. X: figure out news library
  1669. Xcase "$newslib" in
  1670. X'')
  1671. X    dflt=/usr/lib/news
  1672. X    ;;
  1673. X*)  dflt=$newslib ;;
  1674. Xesac
  1675. Xnewslibexp=$newslib
  1676. Xnewslibexp='blurfl/dyick'
  1677. Xcont=true
  1678. Xwhile $test "$cont"; do
  1679. X    echo " "
  1680. X    rp="Where is your news library (~name okay)? [$dflt]"
  1681. X    $echo $n "$rp $c"
  1682. X    . myread
  1683. X    newslib="$ans"
  1684. X    case "$newslib" in
  1685. X    ~*)
  1686. X    newslibexp=`filexp $newslib`
  1687. X    echo "(That is $newslibexp on this particular system.)"
  1688. X    case "$d_portable" in
  1689. X      "$undef") newslib=$newslibexp ;;
  1690. X    esac
  1691. X    ;;
  1692. X    *)
  1693. X    newslibexp=$newslib
  1694. X    ;;
  1695. X    esac
  1696. X    if test -d $newslibexp; then
  1697. X    cont=''
  1698. X    else
  1699. X    dflt=n
  1700. X    rp="Directory $newslibexp doesn't exist.  Use that name anyway? [$dflt]"
  1701. X    $echo $n "$rp $c"
  1702. X    . myread
  1703. X    dflt=''
  1704. X    case "$ans" in
  1705. X    y*) cont='';;
  1706. X    esac
  1707. X    fi
  1708. Xdone
  1709. Xif $test -f $newslibexp/inews; then
  1710. X    echo "Aha!  Inews is really in $newslibexp!  Maybe this is 2.10.2..."
  1711. X    case "$inews" in
  1712. X    inews) 
  1713. X    : null
  1714. X    ;;
  1715. X    *)
  1716. X    echo "(Make sure $inews isn't an old version.)"
  1717. X    ;;
  1718. X    esac
  1719. X    inews=$newslibexp/inews
  1720. Xfi
  1721. X
  1722. !STUFFY!FUNK!
  1723. echo Extracting kit/Makefile.SH
  1724. sed >kit/Makefile.SH <<'!STUFFY!FUNK!' -e 's/X//'
  1725. Xcase $CONFIG in
  1726. X'')
  1727. X    if test ! -f config.sh; then
  1728. X    ln ../config.sh . || \
  1729. X    ln ../../config.sh . || \
  1730. X    ln ../../../config.sh . || \
  1731. X    (echo "Can't find config.sh."; exit 1)
  1732. X    echo "Using config.sh from above..."
  1733. X    fi
  1734. X    . ./config.sh
  1735. X    ;;
  1736. Xesac
  1737. X: This forces SH files to create target in same directory as SH file.
  1738. X: This is so that make depend always knows where to find SH derivatives.
  1739. Xcase "$0" in
  1740. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1741. Xesac
  1742. Xecho "Extracting Makefile (with variable substitutions)"
  1743. Xcat >Makefile <<!GROK!THIS!
  1744. X# $Header: Makefile.SH,v 2.0 88/06/28 23:12:03 lwall Locked $
  1745. X#
  1746. X# $Log:    Makefile.SH,v $
  1747. X# Revision 2.0  88/06/28  23:12:03  lwall
  1748. X# Baseline.
  1749. X# 
  1750. X
  1751. Xbin = $bin
  1752. Xmansrc = $mansrc
  1753. Xmanext = $manext
  1754. XCFLAGS = -O
  1755. XLDFLAGS = $iandd
  1756. X
  1757. X!GROK!THIS!
  1758. Xcat >>Makefile <<'!NO!SUBS!'
  1759. X
  1760. XCC = cc
  1761. Xpublic = makedist makeSH
  1762. Xprivate = 
  1763. Xmanpages = makedist.man
  1764. Xutil = Makefile
  1765. X
  1766. Xc =
  1767. X
  1768. Xobj =
  1769. X
  1770. Xlintflags = -phbvxac
  1771. X
  1772. Xaddedbyconf = Makefile makedist
  1773. X
  1774. X# grrr
  1775. XSHELL = /bin/sh
  1776. X
  1777. X.c.o:
  1778. X    $(CC) -c $(CFLAGS) $*.c
  1779. X
  1780. Xall: $(public) $(private) $(util)
  1781. X    touch all
  1782. X
  1783. Xmakedist: makedist.SH
  1784. X    sh makedist.SH
  1785. X
  1786. X# won't work with csh
  1787. Xinstall: $(public)
  1788. X    export PATH || exit 1
  1789. X    - if test `pwd` != $(bin); then cp $(public) $(bin); fi
  1790. X    cd $(bin); chmod +x $(public)
  1791. X    - if test `pwd` != $(mansrc); then \
  1792. Xfor page in $(manpages); do \
  1793. Xcp $$page $(mansrc)/`basename $$page .man`.$(manext); \
  1794. Xdone; \
  1795. Xfi
  1796. X
  1797. Xclean:
  1798. X    rm -f *.o
  1799. X
  1800. Xrealclean:
  1801. X    rm -f kitlists *.o core $(addedbyconf)
  1802. X
  1803. X# The following lint has practically everything turned on.  Unfortunately,
  1804. X# you have to wade through a lot of mumbo jumbo that can't be suppressed.
  1805. X# If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  1806. X# for that spot.
  1807. X
  1808. Xlint:
  1809. X    lint $(lintflags) $(defs) $(c) > kitlists.fuzz
  1810. X
  1811. X!NO!SUBS!
  1812. X$eunicefix Makefile
  1813. !STUFFY!FUNK!
  1814. echo Extracting mcon/U/d_usendir.U
  1815. sed >mcon/U/d_usendir.U <<'!STUFFY!FUNK!' -e 's/X//'
  1816. X?RCS:$Header: d_usendir.U,v 2.0 88/06/28 23:16:19 lwall Locked $
  1817. X?RCS: $Log:    d_usendir.U,v $
  1818. X?RCS: Revision 2.0  88/06/28  23:16:19  lwall
  1819. X?RCS: Baseline.
  1820. X?RCS: 
  1821. X?MAKE:d_usendir d_libndir ndirc ndiro: test contains libc
  1822. X?MAKE:    -pick add $@ %*
  1823. X?S:d_usendir:
  1824. X?S:    This variable conditionally defines the USENDIR symbol, which
  1825. X?S:    indicates to the C program that it should compile the ndir.c code
  1826. X?S:    provided with the package.
  1827. X?S:.
  1828. X?S:d_libndir:
  1829. X?S:    This variable conditionally defines the LIBNDIR symbol, which
  1830. X?S:    indicates to the C program that it should include the system's
  1831. X?S:    version of ndir.h, rather than the one with this package.
  1832. X?S:.
  1833. X?C:USENDIR:
  1834. X?C:    This symbol, if defined, indicates that the program should compile
  1835. X?C:    the ndir.c code provided with the package.
  1836. X?C:.
  1837. X?C:LIBNDIR:
  1838. X?C:    This symbol, if defined, indicates that the program should include the
  1839. X?C:    system's version of ndir.h, rather than the one with this package.
  1840. X?C:.
  1841. X?H:?%1:#$d_usendir    USENDIR        /**/
  1842. X?H:?%1:#$d_libndir    LIBNDIR        /**/
  1843. X?H:?%1:
  1844. X: see if there are directory access routines out there
  1845. Xecho " "
  1846. Xif $test -r /usr/include/ndir.h && \
  1847. X      ( $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a ); then
  1848. X    echo "Ndir library found."
  1849. X    if $test -r /usr/lib/libndir.a; then
  1850. X    ndirlib='-lndir'
  1851. X    else
  1852. X    ndirlib="/usr/local/lib/libndir.a"
  1853. X    fi
  1854. X    d_libndir="$define"
  1855. X    d_usendir="$undef"
  1856. X    ndirc=''
  1857. X    ndiro=''
  1858. Xelse
  1859. X    ndirlib=''
  1860. X    d_libndir="$undef"
  1861. X    if bsd && $contains '^readdir$' libc.list >/dev/null 2>&1 ; then
  1862. X    echo "No ndir library found, but you have readdir() so we'll use that."
  1863. X    d_usendir="$undef"
  1864. X    ndirc=''
  1865. X    ndiro=''
  1866. X    else
  1867. X    echo "No ndir library found--using ./ndir.c."
  1868. X    d_usendir="$define"
  1869. X    ndirc='ndir.c'
  1870. X    ndiro='ndir.o'
  1871. X    fi
  1872. Xfi
  1873. X
  1874. !STUFFY!FUNK!
  1875. echo Extracting Makefile
  1876. sed >Makefile <<'!STUFFY!FUNK!' -e 's/X//'
  1877. Xall:
  1878. X    cd mcon && make
  1879. X    cd pat && make
  1880. X    cd kit && make
  1881. X
  1882. Xinstall:
  1883. X    cd mcon && make install
  1884. X    cd pat && make install
  1885. X    cd kit && make install
  1886. !STUFFY!FUNK!
  1887. echo ""
  1888. echo "End of kit 4 (of 7)"
  1889. cat /dev/null >kit4isdone
  1890. run=''
  1891. config=''
  1892. for iskit in 1 2 3 4 5 6 7; do
  1893.     if test -f kit${iskit}isdone; then
  1894.     run="$run $iskit"
  1895.     else
  1896.     todo="$todo $iskit"
  1897.     fi
  1898. done
  1899. case $todo in
  1900.     '')
  1901.     echo "You have run all your kits.  Please read README and then type Configure."
  1902.     chmod 755 Configure
  1903.     ;;
  1904.     *)  echo "You have run$run."
  1905.     echo "You still need to run$todo."
  1906.     ;;
  1907. esac
  1908. : Someone might mail this, so...
  1909. exit
  1910.  
  1911.