syd@dsinc.DSI.COM (Syd Weinstein) (08/16/90)
Summary: This is an official patch for elm 2.3 system. Please apply it. Priority: LOW The newly introduced function 'stricmp' has a name conflict with a libc function under SunOS 4.1. Changed name to istrcmp. From: scs@lokkur.dexter.mi.us (Steve Simmons) Change resync not to delete empty files From: Syd the user's (unmodified) limit criteria was being compared w/ the lower-case version of the header contents. From: dwolfe@earth.sps.mot.com (Dave Wolfe) deal with several of the problems that have come up trying to use the MMDF submit program directly rather than going through the sendmail stub included with MMDF. This should take care of the problem of not being able to send mail to usernames beginning with "i" and with the 'No valid author specified' problem. From: jac%brahms.tinton.ccur.com@RELAY.CS.NET Fix to use time instead of bytes for changes to file and to process each entry on delete properly From: Denis Lambot <d241s016!lde@swn.siemens.be> Fix: From rn, say "| patch -p -N -d DIR", where DIR is your elm 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: sh Configure -d make make install 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 our: archive server. Syd Weinstein elm@DSI.COM The patches are available from the dsinc archive server Send the following message to archive-server@DSI.COM for a list of available patches: Subject: patch list send index elm Index: hdrs/patchlevel.h Prereq: 5 *** ../elm2.3/hdrs/patchlevel.h Thu Jul 12 23:35:15 1990 --- hdrs/patchlevel.h Thu Jul 12 23:38:11 1990 *************** *** 1 **** ! #define PATCHLEVEL 5 --- 1 ---- ! #define PATCHLEVEL 6 Index: Configure Prereq: 4.1.1.8 *** ../elm2.3/Configure Thu Jul 12 23:35:17 1990 --- Configure Wed Aug 15 22:42:35 1990 *************** *** 8,14 **** # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # ! # $Header: /files/home/users/syd/elm.rel/RCS/Configure,v 4.1.1.8 90/07/12 23:24:37 syd Exp $ # # Yes, you may rip this off to use in other distribution packages. # (Note: this Configure script was generated automatically. Rather than --- 8,14 ---- # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # ! # $Header: /files/home/users/syd/elm.rel/RCS/Configure,v 4.1.1.9 90/08/15 22:42:11 syd Exp $ # # Yes, you may rip this off to use in other distribution packages. # (Note: this Configure script was generated automatically. Rather than *************** *** 262,268 **** attrlist="$attrlist i186 __m88k__ m88k DGUX __DGUX__" d_newshome="/usr/NeWS" defvoidused=7 ! pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb /usr/convex /usr/mmdf/bin ${BSDBASE-/bsd}/usr/ucb ${BSDBASE-/bsd}/bin ${BSDBASE-/bsd}/usr/bin" : check for out bin directory if test ! -d ../bin; then --- 262,270 ---- attrlist="$attrlist i186 __m88k__ m88k DGUX __DGUX__" d_newshome="/usr/NeWS" defvoidused=7 ! pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/5bin /vol/local/bin /etc" ! pth="$pth /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb" ! pth="$pth /usr/convex /usr/mmdf/bin /usr/mmdf/lib ${BSDBASE-/bsd}/usr/ucb ${BSDBASE-/bsd}/bin ${BSDBASE-/bsd}/usr/bin" : check for out bin directory if test ! -d ../bin; then *************** *** 3248,3254 **** elif $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have void (*signal())() instead of int." d_voidsig="$define" ! elif $contains 'extern.*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have int (*signal())() instead of void." d_voidsig="$undef" elif $test -n "$d_voidsig"; then --- 3250,3256 ---- elif $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have void (*signal())() instead of int." d_voidsig="$define" ! elif $contains 'extern[ ]*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have int (*signal())() instead of void." d_voidsig="$undef" elif $test -n "$d_voidsig"; then *************** *** 3558,3567 **** mailgrp=`$expr "$mailgrp" : "[ld][rwxstS-]*[ 0123456789]*\(.*\)"` : now mailgrp is either user group size mon day time/year name : or group size mon day time/year name ! try1=`$expr "$mailgrp" : "[A-z0-9]* *\([A-z0-9]*\).*"` try1a=`$expr "$try1" : "\([0-9]*\).*"` if $test "$try1" = "$try1a"; then ! mailgrp=`$expr "$mailgrp" : "\([A-z0-9]*\).*"` else mailgrp="$try1" fi --- 3560,3569 ---- mailgrp=`$expr "$mailgrp" : "[ld][rwxstS-]*[ 0123456789]*\(.*\)"` : now mailgrp is either user group size mon day time/year name : or group size mon day time/year name ! try1=`$expr "$mailgrp" : "[A-Za-z_0-9]* *\([A-Za-z_0-9]*\).*"` try1a=`$expr "$try1" : "\([0-9]*\).*"` if $test "$try1" = "$try1a"; then ! mailgrp=`$expr "$mailgrp" : "\([A-Za-z_0-9]*\).*"` else mailgrp="$try1" fi Index: Patchlist *** ../elm2.3/Patchlist Tue Jun 26 21:09:00 1990 --- Patchlist Wed Aug 15 22:44:50 1990 *************** *** 1,3 **** --- 1,50 ---- + Elm 2.3 Patch 6 - Misc bug fixes + Wed Aug 15 22:43:46 EDT 1990 (Creation date, not posting date) + The newly introduced function 'stricmp' has a name conflict with a libc + function under SunOS 4.1. Changed name to istrcmp. + From: scs@lokkur.dexter.mi.us (Steve Simmons) + + Change resync not to delete empty files + From: Syd + + the user's (unmodified) limit criteria was being compared w/ + the lower-case version of the header contents. + From: dwolfe@earth.sps.mot.com (Dave Wolfe) + + deal with several of the problems that have come up trying to use the MMDF + submit program directly rather than going through the sendmail stub + included with MMDF. This should take care of the problem of not being + able to send mail to usernames beginning with "i" and with the + 'No valid author specified' problem. + From: jac%brahms.tinton.ccur.com@RELAY.CS.NET + + Fix to use time instead of bytes for changes to file and to process + each entry on delete properly + From: Denis Lambot <d241s016!lde@swn.siemens.be> + + Elm 2.3 Patch 5 - Misc bug fixes + Thu Jul 12 23:37:22 EDT 1990 (Creation date, not posting date) + Be sure that output characters are not negative integers. + From: tct!chip@uunet.UU.NET (Chip Salzenberg) + + patch fixes some minor typing mistakes in error messages + From: hz247bi@duc220.uni-duisburg.de (Bieniek) + + Fix cursor getting lost on some system calls by forcing + an absolute move. + From: Syd, reported by Douglas Lamb + + When Elm is compiled with the NO_XHEADER symbol defined, it failed + to put a blank line between the message header and message body. + From: mca@medicus.medicus.com (Mark Adams) + + Fix MMDF case, where MSG_SEPERATOR has newline, buffer check + didnt, thus it didnt detect the MSG_SEPERATOR. + From: jbwaters@bsu-cs.bsu.edu (J. Brian Waters) + + Make domain name checking case independent + From: Syd, reported by Steven Baur + Elm 2.3 Patch 4 - 8 Bit Changes Tue Jun 26 20:45:13 EDT 1990 (Creation date, not posting date) Fix encoding to encode lines that start with [ and are not Index: src/aliaslib.c Prereq: 4.1.1.3 *** ../elm2.3/src/aliaslib.c Thu Jul 12 23:35:18 1990 --- src/aliaslib.c Thu Aug 2 21:57:55 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: aliaslib.c,v 4.1.1.3 90/07/12 23:18:17 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.3 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: aliaslib.c,v 4.1.1.4 90/08/02 21:57:53 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.4 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: aliaslib.c,v $ + * Revision 4.1.1.4 90/08/02 21:57:53 syd + * The newly introduced function 'stricmp' has a name conflict with a libc + * function under SunOS 4.1. Changed name to istrcmp. + * From: scs@lokkur.dexter.mi.us (Steve Simmons) + * * Revision 4.1.1.3 90/07/12 23:18:17 syd * Make domain name checking case independent * From: Syd, reported by Steven Baur *************** *** 286,292 **** loc = hash_it(word, size); ! while (stricmp(word, table[loc].name) != 0) { if (table[loc].name[0] == '\0') return(-1); loc = (loc + 1) % size; --- 291,297 ---- loc = hash_it(word, size); ! while (istrcmp(word, table[loc].name) != 0) { if (table[loc].name[0] == '\0') return(-1); loc = (loc + 1) % size; *************** *** 296,302 **** } int ! stricmp(s1,s2) register char *s1, *s2; { /* case insensitive comparison */ --- 301,307 ---- } int ! istrcmp(s1,s2) register char *s1, *s2; { /* case insensitive comparison */ Index: src/init.c Prereq: 4.1.1.1 *** ../elm2.3/src/init.c Thu Jul 12 23:35:21 1990 --- src/init.c Thu Aug 2 21:57:58 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: init.c,v 4.1.1.1 90/07/12 23:19:17 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.1 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: init.c,v 4.1.1.2 90/08/02 21:57:56 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.2 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: init.c,v $ + * Revision 4.1.1.2 90/08/02 21:57:56 syd + * The newly introduced function 'stricmp' has a name conflict with a libc + * function under SunOS 4.1. Changed name to istrcmp. + * From: scs@lokkur.dexter.mi.us (Steve Simmons) + * * Revision 4.1.1.1 90/07/12 23:19:17 syd * Make domain name checking case independent * From: Syd, reported by Steven Baur *************** *** 267,273 **** hostlen = strlen(hostname); domlen = strlen(hostdomain); if (hostlen >= domlen) { ! if (stricmp(&hostname[hostlen - domlen], hostdomain) == 0) strcpy(hostfullname, hostname); else { strcpy(hostfullname, hostname); --- 272,278 ---- hostlen = strlen(hostname); domlen = strlen(hostdomain); if (hostlen >= domlen) { ! if (istrcmp(&hostname[hostlen - domlen], hostdomain) == 0) strcpy(hostfullname, hostname); else { strcpy(hostfullname, hostname); *************** *** 274,280 **** strcat(hostfullname, hostdomain); } } else { ! if (stricmp(hostname, hostdomain + 1) == 0) strcpy(hostfullname, hostname); else { strcpy(hostfullname, hostname); --- 279,285 ---- strcat(hostfullname, hostdomain); } } else { ! if (istrcmp(hostname, hostdomain + 1) == 0) strcpy(hostfullname, hostname); else { strcpy(hostfullname, hostname); Index: src/leavembox.c Prereq: 4.1.1.3 *** ../elm2.3/src/leavembox.c Fri Jun 22 00:00:02 1990 --- src/leavembox.c Wed Aug 15 21:00:23 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: leavembox.c,v 4.1.1.3 90/06/21 22:51:52 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.3 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: leavembox.c,v 4.1.1.4 90/08/15 21:00:07 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.4 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: leavembox.c,v $ + * Revision 4.1.1.4 90/08/15 21:00:07 syd + * Change elm to not delete empty folders on a resync + * From: Syd + * * Revision 4.1.1.3 90/06/21 22:51:52 syd * Add time.h to includes as some OSs include needed substructure only * from time.h *************** *** 452,458 **** } dprint(2, (debugfile, "\n\n")); ! } else if (folder_type == NON_SPOOL && !keep_empty_files) { /* i.e. if no messages were to be kept and this is not a spool * folder and we aren't keeping empty non-spool folders, --- 456,462 ---- } dprint(2, (debugfile, "\n\n")); ! } else if (folder_type == NON_SPOOL && !keep_empty_files && !resyncing) { /* i.e. if no messages were to be kept and this is not a spool * folder and we aren't keeping empty non-spool folders, *************** *** 557,563 **** /* link or copy complete - remove temp keep file */ unlink(temp_keep_file); ! } else if(folder_type == SPOOL || keep_empty_files) { /* if this is an empty spool file, or if this is an empty non spool * file and we keep empty non spool files (we always keep empty --- 561,567 ---- /* link or copy complete - remove temp keep file */ unlink(temp_keep_file); ! } else if(folder_type == SPOOL || keep_empty_files || resyncing) { /* if this is an empty spool file, or if this is an empty non spool * file and we keep empty non spool files (we always keep empty Index: src/mailmsg2.c Prereq: 4.1.1.6 *** ../elm2.3/src/mailmsg2.c Thu Jul 12 23:35:22 1990 --- src/mailmsg2.c Wed Aug 15 22:02:41 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: mailmsg2.c,v 4.1.1.6 90/07/12 23:19:20 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.6 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: mailmsg2.c,v 4.1.1.7 90/08/15 22:02:36 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.7 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,27 ---- * ******************************************************************************* * $Log: mailmsg2.c,v $ + * Revision 4.1.1.7 90/08/15 22:02:36 syd + * deal with several of the problems that have come up trying to use the MMDF + * submit program directly rather than going through the sendmail stub + * included with MMDF. This should take care of the problem of not being + * able to send mail to usernames beginning with "i" and with the + * 'No valid author specified' problem. + * From: jac%brahms.tinton.ccur.com@RELAY.CS.NET + * * Revision 4.1.1.6 90/07/12 23:19:20 syd * Make domain name checking case independent * From: Syd, reported by Steven Baur *************** *** 370,377 **** else mailerflags[0] ='\0'; ! quote_args(very_long_buffer, strip_parens(strip_commas(expanded_to))); ! strcpy(expanded_to, very_long_buffer); sprintf(very_long_buffer,"( (%s %s %s ; %s %s) & ) < %s", mailer, mailerflags, expanded_to, --- 378,389 ---- else mailerflags[0] ='\0'; ! if (strcmp(submitmail, mailer) == 0) ! strcpy(expanded_to, " "); ! else { ! quote_args(very_long_buffer, strip_parens(strip_commas(expanded_to))); ! strcpy(expanded_to, very_long_buffer); ! } sprintf(very_long_buffer,"( (%s %s %s ; %s %s) & ) < %s", mailer, mailerflags, expanded_to, *************** *** 673,678 **** --- 685,693 ---- char buffer[SLEN]; int is_hidden_user; /* someone we should know about? */ #endif + #ifdef MMDF + int is_submit_mailer; /* using submit means change From: */ + #endif /* MMDF */ char *get_arpa_date(); *************** *** 738,758 **** fprintf(filedesc,"Date: %s\n", get_arpa_date()); #ifndef DONT_ADD_FROM # ifdef SITE_HIDING if (is_hidden_user) fprintf(filedesc,"From: %s <%s!%s!%s>\n", full_username, hostname, HIDDEN_SITE_NAME, username); else # else # ifdef INTERNET # ifdef USE_DOMAIN ! fprintf(filedesc,"From: %s <%s@%s>\n", full_username, username, hostfullname); # else fprintf(filedesc,"From: %s <%s@%s>\n", full_username, username, hostname); # endif # else fprintf(filedesc,"From: %s <%s!%s>\n", full_username, hostname, username); # endif --- 753,798 ---- fprintf(filedesc,"Date: %s\n", get_arpa_date()); #ifndef DONT_ADD_FROM + #ifdef MMDF + is_submit_mailer = (strcmp(submitmail,mailer) == 0); + #endif /* MMDF */ # ifdef SITE_HIDING + # ifdef MMDF + if (is_submit_mailer) + fprintf(filedesc,"From: %s <%s>\n", full_username, username); + else + # endif /* MMDF */ if (is_hidden_user) fprintf(filedesc,"From: %s <%s!%s!%s>\n", full_username, hostname, HIDDEN_SITE_NAME, username); else + fprintf(filedesc,"From: %s <%s!%s>\n", full_username, + hostname, username); # else # ifdef INTERNET # ifdef USE_DOMAIN ! # ifdef MMDF ! if (is_submit_mailer) ! fprintf(filedesc,"From: %s <%s>\n", full_username, username); ! else ! # endif /* MMDF */ ! fprintf(filedesc,"From: %s <%s@%s>\n", full_username, username, hostfullname); # else + # ifdef MMDF + if (is_submit_mailer) + fprintf(filedesc,"From: %s <%s>\n", full_username, username); + else + # endif /* MMDF */ fprintf(filedesc,"From: %s <%s@%s>\n", full_username, username, hostname); # endif # else + # ifdef MMDF + if (is_submit_mailer) + fprintf(filedesc,"From: %s <%s>\n", full_username, username); + else + # endif /* MMDF */ fprintf(filedesc,"From: %s <%s!%s>\n", full_username, hostname, username); # endif Index: src/strings.c Prereq: 4.1.1.2 *** ../elm2.3/src/strings.c Fri Jun 22 00:00:05 1990 --- src/strings.c Wed Aug 15 21:48:09 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: strings.c,v 4.1.1.2 90/06/21 22:45:06 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.2 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: strings.c,v 4.1.1.3 90/08/15 21:48:07 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.3 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: strings.c,v $ + * Revision 4.1.1.3 90/08/15 21:48:07 syd + * the user's (unmodified) limit criteria was being compared w/ + * the lower-case version of the header contents. + * From: dwolfe@earth.sps.mot.com (Dave Wolfe) + * * Revision 4.1.1.2 90/06/21 22:45:06 syd * Make display not show To user if user is also sender * From: Marius Olafsson *************** *** 364,372 **** for (; *buffer && ! whitespace(*buffer); buffer++, first++) if (islower(*buffer)) - *first = tolower(*buffer); - else *first = *buffer; *first = '\0'; --- 369,377 ---- for (; *buffer && ! whitespace(*buffer); buffer++, first++) if (islower(*buffer)) *first = *buffer; + else + *first = tolower(*buffer); *first = '\0'; *************** *** 374,382 **** for (; *buffer; buffer++, rest++) if (islower(*buffer)) - *rest = tolower(*buffer); - else *rest = *buffer; *rest = '\0'; --- 379,387 ---- for (; *buffer; buffer++, rest++) if (islower(*buffer)) *rest = *buffer; + else + *rest = tolower(*buffer); *rest = '\0'; Index: utils/arepdaem.c Prereq: 4.1 *** ../elm2.3/utils/arepdaem.c Sat Apr 28 22:44:34 1990 --- utils/arepdaem.c Wed Aug 15 22:50:27 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: arepdaem.c,v 4.1 90/04/28 22:44:33 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: arepdaem.c,v 4.1.1.2 90/08/15 22:50:14 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.2 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,28 ---- * ******************************************************************************* * $Log: arepdaem.c,v $ + * Revision 4.1.1.2 90/08/15 22:50:14 syd + * Fix last size to time call + * From: Syd + * + * Revision 4.1.1.1 90/08/15 22:33:54 syd + * Fix to use time instead of bytes for changes to file and to process + * each entry on delete properly + * From: Denis Lambot <d241s016!lde@swn.siemens.be> + * * Revision 4.1 90/04/28 22:44:33 syd * checkin of Elm 2.3 as of Release PL0 * *************** *** 93,104 **** } reply_table[MAX_PEOPLE]; FILE *logfd; /* logfile (log action) */ ! long autoreply_size = 0L; /* size of autoreply file */ int active = 0; /* # of people 'enrolled' */ FILE *open_logfile(); /* forward declaration */ long bytes(); /* ditto */ #ifdef VOIDSIG void term_signal(); --- 102,114 ---- } reply_table[MAX_PEOPLE]; FILE *logfd; /* logfile (log action) */ ! time_t autoreply_time = 0L; /* modif date of autoreply file */ int active = 0; /* # of people 'enrolled' */ FILE *open_logfile(); /* forward declaration */ long bytes(); /* ditto */ + time_t ModTime(); /* ditto */ #ifdef VOIDSIG void term_signal(); *************** *** 110,115 **** --- 120,126 ---- { long size; int person, data_changed; + time_t time; if (fork()) exit(0); *************** *** 133,141 **** /* 1. check to see if autoreply table has changed.. */ ! if ((size = bytes(autoreply_file)) != autoreply_size) { read_autoreply_file(); ! autoreply_size = size; } /* 2. now for each active person... */ --- 144,152 ---- /* 1. check to see if autoreply table has changed.. */ ! if ((time = ModTime(autoreply_file)) != autoreply_time) { read_autoreply_file(); ! autoreply_time = time; } /* 2. now for each active person... */ *************** *** 169,175 **** int read_autoreply_file() { ! /** We're here because the autoreply file has changed size!! It could either be because someone has been added or because someone has been removed...since the list will always be in order (nice, eh?) we should have a pretty easy time of it... --- 180,186 ---- int read_autoreply_file() { ! /** We're here because the autoreply file has changed!! It could either be because someone has been added or because someone has been removed...since the list will always be in order (nice, eh?) we should have a pretty easy time of it... *************** *** 217,226 **** /** now check to see if anyone has been removed... **/ ! for (person = 0; person < active; person++) ! if (reply_table[person].in_list == 0) { ! log("removing %s from the active list", ! reply_table[person].username); strcpy(reply_table[person].username, reply_table[active-1].username); strcpy(reply_table[person].mailfile, --- 228,241 ---- /** now check to see if anyone has been removed... **/ ! person = 0; ! while (person < active) ! if (reply_table[person].in_list) { ! person++; ! } ! else { ! log("removing %s from the active list", ! reply_table[person].username); strcpy(reply_table[person].username, reply_table[active-1].username); strcpy(reply_table[person].mailfile, *************** *** 253,259 **** fclose(file); /* printf("updated autoreply file\n"); */ ! autoreply_size = bytes(autoreply_file); } int --- 268,274 ---- fclose(file); /* printf("updated autoreply file\n"); */ ! autoreply_time = ModTime(autoreply_file); } int *************** *** 462,467 **** --- 477,504 ---- ok = 0; return(ok ? buffer.st_size : 0); + } + + time_t + ModTime(name) + char *name; + { + /** return the modification time in the specified file. + This is to check to see if autoreply has changed.... **/ + + int ok = 1; + extern int errno; /* system error number! */ + struct stat buffer; + + if (stat(name, &buffer) != 0) + if (errno != 2) { + unlock(); + exit(fprintf(stderr,"Error %d attempting fstat on %s", errno, name)); + } + else + ok = 0; + + return(ok ? buffer.st_mtime : (time_t) 0); } mail(to, subject, filename, person) Index: utils/newalias.c Prereq: 4.1.1.1 *** ../elm2.3/utils/newalias.c Tue Jun 5 22:02:39 1990 --- utils/newalias.c Thu Aug 2 21:58:01 1990 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: newalias.c,v 4.1.1.1 90/06/05 21:11:20 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.1 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: newalias.c,v 4.1.1.2 90/08/02 21:57:58 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 4.1.1.2 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: newalias.c,v $ + * Revision 4.1.1.2 90/08/02 21:57:58 syd + * The newly introduced function 'stricmp' has a name conflict with a libc + * function under SunOS 4.1. Changed name to istrcmp. + * From: scs@lokkur.dexter.mi.us (Steve Simmons) + * * Revision 4.1.1.1 90/06/05 21:11:20 syd * alias command in ELM2.3 fails because of the wrong sized aliases.hash * newalias did not truncate existing file (aliases.hash) *************** *** 404,410 **** loc = hash_it(word, size); ! while (table[loc].name[0] != '\0' && stricmp(table[loc].name,word) != 0) loc = (loc + 1) % size; if (table[loc].name[0] == '\0') { --- 409,415 ---- loc = hash_it(word, size); ! while (table[loc].name[0] != '\0' && istrcmp(table[loc].name,word) != 0) loc = (loc + 1) % size; if (table[loc].name[0] == '\0') { *************** *** 417,423 **** } int ! stricmp(s1,s2) register char *s1, *s2; { /* case insensitive comparison */ --- 422,428 ---- } int ! istrcmp(s1,s2) register char *s1, *s2; { /* case insensitive comparison */ *************** *** 530,540 **** if (hash_table_loaded || is_system) { loc = hash_it(name, MAX_SALIASES); ! while (stricmp(name, shash_table[loc].name) != 0 && shash_table[loc].name[0] != '\0') loc = (loc + 1) % MAX_SALIASES; ! if (stricmp(name, shash_table[loc].name) == 0) return(1); /* found it! */ } --- 535,545 ---- if (hash_table_loaded || is_system) { loc = hash_it(name, MAX_SALIASES); ! while (istrcmp(name, shash_table[loc].name) != 0 && shash_table[loc].name[0] != '\0') loc = (loc + 1) % MAX_SALIASES; ! if (istrcmp(name, shash_table[loc].name) == 0) return(1); /* found it! */ } *************** *** 541,551 **** if (! is_system) { /* okay! Let's check the user alias file! */ loc = hash_it(name, MAX_UALIASES); ! while (stricmp(name, uhash_table[loc].name) != 0 && uhash_table[loc].name[0] != '\0') loc = (loc + 1) % MAX_UALIASES; ! if (stricmp(name, uhash_table[loc].name) == 0) return(1); /* found it! */ } --- 546,556 ---- if (! is_system) { /* okay! Let's check the user alias file! */ loc = hash_it(name, MAX_UALIASES); ! while (istrcmp(name, uhash_table[loc].name) != 0 && uhash_table[loc].name[0] != '\0') loc = (loc + 1) % MAX_UALIASES; ! if (istrcmp(name, uhash_table[loc].name) == 0) return(1); /* found it! */ } -- ===================================================================== Sydney S. Weinstein, CDP, CCP Elm Coordinator Datacomp Systems, Inc. Voice: (215) 947-9900 syd@DSI.COM or dsinc!syd FAX: (215) 938-0235