home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume42 / dist-3.0 / patch23 next >
Internet Message Format  |  1994-05-06  |  52KB

  1. From: Raphael Manfredi <ram@acri.fr>
  2. Newsgroups: comp.sources.misc
  3. Subject: v42i074:  dist-3.0 - Configure script generator and related tools, Patch23
  4. Date: 6 May 1994 14:15:02 -0500
  5. Organization: Advanced Computer Research Institute, Lyon, France
  6. Sender: kent@sparky.sterling.com
  7. Approved: kent@sparky.sterling.com
  8. Message-ID: <2qe4vm$46s@sparky.sterling.com>
  9. X-Md4-Signature: b46727082cbbb07b3bf59a8c47b8c0b5
  10.  
  11. Submitted-by: Raphael Manfredi <ram@acri.fr>
  12. Posting-number: Volume 42, Issue 74
  13. Archive-name: dist-3.0/patch23
  14. Environment: UNIX, Perl, RCS
  15. Patch-To: dist-3.0: Volume 39, Issue 5-32
  16.  
  17. [The latest patch for dist version 3.0 is #26.]
  18.  
  19. System: dist version 3.0
  20. Patch #: 23
  21. Priority: MEDIUM
  22. Subject: new kitpost script
  23. Subject: thanks to Andy Dougherty for his contributions
  24. Subject: from now on, Wayne Davison's changes are flagged 'WED'
  25. Subject: extended copyright notice to 1994
  26. Subject: new script kitpost
  27. Subject: created
  28. Subject: random code cleanup to follow pat tools style
  29. Subject: made configurable from dist profile
  30. Subject: now understands -V and -h options
  31. Subject: mails now flagged with a bulk precedence
  32. Subject: added X-Mailer header and now calls mailer via open()
  33. Subject: documented new -V and -h options
  34. Subject: now mentions kitpost and kitsend
  35. Subject: initials for Wayne Davison are now WED
  36. Subject: added initials for new unit contributor Andy Dougherty
  37. Subject: made sure error status from csh is propagated (WED)
  38. Subject: cppminus must be after other cppflags, not before
  39. Subject: added blank lines around 'End of Configure'
  40. Subject: getfile could be confused by file name in "locate" requests
  41. Subject: new 'p' directive to assume file is in people's path (WED)
  42. Subject: added support for osf1 hints
  43. Subject: new support for solaris and i386 systems (ADO)
  44. Subject: avoid ALIGNBYTES, since it conflicts on NetBSD
  45. Subject: added support for gcc version (ADO)
  46. Subject: -fpcc-struct-return only needed in gcc 1.x (ADO)
  47. Subject: cppflags now computed on an option-by-option basis
  48. Subject: magically added cc flags now only done the first time
  49. Subject: fixed user name computation from /etc/passwd in bsd systems
  50. Subject: login name now computed the hard way
  51. Subject: added AIX support to accept shared lib stub as termlib (WED)
  52. Subject: now also check for htonl() macro (ADO)
  53. Subject: avoid looping in the "see that again?" prompt (WED)
  54. Subject: added support for seekdir, telldir and rewinddir (ADO)
  55. Subject: ensure string is not optimized in read-only memory (ADO)
  56. Subject: new Shmat_t symbol to declare return type of shmat()
  57. Subject: fixed a typo (WED)
  58. Subject: renamed strerror into Strerror to protect name space (ADO)
  59. Subject: now explicitely ask whether vfork() should be used (ADO)
  60. Subject: protected gidtype setting via setvar (ADO)
  61. Subject: made Gid_t comment more explicit (ADO)
  62. Subject: avoid conflicts with <string.h>
  63. Subject: had forgotten cppminus in cppstdin test (ADO)
  64. Subject: added knowledge for <sys/filio.h> (WED)
  65. Subject: optimized amount of findhdr calls
  66. Subject: now include all three defines in config.h (ADO)
  67. Subject: avoid inclusion of <vfork.h> if no vfork() used (ADO)
  68. Subject: added trailing blank line for metalint
  69. Subject: added shared library knowledge (ADO and WED)
  70. Subject: now uses full library path instead of -l notation
  71. Subject: now asks for library directories to be searched (ADO)
  72. Subject: now includes ordered default libswanted variable (ADO)
  73. Subject: major cleanup for library lookups (ADO)
  74. Subject: added support for multi-state regions (WED)
  75. Subject: ensure full path value is used for rmail also
  76. Subject: added support for MYMALLOC, mainly  for perl5 (ADO)
  77. Subject: added lint hint, assuring that nroff is used
  78. Subject: added support for MMDF mailboxes (WED)
  79. Subject: ensure cc flags used when looking for prototype support
  80. Subject: signal list now formatted to avoid scroll-ups (ADO)
  81. Subject: ensure usrinc value is preserved accross sessions (WED)
  82. Subject: documented the new 'p' option in Getfile.U
  83. Subject: added -L switch to override public unit repository path
  84. Subject: two new warnings concerning last unit lines
  85. Subject: cleaned up the 'prepend' command
  86. Subject: now saves the last unit line value for metalint
  87. Subject: now warns for units ending with non-blank line
  88. Subject: warn for units where last line is not new-line terminated
  89. Subject: two new files
  90. Date: Fri May 06 17:28:44 MET DST 1994
  91. From: Raphael Manfredi <ram@acri.fr>
  92.  
  93. Description:
  94.  
  95.     Added new kitpost script to post kits. This is the pending of
  96.     kitsend, which mails kits produced by makekit.
  97.  
  98.     Getfile.U now supports a new 'p' options (WED) and is no
  99.     longer confused by the file name given for 'locate' style
  100.     requests.
  101.  
  102.     Metalint now has a new -L option. See the manual page for
  103.     more information.
  104.  
  105.     Various cleanup and integration in this set of patches. Most
  106.     contributions come from Wayne Davison (WED) and Andy Dougherty
  107.     (ADO).
  108.  
  109.     Here is a summary of Wayne Davison changes as I received them:
  110.  
  111.     In the Filexp.U unit it attempts to save off the return value of
  112.     the /bin/csh command, but only manages to save off a "0" from when
  113.     the script is unpacked.
  114.  
  115.     Added some AIX support to d_havetlib.u to have it accept a shared
  116.     library stub as the termlib.
  117.  
  118.     Twiddled d_nolnbuf.U to allow you to just press return and to
  119.     not loop on the "see that again?" prompt.
  120.  
  121.     There's a typo (of mine) in d_strccmp.U (strccmp ==> strcasecmp).
  122.  
  123.     Added a check for <sys/filio.h> to the i_sysioctl.U unit.  I
  124.     believe this file only exists on SunOS systems, and when used
  125.     in conjunction with <termios.h>, produces a runnable executable
  126.     that doesn't have lots of warnings.  Note that under SunOS you
  127.     can't use <sys/ioctl.h> with <termios.h> -- it doesn't work, and
  128.     it makes a lot of noise while it compiles.  Previously I had to
  129.     force SunOS systems to use sgtty.h with a hint file, but this
  130.     doesn't work under new SunOS 5.x systems.  From the programmer's
  131.     perspective you want to include <sys/filio.h> if I_SYS_FILIO is
  132.     defined, even if I_SYS_IOCTL is also defined.
  133.  
  134.     libc.U has been updated to search for libs that end in .so.
  135.        ditto, libs.U.
  136.  
  137.        locdist.U has been updated to prompt for the multi-state region.
  138.  
  139.     mboxchar.U was updated to accept a ^A as the first character in
  140.     a mailbox file and mention it as the MMDF standard.
  141.  
  142.     usrinc.U was updated to not replace the user's last answer to
  143.     the /usr/include question.
  144.  
  145.     Here is a summary of Andy Dougherty's changes:
  146.  
  147.  
  148.     alignbytes.U
  149.     changed to MEM_ALIGNBYTES to avoid name conflict on NetBSD.
  150.  
  151.     cc.U
  152.     Added test to see which version of gcc is being used.  (Used in
  153.     ccflags.U)
  154.    
  155.     ccflags.U
  156.     Adjust ccflags based on which version of gcc is being used.
  157.     -fpcc-struct-return is no longer needed on version 2 gcc.
  158.     
  159.     d_htonl.U
  160.     Added a test to see if htonl was defined as a macro (as it is on many
  161.     big-endian machines).  This is redundant (but reassuring) if the 
  162.     programmer uses #if defined(HAS_HTONL) || defined(htonl).
  163.     
  164.     d_readdir.U
  165.     Added tests for seekdir, rewinddir, telldir for the paranoid (like
  166.     Larry?) who don't necessarily believe that just because a system has
  167.     readdir it will have the companion routines as well.
  168.     
  169.     d_safebcpy.U
  170.     An ANSI compiler (like gcc) could put one of the strings in read-only
  171.     memory leading to a failed test even if bcpy were safe.
  172.     
  173.     d_safemcpy.U
  174.     see d_safebcpy.U.
  175.     
  176.     d_shmat.U
  177.     Check whether shmat() returns char* or void*.  I've received one report 
  178.     that this doesn't always work, but no suggested fixes.
  179.     
  180.     d_strerror.U
  181.     Rename the strerror macro to Strerror() to avoid name-space problems.
  182.     
  183.     d_vfork.U
  184.     vfork is unreliable (esp. on Solaris), according to many reports.  Add
  185.     a prompt to ask if the user actually wants to use vfork.
  186.     
  187.     gidtype.U
  188.     Improved description.
  189.     
  190.     i_memory.U
  191.     Check for conflict with string.h declarations (sometimes see char* in
  192.     one and void* in the other header file.)  Prefer string.h if it
  193.     contains the mem* declarations.
  194.     
  195.     i_pwd.U
  196.     Add missing $cppminus flag.
  197.     
  198.     i_termio.U
  199.     Be sure to include the undef'd ones as well.  This will help users
  200.     who have to fiddle with config.h in case their system has problems.
  201.     Some systems have incomplete termios.h, or have ones that 
  202.     conflict with other system headers.
  203.     
  204.     i_vfork.U
  205.     Added d_vfork dependency.  Only check if the user has (and is using)
  206.     vfork.
  207.     
  208.     libc.U
  209.     Look for shared library versions (e.g. libdl.so.1.0) in case a
  210.     non-shared version does not exist.
  211.     
  212.     libpth.U
  213.     Major changes here, mostly inspired by reported problems on Solaris.
  214.     plibpth is set to empty except on the mips.  Mainly, this is to avoid
  215.     forcing things like /usr/ucblib into the search patch.  Further,
  216.     offer the opportunity to remove directories from libpth.  A solaris
  217.     hints file could use this to remove /usr/ucblib, if needed.
  218.     
  219.     libs.U
  220.     Major changes here.  Mainly, trying to pick up shared library versions
  221.     (both SysV-style _s and SunOS-style libxx.so.1.0) even if non-shared 
  222.     ones are available.
  223.     
  224.     mallocsrc.U
  225.     Define MYMALLOC C preprocessor symbol.  Used in perl, but maybe
  226.     nowhere else.  Not sure if this is useful.
  227.     
  228.     sig_name.U
  229.     Format the listing of signal names so they don't all scroll off the
  230.     screen.
  231.  
  232.     ... End of contributions ...
  233.  
  234.     I (RAM) have taken the liberty to slightly change Andy's changes
  235.     when I thought it would be needed.
  236.  
  237.     I have also changed ccflags.U so that it now computes the cppflags
  238.     by testing for each cc flag and seeing whether cpp chokes on them
  239.     or not.
  240.  
  241.     I also included ccflags when testing for prototype support, in
  242.     case there is a C switch to manually activate/disable it.
  243.  
  244.     Other random cleanup in units. You may grep for 'patch23' in
  245.     the source code to locate all of them. A big thank you to
  246.     both Wayne and Andy for their contribution.
  247.  
  248.  
  249. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your dist source
  250.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  251.     If you don't have the patch program, apply the following by hand,
  252.     or get patch (version 2.0, latest patchlevel).
  253.  
  254.     After patching:
  255.         *** DO NOTHING--INSTALL ALL PATCHES UP THROUGH #26 FIRST ***
  256.  
  257.     If patch indicates that patchlevel is the wrong version, you may need
  258.     to apply one or more previous patches, or the patch may already
  259.     have been applied.  See the patchlevel.h file to find out what has or
  260.     has not been applied.  In any event, don't continue with the patch.
  261.  
  262.     If you are missing previous patches they can be obtained from me:
  263.  
  264.         Raphael Manfredi <ram@acri.fr>
  265.  
  266.     If you send a mail message of the following form it will greatly speed
  267.     processing:
  268.  
  269.         Subject: Command
  270.         @SH mailpatch PATH dist 3.0 LIST
  271.                ^ note the c
  272.  
  273.     where PATH is a return path FROM ME TO YOU either in Internet notation,
  274.     or in bang notation from some well-known host, and LIST is the number
  275.     of one or more patches you need, separated by spaces, commas, and/or
  276.     hyphens.  Saying 35- says everything from 35 to the end.
  277.  
  278.     To get some more detailed instructions, send me the following mail:
  279.  
  280.         Subject: Command
  281.         @SH mailhelp PATH
  282.  
  283.  
  284. Index: patchlevel.h
  285. Prereq: 22
  286. 4c4
  287. < #define PATCHLEVEL 22
  288. ---
  289. > #define PATCHLEVEL 23
  290.  
  291. Index: kit/kitpost.SH
  292. *** kit/kitpost.SH.old    Fri May  6 17:28:06 1994
  293. --- kit/kitpost.SH    Fri May  6 17:28:06 1994
  294. ***************
  295. *** 0 ****
  296. --- 1,234 ----
  297. + case $CONFIG in
  298. + '')
  299. +     if test -f config.sh; then TOP=.;
  300. +     elif test -f ../config.sh; then TOP=..;
  301. +     elif test -f ../../config.sh; then TOP=../..;
  302. +     elif test -f ../../../config.sh; then TOP=../../..;
  303. +     elif test -f ../../../../config.sh; then TOP=../../../..;
  304. +     else
  305. +         echo "Can't find config.sh."; exit 1
  306. +     fi
  307. +     . $TOP/config.sh
  308. +     ;;
  309. + esac
  310. + case "$0" in
  311. + */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  312. + esac
  313. + echo "Extracting kit/kitpost (with variable substitutions)"
  314. + cat >kitpost <<!GROK!THIS!
  315. + $startperl
  316. +     eval "exec perl -S \$0 \$*"
  317. +         if \$running_under_some_shell;
  318. + # $Id: kitpost.SH,v 3.0.1.1 1994/05/06 13:54:53 ram Exp $
  319. + #
  320. + #  Copyright (c) 1991-1993, Raphael Manfredi
  321. + #  
  322. + #  You may redistribute only under the terms of the Artistic Licence,
  323. + #  as specified in the README file that comes with the distribution.
  324. + #  You may reuse parts of this distribution only within the terms of
  325. + #  that same Artistic Licence; a copy of which may be found at the root
  326. + #  of the source tree for dist 3.0.
  327. + #
  328. + # $Log: kitpost.SH,v $
  329. + # Revision 3.0.1.1  1994/05/06  13:54:53  ram
  330. + # patch23: created
  331. + #
  332. + \$inews='${inews-/usr/lib/news/inews}';
  333. + \$mailer='$mailer';
  334. + \$orgname='$orgname';
  335. + \$version = '$VERSION';
  336. + \$patchlevel = '$PATCHLEVEL';
  337. + !GROK!THIS!
  338. + cat >>kitpost <<'!NO!SUBS!'
  339. + $progname = &profile;    # Read ~/.dist_profile
  340. + require 'getopts.pl';
  341. + &usage unless $#ARGV >= 0;
  342. + &usage unless &Getopts("hrVm:D:H:");
  343. + if ($opt_V) {
  344. +     print STDERR "$progname $version PL$patchlevel\n";
  345. +     exit 0;
  346. + } elsif ($opt_h) {
  347. +     &usage;
  348. + }
  349. + $RCSEXT = ',v' unless $RCSEXT;
  350. + if ($inews eq 'inews') {
  351. +     $inews = '/usr/lib/news/inews' if -f '/usr/lib/news/inews';
  352. + }
  353. + chdir '..' if -d '../bugs';
  354. + &readpackage;
  355. + $orgname = &tilda_expand($orgname);
  356. + chop($orgname = `cat $orgname`) if $orgname =~ m|^/|;
  357. + if ($opt_r) {
  358. +     $repost = ' (REPOST)';
  359. + }
  360. + while ($_ = shift) {
  361. +     if (/^(kit)?[1-9][\d\-]*$/) {
  362. +         s/^kit//;
  363. +         push(@argv,$_);
  364. +     } else {
  365. +         push(@ngroups,$_);
  366. +     }
  367. + }
  368. + $ngroups = join(',',@ngroups) unless $#ngroups < 0;
  369. + $dest = $opt_m;
  370. + &usage unless $ngroups || $dest;
  371. + @ARGV = @argv;
  372. + if (-f "$package.kit10") {
  373. +     @filelist = <$package.kit[0-9][0-9]>;
  374. + }
  375. + else {
  376. +     @filelist = <$package.kit[0-9]>;
  377. + }
  378. + pop(@filelist) =~ /(\d+)$/ && ($maxnum = $1 + 0);
  379. + if ($#ARGV < 0) {
  380. +     $argv = "1-$maxnum";
  381. +     @ARGV = $argv;
  382. + }
  383. + $argv = &rangeargs(@ARGV);
  384. + @ARGV = split(' ', $argv);
  385. + $argv =~ s/ $//;
  386. + if ($#ARGV < 0) {
  387. +     print STDERR "$progname: no kits specified.\n";
  388. +     &usage;
  389. + } else {
  390. +     local($s) = $#ARGV ? 's' : '';
  391. +     print "$progname: posting $package $baserev kit$s $argv to $ngroups...\n"
  392. +         if $ngroups;
  393. +     print "$progname: mailing $package $baserev kit$s $argv to $dest...\n"
  394. +         if $dest;
  395. + }
  396. + $desc = "$opt_D, " if $opt_D;
  397. + fork && exit;
  398. + # Compute a suitable root message ID that all parts will reference, so that
  399. + # threaded news readers will correctly process them.
  400. + # Unfortunately, this works only when all kits are sent.
  401. + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
  402. +     localtime(time);
  403. + $mon++;
  404. + $rootid = "$year$mon$mday$hour$min$sec.AA$$";
  405. + $first = $maxnum >= 10 ? "01" : "1";
  406. + $rootmsgid = "<$rootid.P$first.$maintloc>";
  407. + until ($#ARGV < 0) {
  408. +     $kitnum = shift;
  409. +     $kitnum = "0$kitnum" if $kitnum < 10 && $maxnum >= 10;
  410. +     open(FILE, "$package.kit$kitnum") ||
  411. +         die "$progname: can't open $package.kit$kitnum: $!\n";
  412. +     if ($ngroups) {
  413. +         open(INEWS,"|$inews -h") || die "$progname: can't fork $inews: $!\n";
  414. +     }
  415. +     if ($dest) {
  416. +         $opt = '-odq' if $mailer =~ /sendmail/;
  417. +         $dest =~ s/,/ /g;
  418. +         ($to = $dest) =~ s/\s+/, /g;
  419. +         open(MAILER,"|$mailer $opt $dest") ||
  420. +             die "$progname: can't fork $mailer: $!\n";
  421. +     }
  422. +     $msg_id = "<$rootid.P$kitnum.$maintloc>";
  423. +     $msg_id = $rootmsgid if $kitnum == 1;
  424. +     $msg_id .= "\nReferences: $rootmsgid" if $kitnum != 1;
  425. +     print INEWS "Newsgroups: $ngroups\n";
  426. +     print MAILER "To: $to\n";
  427. + $head = <<EOH;
  428. + Subject: $package $baserev - ${desc}part$kitnum/$maxnum$repost
  429. + Message-ID: $msg_id
  430. + Organization: $orgname
  431. + Submitted-by: $maintname <$maintloc>
  432. + Archive-name: $package-$baserev/part$kitnum
  433. + Environment: UNIX
  434. + EOH
  435. +     print INEWS $head;
  436. +     print MAILER $head;
  437. +     if ($kitnum == 1 && $opt_H) {
  438. +         open(HEAD, $opt_H) || warn "$progname: can't open $opt_H: $!\n";
  439. +         while (<HEAD>) {
  440. +             print INEWS;
  441. +             print MAILER;
  442. +         }
  443. +         close HEAD;
  444. +     }
  445. +     while (<FILE>) {
  446. +         print INEWS;
  447. +         print MAILER;
  448. +     }
  449. +     close FILE;
  450. +     close INEWS;
  451. +     die "$progname: could not post part$kitnum.\n" if $ngroups && $?;
  452. +     close MAILER;
  453. +     die "$progname: could not send part$kitnum.\n" if $dest && $?;
  454. + }
  455. + sub usage {
  456. +     print STDERR <<EOM;
  457. + Usage: $progname [-hrV] [-H file] [-D desc] [-m dest1,dest2] [kits] [newsgroups]
  458. +   -h : print this message and exit
  459. +   -m : set-up recipients for (additional) mailing
  460. +   -r : signals a repost
  461. +   -D : specify description string for subject line
  462. +   -H : specify file to be used as header for first part
  463. +   -V : print version number and exit
  464. + EOM
  465. +     exit 1;
  466. + }
  467. + sub rangeargs {
  468. +     local($result) = '';
  469. +     local($min,$max,$_);
  470. +     while ($#_ >= 0) {
  471. +         $_ = shift(@_);
  472. +         while (/^\s*\d/) {
  473. +             s/^\s*(\d+)//;
  474. +             $min = $1;
  475. +             if (s/^,//) {
  476. +                 $max = $min;
  477. +             }
  478. +             elsif (s/^-(\d*)//) {
  479. +                 $max = $1;
  480. +                 if ($max == 0 && $maxnum) {
  481. +                     $max = $maxnum;
  482. +                 }
  483. +                 s/^[^,],?//;
  484. +             }
  485. +             else {
  486. +                 $max = $min;
  487. +             }
  488. +             for ($i = $min; $i <= $max; ++$i) {
  489. +                 $result .= $i . ' ';
  490. +             }
  491. +         }
  492. +     }
  493. +     $result;
  494. + }
  495. + !NO!SUBS!
  496. + $grep -v '^;#' ../pl/package.pl >>kitpost
  497. + $grep -v '^;#' ../pl/tilde.pl >>kitpost
  498. + $grep -v '^;#' ../pl/profile.pl >>kitpost
  499. + chmod +x kitpost
  500. + $eunicefix kitpost
  501.  
  502. Index: mcon/U/i_sysioctl.U
  503. Prereq: 3.0.1.1
  504. *** mcon/U/i_sysioctl.U.old    Fri May  6 17:28:24 1994
  505. --- mcon/U/i_sysioctl.U    Fri May  6 17:28:24 1994
  506. ***************
  507. *** 1,4 ****
  508. ! ?RCS: $Id: i_sysioctl.U,v 3.0.1.1 1993/11/10 17:36:09 ram Exp $
  509.   ?RCS:
  510.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  511.   ?RCS: 
  512. --- 1,4 ----
  513. ! ?RCS: $Id: i_sysioctl.U,v 3.0.1.2 1994/05/06 15:04:57 ram Exp $
  514.   ?RCS:
  515.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  516.   ?RCS: 
  517. ***************
  518. *** 9,28 ****
  519.   ?RCS: of the source tree for dist 3.0.
  520.   ?RCS:
  521.   ?RCS: $Log: i_sysioctl.U,v $
  522.   ?RCS: Revision 3.0.1.1  1993/11/10  17:36:09  ram
  523.   ?RCS: patch14: now use a compiler check for TIOCNOTTY because of HP-UX 9.x
  524.   ?RCS:
  525.   ?RCS: Revision 3.0  1993/08/18  12:08:32  ram
  526.   ?RCS: Baseline for dist 3.0 netwide release.
  527.   ?RCS:
  528. ! ?MAKE:i_sysioctl i_bsdioctl i_syssockio d_voidtty: test contains cat \
  529. !     i_termio i_termios i_sgtty Setvar Findhdr +cc rm
  530.   ?MAKE:    -pick add $@ %<
  531.   ?S:i_sysioctl:
  532.   ?S:    This variable conditionally defines the I_SYS_IOCTL symbol, which
  533.   ?S:    indicates to the C program that <sys/ioctl.h> exists and should
  534.   ?S:    be included.
  535.   ?S:.
  536.   ?S:i_bsdioctl:
  537.   ?S:    This variable conditionally defines the I_SYS_BSDIOCTL symbol, which
  538.   ?S:    indicates to the C program that <sys/bsdioctl.h> exists and should
  539. --- 9,37 ----
  540.   ?RCS: of the source tree for dist 3.0.
  541.   ?RCS:
  542.   ?RCS: $Log: i_sysioctl.U,v $
  543. + ?RCS: Revision 3.0.1.2  1994/05/06  15:04:57  ram
  544. + ?RCS: patch23: added knowledge for <sys/filio.h> (WED)
  545. + ?RCS: patch23: optimized amount of findhdr calls
  546. + ?RCS:
  547.   ?RCS: Revision 3.0.1.1  1993/11/10  17:36:09  ram
  548.   ?RCS: patch14: now use a compiler check for TIOCNOTTY because of HP-UX 9.x
  549.   ?RCS:
  550.   ?RCS: Revision 3.0  1993/08/18  12:08:32  ram
  551.   ?RCS: Baseline for dist 3.0 netwide release.
  552.   ?RCS:
  553. ! ?MAKE:i_sysioctl i_bsdioctl i_sysfilio i_syssockio d_voidtty: test contains \
  554. !     cat i_termio i_termios i_sgtty Setvar Findhdr +cc rm Inhdr
  555.   ?MAKE:    -pick add $@ %<
  556.   ?S:i_sysioctl:
  557.   ?S:    This variable conditionally defines the I_SYS_IOCTL symbol, which
  558.   ?S:    indicates to the C program that <sys/ioctl.h> exists and should
  559.   ?S:    be included.
  560.   ?S:.
  561. + ?S:i_sysfilio:
  562. + ?S:    This variable conditionally defines the I_SYS_FILIO symbol, which
  563. + ?S:    indicates to the C program that <sys/filio.h> exists and should
  564. + ?S:    be included in preference to <sys/ioctl.h>.
  565. + ?S:.
  566.   ?S:i_bsdioctl:
  567.   ?S:    This variable conditionally defines the I_SYS_BSDIOCTL symbol, which
  568.   ?S:    indicates to the C program that <sys/bsdioctl.h> exists and should
  569. ***************
  570. *** 43,48 ****
  571. --- 52,61 ----
  572.   ?C:    This symbol, if defined, indicates that <sys/ioctl.h> exists and should
  573.   ?C:    be included. Otherwise, include <sgtty.h> or <termio.h>.
  574.   ?C:.
  575. + ?C:I_SYS_FILIO:
  576. + ?C:    This symbol, if defined, indicates that <sys/filio.h> exists and
  577. + ?C:    should be included instead of <sys/ioctl.h>.
  578. + ?C:.
  579.   ?C:I_SYS_BSDIOCTL (I_BSDIOCTL):
  580.   ?C:    This symbol, if defined, indicates that <sys/bsdioctl.h> exists and should
  581.   ?C:    be included. Otherwise, try <sys/ioctl.h>. This is primarly intended for
  582. ***************
  583. *** 59,80 ****
  584.   ?C:    decriptors and do a setpgrp().
  585.   ?C:.
  586.   ?H:#$i_sysioctl    I_SYS_IOCTL        /**/
  587.   ?H:#$i_bsdioctl    I_SYS_BSDIOCTL        /**/
  588.   ?H:#$i_syssockio I_SYS_SOCKIO    /**/
  589.   ?H:#$d_voidtty USE_TIOCNOTTY    /**/
  590.   ?H:.
  591.   ?T:xxx
  592. ! : see if ioctl defs are in sgtty/termio or sys/ioctl
  593.   echo " "
  594.   if $test `./findhdr sys/ioctl.h`; then
  595.       val="$define"
  596. !     echo "<sys/ioctl.h> found." >&4
  597.   else
  598.       val="$undef"
  599. !     $test $i_termio = "$define" && xxx="termio.h"
  600. !     $test $i_termios = "$define" && xxx="termios.h"
  601. !     $test $i_sgtty = "$define" && xxx="sgtty.h"
  602.   echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
  603.   fi
  604.   ?LINT:set i_sysioctl
  605.   set i_sysioctl
  606. --- 72,101 ----
  607.   ?C:    decriptors and do a setpgrp().
  608.   ?C:.
  609.   ?H:#$i_sysioctl    I_SYS_IOCTL        /**/
  610. + ?H:#$i_sysfilio    I_SYS_FILIO        /**/
  611.   ?H:#$i_bsdioctl    I_SYS_BSDIOCTL        /**/
  612.   ?H:#$i_syssockio I_SYS_SOCKIO    /**/
  613.   ?H:#$d_voidtty USE_TIOCNOTTY    /**/
  614.   ?H:.
  615.   ?T:xxx
  616. ! : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
  617. ! ?LINT:set i_sysfilio
  618. ! set sys/filio.h i_sysfilio
  619. ! eval $inhdr
  620.   echo " "
  621.   if $test `./findhdr sys/ioctl.h`; then
  622.       val="$define"
  623. !     echo '<sys/ioctl.h> found.' >&4
  624.   else
  625.       val="$undef"
  626. !     if $test $i_sysfilio = "$define"; then
  627. !         echo '<sys/ioctl.h> NOT found.' >&4
  628. !     else
  629. !         $test $i_sgtty = "$define" && xxx="sgtty.h"
  630. !         $test $i_termio = "$define" && xxx="termio.h"
  631. !         $test $i_termios = "$define" && xxx="termios.h"
  632.   echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
  633. +     fi
  634.   fi
  635.   ?LINT:set i_sysioctl
  636.   set i_sysioctl
  637. ***************
  638. *** 87,94 ****
  639.   ?X:
  640.   : see if socket ioctl defs are in sys/bsdioctl or sys/ioctl
  641.   echo " "
  642. ! if $test `./findhdr sys/bsdioctl.h`; then
  643. !     if $contains SIOCATMARK `./findhdr sys/bsdioctl.h` >/dev/null 2>&1; then
  644.           val="$define"
  645.           echo "You have socket ioctls defined in <sys/bsdioctl.h>." >&4
  646.       else
  647. --- 108,116 ----
  648.   ?X:
  649.   : see if socket ioctl defs are in sys/bsdioctl or sys/ioctl
  650.   echo " "
  651. ! xxx=`./findhdr sys/bsdioctl.h`
  652. ! if $test "$xxx"; then
  653. !     if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
  654.           val="$define"
  655.           echo "You have socket ioctls defined in <sys/bsdioctl.h>." >&4
  656.       else
  657. ***************
  658. *** 107,114 ****
  659.   @if I_SYSSOCKIO || i_syssockio
  660.   : see if socket ioctl defs are in sys/sockio.h
  661.   echo " "
  662. ! if $test `./findhdr sys/sockio.h`; then
  663. !     if $contains SIOCATMARK `./findhdr sys/sockio.h` >/dev/null 2>&1; then
  664.           val="$define"
  665.           echo "You have socket ioctls defined in <sys/sockio.h>." >&4
  666.       else
  667. --- 129,137 ----
  668.   @if I_SYSSOCKIO || i_syssockio
  669.   : see if socket ioctl defs are in sys/sockio.h
  670.   echo " "
  671. ! xxx=`./findhdr sys/sockio.h`
  672. ! if $test "$xxx"; then
  673. !     if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
  674.           val="$define"
  675.           echo "You have socket ioctls defined in <sys/sockio.h>." >&4
  676.       else
  677.  
  678. Index: mcon/U/ccflags.U
  679. Prereq: 3.0.1.3
  680. *** mcon/U/ccflags.U.old    Fri May  6 17:28:14 1994
  681. --- mcon/U/ccflags.U    Fri May  6 17:28:15 1994
  682. ***************
  683. *** 1,4 ****
  684. ! ?RCS: $Id: ccflags.U,v 3.0.1.3 1993/09/13 15:58:29 ram Exp $
  685.   ?RCS:
  686.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  687.   ?RCS: 
  688. --- 1,4 ----
  689. ! ?RCS: $Id: ccflags.U,v 3.0.1.4 1994/05/06 14:28:45 ram Exp $
  690.   ?RCS:
  691.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  692.   ?RCS: 
  693. ***************
  694. *** 9,14 ****
  695. --- 9,19 ----
  696.   ?RCS: of the source tree for dist 3.0.
  697.   ?RCS:
  698.   ?RCS: $Log: ccflags.U,v $
  699. + ?RCS: Revision 3.0.1.4  1994/05/06  14:28:45  ram
  700. + ?RCS: patch23: -fpcc-struct-return only needed in gcc 1.x (ADO)
  701. + ?RCS: patch23: cppflags now computed on an option-by-option basis
  702. + ?RCS: patch23: magically added cc flags now only done the first time
  703. + ?RCS:
  704.   ?RCS: Revision 3.0.1.3  1993/09/13  15:58:29  ram
  705.   ?RCS: patch10: explicitely mention -DDEBUG just in case they need it (WAD)
  706.   ?RCS: patch10: removed all the "tans" variable usage (WAD)
  707. ***************
  708. *** 23,29 ****
  709.   ?RCS: Baseline for dist 3.0 netwide release.
  710.   ?RCS:
  711.   ?MAKE:ccflags ldflags lkflags cppflags optimize: test cat Myread Guess \
  712. !     Oldconfig +cc mips_type +usrinc package contains
  713.   ?MAKE:    -pick add $@ %<
  714.   ?S:ccflags:
  715.   ?S:    This variable contains any additional C compiler flags desired by
  716. --- 28,35 ----
  717.   ?RCS: Baseline for dist 3.0 netwide release.
  718.   ?RCS:
  719.   ?MAKE:ccflags ldflags lkflags cppflags optimize: test cat Myread Guess \
  720. !     Oldconfig +cc +gccversion mips_type +usrinc package contains rm \
  721. !     cppstdin cppminus cpprun cpplast
  722.   ?MAKE:    -pick add $@ %<
  723.   ?S:ccflags:
  724.   ?S:    This variable contains any additional C compiler flags desired by
  725. ***************
  726. *** 45,51 ****
  727.   ?S:    This variable contains any additional C partial linker flags desired by
  728.   ?S:    the user.  It is up to the Makefile to use this.
  729.   ?S:.
  730. ! ?T:inctest thisincl xxx flag inclwanted
  731.   ?D:cppflags=''
  732.   ?D:ccflags=''
  733.   ?D:ldflags=''
  734. --- 51,57 ----
  735.   ?S:    This variable contains any additional C partial linker flags desired by
  736.   ?S:    the user.  It is up to the Makefile to use this.
  737.   ?S:.
  738. ! ?T:inctest thisincl xxx flag inclwanted ftry previous
  739.   ?D:cppflags=''
  740.   ?D:ccflags=''
  741.   ?D:ldflags=''
  742. ***************
  743. *** 54,61 ****
  744.   ?INIT:
  745.   : determine optimize, if desired, or use for debug flag also
  746.   case "$optimize" in
  747. ! ' ') dflt="none";;
  748. ! '') dflt="-O";;
  749.   *) dflt="$optimize";;
  750.   esac
  751.   $cat <<EOH
  752. --- 60,67 ----
  753.   ?INIT:
  754.   : determine optimize, if desired, or use for debug flag also
  755.   case "$optimize" in
  756. ! ' ') dflt='none';;
  757. ! '') dflt='-O';;
  758.   *) dflt="$optimize";;
  759.   esac
  760.   $cat <<EOH
  761. ***************
  762. *** 74,83 ****
  763.   'none') optimize=" ";;
  764.   esac
  765.   
  766.   case "$ccflags" in
  767.   '')    case "$cc" in
  768. !     *gcc*) dflt='-fpcc-struct-return';;
  769. !     *) dflt='';;
  770.       esac
  771.       case "$optimize" in
  772.       *-g*) dflt="$dflt -DDEBUG";;
  773. --- 80,93 ----
  774.   'none') optimize=" ";;
  775.   esac
  776.   
  777. + dflt=''
  778.   case "$ccflags" in
  779.   '')    case "$cc" in
  780. !     *gcc*)
  781. !         if $test "$gccversion" = '1'; then
  782. !             dflt='-fpcc-struct-return'
  783. !         fi
  784. !         ;;
  785.       esac
  786.       case "$optimize" in
  787.       *-g*) dflt="$dflt -DDEBUG";;
  788. ***************
  789. *** 92,98 ****
  790.           ;;
  791.       esac
  792.       ;;
  793. - *) dflt="$ccflags" ;;
  794.   esac
  795.   
  796.   ?X: In USG mode, a MIPS system may need some BSD includes
  797. --- 102,107 ----
  798. ***************
  799. *** 142,147 ****
  800. --- 151,160 ----
  801.   case "$dflt" in
  802.   '') dflt=none;;
  803.   esac
  804. + case "$ccflags" in
  805. + '') ;;
  806. + *) dflt="$ccflags";;
  807. + esac
  808.   $cat <<EOH
  809.   
  810.   Your C compiler may want other flags.  For this question you should include
  811. ***************
  812. *** 165,171 ****
  813.   : the following weeds options from ccflags that are of no interest to cpp
  814.   cppflags="$ccflags"
  815.   case "$cc" in
  816. ! *gcc*) cppflags="$cppflags -D__GNUC__";;
  817.   esac
  818.   case "$mips_type" in
  819.   '');;
  820. --- 178,188 ----
  821.   : the following weeds options from ccflags that are of no interest to cpp
  822.   cppflags="$ccflags"
  823.   case "$cc" in
  824. ! *gcc*)
  825. !     if $test "$gccversion" = "1"; then
  826. !         cppflags="$cppflags -D__GNUC__"
  827. !     fi
  828. !     ;;
  829.   esac
  830.   case "$mips_type" in
  831.   '');;
  832. ***************
  833. *** 173,189 ****
  834.   esac
  835.   case "$cppflags" in
  836.   '');;
  837. ! *)  set X $cppflags
  838.       cppflags=''
  839. !     for flag
  840.       do
  841. !         case $flag in
  842. !         -D*|-I*|-traditional|-ansi|-nostdinc) cppflags="$cppflags $flag";;
  843.           esac
  844.       done
  845.       case "$cppflags" in
  846. !     *-*)  echo "(C preprocessor flags: $cppflags)";;
  847.       esac
  848.       ;;
  849.   esac
  850.   
  851. --- 190,238 ----
  852.   esac
  853.   case "$cppflags" in
  854.   '');;
  855. ! *)
  856. !     echo " "
  857. !     echo "Let me guess what the preprocessor flags are..." >&4
  858. !     set X $cppflags
  859. !     shift
  860.       cppflags=''
  861. !     $cat >cpp.c <<'EOM'
  862. ! #define BLURFL foo
  863. ! BLURFL xx LFRULB
  864. ! EOM
  865. ! ?X:
  866. ! ?X: For each cc flag, try it out with both cppstdin and cpprun, since the
  867. ! ?X: first is almost surely a cc wrapper. We have to try both in case
  868. ! ?X: of cc flags like '-Olimit 2900' that are actually two words...
  869. ! ?X:
  870. !     previous=''
  871. !     for flag in $*
  872.       do
  873. !         case "$flag" in
  874. !         -*) ftry="$flag";;
  875. !         *) ftry="$previous $flag";;
  876.           esac
  877. +         if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
  878. +             >cpp1.out 2>/dev/null && \
  879. +             $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
  880. +             >cpp2.out 2>/dev/null && \
  881. +             $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
  882. +             $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
  883. +         then
  884. +             cppflags="$cppflags $ftry"
  885. +             previous=''
  886. +         else
  887. +             previous="$flag"
  888. +         fi
  889.       done
  890. +     set X $cppflags
  891. +     shift
  892. +     cppflags=${1+"$@"}
  893.       case "$cppflags" in
  894. !     *-*)  echo "They appear to be: $cppflags";;
  895.       esac
  896. +     $rm -f cpp.c cpp?.out
  897.       ;;
  898.   esac
  899.   
  900. ***************
  901. *** 220,226 ****
  902.   . ./myread
  903.   case "$ans" in
  904.   none) lkflags='';;
  905. ! *)    lkflags="$ans";;
  906.   esac
  907.   
  908.   @end
  909. --- 269,275 ----
  910.   . ./myread
  911.   case "$ans" in
  912.   none) lkflags='';;
  913. ! *) lkflags="$ans";;
  914.   esac
  915.   
  916.   @end
  917.  
  918. Index: mcon/U/libs.U
  919. Prereq: 3.0.1.1
  920. *** mcon/U/libs.U.old    Fri May  6 17:28:29 1994
  921. --- mcon/U/libs.U    Fri May  6 17:28:29 1994
  922. ***************
  923. *** 1,4 ****
  924. ! ?RCS: $Id: libs.U,v 3.0.1.1 1993/08/25 14:02:31 ram Exp $
  925.   ?RCS:
  926.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  927.   ?RCS: 
  928. --- 1,4 ----
  929. ! ?RCS: $Id: libs.U,v 3.0.1.2 1994/05/06 15:08:45 ram Exp $
  930.   ?RCS:
  931.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  932.   ?RCS: 
  933. ***************
  934. *** 9,30 ****
  935.   ?RCS: of the source tree for dist 3.0.
  936.   ?RCS:
  937.   ?RCS: $Log: libs.U,v $
  938.   ?RCS: Revision 3.0.1.1  1993/08/25  14:02:31  ram
  939.   ?RCS: patch6: added default for libs
  940.   ?RCS:
  941.   ?RCS: Revision 3.0  1993/08/18  12:09:03  ram
  942.   ?RCS: Baseline for dist 3.0 netwide release.
  943.   ?RCS:
  944. ! ?MAKE:libs: test cat Myread Oldconfig Loc libpth incpath package xlibpth
  945.   ?MAKE:    -pick add $@ %<
  946.   ?S:libs:
  947.   ?S:    This variable holds the additional libraries we want to use.
  948.   ?S: It is up to the Makefile to deal with it.
  949.   ?S:.
  950. ! ?T:xxx yyy thislib thatlib libswanted
  951.   ?D:libs=''
  952. ! ?INIT:: no additional library wanted by default
  953. ! ?INIT:libswanted=''
  954.   ?INIT:
  955.   : Looking for optional libraries
  956.   echo " "
  957. --- 9,48 ----
  958.   ?RCS: of the source tree for dist 3.0.
  959.   ?RCS:
  960.   ?RCS: $Log: libs.U,v $
  961. + ?RCS: Revision 3.0.1.2  1994/05/06  15:08:45  ram
  962. + ?RCS: patch23: now includes ordered default libswanted variable (ADO)
  963. + ?RCS: patch23: major cleanup for library lookups (ADO)
  964. + ?RCS:
  965.   ?RCS: Revision 3.0.1.1  1993/08/25  14:02:31  ram
  966.   ?RCS: patch6: added default for libs
  967.   ?RCS:
  968.   ?RCS: Revision 3.0  1993/08/18  12:09:03  ram
  969.   ?RCS: Baseline for dist 3.0 netwide release.
  970.   ?RCS:
  971. ! ?MAKE:libs: test cat Myread Oldconfig Loc libpth package xlibpth
  972.   ?MAKE:    -pick add $@ %<
  973.   ?S:libs:
  974.   ?S:    This variable holds the additional libraries we want to use.
  975.   ?S: It is up to the Makefile to deal with it.
  976.   ?S:.
  977. ! ?T:xxx yyy zzz thislib thatlib libswanted
  978.   ?D:libs=''
  979. ! ?X:
  980. ! ?X: This order is chosen so that libraries  -lndir, -ldir, -lucb, -lbsd,
  981. ! ?X: -lBSD, -lPW, and -lx only get used if there are unresolved
  982. ! ?X: routines at link time.  Usually, these are backwards compatability
  983. ! ?X: libraries, and may not be as reliable as the standard c library.
  984. ! ?X:
  985. ! ?X: The -lsocket -linet -lnsl order has been reported to be necessary
  986. ! ?X: for at least one SVR4 implementation.
  987. ! ?X:
  988. ! ?X: The ordering of c_s, posix, and cposix is a guess and almost
  989. ! ?X: certainly wrong on about half of all systems.
  990. ! ?X:
  991. ! ?INIT:: default ordered library list
  992. ! ?INIT:libswanted='net socket inet nsl nm sdbm gdbm ndbm dbm malloc dl'
  993. ! ?INIT:libswanted="$libswanted dld sun m c_s posix cposix ndir dir ucb"
  994. ! ?INIT:libswanted="$libswanted bsd BSD PW x"
  995.   ?INIT:
  996.   : Looking for optional libraries
  997.   echo " "
  998. ***************
  999. *** 41,75 ****
  1000.       dbm) thatlib=ndbm;;
  1001.       *_s) thatlib=NONE;;
  1002.       *) thatlib="${thislib}_s";;
  1003. -     *) thatlib=NONE;;
  1004.       esac
  1005. !     yyy="$incpath/usr/ccs/lib $incpath/usr/lib $incpath/usr/ucblib"
  1006. !     yyy="$yyy $incpath/usr/local/lib $incpath/lib"
  1007. !     xxx=`./loc lib$thislib.a X $yyy`
  1008.       if $test -f $xxx; then
  1009.           echo "Found -l$thislib."
  1010. !         case "$dflt" in
  1011. !         *-l$thislib*|*-l$thatlib*);;
  1012.           *) dflt="$dflt -l$thislib";;
  1013.           esac
  1014.       else
  1015. !         xxx=`./loc lib$thislib.a X $libpth`
  1016.           if $test -f $xxx; then
  1017. !             echo "Found $xxx."
  1018. !             case "$dflt" in
  1019. !             *$xxx*);;
  1020. !             *) dflt="$dflt $xxx";;
  1021.               esac
  1022.           else
  1023. !             xxx=`./loc Slib$thislib.a X $xlibpth`
  1024.               if $test -f $xxx; then
  1025. !                 echo "Found -l$thislib."
  1026. !                 case "$dflt" in
  1027. !                 *-l$thislib*|*-l$thatlib*);;
  1028.                   *) dflt="$dflt -l$thislib";;
  1029.                   esac
  1030.               else
  1031. !                 echo "No -l$thislib."
  1032.               fi
  1033.           fi
  1034.       fi
  1035. --- 59,126 ----
  1036.       dbm) thatlib=ndbm;;
  1037.       *_s) thatlib=NONE;;
  1038.       *) thatlib="${thislib}_s";;
  1039.       esac
  1040. !     xxx=`./loc lib$thislib.a X $libpth`
  1041. !     yyy=`./loc lib$thatlib.a X $libpth`
  1042. !     zzz=`./loc lib$thislib.so.[0-9]'*' X $libpth`
  1043. ! ?X:
  1044. ! ?X: Comparaisons via case statement use the string " $dflt " to ensure that
  1045. ! ?X: each library is separated by a space. That way, by looking to something
  1046. ! ?X: like *"-l$thatlib "*, we ensure we find -lm and not -lmalloc (which was
  1047. ! ?X: the case with the old looking pattern *-l$thatlib*.
  1048. ! ?X:
  1049.       if $test -f $xxx; then
  1050.           echo "Found -l$thislib."
  1051. !         case " $dflt " in
  1052. !         *"-l$thislib "*|*"-l$thatlib "*);;
  1053. !         *) dflt="$dflt -l$thislib";;
  1054. !         esac
  1055. !     elif $test -f $yyy; then
  1056. !         echo "Found -l$thatlib."
  1057. !         case " $dflt " in
  1058. !         *"-l$thatlib "*);;
  1059. !         *) dflt="$dflt -l$thatlib";;
  1060. !         esac
  1061. !     elif $test -f $zzz; then
  1062. !         echo "Found -l$thislib (shared only)."
  1063. !         case " $dflt " in
  1064. !         *"-l$thislib "*|*"-l$thatlib "*);;
  1065.           *) dflt="$dflt -l$thislib";;
  1066.           esac
  1067.       else
  1068. !         xxx=`./loc Slib$thislib.a X $xlibpth`
  1069. !         yyy=`./loc Slib$thatlib.a X $xlibpth`
  1070.           if $test -f $xxx; then
  1071. !             echo "Found -l$thislib."
  1072. !             case " $dflt " in
  1073. !             *"-l$thislib "*|*"-l$thatlib "*);;
  1074. !             *) dflt="$dflt -l$thislib";;
  1075. !             esac
  1076. !         elif $test -f $yyy; then
  1077. !             echo "Found -l$thatlib."
  1078. !             case " $dflt " in
  1079. !             *"-l$thatlib "*);;
  1080. !             *) dflt="$dflt -l$thatlib";;
  1081.               esac
  1082.           else
  1083. !             xxx=`./loc lib$thislib.so X $libpth`
  1084.               if $test -f $xxx; then
  1085. !                 echo "Found -l$thislib (shared only)."
  1086. !                 case " $dflt " in
  1087. !                 *"-l$thislib "*|*"-l$thatlib "*);;
  1088.                   *) dflt="$dflt -l$thislib";;
  1089.                   esac
  1090.               else
  1091. !                 xxx=`./loc lib$thislib.so X $libpth`
  1092. !                 if $test -f $xxx; then
  1093. !                     echo "Found -l$thislib (shared only)."
  1094. !                     case "$dflt" in
  1095. !                     *-l$thislib*|*-l$thatlib*);;
  1096. !                     *) dflt="$dflt -l$thislib";;
  1097. !                     esac
  1098. !                 else
  1099. !                     echo "No -l$thislib."
  1100. !                 fi
  1101.               fi
  1102.           fi
  1103.       fi
  1104.  
  1105. Index: mcon/man/mlint.SH
  1106. Prereq: 3.0.1.4
  1107. *** mcon/man/mlint.SH.old    Fri May  6 17:28:37 1994
  1108. --- mcon/man/mlint.SH    Fri May  6 17:28:37 1994
  1109. ***************
  1110. *** 20,26 ****
  1111.   .TH METACONFIG $manext "Version $VERSION PL$PATCHLEVEL"
  1112.   ''' @(#) Manual page for metalint
  1113.   '''
  1114. ! ''' $Id: mlint.SH,v 3.0.1.4 1994/01/24 14:20:39 ram Exp $
  1115.   '''
  1116.   '''  Copyright (c) 1991-1993, Raphael Manfredi
  1117.   '''  
  1118. --- 20,26 ----
  1119.   .TH METACONFIG $manext "Version $VERSION PL$PATCHLEVEL"
  1120.   ''' @(#) Manual page for metalint
  1121.   '''
  1122. ! ''' $Id: mlint.SH,v 3.0.1.5 1994/05/06 15:20:30 ram Exp $
  1123.   '''
  1124.   '''  Copyright (c) 1991-1993, Raphael Manfredi
  1125.   '''  
  1126. ***************
  1127. *** 31,36 ****
  1128. --- 31,40 ----
  1129.   '''  of the source tree for dist 3.0.
  1130.   '''
  1131.   ''' $Log: mlint.SH,v $
  1132. + ''' Revision 3.0.1.5  1994/05/06  15:20:30  ram
  1133. + ''' patch23: added -L switch to override public unit repository path
  1134. + ''' patch23: two new warnings concerning last unit lines
  1135. + '''
  1136.   ''' Revision 3.0.1.4  1994/01/24  14:20:39  ram
  1137.   ''' patch16: can now easily suppress warning about made "special units"
  1138.   '''
  1139. ***************
  1140. *** 52,57 ****
  1141. --- 56,62 ----
  1142.   .SH SYNOPSIS
  1143.   .B metalint
  1144.   [ \-\fBhklsV\fR ]
  1145. + [ \-\fBL \fIdir\fR ]
  1146.   .SH DESCRIPTION
  1147.   .I Metalint
  1148.   parses the units and performs some extensive consistency checks, to make sure
  1149. ***************
  1150. *** 82,87 ****
  1151. --- 87,98 ----
  1152.   .B \-s
  1153.   Silent mode.
  1154.   .TP
  1155. + \fB\-L\fI dir\fR
  1156. + Override default library location. Normally only useful for metaconfig
  1157. + maintainers to locally check the units being developped instead of the
  1158. + publicly available ones. The \fIdir\fR specified is the one containing the
  1159. + units \fIU\fR directory.
  1160. + .TP
  1161.   .B \-V
  1162.   Print version number and exit.
  1163.   .SH DIAGNOSTICS
  1164. ***************
  1165. *** 189,194 ****
  1166. --- 200,213 ----
  1167.   "no ?MAKE: line describing dependencies."
  1168.   Every unit should have a dependency line, or it will be silently ignored by
  1169.   \fImetaconfig\fR.
  1170. + .TP
  1171. + "not ending with a blank line."
  1172. + Since all units are gathered together to form one big script, it is recommended
  1173. + (hence enforced by \fImetalint\fR) that every unit file end with an empty line.
  1174. + .TP
  1175. + "last line not ending with a new-line character."
  1176. + This is merely intended to users whose editor does not always append a
  1177. + new-line at the end of text files. Should not happen when you use \fIvi\fR.
  1178.   .TP
  1179.   "symbol '\$xxx' was not described."
  1180.   The shell symbol defined by this unit was not documented. Use the \fIdescribe\fR
  1181.  
  1182. Index: mcon/mlint.SH
  1183. Prereq: 3.0.1.2
  1184. *** mcon/mlint.SH.old    Fri May  6 17:28:38 1994
  1185. --- mcon/mlint.SH    Fri May  6 17:28:38 1994
  1186. ***************
  1187. *** 20,26 ****
  1188.       eval "exec perl -S \$0 \$*"
  1189.           if \$running_under_some_shell;
  1190.   
  1191. ! # $Id: mlint.SH,v 3.0.1.2 1994/01/24 14:21:00 ram Exp $
  1192.   #
  1193.   #  Copyright (c) 1991-1993, Raphael Manfredi
  1194.   #  
  1195. --- 20,26 ----
  1196.       eval "exec perl -S \$0 \$*"
  1197.           if \$running_under_some_shell;
  1198.   
  1199. ! # $Id: mlint.SH,v 3.0.1.3 1994/05/06 15:20:42 ram Exp $
  1200.   #
  1201.   #  Copyright (c) 1991-1993, Raphael Manfredi
  1202.   #  
  1203. ***************
  1204. *** 33,38 ****
  1205. --- 33,41 ----
  1206.   # Original Author: Harlan Stenn <harlan@mumps.pfcs.com>
  1207.   #
  1208.   # $Log: mlint.SH,v $
  1209. + # Revision 3.0.1.3  1994/05/06  15:20:42  ram
  1210. + # patch23: added -L switch to override public unit repository path
  1211. + #
  1212.   # Revision 3.0.1.2  1994/01/24  14:21:00  ram
  1213.   # patch16: added ~/.dist_profile awareness
  1214.   #
  1215. ***************
  1216. *** 52,67 ****
  1217.   !GROK!THIS!
  1218.   
  1219.   $spitshell >>mlint <<'!NO!SUBS!'
  1220. - chop($date = `date`);
  1221. - $MC = &tilda_expand($MC);        # ~name expansion
  1222. - chop($WD = `pwd`);                # Working directory
  1223. - chdir $MC || die "Can't chdir to $MC: $!\n";
  1224. - chop($MC = `pwd`);                # Real metalint lib path (no symbolic links)
  1225. - chdir $WD || die "Can't chdir back to $WD: $!\n";
  1226.   &profile;                        # Read ~/.dist_profile
  1227.   require 'getopts.pl';
  1228. ! &usage unless &Getopts("hklV");
  1229.   
  1230.   if ($opt_V) {
  1231.       print STDERR "metalint $version PL$patchlevel\n";
  1232. --- 55,63 ----
  1233.   !GROK!THIS!
  1234.   
  1235.   $spitshell >>mlint <<'!NO!SUBS!'
  1236.   &profile;                        # Read ~/.dist_profile
  1237.   require 'getopts.pl';
  1238. ! &usage unless &Getopts("hklVL:");
  1239.   
  1240.   if ($opt_V) {
  1241.       print STDERR "metalint $version PL$patchlevel\n";
  1242. ***************
  1243. *** 70,75 ****
  1244. --- 66,79 ----
  1245.       &usage;
  1246.   }
  1247.   
  1248. + chop($date = `date`);
  1249. + $MC = $opt_L if $opt_L;            # May override library path
  1250. + $MC = &tilda_expand($MC);        # ~name expansion
  1251. + chop($WD = `pwd`);                # Working directory
  1252. + chdir $MC || die "Can't chdir to $MC: $!\n";
  1253. + chop($MC = `pwd`);                # Real metalint lib path (no symbolic links)
  1254. + chdir $WD || die "Can't chdir back to $WD: $!\n";
  1255.   &init;                                    # Various initializations
  1256.   `mkdir .MT 2>&1` unless -d '.MT';        # For private temporary files
  1257.   
  1258. ***************
  1259. *** 109,119 ****
  1260.   # Print out metalint's usage and exits
  1261.   sub usage {
  1262.       print STDERR <<EOM;
  1263. ! Usage: metalint [-hklsV]
  1264.     -h : print this help message and exits.
  1265.     -k : keep temporary directory.
  1266.     -l : also report problems from library units.
  1267.     -s : silent mode.
  1268.     -V : print version number and exits.
  1269.   EOM
  1270.       exit 1;
  1271. --- 113,124 ----
  1272.   # Print out metalint's usage and exits
  1273.   sub usage {
  1274.       print STDERR <<EOM;
  1275. ! Usage: metalint [-hklsV] [-L dir]
  1276.     -h : print this help message and exits.
  1277.     -k : keep temporary directory.
  1278.     -l : also report problems from library units.
  1279.     -s : silent mode.
  1280. +   -L : specify main units repository.
  1281.     -V : print version number and exits.
  1282.   EOM
  1283.       exit 1;
  1284.  
  1285. Index: kit/kitsend.SH
  1286. Prereq: 3.0.1.1
  1287. *** kit/kitsend.SH.old    Fri May  6 17:28:07 1994
  1288. --- kit/kitsend.SH    Fri May  6 17:28:07 1994
  1289. ***************
  1290. *** 20,26 ****
  1291.       eval 'exec perl -S \$0 "\$@"'
  1292.           if \$running_under_some_shell;
  1293.   
  1294. ! # $Id: kitsend.SH,v 3.0.1.1 1993/08/19 06:42:15 ram Exp $
  1295.   #
  1296.   #  Copyright (c) 1991-1993, Raphael Manfredi
  1297.   #  
  1298. --- 20,26 ----
  1299.       eval 'exec perl -S \$0 "\$@"'
  1300.           if \$running_under_some_shell;
  1301.   
  1302. ! # $Id: kitsend.SH,v 3.0.1.2 1994/05/06 13:59:57 ram Exp $
  1303.   #
  1304.   #  Copyright (c) 1991-1993, Raphael Manfredi
  1305.   #  
  1306. ***************
  1307. *** 33,38 ****
  1308. --- 33,45 ----
  1309.   # Original Author: Harlan Stenn <harlan@mumps.pfcs.com>
  1310.   #
  1311.   # $Log: kitsend.SH,v $
  1312. + # Revision 3.0.1.2  1994/05/06  13:59:57  ram
  1313. + # patch23: random code cleanup to follow pat tools style
  1314. + # patch23: made configurable from dist profile
  1315. + # patch23: now understands -V and -h options
  1316. + # patch23: mails now flagged with a bulk precedence
  1317. + # patch23: added X-Mailer header and now calls mailer via open()
  1318. + #
  1319.   # Revision 3.0.1.1  1993/08/19  06:42:15  ram
  1320.   # patch1: leading config.sh searching was not aborting properly
  1321.   #
  1322. ***************
  1323. *** 42,50 ****
  1324. --- 49,71 ----
  1325.   
  1326.   \$orgname='$orgname';
  1327.   \$mailer='$mailer';
  1328. + \$version = '$VERSION';
  1329. + \$patchlevel = '$PATCHLEVEL';
  1330.   !GROK!THIS!
  1331.   cat >>kitsend <<'!NO!SUBS!'
  1332.   
  1333. + $progname = &profile;        # Read ~/.dist_profile
  1334. + require 'getopts.pl';
  1335. + &usage unless &Getopts('hV');
  1336. + if ($opt_V) {
  1337. +     print STDERR "$progname $version PL$patchlevel\n";
  1338. +     exit 0;
  1339. + } elsif ($opt_h) {
  1340. +     &usage;
  1341. + }
  1342. + $orgname = &tilda_expand($orgname);
  1343.   chop($orgname = `cat $orgname`) if $orgname =~ m|^/|;
  1344.   
  1345.   &readpackage;
  1346. ***************
  1347. *** 59,65 ****
  1348.       }
  1349.   }
  1350.   $dest = join(' ',@dest);
  1351. ! die "Usage: kitsend [kits] dest\n" unless $dest;
  1352.   
  1353.   @ARGV = @argv;
  1354.   
  1355. --- 80,86 ----
  1356.       }
  1357.   }
  1358.   $dest = join(' ',@dest);
  1359. ! &usage unless $dest;
  1360.   
  1361.   @ARGV = @argv;
  1362.   
  1363. ***************
  1364. *** 75,91 ****
  1365.       $argv = "1-$maxnum";
  1366.       @ARGV = $argv;
  1367.   }
  1368. ! $argv = do rangeargs(@ARGV);
  1369. ! @ARGV = split(' ',$argv);
  1370.   
  1371.   $argv =~ s/ $//;
  1372.   
  1373.   if ($#ARGV < 0) {
  1374. !     die "No kits specified.\n";
  1375.   } elsif ($#ARGV) {
  1376. !     print "Sending $package $baserev kits $argv to $dest...\n";
  1377.   } else {
  1378. !     print "Sending $package $baserev kit $argv to $dest...\n";
  1379.   }
  1380.   
  1381.   fork && exit;
  1382. --- 96,112 ----
  1383.       $argv = "1-$maxnum";
  1384.       @ARGV = $argv;
  1385.   }
  1386. ! $argv = &rangeargs(@ARGV);
  1387. ! @ARGV = split(' ', $argv);
  1388.   
  1389.   $argv =~ s/ $//;
  1390.   
  1391.   if ($#ARGV < 0) {
  1392. !     die "$progname: no kits specified.\n";
  1393.   } elsif ($#ARGV) {
  1394. !     print "$progname: sending $package $baserev kits $argv to $dest...\n";
  1395.   } else {
  1396. !     print "$progname: sending $package $baserev kit $argv to $dest...\n";
  1397.   }
  1398.   
  1399.   fork && exit;
  1400. ***************
  1401. *** 94,118 ****
  1402.   
  1403.   until ($#ARGV < 0) {
  1404.       $kitnum = shift;
  1405. !     open(XHEAD,">.xhead$$") || die "kitsend: can't create temp file: $!.\n";
  1406. !     print XHEAD
  1407. ! "To: $dest
  1408.   Subject: $package $baserev kit #$kitnum
  1409.   Organization: $orgname
  1410.   
  1411.   [There are $maxnum kits for $package version $baserev.]
  1412.   
  1413.   ";
  1414. !     $kitnum = "0$kitnum" if $kitnum < 10 && $maxnum >= 10;
  1415. !     open(PATCH,"$package.kit$kitnum") ||
  1416. !         die "kitsend: can't open $package.kit$kitnum: $!\n";
  1417. !     while (<PATCH>) {
  1418. !         print XHEAD;
  1419.       }
  1420. -     close XHEAD;
  1421. -     system "$mailer $opt $dest <.xhead$$";
  1422.   }
  1423. ! unlink ".xhead$$";
  1424.   
  1425.   sub rangeargs {
  1426.       local($result) = '';
  1427. --- 115,159 ----
  1428.   
  1429.   until ($#ARGV < 0) {
  1430.       $kitnum = shift;
  1431. !     # Provision for broken mailers...
  1432. !     @dest = split(' ', $dest);
  1433. !     while (@smalldest = splice(@dest, 0, 50)) {
  1434. !         $to = join(', ', @smalldest);    # Sensible To: for sendmail
  1435. !         $smalldest = join(' ', @smalldest);
  1436. !         open(MAILER, "|$mailer $opt $smalldest") ||
  1437. !             die "$progname: can't fork $mailer: $!\n";
  1438. !         print MAILER
  1439. ! "To: $to
  1440.   Subject: $package $baserev kit #$kitnum
  1441. + Precedence: bulk
  1442. + X-Mailer: dist [version $version PL$patchlevel]
  1443.   Organization: $orgname
  1444.   
  1445.   [There are $maxnum kits for $package version $baserev.]
  1446.   
  1447.   ";
  1448. !         $kitnum = "0$kitnum" if $kitnum < 10 && $maxnum >= 10;
  1449. !         open(FILE,"$package.kit$kitnum") ||
  1450. !             die "$progname: can't open $package.kit$kitnum: $!\n";
  1451. !         while (<FILE>) {
  1452. !             print MAILER;
  1453. !         }
  1454. !         close FILE;
  1455. !         close MAILER;
  1456. !         warn "$progname: ERROR mailing of $package.kit$kitnum to $dest\n" if $?;
  1457.       }
  1458.   }
  1459. ! sub usage {
  1460. !     print STDERR <<EOM;
  1461. ! Usage: $progname [-hV] [kits] dest
  1462. !   -h : print this message and exit
  1463. !   -V : print version number and exit
  1464. ! EOM
  1465. !     exit 1;
  1466. ! }
  1467.   
  1468.   sub rangeargs {
  1469.       local($result) = '';
  1470. ***************
  1471. *** 145,149 ****
  1472. --- 186,192 ----
  1473.   
  1474.   !NO!SUBS!
  1475.   $grep -v '^;#' ../pl/package.pl >>kitsend
  1476. + $grep -v '^;#' ../pl/tilde.pl >>kitsend
  1477. + $grep -v '^;#' ../pl/profile.pl >>kitsend
  1478.   chmod +x kitsend
  1479.   $eunicefix kitsend
  1480.  
  1481. Index: mcon/U/libpth.U
  1482. Prereq: 3.0
  1483. *** mcon/U/libpth.U.old    Fri May  6 17:28:28 1994
  1484. --- mcon/U/libpth.U    Fri May  6 17:28:28 1994
  1485. ***************
  1486. *** 1,4 ****
  1487. ! ?RCS: $Id: libpth.U,v 3.0 1993/08/18 12:09:02 ram Exp $
  1488.   ?RCS:
  1489.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  1490.   ?RCS: 
  1491. --- 1,4 ----
  1492. ! ?RCS: $Id: libpth.U,v 3.0.1.1 1994/05/06 15:07:53 ram Exp $
  1493.   ?RCS:
  1494.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  1495.   ?RCS: 
  1496. ***************
  1497. *** 9,21 ****
  1498.   ?RCS: of the source tree for dist 3.0.
  1499.   ?RCS:
  1500.   ?RCS: $Log: libpth.U,v $
  1501.   ?RCS: Revision 3.0  1993/08/18  12:09:02  ram
  1502.   ?RCS: Baseline for dist 3.0 netwide release.
  1503.   ?RCS:
  1504.   ?X:
  1505.   ?X:    This unit initializes the path for C library lookup.
  1506.   ?X:
  1507. ! ?MAKE:libpth xlibpth plibpth: mips incpath
  1508.   ?MAKE:    -pick add $@ %<
  1509.   ?S:libpth:
  1510.   ?S:    This variable holds the general path used to find libraries. It is
  1511. --- 9,24 ----
  1512.   ?RCS: of the source tree for dist 3.0.
  1513.   ?RCS:
  1514.   ?RCS: $Log: libpth.U,v $
  1515. + ?RCS: Revision 3.0.1.1  1994/05/06  15:07:53  ram
  1516. + ?RCS: patch23: now asks for library directories to be searched (ADO)
  1517. + ?RCS:
  1518.   ?RCS: Revision 3.0  1993/08/18  12:09:02  ram
  1519.   ?RCS: Baseline for dist 3.0 netwide release.
  1520.   ?RCS:
  1521.   ?X:
  1522.   ?X:    This unit initializes the path for C library lookup.
  1523.   ?X:
  1524. ! ?MAKE:libpth glibpth xlibpth plibpth: mips incpath test cat Myread Oldconfig
  1525.   ?MAKE:    -pick add $@ %<
  1526.   ?S:libpth:
  1527.   ?S:    This variable holds the general path used to find libraries. It is
  1528. ***************
  1529. *** 24,48 ****
  1530.   ?S:plibpth:
  1531.   ?S:    Holds the private path used by Configure to find out the libraries.
  1532.   ?S:    Its value is prepend to libpth. This variable takes care of special
  1533. ! ?S:    machines, like the mips.
  1534.   ?S:.
  1535.   ?INIT:: change the next line if compiling for Xenix/286 on Xenix/386
  1536.   ?INIT:xlibpth='/usr/lib/386 /lib/386'
  1537.   ?INIT:
  1538.   ?INIT:: general looking path for locating libraries
  1539. ! ?INIT:libpth='/usr/lib/large /lib '$xlibpth' /lib/large'
  1540. ! ?INIT:libpth=$libpth' /usr/lib/small /lib/small'
  1541.   ?INIT:
  1542. ! ?LINT:describe xlibpth
  1543.   ?LINT:use mips
  1544.   : Set private lib path
  1545.   case "$plibpth" in
  1546.   '') if mips; then
  1547.   ?X: on mips, we DO NOT want /lib, and we want $incpath/usr/lib
  1548.           plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
  1549. -     else
  1550. -         plibpth="/usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib"
  1551.       fi;;
  1552.   esac
  1553. ! libpth="$plibpth $libpth"
  1554.   
  1555. --- 27,94 ----
  1556.   ?S:plibpth:
  1557.   ?S:    Holds the private path used by Configure to find out the libraries.
  1558.   ?S:    Its value is prepend to libpth. This variable takes care of special
  1559. ! ?S:    machines, like the mips.  Usually, it should be empty.
  1560.   ?S:.
  1561. + ?T: xxx dlist
  1562.   ?INIT:: change the next line if compiling for Xenix/286 on Xenix/386
  1563.   ?INIT:xlibpth='/usr/lib/386 /lib/386'
  1564.   ?INIT:
  1565.   ?INIT:: general looking path for locating libraries
  1566. ! ?INIT:glibpth="/usr/lib/large /lib /usr/lib $xlibpth /lib/large"
  1567. ! ?INIT:glibpth="$libpth /usr/lib/small /lib/small"
  1568. ! ?INIT:glibpth="$libpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
  1569. ! ?INIT:
  1570. ! ?INIT:: Private path used by Configure to find libraries.  Its value
  1571. ! ?INIT:: is prepended to libpth. This variable takes care of special
  1572. ! ?INIT:: machines, like the mips.  Usually, it should be empty.
  1573. ! ?INIT:plibpth=''
  1574.   ?INIT:
  1575. ! ?LINT:describe xlibpth glibpth
  1576.   ?LINT:use mips
  1577.   : Set private lib path
  1578.   case "$plibpth" in
  1579.   '') if mips; then
  1580.   ?X: on mips, we DO NOT want /lib, and we want $incpath/usr/lib
  1581.           plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
  1582.       fi;;
  1583.   esac
  1584. ! case "$libpth" in
  1585. ! ' ') dlist='';;
  1586. ! '') dlist="$plibpth $glibpth";;
  1587. ! *) dlist="$libpth";;
  1588. ! esac
  1589. ! : Now check and see which directories actually exist, avoiding duplicates
  1590. ! libpth=''
  1591. ! for xxx in $dlist
  1592. ! do
  1593. !     if $test -d $xxx; then
  1594. !         case " $libpth " in
  1595. !         *" $xxx "*) ;;
  1596. !         *) libpth="$libpth $xxx";;
  1597. !         esac
  1598. !     fi
  1599. ! done
  1600. ! $cat <<'EOM'
  1601. ! Some systems have incompatible or broken versions of libraries.  Among
  1602. ! the directories listed in the question below, please remove the one
  1603. ! you know not to be holding relevant libraries.  Say "none" for none.
  1604. ! EOM
  1605. ! case "$libpth" in
  1606. ! '') dflt='none';;
  1607. ! *)
  1608. ! ?X: strip leading space
  1609. !     set X $libpth
  1610. !     shift
  1611. !     dflt=${1+"$@"}
  1612. !     ;;
  1613. ! esac
  1614. ! rp="Directories to use for library searches?"
  1615. ! . ./myread
  1616. ! case "$ans" in
  1617. ! none) libpth=' ';;
  1618. ! *) libpth="$ans";;
  1619. ! esac
  1620.   
  1621.  
  1622. Index: mcon/U/Getfile.U
  1623. Prereq: 3.0.1.2
  1624. *** mcon/U/Getfile.U.old    Fri May  6 17:28:11 1994
  1625. --- mcon/U/Getfile.U    Fri May  6 17:28:11 1994
  1626. ***************
  1627. *** 1,4 ****
  1628. ! ?RCS: $Id: Getfile.U,v 3.0.1.2 1994/01/24 14:01:31 ram Exp $
  1629.   ?RCS:
  1630.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  1631.   ?RCS: 
  1632. --- 1,4 ----
  1633. ! ?RCS: $Id: Getfile.U,v 3.0.1.3 1994/05/06 14:23:36 ram Exp $
  1634.   ?RCS:
  1635.   ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
  1636.   ?RCS: 
  1637. ***************
  1638. *** 9,14 ****
  1639. --- 9,18 ----
  1640.   ?RCS: of the source tree for dist 3.0.
  1641.   ?RCS:
  1642.   ?RCS: $Log: Getfile.U,v $
  1643. + ?RCS: Revision 3.0.1.3  1994/05/06  14:23:36  ram
  1644. + ?RCS: patch23: getfile could be confused by file name in "locate" requests
  1645. + ?RCS: patch23: new 'p' directive to assume file is in people's path (WED)
  1646. + ?RCS:
  1647.   ?RCS: Revision 3.0.1.2  1994/01/24  14:01:31  ram
  1648.   ?RCS: patch16: added metalint hint on changed 'ans' variable
  1649.   ?RCS:
  1650. ***************
  1651. *** 51,56 ****
  1652. --- 55,63 ----
  1653.   ?X:   . ./getfile
  1654.   ?X:   active="$ans"
  1655.   ?X: 
  1656. + ?X: If the 'p' (path) letter is specified along with 'l', then an answer
  1657. + ?X: without a leading / will be expected to be found in everyone's path.
  1658. + ?X:
  1659.   ?X: If the answer to the question is 'none', then the existence checks are
  1660.   ?X:    skipped and the empty string is returned.
  1661.   ?X:
  1662. ***************
  1663. *** 58,64 ****
  1664.   ?MAKE:    -pick add $@ %<
  1665.   ?V:ansexp:fn
  1666.   ?T:tilde type what orig_rp orig_dflt fullpath already redo skip none_ok \
  1667. !     value exp_file
  1668.   ?LINT:change ans
  1669.   : now set up to get a file name
  1670.   cat <<'EOSC' >getfile
  1671. --- 65,71 ----
  1672.   ?MAKE:    -pick add $@ %<
  1673.   ?V:ansexp:fn
  1674.   ?T:tilde type what orig_rp orig_dflt fullpath already redo skip none_ok \
  1675. !     value exp_file nopath_ok loc_file
  1676.   ?LINT:change ans
  1677.   : now set up to get a file name
  1678.   cat <<'EOSC' >getfile
  1679. ***************
  1680. *** 68,76 ****
  1681. --- 75,96 ----
  1682.   skip=''
  1683.   none_ok=''
  1684.   exp_file=''
  1685. + nopath_ok=''
  1686.   orig_rp="$rp"
  1687.   orig_dflt="$dflt"
  1688.   
  1689. + ?X:
  1690. + ?X: Catch up 'locate' requests early, so that we may strip the file name
  1691. + ?X: before looking at the one-letter commands, in case the file name contains
  1692. + ?X: one of them. Reported by Wayne Davison <davison@borland.com>.
  1693. + ?X:
  1694. + case "$fn" in
  1695. + *:*)
  1696. +     loc_file=`expr $fn : '.*:\(.*\)'`
  1697. +     fn=`expr $fn : '\(.*\):.*'`
  1698. +     ;;
  1699. + esac
  1700.   case "$fn" in
  1701.   *~*) tilde=true;;
  1702.   esac
  1703. ***************
  1704. *** 86,96 ****
  1705.   case "$fn" in
  1706.   *e*) exp_file=true;;
  1707.   esac
  1708.   
  1709.   case "$fn" in
  1710.   *f*) type='File';;
  1711.   *d*) type='Directory';;
  1712. ! *l*) type='Locate'; fn=`expr $fn : '.*:\(.*\)'`;;
  1713.   esac
  1714.   
  1715.   what="$type"
  1716. --- 106,119 ----
  1717.   case "$fn" in
  1718.   *e*) exp_file=true;;
  1719.   esac
  1720. + case "$fn" in
  1721. + *p*) nopath_ok=true;;
  1722. + esac
  1723.   
  1724.   case "$fn" in
  1725.   *f*) type='File';;
  1726.   *d*) type='Directory';;
  1727. ! *l*) type='Locate';;
  1728.   esac
  1729.   
  1730.   what="$type"
  1731. ***************
  1732. *** 192,203 ****
  1733.                   ;;
  1734.               Locate)
  1735.                   if test -d "$value"; then
  1736. !                     echo "(Looking for $fn in directory $value.)"
  1737. !                     value="$value/$fn"
  1738.                   fi
  1739.                   if test -f "$value"; then
  1740.                       type=''
  1741.                   fi
  1742.                   ;;
  1743.               esac
  1744.   
  1745. --- 215,235 ----
  1746.                   ;;
  1747.               Locate)
  1748.                   if test -d "$value"; then
  1749. !                     echo "(Looking for $loc_file in directory $value.)"
  1750. !                     value="$value/$loc_file"
  1751.                   fi
  1752.                   if test -f "$value"; then
  1753.                       type=''
  1754.                   fi
  1755. +                 case "$nopath_ok" in
  1756. +                 true)    case "$value" in
  1757. +                     */*) ;;
  1758. +                     *)    echo "Assuming $value will be in people's path."
  1759. +                         type=''
  1760. +                         ;;
  1761. +                     esac
  1762. +                     ;;
  1763. +                 esac
  1764.                   ;;
  1765.               esac
  1766.   
  1767.  
  1768. *** End of Patch 23 ***
  1769.  
  1770. exit 0 # Just in case...
  1771.