home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-01-27 | 45.1 KB | 1,454 lines |
- Newsgroups: comp.sources.misc
- From: Raphael Manfredi <ram@acri.fr>
- Subject: v41i114: dist-3.0 - Configure script generator and related tools, Patch18
- Message-ID: <1994Jan28.023402.2401@sparky.sterling.com>
- X-Md4-Signature: b81c17a29899ab38ceab069c5c3cca39
- Sender: kent@sparky.sterling.com (Kent Landfield)
- Organization: Advanced Computer Research Institute, Lyon, France
- Date: Fri, 28 Jan 1994 02:34:02 GMT
- Approved: kent@sparky.sterling.com
-
- Submitted-by: Raphael Manfredi <ram@acri.fr>
- Posting-number: Volume 41, Issue 114
- Archive-name: dist-3.0/patch18
- Environment: UNIX, Perl, RCS
- Patch-To: dist-3.0: Volume 39, Issue 5-32
-
- [The latest patch for dist version 3.0 is #22.]
-
- System: dist version 3.0
- Patch #: 18
- Priority: LOW
- Subject: patch #16, continued
- Date: Mon Jan 24 15:54:17 MET 1994
- From: Raphael Manfredi <ram@acri.fr>
-
- Description:
- See patch #16.
-
-
- Fix: From rn, say "| patch -p -N -d DIR", where DIR is your dist source
- directory. Outside of rn, say "cd DIR; patch -p -N <thisarticle".
- If you don't have the patch program, apply the following by hand,
- or get patch (version 2.0, latest patchlevel).
-
- After patching:
- *** DO NOTHING--INSTALL ALL PATCHES UP THROUGH #22 FIRST ***
-
- If patch indicates that patchlevel is the wrong version, you may need
- to apply one or more previous patches, or the patch may already
- have been applied. See the patchlevel.h file to find out what has or
- has not been applied. In any event, don't continue with the patch.
-
- If you are missing previous patches they can be obtained from me:
-
- Raphael Manfredi <ram@acri.fr>
-
- If you send a mail message of the following form it will greatly speed
- processing:
-
- Subject: Command
- @SH mailpatch PATH dist 3.0 LIST
- ^ note the c
-
- where PATH is a return path FROM ME TO YOU either in Internet notation,
- or in bang notation from some well-known host, and LIST is the number
- of one or more patches you need, separated by spaces, commas, and/or
- hyphens. Saying 35- says everything from 35 to the end.
-
- To get some more detailed instructions, send me the following mail:
-
- Subject: Command
- @SH mailhelp PATH
-
-
- Index: patchlevel.h
- Prereq: 17
- 4c4
- < #define PATCHLEVEL 17
- ---
- > #define PATCHLEVEL 18
-
- Index: pat/patdiff.SH
- Prereq: 3.0.1.1
- *** pat/patdiff.SH.old Mon Jan 24 15:35:21 1994
- --- pat/patdiff.SH Mon Jan 24 15:35:21 1994
- ***************
- *** 20,26 ****
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patdiff.SH,v 3.0.1.1 1993/08/19 06:42:35 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- --- 20,26 ----
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patdiff.SH,v 3.0.1.2 1994/01/24 14:30:36 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- ***************
- *** 33,38 ****
- --- 33,42 ----
- # Original Author: Larry Wall <lwall@netlabs.com>
- #
- # $Log: patdiff.SH,v $
- + # Revision 3.0.1.2 1994/01/24 14:30:36 ram
- + # patch16: now prefix error messages with program's name
- + # patch16: added ~/.dist_profile awareness
- + #
- # Revision 3.0.1.1 1993/08/19 06:42:35 ram
- # patch1: leading config.sh searching was not aborting properly
- #
- ***************
- *** 48,65 ****
- $RCSEXT = ',v' unless $RCSEXT;
- $TOPDIR = ''; # We are at top-level directory
-
- require 'getopts.pl';
- &usage unless $#ARGV >= 0;
- &usage unless &Getopts("ahnV");
-
- if ($opt_V) {
- ! print STDERR "patdiff $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- }
-
- - $RCSEXT = ',v' unless $RCSEXT;
- &readpackage;
- ©right'init($copyright) if -f $copyright;
-
- --- 52,69 ----
- $RCSEXT = ',v' unless $RCSEXT;
- $TOPDIR = ''; # We are at top-level directory
-
- + $progname = &profile; # Read ~/.dist_profile
- require 'getopts.pl';
- &usage unless $#ARGV >= 0;
- &usage unless &Getopts("ahnV");
-
- if ($opt_V) {
- ! print STDERR "$progname $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- }
-
- &readpackage;
- ©right'init($copyright) if -f $copyright;
-
- ***************
- *** 66,76 ****
- system 'mkdir', 'bugs' unless -d 'bugs';
-
- if (-f 'patchlevel.h') {
- ! open(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
- while (<PL>) {
- $bnum = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
- }
- ! die "Malformed patchlevel.h file.\n" if $bnum eq '';
- ++$bnum;
- } else {
- $bnum=1;
- --- 70,80 ----
- system 'mkdir', 'bugs' unless -d 'bugs';
-
- if (-f 'patchlevel.h') {
- ! open(PL,"patchlevel.h") || die "$progname: can't open patchlevel.h: $!\n";
- while (<PL>) {
- $bnum = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
- }
- ! die "$progname: malformed patchlevel.h file.\n" if $bnum eq '';
- ++$bnum;
- } else {
- $bnum=1;
- ***************
- *** 77,83 ****
- }
-
- if ($opt_a) {
- ! open(MANI,"MANIFEST.new") || die "No MANIFEST.new found.\n";
- @ARGV = ();
- while (<MANI>) {
- chop;
- --- 81,87 ----
- }
-
- if ($opt_a) {
- ! open(MANI,"MANIFEST.new") || die "$progname: can't read MANIFEST.new: $!\n";
- @ARGV = ();
- while (<MANI>) {
- chop;
- ***************
- *** 91,97 ****
- foreach $file (@ARGV) {
- next if ($file =~ /^patchlevel.h$/); # Skip patchlevel.h
- if (! -f $file) {
- ! print "$file not found.\n";
- next;
- }
- $files = &rcsargs($file);
- --- 95,101 ----
- foreach $file (@ARGV) {
- next if ($file =~ /^patchlevel.h$/); # Skip patchlevel.h
- if (! -f $file) {
- ! print "$progname: $file not found.\n";
- next;
- }
- $files = &rcsargs($file);
- ***************
- *** 102,114 ****
- ($lastpat) = ($rlog =~ /lastpat: ([\d.]+)/);
- ($revs) = ($rlog =~ /selected revisions: (\d+)/);
- if (!$revs) {
- ! print "No cil has been done on $file.\n" ;;
- } elsif ($revs == 1) {
- ($base) = ($rlog =~ /.*\nrevision\s+(\S+)/);
- ($a,$b,$c,$d) = split(/\./,$base);
- if ($d ne '') {
- if (!$opt_n) {
- ! print "No changes in $file since last patch. (Did you cil it?)\n";
- next; # Skip file with no changes
- } else {
- $new='foo';
- --- 106,119 ----
- ($lastpat) = ($rlog =~ /lastpat: ([\d.]+)/);
- ($revs) = ($rlog =~ /selected revisions: (\d+)/);
- if (!$revs) {
- ! print "$progname: no cil has been done on $file.\n" ;;
- } elsif ($revs == 1) {
- ($base) = ($rlog =~ /.*\nrevision\s+(\S+)/);
- ($a,$b,$c,$d) = split(/\./,$base);
- if ($d ne '') {
- if (!$opt_n) {
- ! print
- ! "$progname: no changes in $file since last patch. (Did you cil it?)\n";
- next; # Skip file with no changes
- } else {
- $new='foo';
- ***************
- *** 118,124 ****
- $rlog = `rlog -r$revbranch- $files 2>&1`;
- ($revs) = ($rlog =~ /selected revisions: (\d+)/);
- if (!$revs) {
- ! print "No changes in $file since base version. (Did you cil it?)\n";
- next; # Skip file with no changes
- } else {
- ($new) = ($rlog =~ /\nrevision\s*(\d+\.\d+\.\d+\.\d+)/);
- --- 123,130 ----
- $rlog = `rlog -r$revbranch- $files 2>&1`;
- ($revs) = ($rlog =~ /selected revisions: (\d+)/);
- if (!$revs) {
- ! print
- ! "$progname: no changes in $file since base version. (Did you cil it?)\n";
- next; # Skip file with no changes
- } else {
- ($new) = ($rlog =~ /\nrevision\s*(\d+\.\d+\.\d+\.\d+)/);
- ***************
- *** 143,149 ****
- if (!$opt_n) {
- if ($mydiff eq '') {
- open(DIFF,"rcsdiff -c -rlastpat -r$new $files |") ||
- ! die "Can't run rcsdiff";
- while (<DIFF>) {
- if ($. == 1) {s|\*\*\* \S+ |*** $file.old |;}
- if ($. == 2) {s|--- \S+ |--- $file |;}
- --- 149,155 ----
- if (!$opt_n) {
- if ($mydiff eq '') {
- open(DIFF,"rcsdiff -c -rlastpat -r$new $files |") ||
- ! die "$progname: can't fork rcsdiff: $!\n";
- while (<DIFF>) {
- if ($. == 1) {s|\*\*\* \S+ |*** $file.old |;}
- if ($. == 2) {s|--- \S+ |--- $file |;}
- ***************
- *** 188,194 ****
- system "co -p -rlastpat $files >/tmp/pdo$$";
- system "cp $file /tmp/pdn$$";
- open(DIFF, "$mydiff /tmp/pdo$$ /tmp/pdn$$ |") ||
- ! die "Can't run $mydiff";
- while (<DIFF>) {
- # Contextual or unified diff
- if ($. == 1) {
- --- 194,200 ----
- system "co -p -rlastpat $files >/tmp/pdo$$";
- system "cp $file /tmp/pdn$$";
- open(DIFF, "$mydiff /tmp/pdo$$ /tmp/pdn$$ |") ||
- ! die "$progname: can't fork $mydiff: $!\n";
- while (<DIFF>) {
- # Contextual or unified diff
- if ($. == 1) {
- ***************
- *** 210,220 ****
- }
-
- sub usage {
- ! print STDERR "Usage: patdiff [-ahnV] [filelist]\n";
- ! print STDERR " -a : all the files in MANIFEST.new\n";
- ! print STDERR " -h : print this message and exit\n";
- ! print STDERR " -n : non update mode\n";
- ! print STDERR " -V : print version number and exit\n";
- exit 1;
- }
-
- --- 216,228 ----
- }
-
- sub usage {
- ! print STDERR <<EOM;
- ! Usage: $progname [-ahnV] [filelist]
- ! -a : all the files in MANIFEST.new
- ! -h : print this message and exit
- ! -n : non update mode
- ! -V : print version number and exit
- ! EOM
- exit 1;
- }
-
- ***************
- *** 222,226 ****
- --- 230,236 ----
- $grep -v '^;#' ../pl/package.pl >>patdiff
- $grep -v '^;#' ../pl/rcsargs.pl >>patdiff
- $grep -v '^;#' ../pl/copyright.pl >>patdiff
- + $grep -v '^;#' ../pl/tilde.pl >>patdiff
- + $grep -v '^;#' ../pl/profile.pl >>patdiff
- chmod +x patdiff
- $eunicefix patdiff
-
- Index: mcon/U/prototype.U
- Prereq: 3.0.1.1
- *** mcon/U/prototype.U.old Mon Jan 24 15:35:06 1994
- --- mcon/U/prototype.U Mon Jan 24 15:35:06 1994
- ***************
- *** 1,4 ****
- ! ?RCS: $Id: prototype.U,v 3.0.1.1 1993/08/25 14:03:12 ram Exp $
- ?RCS:
- ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
- ?RCS:
- --- 1,4 ----
- ! ?RCS: $Id: prototype.U,v 3.0.1.2 1994/01/24 14:15:36 ram Exp $
- ?RCS:
- ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
- ?RCS:
- ***************
- *** 9,14 ****
- --- 9,17 ----
- ?RCS: of the source tree for dist 3.0.
- ?RCS:
- ?RCS: $Log: prototype.U,v $
- + ?RCS: Revision 3.0.1.2 1994/01/24 14:15:36 ram
- + ?RCS: patch16: prototype handling macros now appear only when needed
- + ?RCS:
- ?RCS: Revision 3.0.1.1 1993/08/25 14:03:12 ram
- ?RCS: patch6: defines were referring to non-existent VOID symbol
- ?RCS:
- ***************
- *** 25,38 ****
- ?C: If defined, this macro indicates that the C compiler can handle
- ?C: function prototypes.
- ?C:.
- ! ?C:DOTS ~ %<:
- ?C: This macro is used to specify the ... in function prototypes which
- ?C: have arbitrary additional arguments.
- ?C:.
- ! ?C:NXT_ARG ~ %<:
- ?C: This macro is used to separate arguments in the declared argument list.
- ?C:.
- ! ?C:P_FUNC ~ %<:
- ?C: This macro is used to declare "private" (static) functions.
- ?C: It takes three arguments: the function type and name, a parenthesized
- ?C: traditional (comma separated) argument list, and the declared argument
- --- 28,41 ----
- ?C: If defined, this macro indicates that the C compiler can handle
- ?C: function prototypes.
- ?C:.
- ! ?C:DOTS:
- ?C: This macro is used to specify the ... in function prototypes which
- ?C: have arbitrary additional arguments.
- ?C:.
- ! ?C:NXT_ARG:
- ?C: This macro is used to separate arguments in the declared argument list.
- ?C:.
- ! ?C:P_FUNC:
- ?C: This macro is used to declare "private" (static) functions.
- ?C: It takes three arguments: the function type and name, a parenthesized
- ?C: traditional (comma separated) argument list, and the declared argument
- ***************
- *** 41,47 ****
- ?C:
- ?C: P_FUNC(int foo, (bar, baz), int bar NXT_ARG char *baz[])
- ?C:.
- ! ?C:P_FUNC_VOID ~ %<:
- ?C: This macro is used to declare "private" (static) functions that have
- ?C: no arguments. The macro takes one argument: the function type and name.
- ?C: For example:
- --- 44,50 ----
- ?C:
- ?C: P_FUNC(int foo, (bar, baz), int bar NXT_ARG char *baz[])
- ?C:.
- ! ?C:P_FUNC_VOID:
- ?C: This macro is used to declare "private" (static) functions that have
- ?C: no arguments. The macro takes one argument: the function type and name.
- ?C: For example:
- ***************
- *** 48,54 ****
- ?C:
- ?C: P_FUNC_VOID(int subr)
- ?C:.
- ! ?C:V_FUNC ~ %<:
- ?C: This macro is used to declare "public" (non-static) functions.
- ?C: It takes three arguments: the function type and name, a parenthesized
- ?C: traditional (comma separated) argument list, and the declared argument
- --- 51,57 ----
- ?C:
- ?C: P_FUNC_VOID(int subr)
- ?C:.
- ! ?C:V_FUNC:
- ?C: This macro is used to declare "public" (non-static) functions.
- ?C: It takes three arguments: the function type and name, a parenthesized
- ?C: traditional (comma separated) argument list, and the declared argument
- ***************
- *** 57,63 ****
- ?C:
- ?C: V_FUNC(int main, (argc, argv), int argc NXT_ARG char *argv[])
- ?C:.
- ! ?C:V_FUNC_VOID ~ %<:
- ?C: This macro is used to declare "public" (non-static) functions that have
- ?C: no arguments. The macro takes one argument: the function type and name.
- ?C: For example:
- --- 60,66 ----
- ?C:
- ?C: V_FUNC(int main, (argc, argv), int argc NXT_ARG char *argv[])
- ?C:.
- ! ?C:V_FUNC_VOID:
- ?C: This macro is used to declare "public" (non-static) functions that have
- ?C: no arguments. The macro takes one argument: the function type and name.
- ?C: For example:
- ***************
- *** 64,70 ****
- ?C:
- ?C: V_FUNC_VOID(int fork)
- ?C:.
- ! ?C:_ ~ %< (P):
- ?C: This macro is used to declare function parameters for folks who want
- ?C: to make declarations with prototypes using a different style than
- ?C: the above macros. Use double parentheses. For example:
- --- 67,73 ----
- ?C:
- ?C: V_FUNC_VOID(int fork)
- ?C:.
- ! ?C:_ (P):
- ?C: This macro is used to declare function parameters for folks who want
- ?C: to make declarations with prototypes using a different style than
- ?C: the above macros. Use double parentheses. For example:
- ***************
- *** 73,96 ****
- ?C:.
- ?H:?%<:#$prototype CAN_PROTOTYPE /**/
- ?H:?%<:#ifdef CAN_PROTOTYPE
- ! ?H:?%<:#define NXT_ARG ,
- ! ?H:?%<:#define DOTS , ...
- ! ?H:?%<:#define V_FUNC(name, arglist, args)name(args)
- ! ?H:?%<:#define P_FUNC(name, arglist, args)static name(args)
- ! ?H:?%<:#define V_FUNC_VOID(name)name(void)
- ! ?H:?%<:#define P_FUNC_VOID(name)static name(void)
- ! ?H:?%<:#define _(args) args
- ?H:?%<:#else
- ! ?H:?%<:#define NXT_ARG ;
- ! ?H:?%<:#define DOTS
- ! ?H:?%<:#define V_FUNC(name, arglist, args)name arglist args;
- ! ?H:?%<:#define P_FUNC(name, arglist, args)static name arglist args;
- ! ?H:?%<:#define V_FUNC_VOID(name)name()
- ! ?H:?%<:#define P_FUNC_VOID(name)static name()
- ! ?H:?%<:#define _(args) ()
- ?H:?%<:#endif
- ?H:.
- ! ?W:%<:NXT_ARGS DOTS V_FUNC P_FUNC V_FUNC_VOID P_FUNC_VOID _
- ?LINT:set prototype
- : Cruising for prototypes
- echo " "
- --- 76,99 ----
- ?C:.
- ?H:?%<:#$prototype CAN_PROTOTYPE /**/
- ?H:?%<:#ifdef CAN_PROTOTYPE
- ! ?H:?NXT_ARG:#define NXT_ARG ,
- ! ?H:?DOTS:#define DOTS , ...
- ! ?H:?V_FUNC:#define V_FUNC(name, arglist, args)name(args)
- ! ?H:?P_FUNC:#define P_FUNC(name, arglist, args)static name(args)
- ! ?H:?V_FUNC_VOID:#define V_FUNC_VOID(name)name(void)
- ! ?H:?P_FUNC_VOID:#define P_FUNC_VOID(name)static name(void)
- ! ?H:?_:#define _(args) args
- ?H:?%<:#else
- ! ?H:?NXT_ARG:#define NXT_ARG ;
- ! ?H:?DOTS:#define DOTS
- ! ?H:?V_FUNC:#define V_FUNC(name, arglist, args)name arglist args;
- ! ?H:?P_FUNC:#define P_FUNC(name, arglist, args)static name arglist args;
- ! ?H:?V_FUNC_VOID:#define V_FUNC_VOID(name)name()
- ! ?H:?P_FUNC_VOID:#define P_FUNC_VOID(name)static name()
- ! ?H:?_:#define _(args) ()
- ?H:?%<:#endif
- ?H:.
- ! ?W:%<:NXT_ARG DOTS V_FUNC P_FUNC V_FUNC_VOID P_FUNC_VOID _
- ?LINT:set prototype
- : Cruising for prototypes
- echo " "
-
- Index: mcon/man/mconfig.SH
- Prereq: 3.0.1.5
- *** mcon/man/mconfig.SH.old Mon Jan 24 15:35:09 1994
- --- mcon/man/mconfig.SH Mon Jan 24 15:35:10 1994
- ***************
- *** 20,26 ****
- .TH METACONFIG $manext "Version $VERSION PL$PATCHLEVEL"
- ''' @(#) Manual page for metaconfig
- '''
- ! ''' $Id: mconfig.SH,v 3.0.1.5 1993/10/16 13:51:50 ram Exp $
- '''
- ''' Copyright (c) 1991-1993, Raphael Manfredi
- '''
- --- 20,26 ----
- .TH METACONFIG $manext "Version $VERSION PL$PATCHLEVEL"
- ''' @(#) Manual page for metaconfig
- '''
- ! ''' $Id: mconfig.SH,v 3.0.1.6 1994/01/24 14:19:47 ram Exp $
- '''
- ''' Copyright (c) 1991-1993, Raphael Manfredi
- '''
- ***************
- *** 31,36 ****
- --- 31,41 ----
- ''' of the source tree for dist 3.0.
- '''
- ''' $Log: mconfig.SH,v $
- + ''' Revision 3.0.1.6 1994/01/24 14:19:47 ram
- + ''' patch16: symbols defined in a unit can be tagged "internal use only"
- + ''' patch16: documents new MailList.U special unit
- + ''' patch16: new general <\$variable> macro substitution
- + '''
- ''' Revision 3.0.1.5 1993/10/16 13:51:50 ram
- ''' patch12: new option -M to activate ?M: lines
- ''' patch12: documents new ?M: lines format
- ***************
- *** 998,1004 ****
- stated otherwise, the order of this presentation is the order to be used
- within the unit.
- .TP 5
- ! ?RCS: \fIfree_text\fR
- To be used for RCS comments, at the top of the unit.
- .TP
- ?X: \fIany text\fR
- --- 1003,1009 ----
- stated otherwise, the order of this presentation is the order to be used
- within the unit.
- .TP 5
- ! ?RCS: \fIfree text\fR
- To be used for RCS comments, at the top of the unit.
- .TP
- ?X: \fIany text\fR
- ***************
- *** 1005,1014 ****
- General purpose comments. May appear anywhere in the unit but must be left
- justfied. For RCS comments, please use the ?RCS: comment form.
- .TP
- ! ?MAKE:\fIsymbol list\fR:\fIdependency list\fR [\fI+optional\fR]
- This is the first dependency line. The first \fIsymbol list\fR should list
- all the symbols built by this unit (i.e. whose value is computed by the
- ! shell section of the unit). Symbols should be space separated.
- The second part of the list (after the middle ':') is the unit dependency.
- It should list all the needed special units, as well as all the symbols
- used by the shell implementation. If a symbol is nedded but its configuration
- --- 1010,1022 ----
- General purpose comments. May appear anywhere in the unit but must be left
- justfied. For RCS comments, please use the ?RCS: comment form.
- .TP
- ! ?MAKE:\fIsymbol list\fR: \fIdependency list\fR [\fI+optional\fR]
- This is the first dependency line. The first \fIsymbol list\fR should list
- all the symbols built by this unit (i.e. whose value is computed by the
- ! shell section of the unit). Symbols should be space separated. If a defined
- ! symbol is for internal use only and should not appear in the generated
- ! \fIconfig.sh\fR file, then it should be preceded by a '+' (not to be confused
- ! with optional dependencies defined hereafter).
- The second part of the list (after the middle ':') is the unit dependency.
- It should list all the needed special units, as well as all the symbols
- used by the shell implementation. If a symbol is nedded but its configuration
- ***************
- *** 1324,1329 ****
- --- 1332,1347 ----
- generated a particular \fIConfigure\fR script and for which package it
- was done. The e-mail address of the maintainer is hardwired in the leading
- instructions that \fIConfigure\fR prints when starting.
- + .PP
- + Recent \fImetaconfig\fR versions understand a much more general syntax
- + of the form:
- + .Ex
- + <\$variable>
- + .Ef
- + which is replaced at Configure-generation time by the value of \fIvariable\fR
- + taken from your \fI.package\fR file. Eventually, the old hardwired macro
- + format will disappear, and <\$baserev> will replace <BASEREV> in all the
- + supplied units.
- '''
- .SS Special Units
- .PP
- ***************
- *** 1459,1464 ****
- --- 1477,1490 ----
- the author, optionally being notified when new patches arrive or receiving
- them automatically when issued. You need to install \fImailagent\fR to do
- this (at least version 3.0).
- + .TP
- + MailList.U
- + This unit needs to be included on the ?MAKE: line of your own private End.U
- + to make it into \fIConfigure\fR. It offers the user to subscribe or
- + unsubscribe to a mailing list where discussion related to the package are
- + taking place. You need to run \fIpackinit\fR and answer the mailing list
- + related questions to set up the proper variables in your \fI.package\fR
- + before this unit may become operational.
- .TP
- Myinit.U
- Copy this unit into your private \fIU\fR directory to add your own default
-
- Index: mcon/mconfig.SH
- Prereq: 3.0.1.2
- *** mcon/mconfig.SH.old Mon Jan 24 15:35:11 1994
- --- mcon/mconfig.SH Mon Jan 24 15:35:11 1994
- ***************
- *** 20,26 ****
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: mconfig.SH,v 3.0.1.2 1993/10/16 13:53:10 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- --- 20,26 ----
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: mconfig.SH,v 3.0.1.3 1994/01/24 14:20:53 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- ***************
- *** 34,39 ****
- --- 34,42 ----
- # Key Contributor: Harlan Stenn <harlan@mumps.pfcs.com>
- #
- # $Log: mconfig.SH,v $
- + # Revision 3.0.1.3 1994/01/24 14:20:53 ram
- + # patch16: added ~/.dist_profile awareness
- + #
- # Revision 3.0.1.2 1993/10/16 13:53:10 ram
- # patch12: new -M option for magic symbols and confmagic.h production
- #
- ***************
- *** 60,65 ****
- --- 63,69 ----
- chop($MC = `pwd`); # Real metaconfig lib path (no symbolic links)
- chdir $WD || die "Can't chdir back to $WD: $!\n";
-
- + &profile; # Read ~/.dist_profile
- require 'getopts.pl';
- &usage unless &Getopts("dhkmostvwMV");
-
- ***************
- *** 161,165 ****
- --- 165,170 ----
- $grep -v '^;#' ../pl/package.pl >>mconfig
- $grep -v '^;#' ../pl/manifake.pl >>mconfig
- $grep -v '^;#' ../pl/tilde.pl >>mconfig
- + $grep -v '^;#' ../pl/profile.pl >>mconfig
- chmod +x mconfig
- $eunicefix mconfig
-
- Index: pat/patmake.SH
- Prereq: 3.0.1.2
- *** pat/patmake.SH.old Mon Jan 24 15:35:22 1994
- --- pat/patmake.SH Mon Jan 24 15:35:22 1994
- ***************
- *** 20,26 ****
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patmake.SH,v 3.0.1.2 1993/08/24 12:18:59 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- --- 20,26 ----
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patmake.SH,v 3.0.1.3 1994/01/24 14:30:55 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- ***************
- *** 34,39 ****
- --- 34,43 ----
- # Contribution by: Graham Stoney <greyham@research.canon.oz.au>
- #
- # $Log: patmake.SH,v $
- + # Revision 3.0.1.3 1994/01/24 14:30:55 ram
- + # patch16: now prefix error messages with program's name
- + # patch16: added ~/.dist_profile awareness
- + #
- # Revision 3.0.1.2 1993/08/24 12:18:59 ram
- # patch3: now asks for patch mailing/posting after all patches edited
- # patch3: patch release notification is done via new patnotify
- ***************
- *** 53,63 ****
- !GROK!THIS!
- cat >>patmake <<'!NO!SUBS!'
-
- require 'getopts.pl';
- &usage unless &Getopts("hV");
-
- if ($opt_V) {
- ! print STDERR "patmake $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- --- 57,68 ----
- !GROK!THIS!
- cat >>patmake <<'!NO!SUBS!'
-
- + $progname = &profile; # Read ~/.dist_profile
- require 'getopts.pl';
- &usage unless &Getopts("hV");
-
- if ($opt_V) {
- ! print STDERR "$progname $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- ***************
- *** 72,78 ****
- $FIRST_PAT = 3000; # Give space for first patch (descriptions)
-
- if (-f 'patchlevel.h') {
- ! open(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
- while (<PL>) {
- if (/^#define\s+PATCHLEVEL\s+(\d+)/) {
- $last = $1;
- --- 77,83 ----
- $FIRST_PAT = 3000; # Give space for first patch (descriptions)
-
- if (-f 'patchlevel.h') {
- ! open(PL,"patchlevel.h") || die "$progname: can't open patchlevel.h: $!\n";
- while (<PL>) {
- if (/^#define\s+PATCHLEVEL\s+(\d+)/) {
- $last = $1;
- ***************
- *** 79,85 ****
- $patchline = $.; # Record PATCHLEVEL line
- }
- }
- ! die "Malformed patchlevel.h file.\n" if $last eq '';
- $bnum = $last + 1;
- }
- else {
- --- 84,90 ----
- $patchline = $.; # Record PATCHLEVEL line
- }
- }
- ! die "$progname: malformed patchlevel.h file.\n" if $last eq '';
- $bnum = $last + 1;
- }
- else {
- ***************
- *** 107,116 ****
-
- chdir 'bugs' if -d 'bugs';
-
- ! die "Patch #$bnum already exists.\n" if -f "patch$bnum";
-
- @patlist=<*.$bnum>;
- ! die "No diff files for patch #$bnum.\n" if $patlist[0] =~ /^\*/;
-
- # Look for size of each diff file
- for (@patlist) {
- --- 112,121 ----
-
- chdir 'bugs' if -d 'bugs';
-
- ! die "$progname: patch #$bnum already exists.\n" if -f "patch$bnum";
-
- @patlist=<*.$bnum>;
- ! die "$progname: no diff files for patch #$bnum.\n" if $patlist[0] =~ /^\*/;
-
- # Look for size of each diff file
- for (@patlist) {
- ***************
- *** 140,146 ****
- $numpat = $#list; # Number of patches to generate
-
- if ($numpat > 1) {
- ! print "Warning: generating $numpat patches.\n";
- sleep(1);
- }
-
- --- 145,151 ----
- $numpat = $#list; # Number of patches to generate
-
- if ($numpat > 1) {
- ! print "$progname: Warning: generating $numpat patches.\n";
- sleep(1);
- }
-
- ***************
- *** 312,319 ****
- system 'chmod', '-w', "patch$bnum"; # Protect newly created patch
- chdir '..';
- `echo "#define PATCHLEVEL 0" >patchlevel.h` unless -f 'patchlevel.h';
- ! open(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
- ! open(PLN,">patchlevel.h+") || die "Can't create new patchlevel.h\n";
- while (<PL>) {
- if (/^#define\s+PATCHLEVEL\s+(\d+)/) {
- $bnum = $1;
- --- 317,326 ----
- system 'chmod', '-w', "patch$bnum"; # Protect newly created patch
- chdir '..';
- `echo "#define PATCHLEVEL 0" >patchlevel.h` unless -f 'patchlevel.h';
- ! open(PL,"patchlevel.h") ||
- ! die "$progname: can't open patchlevel.h: $!\n";
- ! open(PLN,">patchlevel.h+") ||
- ! die "$progname: can't create new patchlevel.h: $!\n";
- while (<PL>) {
- if (/^#define\s+PATCHLEVEL\s+(\d+)/) {
- $bnum = $1;
- ***************
- *** 326,338 ****
- close PLN;
- close PL;
- `mv -f patchlevel.h+ patchlevel.h`;
- ! die "Malformed patchlevel.h file.\n" if $bnum eq '';
- } else {
- unlink "patch$bnum";
- ! die "Aborted.\n";
- }
-
- ! chdir 'bugs' || die "Cannot cd to bugs.\n";
-
- # Find priority for next patch in loop
- $priority='';
- --- 333,345 ----
- close PLN;
- close PL;
- `mv -f patchlevel.h+ patchlevel.h`;
- ! die "$progname: malformed patchlevel.h file.\n" if $bnum eq '';
- } else {
- unlink "patch$bnum";
- ! die "$progname: aborted.\n";
- }
-
- ! chdir 'bugs' || die "$progname: cannot cd to bugs: $!\n";
-
- # Find priority for next patch in loop
- $priority='';
- ***************
- *** 404,412 ****
- }
-
- sub usage {
- ! print STDERR "Usage: patmake [-hV]\n";
- ! print STDERR " -h : print this message and exit\n";
- ! print STDERR " -V : print version number and exit\n";
- exit 1;
- }
-
- --- 411,421 ----
- }
-
- sub usage {
- ! print STDERR <<EOM;
- ! Usage: $progname [-hV]
- ! -h : print this message and exit
- ! -V : print version number and exit
- ! EOM
- exit 1;
- }
-
- ***************
- *** 413,417 ****
- --- 422,428 ----
- !NO!SUBS!
- $grep -v '^;#' ../pl/package.pl >>patmake
- $grep -v '^;#' ../pl/users.pl >>patmake
- + $grep -v '^;#' ../pl/tilde.pl >>patmake
- + $grep -v '^;#' ../pl/profile.pl >>patmake
- chmod +x patmake
- $eunicefix patmake
-
- Index: mcon/U/d_uwait.U
- Prereq: 3.0
- *** mcon/U/d_uwait.U.old Mon Jan 24 15:34:58 1994
- --- mcon/U/d_uwait.U Mon Jan 24 15:34:58 1994
- ***************
- *** 1,4 ****
- ! ?RCS: $Id: d_uwait.U,v 3.0 1993/08/18 12:07:54 ram Exp $
- ?RCS:
- ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
- ?RCS:
- --- 1,4 ----
- ! ?RCS: $Id: d_uwait.U,v 3.0.1.1 1994/01/24 14:10:49 ram Exp $
- ?RCS:
- ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
- ?RCS:
- ***************
- *** 9,18 ****
- ?RCS: of the source tree for dist 3.0.
- ?RCS:
- ?RCS: $Log: d_uwait.U,v $
- ?RCS: Revision 3.0 1993/08/18 12:07:54 ram
- ?RCS: Baseline for dist 3.0 netwide release.
- ?RCS:
- ! ?MAKE:d_uwait: contains Setvar Findhdr
- ?MAKE: -pick add $@ %<
- ?S:d_uwait:
- ?S: This symbol conditionally defines UNION_WAIT which indicates to the C
- --- 9,24 ----
- ?RCS: of the source tree for dist 3.0.
- ?RCS:
- ?RCS: $Log: d_uwait.U,v $
- + ?RCS: Revision 3.0.1.1 1994/01/24 14:10:49 ram
- + ?RCS: patch16: added knowledge about wait3()
- + ?RCS: patch16: revised 'union wait' look-up algorithm
- + ?RCS: patch16: fixed make dependency line accordingly
- + ?RCS:
- ?RCS: Revision 3.0 1993/08/18 12:07:54 ram
- ?RCS: Baseline for dist 3.0 netwide release.
- ?RCS:
- ! ?MAKE:d_uwait d_uwait3: cat contains cppstdin cppminus +cppflags rm \
- ! Setvar Findhdr
- ?MAKE: -pick add $@ %<
- ?S:d_uwait:
- ?S: This symbol conditionally defines UNION_WAIT which indicates to the C
- ***************
- *** 19,24 ****
- --- 25,35 ----
- ?S: program that argument for the wait() system call should be declared as
- ?S: 'union wait status' instead of 'int status'.
- ?S:.
- + ?S:d_uwait3:
- + ?S: This symbol conditionally defines UNION_WAIT3 which indicates to the C
- + ?S: program that the first argument for the wait3() system call should be
- + ?S: declared as 'union wait status' instead of 'int status'.
- + ?S:.
- ?C:UNION_WAIT:
- ?C: This symbol if defined indicates to the C program that the argument
- ?C: for the wait() system call should be declared as 'union wait status'
- ***************
- *** 25,42 ****
- ?C: instead of 'int status'. You probably need to include <sys/wait.h>
- ?C: in the former case (see I_SYSWAIT).
- ?C:.
- ?H:#$d_uwait UNION_WAIT /**/
- ?H:.
- ! ?LINT:set d_uwait
- : see if union wait is available
- echo " "
- ! if $contains 'union.*wait.*{' `./findhdr sys/wait.h` >/dev/null 2>&1 ; then
- ! echo "Looks like we have to use 'union wait' pointer for wait()." >&4
- val="$define"
- else
- ! echo "Your wait() should be happy with a plain 'int' pointer." >&4
- val="$undef"
- fi
- set d_uwait
- eval $setvar
-
- --- 36,123 ----
- ?C: instead of 'int status'. You probably need to include <sys/wait.h>
- ?C: in the former case (see I_SYSWAIT).
- ?C:.
- + ?C:UNION_WAIT3:
- + ?C: This symbol if defined indicates to the C program that the first argument
- + ?C: for the wait3() system call should be declared as 'union wait status'
- + ?C: instead of 'int status'. You probably need to include <sys/wait.h>
- + ?C: in the former case (see I_SYSWAIT). It seems safe to assume that the
- + ?C: same rule applies to the second parameter of wait4().
- + ?C:.
- ?H:#$d_uwait UNION_WAIT /**/
- + ?H:#$d_uwait3 UNION_WAIT3 /**/
- ?H:.
- ! ?T:val2 flags f also
- ! ?LINT:set d_uwait d_uwait3
- : see if union wait is available
- echo " "
- ! ?X:
- ! ?X: Unfortunately, we can't just grep <sys/wait.h> for "union wait" because
- ! ?X: some weird systems (did I hear HP-UX?) define union wait only when _BSD
- ! ?X: is defined. The same thing happens on OSF/1, who is pushing weirdness to
- ! ?X: its limits by requiring wait() to use (int *) but wait3() to use
- ! ?X: (union wait *), unless _BSD is defined and -lbsd is used, in which case
- ! ?X: wait() also expects (union wait *). Aaargh!!--RAM
- ! ?X:
- ! set X $cppflags
- ! shift
- ! flags=''
- ! also=''
- ! for f in $*; do
- ! case "$f" in
- ! *NO_PROTO*) ;;
- ! *) flags="$flags $f";;
- ! esac
- ! done
- ! $cat `./findhdr sys/wait.h` /dev/null | \
- ! $cppstdin $flags $cppminus >wait.out 2>/dev/null
- ! if $contains 'union.*wait.*{' wait.out >/dev/null 2>&1 ; then
- ! echo "Looks like your <sys/wait.h> knows about 'union wait'..." >&4
- val="$define"
- + @if UNION_WAIT
- + also='also '
- + if $contains 'extern.*wait[ ]*([ ]*int' wait.out >/dev/null 2>&1
- + then
- + echo "But wait() seems to expect an 'int' pointer (POSIX way)." >&4
- + val="$undef"
- + also=''
- + elif $contains 'extern.*wait[ ]*([ ]*union' wait.out >/dev/null 2>&1
- + then
- + echo "And indeed wait() expects an 'union wait' pointer (BSD way)." >&4
- + else
- + echo "So we'll use that for wait()." >&4
- + fi
- + @end
- + @if UNION_WAIT3 || d_uwait3
- + val2="$define"
- + @end
- + @if UNION_WAIT3
- + if $contains 'extern.*wait3[ ]*([ ]*int' wait.out >/dev/null 2>&1
- + then
- + echo "However wait3() seems to expect an 'int' pointer, weird." >&4
- + val2="$undef"
- + elif $contains 'extern.*wait3[ ]*([ ]*union' wait.out >/dev/null 2>&1
- + then
- + echo "And wait3() ${also}expects an 'union wait' pointer, fine." >&4
- + else
- + echo "As expected, wait3() ${also}uses an 'union wait' pointer." >&4
- + fi
- + @end
- else
- ! echo "No trace of 'union wait' in <sys/wait.h>..." >&4
- val="$undef"
- + @if UNION_WAIT && UNION_WAIT3
- + echo "Both wait() and wait3() will use a plain 'int' pointer then." >&4
- + @elsif UNION_WAIT
- + echo "Your wait() should be happy with a plain 'int' pointer." >&4
- + @elsif UNION_WAIT3
- + echo "Your wait3() should be happy with a plain 'int' pointer." >&4
- + @end
- fi
- set d_uwait
- eval $setvar
- + @if UNION_WAIT3 || d_uwait3
- + val="$val2"; set d_uwait3
- + eval $setvar
- + @end
- + $rm -f wait.out
-
-
- Index: MANIFEST
- *** MANIFEST.old Mon Jan 24 15:35:28 1994
- --- MANIFEST Mon Jan 24 15:35:28 1994
- ***************
- *** 45,50 ****
- --- 45,61 ----
- kit/manifake.SH Makes a MANIFEST.new file out of a MANIFEST
- kit/manifake.man Manual page for same
- lib/ Some library support files
- + lib/C/ Some useful C routines
- + lib/C/Jmakefile Generic makefile for C lib routines
- + lib/C/Makefile.SH Produces Makefile for C lib routines
- + lib/C/fake/ Fake implementations of real routines
- + lib/C/fake/Jmakefile Generic makefile for faked C routines
- + lib/C/fake/Makefile.SH Jmake-generated configured makefile
- + lib/C/fake/dup2.C A dup2() replacement
- + lib/C/fake/getopt.C A getopt() replacement
- + lib/C/fake/rename.C A rename() replacement for files
- + lib/C/fake/scandir.C A scandir() replacement
- + lib/C/fake/setsid.C A setsid() pale imitation
- lib/Jmakefile Generic makefile description for lib
- lib/Makefile.SH Jmake-generated configured makefile
- lib/errnolist.a Awk script to build sys_errnolist[]
- ***************
- *** 82,87 ****
- --- 93,99 ----
- mcon/U/Loc.U Look for common programs
- mcon/U/Magic_h.U Makes confmagic.h--bizarrity here
- mcon/U/MailAuthor.U Offers user to register himself
- + mcon/U/MailList.U Offers user to subscribe to users list
- mcon/U/Myinit.U For copying to private U directories
- mcon/U/Myread.U Makes program to do read with shell escape
- mcon/U/Nothing.U For empty dependencies
- ***************
- *** 107,112 ****
- --- 119,126 ----
- mcon/U/byteorder.U Computes the byte order (big-endian?)
- mcon/U/cc.U Which C compiler should be used?
- mcon/U/ccflags.U Any additional C flags?
- + mcon/U/cf_email.U Computes user's e-mail address
- + mcon/U/cf_name.U Computes user's full name
- mcon/U/cf_who.U Who configured the sytem, where and when
- mcon/U/charorder.U Character order within a byte
- mcon/U/charsize.U What is the size of "char"?
- ***************
- *** 202,207 ****
- --- 216,223 ----
- mcon/U/d_rusage.U Do we have getrusage()?
- mcon/U/d_safebcpy.U Can bcopy() handle overlapping blocks?
- mcon/U/d_safemcpy.U Can memcpy() handle overlapping blocks?
- + mcon/U/d_sbrk.U Do we have sbrk()?
- + mcon/U/d_scandir.U Do we have scandir()?
- mcon/U/d_scannl.U Does scanf() groks '\n' correctly?
- mcon/U/d_scorfl.U Keep scoreboards by full name?
- mcon/U/d_select.U Do we have select()?
- ***************
- *** 211,216 ****
- --- 227,233 ----
- mcon/U/d_semop.U Do we have semop()?
- mcon/U/d_setegid.U Do we have setegid()?
- mcon/U/d_seteuid.U Do we have seteuid()?
- + mcon/U/d_setpgid.U Do we have setpgid()?
- mcon/U/d_setpgrp.U Do we have setpgrp()?
- mcon/U/d_setpgrp2.U Do we have setpgrp2()? (DG/UX)
- mcon/U/d_setprior.U Do we have setpriority()?
- ***************
- *** 218,223 ****
- --- 235,241 ----
- mcon/U/d_setreuid.U Do we have setreuid()?
- mcon/U/d_setrgid.U Do we have setrgid()?
- mcon/U/d_setruid.U Do we have setruid()?
- + mcon/U/d_setsid.U Do we have setsid()?
- mcon/U/d_sgndchr.U Are chars signed?
- mcon/U/d_shm.U Do we have full shm(2) support?
- mcon/U/d_shmat.U Do we have shmat()?
- ***************
- *** 271,276 ****
- --- 289,295 ----
- mcon/U/d_xdrs.U Do we have XDR serialization routines?
- mcon/U/defeditor.U Find default editor
- mcon/U/doublesize.U What is the size of "double"?
- + mcon/U/errnolist.U See if we need our own .c to get sys_errnolist[]
- mcon/U/etc.U Where administrative executable should go
- mcon/U/filexp.U Finds location of filexp made by Filexp.U
- mcon/U/floatsize.U What is the size of "float"?
- ***************
- *** 297,302 ****
- --- 316,322 ----
- mcon/U/i_sysdir.U Shall we include <sys/dir.h>?
- mcon/U/i_sysfile.U Do we need <sys/file.h>?
- mcon/U/i_sysioctl.U Include <sys/ioctl.h> or <sgtty.h>?
- + mcon/U/i_sysmman.U Do we have to include <sys/mman.h>?
- mcon/U/i_sysndir.U Shall we include <sys/ndir.h>?
- mcon/U/i_sysresrc.U Shall we include <sys/resource.h>?
- mcon/U/i_sysselct.U Shall we include <sys/select.h>?
- ***************
- *** 367,372 ****
- --- 387,393 ----
- mcon/U/rcs_branch.U Does RCS know about the -b switch?
- mcon/U/registers.U How many register declarations to use
- mcon/U/rootid.U Root user id
- + mcon/U/sbrksmart.U Can sbrk() be used to release core?
- mcon/U/sbrktype.U What is the return type of sbrk()?
- mcon/U/scriptdir.U Where to put public scripts
- mcon/U/shm_for.U More shared memory stuff
- ***************
- *** 460,465 ****
- --- 481,487 ----
- pl/newer.pl Perl library to Find files newer than patchlevel.h
- pl/package.pl Perl library to read .package
- pl/patseq.pl Perl library to compute issued patch sequence
- + pl/profile.pl Perl library to get ~/.dist_profile
- pl/rangeargs.pl Perl library to expand number lists
- pl/rcsargs.pl Perl library to expand rcs filename lists
- pl/snapshot.pl Perl library to parse RCS snapshot file
-
- Index: pat/patsend.SH
- Prereq: 3.0.1.4
- *** pat/patsend.SH.old Mon Jan 24 15:35:25 1994
- --- pat/patsend.SH Mon Jan 24 15:35:25 1994
- ***************
- *** 20,26 ****
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patsend.SH,v 3.0.1.4 1993/08/25 14:08:01 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- --- 20,26 ----
- eval "exec perl -S \$0 \$*"
- if \$running_under_some_shell;
-
- ! # $Id: patsend.SH,v 3.0.1.5 1994/01/24 14:32:46 ram Exp $
- #
- # Copyright (c) 1991-1993, Raphael Manfredi
- #
- ***************
- *** 33,38 ****
- --- 33,43 ----
- # Original Author: Larry Wall <lwall@netlabs.com>
- #
- # $Log: patsend.SH,v $
- + # Revision 3.0.1.5 1994/01/24 14:32:46 ram
- + # patch16: now prefix error messages with program's name
- + # patch16: don't feed mailer with more than 50 addresses at a time
- + # patch16: added ~/.dist_profile awareness
- + #
- # Revision 3.0.1.4 1993/08/25 14:08:01 ram
- # patch6: now asks for recipient list edition by default
- # patch6: new -q option to suppress that
- ***************
- *** 59,69 ****
- !GROK!THIS!
- cat >>patsend <<'!NO!SUBS!'
-
- require 'getopts.pl';
- &usage unless &Getopts("hquV");
-
- if ($opt_V) {
- ! print STDERR "patsend $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- --- 64,75 ----
- !GROK!THIS!
- cat >>patsend <<'!NO!SUBS!'
-
- + $progname = &profile; # Read ~/.dist_profile
- require 'getopts.pl';
- &usage unless &Getopts("hquV");
-
- if ($opt_V) {
- ! print STDERR "$progname $version PL$patchlevel\n";
- exit 0;
- } elsif ($opt_h) {
- &usage;
- ***************
- *** 104,115 ****
- $to = join(', ', split(' ', $dest));
- @ARGV = @argv;
-
- ! open(PL,"patchlevel.h") || die "Can't open patchlevel.h\n";
- while (<PL>) {
- $maxnum = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
- }
- close PL;
- ! die "Malformed patchlevel.h file.\n" if $maxnum eq '';
-
- if ($#ARGV < 0) {
- @patseq = &patseq($maxnum);
- --- 110,121 ----
- $to = join(', ', split(' ', $dest));
- @ARGV = @argv;
-
- ! open(PL,"patchlevel.h") || die "$progname: can't open patchlevel.h: $!\n";
- while (<PL>) {
- $maxnum = $1 if /^#define\s+PATCHLEVEL\s+(\d+)/;
- }
- close PL;
- ! die "$progname: malformed patchlevel.h file.\n" if $maxnum eq '';
-
- if ($#ARGV < 0) {
- @patseq = &patseq($maxnum);
- ***************
- *** 123,137 ****
- $argv =~ s/ $//;
-
- if ($#ARGV < 0) {
- ! print STDERR "No patches specified.\n";
- &usage;
- } elsif ($#ARGV) {
- ! print "Sending $package $baserev patches $argv to $dest...\n";
- } else {
- ! print "Sending $package $baserev patch $argv to $dest...\n";
- }
-
- ! chdir 'bugs' || die "patsend: can't cd to bugs: $!\n";
-
- fork && exit;
-
- --- 129,143 ----
- $argv =~ s/ $//;
-
- if ($#ARGV < 0) {
- ! print STDERR "$progname: no patches specified.\n";
- &usage;
- } elsif ($#ARGV) {
- ! print "$progname: sending $package $baserev patches $argv to $dest...\n";
- } else {
- ! print "$progname: sending $package $baserev patch $argv to $dest...\n";
- }
-
- ! chdir 'bugs' || die "$progname: can't cd to bugs: $!\n";
-
- fork && exit;
-
- ***************
- *** 139,146 ****
-
- until ($#ARGV < 0) {
- $patnum = shift;
- ! open(XHEAD,">.xhead$$") || die "patsend: can't create temp file: $!\n";
- ! print XHEAD
- "To: $to
- Subject: $package $baserev patch #$patnum
- Precedence: bulk
- --- 145,160 ----
-
- until ($#ARGV < 0) {
- $patnum = shift;
- !
- ! # I hate broken mailers! Bust it up into smaller groups of people...
- ! @dest = split(' ', $dest);
- ! while (@smalldest = splice(@dest, 0, 50)) {
- ! $to = join(', ', @smalldest); # Sensible To: for sendmail
- ! $smalldest = join(' ', @smalldest);
- !
- ! open(MAILER, "|$mailer $opt $smalldest") ||
- ! die "$progname: can't fork $mailer: $!\n";
- ! print MAILER
- "To: $to
- Subject: $package $baserev patch #$patnum
- Precedence: bulk
- ***************
- *** 151,168 ****
- [The latest patch for $package version $baserev is #$maxnum.]
-
- ";
- ! open(PATCH,"patch$patnum") || die "patsend: can't open patch$patnum: $!\n";
- ! while (<PATCH>) {
- ! print XHEAD;
- }
- - close XHEAD;
- - system "$mailer $opt $dest <.xhead$$";
- }
- - unlink ".xhead$$";
-
- sub usage {
- print STDERR <<EOM;
- ! Usage: patsend [-hquV] [patchlist] [recipients]
- -h : print this message and exit
- -q : quick mode, do not offer to edit recipient list
- -u : add all to-be-mailed users
- --- 165,184 ----
- [The latest patch for $package version $baserev is #$maxnum.]
-
- ";
- ! open(PATCH,"patch$patnum") ||
- ! die "$progname: can't open patch$patnum: $!\n";
- ! while (<PATCH>) {
- ! print MAILER;
- ! }
- ! close PATCH;
- ! close MAILER;
- ! die "$progname: could not mail patch$patnum.\n" if $?;
- }
- }
-
- sub usage {
- print STDERR <<EOM;
- ! Usage: $progname [-hquV] [patchlist] [recipients]
- -h : print this message and exit
- -q : quick mode, do not offer to edit recipient list
- -u : add all to-be-mailed users
- ***************
- *** 179,183 ****
- --- 195,200 ----
- $grep -v '^;#' ../pl/tilde.pl >>patsend
- $grep -v '^;#' ../pl/editor.pl >>patsend
- $grep -v '^;#' ../pl/listedit.pl >>patsend
- + $grep -v '^;#' ../pl/profile.pl >>patsend
- chmod +x patsend
- $eunicefix patsend
-
- Index: pl/profile.pl
- *** pl/profile.pl.old Mon Jan 24 15:35:27 1994
- --- pl/profile.pl Mon Jan 24 15:35:27 1994
- ***************
- *** 0 ****
- --- 1,73 ----
- + ;# $Id: profile.pl,v 3.0.1.1 1994/01/24 14:33:53 ram Exp $
- + ;#
- + ;# Copyright (c) 1991-1993, Raphael Manfredi
- + ;#
- + ;# You may redistribute only under the terms of the Artistic Licence,
- + ;# as specified in the README file that comes with the distribution.
- + ;# You may reuse parts of this distribution only within the terms of
- + ;# that same Artistic Licence; a copy of which may be found at the root
- + ;# of the source tree for dist 3.0.
- + ;#
- + ;# $Log: profile.pl,v $
- + ;# Revision 3.0.1.1 1994/01/24 14:33:53 ram
- + ;# patch16: created
- + ;#
- + ;#
- + ;# Dist profile management (works like MH and its ~/.mh_profile):
- + ;# - Profile name is held in the environment variable DIST. If not defined,
- + ;# use ~/.dist_profile by default.
- + ;# - Each line in the profile not starting with a '#' (comment line) should
- + ;# have the following format:
- + ;# progname: additional command line options
- + ;# The profile is parsed once when the command is launched and profile
- + ;# options are added at the beginning of the @ARGV array.
- + ;#
- + ;# Per-program configuration values may be also be added. For instance,
- + ;# program foo may pay attention to a profile component 'bar', which may be
- + ;# set via:
- + ;# foo-bar: value
- + ;# i.e. the program name is followed by a '-', followed by the profile
- + ;# component.
- + ;#
- + ;# Uses &tilda_expand to perform ~name substitution.
- + ;# Requires shellwords.pl to properly quote shell words (perl library).
- + ;#
- + # Set up profile components into %Profile, add any profile-supplied options
- + # into @ARGV and return the command invocation name.
- + sub profile {
- + local($profile) = &tilda_expand($ENV{'DIST'} || '~/.dist_profile');
- + local($me) = $0; # Command name
- + $me =~ s|.*/(.*)|$1|; # Keep only base name
- + return $me unless -s $profile;
- + local(*PROFILE); # Local file descriptor
- + local($options) = ''; # Options we get back from profile
- + unless (open(PROFILE, $profile)) {
- + warn "$me: cannot open $profile: $!\n";
- + return;
- + }
- + local($_);
- + local($component);
- + while (<PROFILE>) {
- + next if /^\s*#/; # Skip comments
- + next unless /^$me/o;
- + if (s/^$me://o) { # progname: options
- + chop;
- + $options .= $_; # Merge options if more than one line
- + }
- + elsif (s/^$me-([^:]+)://o) { # progname-component: value
- + $component = $1;
- + chop;
- + s/^\s+//; # Trim leading and trailing spaces
- + s/\s+$//;
- + $Profile{$component} = $_;
- + }
- + }
- + close PROFILE;
- + return unless $options;
- + require 'shellwords.pl';
- + local(@opts);
- + eval '@opts = &shellwords($options)'; # Protect against mismatched quotes
- + unshift(@ARGV, @opts);
- + return $me; # Return our invocation name
- + }
- +
-
- *** End of Patch 18 ***
-
- exit 0 # Just in case...
-