taylor@hpldat.UUCP (Dave Taylor) (05/03/87)
This is Elm Patch Kit #7 of 8 and contains patches for the following:
hdrs/save_opts.h hdrs/elm.h hdrs/sysdefs.master hdrs/shortnames.h
hdrs/filter.h utils/answer.c utils/autoreply.c utils/from.c
utils/newalias.c utils/wnewmail.c
SPECIAL NOTE: the patches for 'utils/from.c' apply to the version previously
made available in this group *not* the one distributed in mod.sources
Please feed this file to 'patch'.
Index: hdrs/save_opts.h
***************
*** 45,46
#define WEEDOUT 37
--- 45,47 -----
#define WEEDOUT 37
+ #define ASK 38
***************
*** 46,48
! #define NUMBER_OF_SAVEABLE_OPTIONS WEEDOUT+1
--- 47,49 -----
! #define NUMBER_OF_SAVEABLE_OPTIONS ASK+1
***************
*** 65,67
{ "titles", -1L }, { "userlevel", -1L }, { "warnings", -1L },
! { "weed", -1L }, { "weedout", -1L }
};
--- 66,68 -----
{ "titles", -1L }, { "userlevel", -1L }, { "warnings", -1L },
! { "weed", -1L }, { "weedout", -1L }, { "ask", -1L }
};
Index: hdrs/elm.h
***************
*** 18,20
! static char copyright[] = { "@(#) (C) Copyright 1986, Dave Taylor" };
--- 18,21 -----
! static char copyright[] = {
! "@(#) (C) Copyright 1986, 1987, Dave Taylor" };
***************
*** 47,48
char backspace, /* the current backspace char */
kill_line; /* the current kill-line char */
--- 48,50 -----
char backspace, /* the current backspace char */
+ escape_char = TILDE, /* '~' or something else.. */
kill_line; /* the current kill-line char */
***************
*** 92,97
int keep_empty_files = 0; /* flag: leave empty mailbox files? */
!
! #ifdef UTS
! int isatube = 0; /* flag: are we on an IBM 3270? */
! #endif
--- 94,96 -----
int keep_empty_files = 0; /* flag: leave empty mailbox files? */
! int clear_pages = 0; /* flag: act like "page" (more -c)? */
Index: hdrs/sysdefs.master
***************
*** 148,150
uncomment the following lines and set them to reasonable values. See
! the configuration guide for more details....
**/
--- 148,152 -----
uncomment the following lines and set them to reasonable values. See
! the configuration guide for more details....(actually these are undoc-
! umented because they're fairly dangerous to use. Just ignore 'em and
! perhaps one day you'll find out what they do, ok?)
**/
***************
*** 164,165
/** are you stuck on a machine that has short names? If so, define the
--- 166,170 -----
+ /** How about the 'cuserid()' call? If not...well...you get the idea **/
+ /** #define NEED_CUSERID **/
+
/** are you stuck on a machine that has short names? If so, define the
***************
*** 169,173
- #define NOTES_HEADER "/***** "
- #define NOTES_FOOTER "/* ---------- */"
-
#ifdef BSD
--- 174,175 -----
#ifdef BSD
***************
*** 186,188
/** where to put the output of the elm -d command... (in home dir) **/
! #define DEBUG "ELM:debug.info"
#define OLDEBUG "ELM:debug.last"
--- 188,190 -----
/** where to put the output of the elm -d command... (in home dir) **/
! #define DEBUGFILE "ELM:debug.info"
#define OLDEBUG "ELM:debug.last"
***************
*** 207,209
! # define default_pager "builtin"
--- 209,212 -----
! # define default_shell "/bin/csh"
! # define default_pager "builtin+"
Index: hdrs/shortnames.h
***************
*** 5,7
! This file has no explicit copyright.
--- 5,7 -----
! Additions and all that are more recent, of course...
***************
*** 8,9
**/
--- 8,12 -----
**/
+
+ #define CleartoEOS Clear_EOS
+ #define CleartoEOLN Clear_EOLN
Index: hdrs/filter.h
***************
*** 14,16
! #define BEEP (audible? "\007" : "")
--- 14,16 -----
! #define BEEP (audible? "" : "")
***************
*** 22,23
/** some of the files we'll be using, where they are, and so on... **/
--- 22,27 -----
+ #define remove_return(s) { if (s[strlen(s)-1] == '\n') \
+ s[strlen(s)-1] = '\0'; \
+ }
+
/** some of the files we'll be using, where they are, and so on... **/
***************
*** 38,39
#define TO 1
--- 42,47 -----
+ #ifdef SUBJECT
+ # undef SUBJECT
+ #endif
+
#define TO 1
***************
*** 41,43
#define LINES 3
! #define CONTAINS 4
--- 49,53 -----
#define LINES 3
! #define SUBJECT 4
! #define CONTAINS 5
! #define ALWAYS 6
***************
*** 43,50
! #define DELETE 5
! #define SAVE 6
! #define SAVECC 7
! #define FORWARD 8
! #define LEAVE 9
! #define EXEC 10
--- 53,60 -----
! #define DELETE 7
! #define SAVE 8
! #define SAVECC 9
! #define FORWARD 10
! #define LEAVE 11
! #define EXEC 12
***************
*** 89,90
log_actions_only = FALSE, /* log actions | everything */
rule_choosen; /* which one we choose */
--- 99,101 -----
log_actions_only = FALSE, /* log actions | everything */
+ printing_rules = FALSE, /* are we just using '-r'? */
rule_choosen; /* which one we choose */
***************
*** 100,101
log_actions_only, /* log actions | everything */
rule_choosen; /* which one we choose */
--- 111,113 -----
log_actions_only, /* log actions | everything */
+ printing_rules, /* are we just using '-r'? */
rule_choosen; /* which one we choose */
Index: utils/answer.c
***************
*** 46,49
prompt: printf("\nMessage to: ");
! gets(user_name, SLEN);
! if (user_name == NULL)
goto prompt;
--- 46,48 -----
prompt: printf("\nMessage to: ");
! if (gets(user_name) == NULL || user_name[0] == '\0')
goto prompt;
***************
*** 169,171
lseek(user_data, user_hash_table[loc].byte, 0L);
! get_line(user_data, buffer, LONG_STRING);
if (buffer[0] == '!' && mailing)
--- 168,170 -----
lseek(user_data, user_hash_table[loc].byte, 0L);
! get_line(user_data, buffer);
if (buffer[0] == '!' && mailing)
Index: utils/autoreply.c
***************
*** 100,102
copied++;
! fprintf(tempfile, "%s %s %ld\n", user, filename, filesize);
}
--- 100,102 -----
copied++;
! fprintf(temp, "%s %s %ld\n", user, filename, filesize);
}
Index: utils/from.c
***************
*** 99,100
}
}
--- 99,101 -----
}
+ exit(0);
}
***************
*** 231,233
! if (chloc(from,'!') != -1 && chloc(from,'@') > 0)
for (p=from;*p != '@'; p++) ;
--- 232,234 -----
! if (chloc(from,'!') != -1 && chloc(from,'@') > 0) {
for (p=from;*p != '@'; p++) ;
***************
*** 234,235
*p = '\0';
#endif
--- 235,237 -----
*p = '\0';
+ }
#endif
Index: utils/newalias.c
***************
*** 11,13
If, however, it is invoked with no arguments, then
! it assumes that the user is updating the system alias
file and uses the defaults for everything.
--- 11,13 -----
If, however, it is invoked with no arguments, then
! it assumes that the user is updating the is_system alias
file and uses the defaults for everything.
***************
*** 29,31
#include <stdio.h>
! #include "defs.h" /* ELM system definitions */
--- 29,31 -----
#include <stdio.h>
! #include "defs.h" /* ELM is_system definitions */
***************
*** 43,44
struct alias_rec
--- 43,46 -----
+ #define whitespace(c) (c == ' ' || c == '\t')
+
struct alias_rec
***************
*** 49,51
! int hash_table_loaded=0; /* is system table actually loaded? */
--- 51,53 -----
! int hash_table_loaded=0; /* is is_system table actually loaded? */
***************
*** 53,55
int error= 0; /* if errors, don't save! */
! int system=0; /* system file updating? */
int count=0; /* how many aliases so far? */
--- 55,57 -----
int error= 0; /* if errors, don't save! */
! int is_system=0; /* is_system file updating? */
int count=0; /* how many aliases so far? */
***************
*** 75,78
if (owner == 0 && ! quiet) { /* being run by root! */
! printf("Would you like to update the system aliases? (y/n)");
! gets(buffer, 2);
if (buffer[0] == 'y' || buffer[0] == 'Y') {
--- 77,80 -----
if (owner == 0 && ! quiet) { /* being run by root! */
! printf("Would you like to update the is_system aliases? (y/n)");
! gets(buffer);
if (buffer[0] == 'y' || buffer[0] == 'Y') {
***************
*** 83,85
sprintf(dataname, "%s/%s", mailhome, alias_data);
! system++;
init_table(shash_table, MAX_SALIASES);
--- 85,87 -----
sprintf(dataname, "%s/%s", mailhome, alias_data);
! is_system++;
init_table(shash_table, MAX_SALIASES);
***************
*** 90,92
! if (! system) {
if (strcpy(home, getenv("HOME")) == NULL)
--- 92,94 -----
! if (! is_system) {
if (strcpy(home, getenv("HOME")) == NULL)
***************
*** 92,94
if (strcpy(home, getenv("HOME")) == NULL)
! exit(printf("Confused: No HOME variable in environment!\n"));
--- 94,96 -----
if (strcpy(home, getenv("HOME")) == NULL)
! exit(printf("I'm confused - no HOME variable in environment!\n"));
***************
*** 115,117
while (get_alias(in, buffer) != -1) {
! if (system)
put_alias(data, buffer, shash_table, MAX_SALIASES);
--- 117,119 -----
while (get_alias(in, buffer) != -1) {
! if (is_system)
put_alias(data, buffer, shash_table, MAX_SALIASES);
***************
*** 128,130
else {
! if (system)
write(hash, shash_table, sizeof shash_table);
--- 130,132 -----
else {
! if (is_system)
write(hash, shash_table, sizeof shash_table);
***************
*** 229,230
then just return! **/
int stat;
--- 231,233 -----
then just return! **/
+
int stat;
***************
*** 233,235
buff_loaded = 1;
! return;
}
--- 236,238 -----
buff_loaded = 1;
! return(0);
}
***************
*** 304,306
! if ( system ? count > MAX_SALIASES-35 : count > MAX_UALIASES-21) {
printf("** Too many aliases in file! **\n");
--- 307,309 -----
! if ( is_system ? count > MAX_SALIASES-35 : count > MAX_UALIASES-21) {
printf("** Too many aliases in file! **\n");
***************
*** 399,401
{
! /** read in the system hash table...to check for group aliases
from the user alias file (to ensure that there are no names
--- 402,404 -----
{
! /** read in the is_system hash table...to check for group aliases
from the user alias file (to ensure that there are no names
***************
*** 421,423
/** one by one make sure each name in the group is defined
! in either the system alias file or the user alias file.
This search is linearly dependent, so all group aliases
--- 424,426 -----
/** one by one make sure each name in the group is defined
! in either the is_system alias file or the user alias file.
This search is linearly dependent, so all group aliases
***************
*** 445,448
{
! /** find name in either hash table...use 'system' variable to
! determine if we should look in both or just system.... **/
--- 448,451 -----
{
! /** find name in either hash table...use 'is_system' variable to
! determine if we should look in both or just is_system.... **/
***************
*** 456,459
! /** system alias table... **/
! if (hash_table_loaded || system) {
loc = hash_it(name, MAX_SALIASES);
--- 459,462 -----
! /** is_system alias table... **/
! if (hash_table_loaded || is_system) {
loc = hash_it(name, MAX_SALIASES);
***************
*** 468,470
! if (! system) { /* okay! Let's check the user alias file! */
loc = hash_it(name, MAX_UALIASES);
--- 471,473 -----
! if (! is_system) { /* okay! Let's check the user alias file! */
loc = hash_it(name, MAX_UALIASES);
***************
*** 498,500
! while (buffer[first] == ' ') first++;
--- 501,503 -----
! while (whitespace(buffer[first])) first++;
***************
*** 500,502
! /** now let's backup the 'last' value until we hit a non-space **/
--- 503,505 -----
! /** now let's backup the 'last' value until we hit a non-whitespace **/
***************
*** 503,505
last -= 2; /* starts at ch AFTER colon.. */
! while (buffer[last] == ' ') last--;
--- 506,508 -----
last -= 2; /* starts at ch AFTER colon.. */
! while (whitespace(buffer[last])) last--;
Index: utils/wnewmail.c
***************
*** 13,18
- #ifdef AUTO_BACKGROUND
- #include <signal.h> /* background jobs ignore some signals... */
- #endif
-
static char ident[] = { WHAT_STRING };
--- 13,14 -----
static char ident[] = { WHAT_STRING };
***************
*** 51,61
- #ifdef AUTO_BACKGROUND
- if (fork()) /* automatically puts this task in background! */
- exit(0);
-
- signal(SIGINT, SIG_IGN);
- signal(SIGQUIT, SIG_IGN);
- signal(SIGHUP, SIG_DFL); /* so we exit when logged out */
- #endif
-
size = bytes(filename);
--- 47,48 -----
size = bytes(filename);
***************
*** 68,73
- #ifndef AUTO_BACKGROUND /* won't work if we're nested this deep! */
- if (getppid() == 1) /* we've lost our shell! */
- exit();
- #endif
if (! isatty(1)) /* we're not talking to the screen any more */
--- 55,56 -----
if (! isatty(1)) /* we're not talking to the screen any more */
End of patch kit #7