home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume44
/
mailagent
/
patch12
next >
Wrap
Internet Message Format
|
1994-09-22
|
53KB
From: Raphael Manfredi <ram@acri.fr>
Newsgroups: comp.sources.misc
Subject: v44i086: mailagent - Flexible mail filtering and processing package, v3.0, Patch12
Date: 22 Sep 1994 12:12:27 -0500
Organization: Advanced Computer Research Institute, Lyon, France
Sender: kent@sparky.sterling.com
Approved: kent@sparky.sterling.com
Message-ID: <35sdtr$r4c@sparky.sterling.com>
X-Md4-Signature: 93670c16558ccb1d64409606a494f576
Submitted-by: Raphael Manfredi <ram@acri.fr>
Posting-number: Volume 44, Issue 86
Archive-name: mailagent/patch12
Environment: UNIX, Perl
Patch-To: mailagent: Volume 41, Issue 1-26
[The latest patch for mailagent version 3.0 is #16.]
System: mailagent version 3.0
Patch #: 12
Priority: MEDIUM
Subject: regenerated Configure with dist-3.0 PL35
Subject: regenerated Makefile.SH with jmake 3.0 PL31
Subject: new edusers script to edit users file
Subject: created
Subject: filter.sh now honours queuewait when defined
Subject: new config parameters callout and linkdirs
Subject: typo fix to enable correct lockfile timeout printing
Subject: added fallback implementation for strcasecmp()
Subject: made fatal() arguments long rather than int for 64-bit machines
Subject: extended security checks to mimic those done by mailagent
Subject: now performs &init_constants as soon as possible
Subject: changed interface for &queue_mail to include first 2 letters
Subject: context is loaded earlier to initialize callout queue
Subject: added definition for $MAX_LINKS, $S_IWOTH, $S_IWGRP and &abs
Subject: changed &email_addr to cache its result and not rely on $cf'user
Subject: moved &init_signals to pl/signals.pl as &catch_signals
Subject: new manual page for edusers
Subject: documents new config parameters callout and linkdirs
Subject: new filtering actions AFTER and DO
Subject: variable msgpath is now defined within a PERL escape
Subject: mention that PERL escape variables are available to new commands
Subject: documents the edusers script and fuzzy address matching
Subject: added fuzzy address matching to avoid duplicates
Subject: detect hostile addresses before it is too late...
Subject: detect strange status-change requests
Subject: now performs locking before changing the users file
Subject: inform user about unrecognized leave-alone requests
Subject: optimize by not re-writing users file if not needed
Subject: now updates new variable folder_saved with folder path
Subject: added various escapes in strings for perl5 support
Subject: create ~/agent.trace if unable to mail command trace back
Subject: interface change for &qmail allows for better log messages
Subject: implements new AFTER and DO filtering commands
Subject: now escapes square brackets in strings for perl5
Subject: defines new folder_saved variable to store folder path
Subject: added escapes in strings for perl5 support
Subject: builtins are now looked for in &run_builtins
Subject: localized variables used by stat()
Subject: added access routines to detect context changes
Subject: context is now written back to disk only when changed
Subject: added callout queue knowledge
Subject: added the &do routine to support new DO filtering command
Subject: replaced all deprecated 'do sub' calls with '&sub'
Subject: typo prevented correct indexing in the @insert array
Subject: propagated change to the &queue_mail interface
Subject: added stubs for DO and AFTER commands
Subject: local() statement was missing in &getdate parameters fetch
Subject: added escapes in regexp for perl5 support
Subject: mailhook package cleaning now done only for subroutines
Subject: package name is separated with '::' in perl5
Subject: added logging at level 25 to debug lexer
Subject: better mismatched braces handling
Subject: localized variables used by stat() and localtime()
Subject: now knows about callout queue messages
Subject: propagates folder_saved as msgpath in PERL escapes
Subject: fixed regexp for perl5 support
Subject: now updates folder_saved variable with file pathname
Subject: ensures the newcmd file is secure
Subject: propagates glob for folder_saved
Subject: removed useless test which prevented correct processing
Subject: builtins handled in &run_builtins to allow re-entrance
Subject: changed interface of &qmail and &queue_mail for wider usage
Subject: do not attempt parsing of config if variable is undefined
Subject: lock rule cache before reading to prevent from concurrent updates
Subject: new DO and AFTER commands
Subject: symbolic directories are now specially handled
Subject: new -m option to monitor agentlog changes via atail
Subject: added regression tests for DO
Subject: added callout queue file definition
Subject: now checks that callout messages are properly listed
Subject: added minimal support for perl5 dataloading
Subject: updated with metaconfig 3.0 PL35
Subject: nine new files
Date: Thu Sep 22 16:43:34 MET DST 1994
From: Raphael Manfredi <ram@acri.fr>
Description:
Regenerated Configure with dist-3.0 PL35 and most Makefile.SH
files with jmake 3.0 PL31.
New edusers script to edit users file. The package command now
performs locking of the users file and edusers should be used
instead of a direct 'vi users' to ensure consistency and avoid
concurrent updating in the background.
filter.sh now honours queuewait when defined. The C filter already
did but since I don't use filter.sh, I sometimes forget about it.
New config parameters callout and linkdirs. The callout parameter
must be defined if you wish to make use of the new AFTER command.
The linkdirs parameters controls security checks when facing a
symbolic directory. When set to ON, mailagent will actively try
to determine wether files under this symbolic link are secure.
Typo fix in C filter to enable correct lockfile timeout printing.
Added fallback implementation for strcasecmp() in case it is not
present in the libc.
Made fatal() arguments long rather than int for 64-bit machines
in the C filter. Hope this won't break filter on 16-bit machines.
If it does, please let me know ASAP and we'll find something else.
Extended security checks in the C filter to mimic those done by
mailagent.
New filtering actions AFTER and DO. The AFTER command enables you
to install a callback for later, after a specified date. The DO
command lets you call an arbitrary perl routine and is to be
construed as a low-level access to mailagent's internal.
Actually, combining AFTER and DO via the mailhook interface may be
useful to perform actions one a timeout has expired. For instance,
an automatic unsharing command could send a warning after 2 days
if some of the parts are still missing. Please refer to the
manual page for syntax details.
Variable $msgpath is now defined within a PERL escape and refers
to the internal new $folder_saved variable. It points to the
path of the last saved message/folder.
The mailagent manual page now mentions that PERL escape variables
are available to user-defined commands, albeit in the newcmd package
instead of mailhook.
The package command now performs fuzzy address matching to avoid
duplicates, and tries to detect hostile addresses before it is too
late... Strange status-change requests are now logged and the users
file is locked before updating.
The package command will send an error message when faced with a
leave-alone request for someone who has not been properly registered,
including a list of the closest e-mail addresses known so far.
Added various escapes in strings and regular expressions for perl5
support. I even updated bin/perload to produce a dataloaded version
that can work with perl5 (&pack'name is now &pack::name with perl5).
However, mailagent fails about 22 of its tests with perl5, so use
at your own risks. This may either indicate bugs in mailagent's code
or bugs in perl5, or simply incompatibilities between perl4 and perl5.
I don't know, I haven't investigated yet.
Create ~/agent.trace if unable to mail command trace back when
PROCESSing a message.
Context is now written back to disk only when changed.
Added callout queue knowledge, the 'mailagent -l' command will
also show callout messages stored to be fed as input to callbacks.
Mailhook package cleaning now done only for subroutines. I suspect
cleaning of variables and hashes via type glob to be really buggy
in perl4. I haven't ported mailagent to perl5 yet, apart from basic
changes to let 'perl5 -c magent' run correctly... This may change
the outcome of tests like cmd/perl or cmd/umask (for the better,
I hope).
Added logging at level 25 to debug lexer. Levels this high are not
documented anyway, but I'm just telling you in case you wonder how
mailagent parses your rule files.
Better mismatched braces handling. A clear warning will now be issued
if you have mismatched braces in your actions. Before that, mailagent
could hung in the rule parsing.
Ensures the newcmd file is secure. Since new commands are defined
there, one could replace some favorite commands of yours with
trojan horses. I said "could". Now they can't (shouldn't be able
to, unless I've goofed somewhere).
Removed useless test which prevented correct history processing
and could cause bugs when issuing vacation messages: they would
be issued systematically instead of waiting for the correct timeout.
Lock rule cache before reading to prevent from concurrent updates.
New -m option in TEST to monitor agentlog changes via atail. Intended
to be used in desperate cases. See agent/test/README for details.
Added regression tests for DO, but none for AFTER. Automatic testing
of that command is not easy. If you wish to contribute a test, you
are welcome... :-)
nine new files
Fix: From rn, say "| patch -p -N -d DIR", where DIR is your mailagent 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 #16 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 mailagent 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: 11
4c4
< #define PATCHLEVEL 11
---
> #define PATCHLEVEL 12
Index: Configure
Prereq: 3.0.1.4
*** Configure.old Thu Sep 22 16:42:42 1994
--- Configure Thu Sep 22 16:42:44 1994
***************
*** 18,26 ****
# archive site. Check with Archie if you don't know where that can be.)
#
! # $Id: Configure,v 3.0.1.4 1994/07/01 14:50:29 ram Exp $
#
! # Generated on Fri Jul 01 16:47:56 MET DST 1994 [metaconfig 3.0 PL31]
cat >/tmp/c1$$ <<EOF
ARGGGHHHH!!!!!
--- 18,26 ----
# archive site. Check with Archie if you don't know where that can be.)
#
! # $Id: Configure,v 3.0.1.5 1994/09/22 13:37:44 ram Exp $
#
! # Generated on Thu Sep 22 15:19:32 MET DST 1994 [metaconfig 3.0 PL35]
cat >/tmp/c1$$ <<EOF
ARGGGHHHH!!!!!
***************
*** 55,69 ****
;;
esac
! : Sanity checks
! PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin"
! PATH=$PATH:'/usr/5bin:/etc:/usr/gnu/bin:/usr/new:/usr/new/bin:/usr/nbin'
! PATH=$PATH:'/sys5.3/bin:/sys5.3/usr/bin:/bsd4.3/bin:/bsd4.3/usr/ucb'
! PATH=$PATH:'/bsd4.3/usr/bin:/usr/bsd:/bsd43/bin:/usr/ccs/bin'
! PATH=$PATH:'/etc:/usr/lib:/usr/ucblib:/lib:/usr/ccs/lib'
! PATH=$PATH:'/sbin:/usr/sbin:/usr/libexec'
export PATH
if test ! -t 0; then
echo "Say 'sh $me', not 'sh <$me'"
exit 1
--- 55,81 ----
;;
esac
!
! : Proper PATH setting
! paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
! paths=$paths:'/usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin'
! paths=$paths:'/sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb'
! paths=$paths:'/bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin'
! paths=$paths:'/etc /usr/lib /usr/ucblib /lib /usr/ccs/lib'
! paths=$paths:'/sbin /usr/sbin /usr/libexec'
!
! for p in $paths
! do
! case ":$PATH:" in
! *:$p:*) ;;
! *) test -d $p && PATH=$PATH:$p ;;
! esac
! done
!
! PATH=.:$PATH
export PATH
+ : Sanity checks
if test ! -t 0; then
echo "Say 'sh $me', not 'sh <$me'"
exit 1
***************
*** 211,216 ****
--- 223,229 ----
d_bsdpgrp=''
d_setpgrp=''
d_setsid=''
+ d_strccmp=''
d_index=''
d_strchr=''
d_strerrm=''
***************
*** 225,230 ****
--- 238,244 ----
usevfork=''
d_voidsig=''
signal_t=''
+ defeditor=''
h_fcntl=''
h_sysfile=''
i_fcntl=''
***************
*** 236,241 ****
--- 250,256 ----
i_sysfilio=''
i_sysioctl=''
i_syssockio=''
+ i_sysparam=''
i_syswait=''
i_sgtty=''
i_termio=''
***************
*** 288,293 ****
--- 303,309 ----
patchlevel=''
perlpath=''
pidtype=''
+ prefix=''
installprivlib=''
privlib=''
privlibexp=''
***************
*** 309,314 ****
--- 325,331 ----
reg8=''
reg9=''
registers=''
+ rootid=''
installscript=''
scriptdir=''
scriptdirexp=''
***************
*** 475,481 ****
esac
shift
;;
! -V) echo "$me generated by metaconfig 3.0 PL31." >&2
exit 0;;
--) break;;
-*) echo "$me: unknown option $1" >&2; shift; error=true;;
--- 492,498 ----
esac
shift
;;
! -V) echo "$me generated by metaconfig 3.0 PL35." >&2
exit 0;;
--) break;;
-*) echo "$me: unknown option $1" >&2; shift; error=true;;
***************
*** 631,638 ****
xlibpth='/usr/lib/386 /lib/386'
: general looking path for locating libraries
! glibpth="/usr/lib/large /lib /usr/lib $xlibpth /lib/large"
! glibpth="$glibpth /usr/lib/small /lib/small"
glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib"
: Private path used by Configure to find libraries. Its value
--- 648,655 ----
xlibpth='/usr/lib/386 /lib/386'
: general looking path for locating libraries
! glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth"
! glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib"
: Private path used by Configure to find libraries. Its value
***************
*** 915,921 ****
spitshell=cat
echo " "
echo "Okay, let's see if #! works on this system..."
! echo "#!/bin/cat" >try
$eunicefix try
chmod +x try
./try > today
--- 932,940 ----
spitshell=cat
echo " "
echo "Okay, let's see if #! works on this system..."
! xcat=/bin/cat
! test -r $xcat || xcat=/usr/bin/cat
! echo "#!$xcat" >try
$eunicefix try
chmod +x try
./try > today
***************
*** 923,929 ****
echo "It does."
sharpbang='#!'
else
! echo "#! /bin/cat" > try
$eunicefix try
chmod +x try
./try > today
--- 942,948 ----
echo "It does."
sharpbang='#!'
else
! echo "#! $xcat" > try
$eunicefix try
chmod +x try
./try > today
***************
*** 938,947 ****
--- 957,968 ----
else
echo "Your sh doesn't grok # comments--I will strip them later on."
shsharp=false
+ cd ..
echo "exec grep -v '^[ ]*#'" >spitshell
chmod +x spitshell
$eunicefix spitshell
spitshell=`pwd`/spitshell
+ cd UU
echo "I presume that if # doesn't work, #! won't work either!"
sharpbang=': use '
fi
***************
*** 1037,1042 ****
--- 1058,1064 ----
smail
test
uname
+ vi
zcat
"
pth=`echo $PATH | sed -e 's/:/ /g'`
***************
*** 1832,1839 ****
$cat <<'EOM'
Some systems have incompatible or broken versions of libraries. Among
! the directories listed in the question below, please remove the one
! you know not to be holding relevant libraries. Say "none" for none.
EOM
case "$libpth" in
--- 1854,1862 ----
$cat <<'EOM'
Some systems have incompatible or broken versions of libraries. Among
! the directories listed in the question below, please remove any you
! know not to be holding relevant libraries, and add any that are needed.
! Say "none" for none.
EOM
case "$libpth" in
***************
*** 2154,2160 ****
$grep fprintf libc.tmp > libc.ptf
xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
! if com="$sed -n -e 's/^.* [ADTS] *_[_.]*//p' -e 's/^.* [ADTS] //p'";\
eval $xscan;\
$contains '^fprintf$' libc.list >/dev/null 2>&1; then
eval $xrun
--- 2177,2183 ----
$grep fprintf libc.tmp > libc.ptf
xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
! if com="$sed -n -e 's/^.* [ADTSI] *_[_.]*//p' -e 's/^.* [ADTSI] //p'";\
eval $xscan;\
$contains '^fprintf$' libc.list >/dev/null 2>&1; then
eval $xrun
***************
*** 2545,2550 ****
--- 2568,2576 ----
else
dflt='none'
fi
+ case "$ccflags" in
+ *-posix*) dflt="$dflt -posix" ;;
+ esac
;;
*) dflt="$ldflags";;
esac
***************
*** 3235,3240 ****
--- 3261,3270 ----
set setsid d_setsid
eval $inlibc
+ : see if strcasecmp exists
+ set strcasecmp d_strccmp
+ eval $inlibc
+
: see if strerror and/or sys_errlist[] exist
echo " "
if set strerror val -f d_strerror; eval $csym; $val; then
***************
*** 3333,3340 ****
$define)
echo " "
case "$usevfork" in
! true) dflt='y';;
! *) dflt='n';;
esac
rp="Some systems have problems with vfork(). Do you want to use it?"
. ./myread
--- 3363,3370 ----
$define)
echo " "
case "$usevfork" in
! false) dflt='n';;
! *) dflt='y';;
esac
rp="Some systems have problems with vfork(). Do you want to use it?"
. ./myread
***************
*** 3547,3552 ****
--- 3577,3599 ----
Id='$Id'
Log='$Log'
+ : determine default editor
+ echo " "
+ case "$defeditor" in
+ '')
+ case "$_vi" in
+ */*) dflt="$_vi";;
+ *) dflt=/usr/ucb/vi;;
+ esac
+ ;;
+ *) dflt="$defeditor"
+ ;;
+ esac
+ fn=f/
+ rp="What is the default editor on your system?"
+ . ./getfile
+ defeditor="$ans"
+
: see if flock exists
set flock d_flock
eval $inlibc
***************
*** 3650,3660 ****
afs=false
fi
: determine where public executables go
echo " "
case "$bin" in
'')
! dflt=`./loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
;;
*)
dflt="$bin"
--- 3697,3733 ----
afs=false
fi
+ : determine root of directory hierarchy where package will be installed.
+ case "$prefix" in
+ '')
+ dflt=`./loc . /usr/local /usr/local /local /opt /usr`
+ ;;
+ *)
+ dflt="$prefix"
+ ;;
+ esac
+ $cat <<EOM
+
+ By default, $package will be installed in $dflt/bin, manual
+ pages under $dflt/man, etc..., i.e. with $dflt as prefix for
+ all installation directories. Typically set to /usr/local, but you
+ may choose /usr if you wish to install $package among your system
+ binaries. If you wish to have binaries under /bin but manual pages
+ under /usr/local/man, that's ok: you will be prompted separately
+ for each of the installation directories, the prefix being only used
+ to set defaults.
+
+ EOM
+ fn=d~
+ rp='Installation prefix to use?'
+ . ./getfile
+ prefix="$ans"
+
: determine where public executables go
echo " "
case "$bin" in
'')
! dflt="$prefix/bin"
;;
*)
dflt="$bin"
***************
*** 3700,3710 ****
echo "If you don't want the manual sources installed, answer 'none'."
case "$mansrc" in
'')
! lookpath='/usr/local/man/man1 /usr/local/man/man1 /usr/man/manl'
lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
lookpath="$lookpath /usr/man/man.L"
! mansrc=`./loc . $lookpath`
if $test -d "$mansrc"; then
dflt="$mansrc"
else
--- 3773,3784 ----
echo "If you don't want the manual sources installed, answer 'none'."
case "$mansrc" in
'')
! lookpath="$prefix/man/man1 $prefix/man/u_man/man1 $prefix/man/l_man/man1"
! lookpath="$lookpath /usr/local/man/man1 /usr/local/man/man1 /usr/man/manl"
lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
lookpath="$lookpath /usr/man/man.L"
! mansrc=`./loc . $prefix/man/man1 $lookpath`
if $test -d "$mansrc"; then
dflt="$mansrc"
else
***************
*** 3756,3764 ****
: determine where private executables go
case "$privlib" in
'')
! dflt=/usr/lib/$package
! $test -d /usr/local/lib && dflt=/usr/local/lib/$package
! $test -d /local/lib && dflt=/local/lib/$package
;;
*) dflt="$privlib"
;;
--- 3830,3836 ----
: determine where private executables go
case "$privlib" in
'')
! dflt=$prefix/lib/$package
;;
*) dflt="$privlib"
;;
***************
*** 3794,3800 ****
installprivlib="$privlibexp"
fi
! : determine where public executables go
case "$scriptdir" in
'')
dflt="$bin"
--- 3866,3872 ----
installprivlib="$privlibexp"
fi
! : determine where public executable scripts go
case "$scriptdir" in
'')
dflt="$bin"
***************
*** 3802,3807 ****
--- 3874,3880 ----
$test -d /usr/share/scripts && dflt=/usr/share/scripts
$test -d /usr/share/bin && dflt=/usr/share/bin
$test -d /usr/local/script && dflt=/usr/local/script
+ $test -d $prefix/script && dflt=$prefix/script
;;
*) dflt="$scriptdir"
;;
***************
*** 4200,4216 ****
. ./getfile
perlpath="$ans"
: see what type pids are declared as in the kernel
! case "$pidtype" in
! '')
! if $contains 'pid_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
! dflt='pid_t';
! else
! dflt="int"
! fi
! ;;
! *) dflt="$pidtype";;
! esac
echo " "
rp="What type are process ids on this system declared as?"
. ./myread
--- 4273,4304 ----
. ./getfile
perlpath="$ans"
+ : define an is-a-typedef? function
+ typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+ case "$inclist" in
+ "") inclist="sys/types.h";;
+ esac;
+ eval "val=\$$var";
+ case "$val" in
+ "")
+ $rm -f temp.c;
+ for inc in $inclist; do
+ echo "#include <$inc>" >>temp.c;
+ done;
+ $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+ if $contains $type temp.E >/dev/null 2>&1; then
+ eval "$var=$type";
+ else
+ eval "$var=$def";
+ fi;
+ $rm -f temp.?;;
+ *) eval "$var=$val";;
+ esac'
+
: see what type pids are declared as in the kernel
! set pid_t pidtype int stdio.h sys/types.h
! eval $typedef
! dflt="$pidtype"
echo " "
rp="What type are process ids on this system declared as?"
. ./myread
***************
*** 4272,4277 ****
--- 4360,4373 ----
. ./.foo
$rm -f .foo
+ : determine root id
+ echo " "
+ rootid=`$sed -e "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e "q" -e "}" -e "d" </etc/passwd`
+ case "$rootid" in
+ '') rootid=0 ;;
+ *) echo "Root uid = $rootid" >&4 ;;
+ esac
+
: see if signal is declared as pointer to function returning int or void
echo " "
xxx=`./findhdr signal.h`
***************
*** 4279,4293 ****
if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
echo "You have int (*signal())() instead of void." >&4
val="$undef"
- signal_t="int"
elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
echo "You have void (*signal())() instead of int." >&4
val="$define"
- signal_t="void"
elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
echo "You have int (*signal())() instead of void." >&4
val="$undef"
- signal_t="int"
else
case "$d_voidsig" in
'')
--- 4375,4386 ----
***************
*** 4295,4311 ****
dflt=void
rp="What type does your signal handler return?"
. ./myread
! signal_t="$ans"
! ;;
! *) echo "As you already told me, signal handler returns $signal_t." >&4;;
! esac
! case "$signal_t" in
! void) val="$define";;
! *) val="$undef";;
esac
fi
set d_voidsig
eval $setvar
$rm -f $$.tmp
: figure out how to guarantee perl startup
--- 4388,4409 ----
dflt=void
rp="What type does your signal handler return?"
. ./myread
! case "$ans" in
! v*) val="$define";;
! *) val="$undef";;
! esac;;
! "$define")
! echo "As you already told me, signal handler returns void." >&4;;
! *)
! echo "As you already told me, signal handler returns int." >&4;;
esac
fi
set d_voidsig
eval $setvar
+ case "$d_voidsig" in
+ "$define") signal_t="void";;
+ *) signal_t="int";;
+ esac
$rm -f $$.tmp
: figure out how to guarantee perl startup
***************
*** 4366,4392 ****
eval $setvar
: see what type uids are declared as in the kernel
case "$uidtype" in
! '')
! if $contains 'uid_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
! dflt='uid_t';
! else
! xxx=`./findhdr sys/user.h`
! set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
! case $1 in
! unsigned) dflt="$1 $2" ;;
! *) dflt="$1" ;;
! esac
! fi
;;
! *) dflt="$uidtype";;
esac
echo " "
rp="What is the type for user ids returned by getuid()?"
. ./myread
! val="$ans"
! set uidtype
! eval $setvar
: check for void type
echo " "
--- 4464,4486 ----
eval $setvar
: see what type uids are declared as in the kernel
+ set uid_t uidtype xxx stdio.h sys/types.h
+ eval $typedef
case "$uidtype" in
! xxx)
! xxx=`./findhdr sys/user.h`
! set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
! case $1 in
! unsigned) dflt="$1 $2" ;;
! *) dflt="$1" ;;
! esac
;;
! *) dflt="$uidtype";;
esac
echo " "
rp="What is the type for user ids returned by getuid()?"
. ./myread
! uidtype="$ans"
: check for void type
echo " "
***************
*** 4530,4535 ****
--- 4624,4633 ----
set i_fcntl
eval $setvar
+ : see if this is a sys/param system
+ set sys/param.h i_sysparam
+ eval $inhdr
+
: see if we should include time.h, sys/time.h, or both
echo " "
echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
***************
*** 4650,4655 ****
--- 4748,4754 ----
EOM
rp='Should I send mail to ram@acri.fr?'
dflt=y
+ $test -f ../.config/nomail && dflt=n
fi
. ./myread
case "$ans" in
***************
*** 4725,4736 ****
$atsh package $usermail $package $baserev $patchlevel$opt
EOM
! $rm -f ../.config/mailauthor
cp ../patchlevel.h ../.config/mailauthor
;;
*)
case "$dflt" in
! "y") echo "Oh well, maybe next time.";;
esac
;;
esac
--- 4824,4838 ----
$atsh package $usermail $package $baserev $patchlevel$opt
EOM
! $rm -f ../.config/mailauthor ../.config/nomail
cp ../patchlevel.h ../.config/mailauthor
;;
*)
case "$dflt" in
! "y")
! echo "Oh well, maybe next time."
! cp /dev/null ../.config/nomail
! ;;
esac
;;
esac
***************
*** 4760,4766 ****
guest:**paswword**:10:100:Mister Guest User:/usr/users:/bin/sh
^^^^^^^^^^^^^^^^^
EOM
! rp="Berkeley/V7 format for full name in /etc/password?"
. ./myread
case "$ans" in
y*) d_passnames="$define"
--- 4862,4868 ----
guest:**paswword**:10:100:Mister Guest User:/usr/users:/bin/sh
^^^^^^^^^^^^^^^^^
EOM
! rp="Berkeley/V7 format for full name in /etc/passwd?"
. ./myread
case "$ans" in
y*) d_passnames="$define"
***************
*** 5084,5089 ****
--- 5186,5192 ----
d_bsdpgrp='$d_bsdpgrp'
d_setpgrp='$d_setpgrp'
d_setsid='$d_setsid'
+ d_strccmp='$d_strccmp'
d_index='$d_index'
d_strchr='$d_strchr'
d_strerrm='$d_strerrm'
***************
*** 5098,5103 ****
--- 5201,5207 ----
usevfork='$usevfork'
d_voidsig='$d_voidsig'
signal_t='$signal_t'
+ defeditor='$defeditor'
h_fcntl='$h_fcntl'
h_sysfile='$h_sysfile'
i_fcntl='$i_fcntl'
***************
*** 5109,5114 ****
--- 5213,5219 ----
i_sysfilio='$i_sysfilio'
i_sysioctl='$i_sysioctl'
i_syssockio='$i_syssockio'
+ i_sysparam='$i_sysparam'
i_syswait='$i_syswait'
i_sgtty='$i_sgtty'
i_termio='$i_termio'
***************
*** 5161,5166 ****
--- 5266,5272 ----
patchlevel='$patchlevel'
perlpath='$perlpath'
pidtype='$pidtype'
+ prefix='$prefix'
installprivlib='$installprivlib'
privlib='$privlib'
privlibexp='$privlibexp'
***************
*** 5182,5187 ****
--- 5288,5294 ----
reg8='$reg8'
reg9='$reg9'
registers='$registers'
+ rootid='$rootid'
installscript='$installscript'
scriptdir='$scriptdir'
scriptdirexp='$scriptdirexp'
Index: agent/man/package.SH
Prereq: 3.0
*** agent/man/package.SH.old Thu Sep 22 16:43:00 1994
--- agent/man/package.SH Thu Sep 22 16:43:00 1994
***************
*** 20,26 ****
.TH PACKAGE $manext
''' @(#) Manual page for mailagent's package command
'''
! ''' $Id: package.SH,v 3.0 1993/11/29 13:48:31 ram Exp $
'''
''' Copyright (c) 1990-1993, Raphael Manfredi
'''
--- 20,26 ----
.TH PACKAGE $manext
''' @(#) Manual page for mailagent's package command
'''
! ''' $Id: package.SH,v 3.0.1.1 1994/09/22 13:59:03 ram Exp $
'''
''' Copyright (c) 1990-1993, Raphael Manfredi
'''
***************
*** 33,46 ****
''' Original Author: Graham Stoney, 1993
'''
''' $Log: package.SH,v $
''' Revision 3.0 1993/11/29 13:48:31 ram
''' Baseline for mailagent 3.0 netwide release.
'''
'''
.SH NAME
package \- register package user via mailagent
.SH SYNOPSIS
! package\fR \fIaddress\fR \fIsystem\fR \fIversion\fR \fIpatchlevel\fR
[ mailpatches | notifypatches ]
.SH DESCRIPTION
This command is not intended to be run directly by a user, but may
--- 33,59 ----
''' Original Author: Graham Stoney, 1993
'''
''' $Log: package.SH,v $
+ ''' Revision 3.0.1.1 1994/09/22 13:59:03 ram
+ ''' patch12: documents the edusers script and fuzzy address matching
+ '''
''' Revision 3.0 1993/11/29 13:48:31 ram
''' Baseline for mailagent 3.0 netwide release.
'''
'''
+ .de Ex \" Start of Example
+ .sp
+ .in +5
+ .nf
+ ..
+ .de Ef \" End of Example
+ .sp
+ .in -5
+ .fi
+ ..
.SH NAME
package \- register package user via mailagent
.SH SYNOPSIS
! \fBpackage\fR \fIaddress\fR \fIsystem\fR \fIversion\fR \fIpatchlevel\fR
[ mailpatches | notifypatches ]
.SH DESCRIPTION
This command is not intended to be run directly by a user, but may
***************
*** 77,82 ****
--- 90,134 ----
and notification request are saved in the file
.I users
in the package's directory.
+ .PP
+ .I Package
+ performs an approximate address match in order to avoid duplicate entries.
+ Whenever this elimination occurs, a warning message is issued in the logfile.
+ Two addresses will be said equivalent if one of them has an added machine name
+ or if they are really equal. Therefore, the following addresses are equivalent:
+ .Ex
+ ram@acri.fr
+ ram@main.acri.fr
+ .Ef
+ whereas the following two are \fInot\fR equivalent, unfortunately:
+ .Ex
+ ram@acri.acri.fr
+ ram@main.acri.fr
+ .Ef
+ When a user is asking to be left alone, it is important to let him know if
+ the request failed, because he will be annoyed when the next set of patches
+ is issued and he still gets them despite his previous request. Therefore, if
+ no approximate match occurs, a warning message is sent back, with a list
+ of addresses that are \fIclose\fR to his own e-mail address, but not
+ equivalent. Fortunately, the following addresses are considered close:
+ .Ex
+ ram@acri.fr
+ ram@somewhere.com
+ raphael@main.acri.fr
+ manfredi@acri.acri.fr
+ .Ef
+ because they either have the same login (important when someone changes
+ company) or share the same domain or sub-domain part.
+ .PP
+ In order to edit the \fIusers\fR file, the
+ .I edusers
+ script should be used. For one thing, it will let you edit the
+ .I users
+ file from
+ whatever package you name in the command line, but it will also properly lock
+ the file so that the execution of \fIpackage\fR will stall for the duration
+ of the manual edition (provided you have a strict locking policy defined in
+ your \fI~/.mailagent\fR configuration file).
.SH FILES
.PD 0
.TP 20
***************
*** 118,126 ****
Log/agentlog
mailagent's log file
.PD
! .SH AUTHOR
Graham Stoney <greyham@research.canon.oz.au>
.SH "SEE ALSO"
! mailagent($manext), metaconfig($manext).
!GROK!THIS!
chmod 444 package.$manext
--- 170,180 ----
Log/agentlog
mailagent's log file
.PD
! .SH AUTHORS
Graham Stoney <greyham@research.canon.oz.au>
+ .br
+ Raphael Manfredi <ram@acri.fr> (minor enhancements)
.SH "SEE ALSO"
! edusers($manext), mailagent($manext), metaconfig($manext).
!GROK!THIS!
chmod 444 package.$manext
Index: agent/package.SH
Prereq: 3.0
*** agent/package.SH.old Thu Sep 22 16:43:01 1994
--- agent/package.SH Thu Sep 22 16:43:01 1994
***************
*** 20,26 ****
eval "exec perl -S \$0 \$*"
if \$running_under_some_shell;
! # $Id: package.SH,v 3.0 1993/11/29 13:48:32 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 20,26 ----
eval "exec perl -S \$0 \$*"
if \$running_under_some_shell;
! # $Id: package.SH,v 3.0.1.1 1994/09/22 14:03:44 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 33,38 ****
--- 33,46 ----
# Original Author: Graham Stoney, 1993
#
# $Log: package.SH,v $
+ # Revision 3.0.1.1 1994/09/22 14:03:44 ram
+ # patch12: added fuzzy address matching to avoid duplicates
+ # patch12: detect hostile addresses before it is too late...
+ # patch12: detect strange status-change requests
+ # patch12: now performs locking before changing the users file
+ # patch12: inform user about unrecognized leave-alone requests
+ # patch12: optimize by not re-writing users file if not needed
+ #
# Revision 3.0 1993/11/29 13:48:32 ram
# Baseline for mailagent 3.0 netwide release.
#
***************
*** 48,55 ****
--- 56,65 ----
$userlist = "users";
$prog_name = $0; # Who I am
$prog_name =~ s|^.*/(.*)|$1|; # Keep only base name
+ $lockext = '.lock'; # Locking extension
&read_config; # First, read configuration file (in ~/.mailagent)
+ &catch_signals; # Protect against signals
# take job number and command from environment
# (passed by mailagent)
***************
*** 84,89 ****
--- 94,105 ----
@SH maillist $path
^ note the l";
+ # Silently discard hostile addresses
+ unless (&addr'valid($dest)) {
+ &add_log("FAILED (HOSTILE $dest)") if $loglvl > 1;
+ exit 0;
+ }
+
if (!$System{$system}) {
open(MAILER, "|$cf'sendmail $cf'mailopt $path $cf'user");
print MAILER
***************
*** 244,251 ****
}
}
# look for them in the userlist file
! if (open(USERLIST,"<$userlist")) {
while (<USERLIST>) {
next if /^#/;
chop if /\n$/;
--- 260,272 ----
}
}
+ # Lock users file. That file should only be edited with the edusers script.
+ if (0 != &acs_rqst($userlist)) {
+ &add_log("WARNING updating $userlist without lock") if $loglvl > 5;
+ }
+
# look for them in the userlist file
! if (open(USERLIST, $userlist)) {
while (<USERLIST>) {
next if /^#/;
chop if /\n$/;
***************
*** 258,306 ****
}
# have we heard from them before?
! if ($name eq $dest) {
! $found = 1;
$status = $letter;
$pl = $theirpl if $theirpl ne '-';
}
push(@status, $status);
push(@pl, $pl);
push(@name, $name);
}
close USERLIST;
}
# add them if they're new.
if (!$found) {
! push(@name, $dest);
! push(@status, $letter);
! push(@pl, $theirpl);
}
# write the file back out.
! open(USERLIST,">$userlist.new") || &abort("can't open new $userlist file");
for ($i = 0; $i <= $#name; $i++) {
print USERLIST $status[$i], "\t", $pl[$i], "\t", $name[$i], "\n"
|| &abort("error writing new $userlist file");
}
close(USERLIST) || &abort("error closing new $userlist file");
rename("$userlist.new", $userlist);
# Emergency exit with clean-up
sub abort {
local($reason) = shift(@_); # Why we are exiting
&fatal($reason);
}
!NO!SUBS!
$grep -v '^;#' pl/fatal.pl >>package
$grep -v '^;#' pl/add_log.pl >>package
$grep -v '^;#' pl/read_conf.pl >>package
- $grep -v '^;#' pl/unpack.pl >>package
- $grep -v '^;#' pl/rangeargs.pl >>package
- $grep -v '^;#' pl/sendfile.pl >>package
$grep -v '^;#' pl/distribs.pl >>package
$grep -v '^;#' pl/secure.pl >>package
chmod 755 package
$eunicefix package
--- 279,427 ----
}
# have we heard from them before?
! if (&addr'match($name, $dest)) {
! if ($found++) {
! &add_log("WARNING removing duplicate for $dest ($name)")
! if $loglvl > 5;
! &add_log("NOTICE status for $dest was $oldstatus, now $status")
! if $oldstatus ne $status && $loglvl > 6;
! next;
! }
!
! $oldstatus = $status; # Save status
! $oldpl = $pl; # And patchlevel
$status = $letter;
$pl = $theirpl if $theirpl ne '-';
}
+
+ # save entry
push(@status, $status);
push(@pl, $pl);
push(@name, $name);
+
+ # in case we have to go to &send_closest
+ push(@registered, $name) if $status =~ /^[MN]/;
}
close USERLIST;
}
+ # optimize a little...
+ if ($found == 1 && $oldstatus eq $letter && $oldpl eq $theirpl) {
+ &add_log("NOTICE no change for $dest") if $loglvl > 6;
+ close USERLIST;
+ &free_file($userlist);
+ exit 0;
+ }
+
# add them if they're new.
if (!$found) {
! if ($letter eq 'L') {
! &add_log("WARNING unknown $dest wants to be left alone") if $loglvl > 5;
! &free_file($userlist);
! &send_closest;
! &add_log("FAILED (UNREGISTERED $dest)") if $loglvl > 1;
! exit 0;
! } else {
! push(@name, $dest);
! push(@status, $letter);
! push(@pl, $theirpl);
! }
}
# write the file back out.
! open(USERLIST,">$userlist.new") ||
! &abort("can't create new $userlist file: $!");
for ($i = 0; $i <= $#name; $i++) {
print USERLIST $status[$i], "\t", $pl[$i], "\t", $name[$i], "\n"
|| &abort("error writing new $userlist file");
}
close(USERLIST) || &abort("error closing new $userlist file");
+
rename("$userlist.new", $userlist);
+ &free_file($userlist);
# Emergency exit with clean-up
sub abort {
local($reason) = shift(@_); # Why we are exiting
+ &free_file($userlist);
&fatal($reason);
}
+ # Send closest matching addresses, among @registered
+ sub send_closest {
+ open(MAILER, "|$cf'sendmail $cf'mailopt $path $cf'user") ||
+ do {
+ &add_log("SYSERR fork: $!") if $loglvl;
+ &add_log("ERROR cannot launch $cf'sendmail") if $loglvl;
+ };
+ print MAILER
+ "To: $path
+ Subject: You were not recorded as a $system $version user
+ X-Mailer: mailagent [version $mversion PL$patchlevel]
+
+ I can't honour your desire to be left alone for $system version $version
+ updates because you were not found among the registered users.
+
+ Your command was: $fullcmd
+
+ For your information, here is the list of the closest addresses to your own
+ e-mail address ($dest) that are registered:
+
+ ";
+ local($first) = '';
+ foreach $addr (@registered) {
+ if (&addr'close($dest, $addr)) {
+ print MAILER "\t$addr\n";
+ $first = $addr if $first eq '';
+ }
+ }
+ print MAILER <<EOM if $first ne '';
+
+ Assuming you registered using the address $first,
+ you may request to be left alone by sending me the following:
+
+ Subject: Command
+ @SH package $first $system $version
+
+ This is only an example, of course. You must pick the correct address
+ among the listed set.
+
+ If none of the addresses listed above are correct, please don't try them.
+ EOM
+ print MAILER <<EOM if $first eq '';
+ *** None found ***
+
+ This probably means you either never registered, or you used an entirely
+ different e-mail address to do so.
+
+ EOM
+ print MAILER <<EOM;
+ I suggest you re-run the Configure script from the original $system
+ distribution and ask to be left alone from there. If you kept the generated
+ config.sh and run Configure on the same machine you did the first time, that
+ should un-register you properly.
+
+ -- $prog_name speaking for $cf'user
+ EOM
+ close MAILER;
+ if ($?) {
+ &add_log("ERROR cannot send closest addr list") if $loglvl;
+ } else {
+ &add_log("MSG closest addr list") if $loglvl > 6;
+ }
+ }
+
!NO!SUBS!
$grep -v '^;#' pl/fatal.pl >>package
$grep -v '^;#' pl/add_log.pl >>package
$grep -v '^;#' pl/read_conf.pl >>package
$grep -v '^;#' pl/distribs.pl >>package
$grep -v '^;#' pl/secure.pl >>package
+ $grep -v '^;#' pl/addr.pl >>package
+ $grep -v '^;#' pl/acs_rqst.pl >>package
+ $grep -v '^;#' pl/free_file.pl >>package
+ $grep -v '^;#' pl/checklock.pl >>package
+ $grep -v '^;#' pl/signals.pl >>package
chmod 755 package
$eunicefix package
Index: Makefile.SH
*** Makefile.SH.old Thu Sep 22 16:42:45 1994
--- Makefile.SH Thu Sep 22 16:42:45 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 53,59 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9 92/07/14 16:46:57 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 53,59 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:47:34 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 63,69 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
all::
--- 63,72 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:47:34 ram
! # Baseline for mailagent 3.0 netwide release.
! #
all::
Index: agent/Makefile.SH
*** agent/Makefile.SH.old Thu Sep 22 16:42:46 1994
--- agent/Makefile.SH Thu Sep 22 16:42:46 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 68,74 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9.1.2 92/08/26 12:33:22 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 68,74 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:47:37 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 78,86 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
! BIN = mailpatch mailhelp maillist maildist package
all:: $(BIN)
--- 78,89 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:47:37 ram
! # Baseline for mailagent 3.0 netwide release.
! #
! BIN = mailpatch mailhelp maillist maildist package edusers
all:: $(BIN)
***************
*** 102,107 ****
--- 105,113 ----
package: package.SH
/bin/sh package.SH
+ edusers: edusers.SH
+ /bin/sh edusers.SH
+
install:: $(SCRIPTS) $(LSCRIPTS)
@for file in $(SCRIPTS) $(LSCRIPTS); do \
***************
*** 153,158 ****
--- 159,165 ----
maillist.SH \
maildist.SH \
package.SH \
+ edusers.SH \
magent.SH
depend::
Index: agent/files/Makefile.SH
*** agent/files/Makefile.SH.old Thu Sep 22 16:42:47 1994
--- agent/files/Makefile.SH Thu Sep 22 16:42:47 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 55,61 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9 92/07/14 16:47:32 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 55,61 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:47:46 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 65,71 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
FILES = agenthelp commands distribs filter.sh mailagent.cf proglist \
chkagent.sh
--- 65,74 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:47:46 ram
! # Baseline for mailagent 3.0 netwide release.
! #
FILES = agenthelp commands distribs filter.sh mailagent.cf proglist \
chkagent.sh
Index: agent/files/help/Makefile.SH
*** agent/files/help/Makefile.SH.old Thu Sep 22 16:42:49 1994
--- agent/files/help/Makefile.SH Thu Sep 22 16:42:49 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 50,56 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9 92/07/14 16:47:32 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 50,56 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:47:52 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 60,66 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
FILES = addauth approve delpower end getauth help newpower \
passwd password power release remauth set setauth user
--- 60,69 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:47:52 ram
! # Baseline for mailagent 3.0 netwide release.
! #
FILES = addauth approve delpower end getauth help newpower \
passwd password power release remauth set setauth user
Index: agent/filter/Makefile.SH
*** agent/filter/Makefile.SH.old Thu Sep 22 16:42:50 1994
--- agent/filter/Makefile.SH Thu Sep 22 16:42:50 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 75,81 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9 92/07/14 18:41:10 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 75,81 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:48:04 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 85,91 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
# Files used to build the application
SRC = environ.c hash.c io.c lock.c logfile.c main.c misc.c msg.c parser.c \
--- 85,94 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:48:04 ram
! # Baseline for mailagent 3.0 netwide release.
! #
# Files used to build the application
SRC = environ.c hash.c io.c lock.c logfile.c main.c misc.c msg.c parser.c \
Index: agent/man/Makefile.SH
*** agent/man/Makefile.SH.old Thu Sep 22 16:42:55 1994
--- agent/man/Makefile.SH Thu Sep 22 16:42:55 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 64,70 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9 92/07/14 16:49:04 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 64,70 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:48:25 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 74,83 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
MPAGES = mailagent.$(L) maildist.$(L) maillist.$(L) mailhelp.$(L) \
! mailpatch.$(L) package.$(L)
all:: $(MPAGES)
--- 74,86 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:48:25 ram
! # Baseline for mailagent 3.0 netwide release.
! #
MPAGES = mailagent.$(L) maildist.$(L) maillist.$(L) mailhelp.$(L) \
! mailpatch.$(L) package.$(L) edusers.$(L)
all:: $(MPAGES)
Index: agent/test/Makefile.SH
*** agent/test/Makefile.SH.old Thu Sep 22 16:43:24 1994
--- agent/test/Makefile.SH Thu Sep 22 16:43:24 1994
***************
*** 1,4 ****
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL14]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
--- 1,4 ----
! : Makefile.SH generated from Jmake.tmpl and Jmakefile [jmake 3.0 PL31]
: $X-Id: Jmake.tmpl,v 3.0.1.1 1993/08/20 07:36:36 ram Exp ram $
case $CONFIG in
***************
*** 48,54 ****
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 2.9.1.1 92/08/02 16:14:36 ram Exp $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
--- 48,54 ----
########################################################################
# Start of Jmakefile
! # $X-Id: Jmakefile,v 3.0 1993/11/29 13:49:20 ram Exp ram $
#
# Copyright (c) 1990-1993, Raphael Manfredi
#
***************
*** 58,64 ****
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log$
all::
@echo "The following may take a while..."
--- 58,67 ----
# that same Artistic License; a copy of which may be found at the root
# of the source tree for mailagent 3.0.
#
! # $X-Log: Jmakefile,v $
! # Revision 3.0 1993/11/29 13:49:20 ram
! # Baseline for mailagent 3.0 netwide release.
! #
all::
@echo "The following may take a while..."
*** End of Patch 12 ***
exit 0 # Just in case...