|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T u
Length: 3729 (0xe91) Types: TextFile Names: »utils.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦4fd8323b9⟧ »EurOpenD3/mail/elm2.3.tar.Z« └─⟦698c4f91f⟧ └─⟦this⟧ »filter/utils.c«
static char rcsid[] ="@(#)$Id: utils.c,v 4.1 90/04/28 22:42:03 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 ******************************************************************************* * Bug reports, patches, comments, suggestions should be sent to: * * Syd Weinstein - elm@DSI.COM * dsinc!elm * ******************************************************************************* * $Log: utils.c,v $ * Revision 4.1 90/04/28 22:42:03 syd * checkin of Elm 2.3 as of Release PL0 * * ******************************************************************************/ /** Utility routines for the filter program... **/ #include <stdio.h> #include <pwd.h> #include <ctype.h> #include <fcntl.h> #include "defs.h" #include "filter.h" leave(reason) char *reason; { if (outfd != NULL) fprintf(outfd,"filter (%s): LEAVE %s\n", username, reason); if (outfd != NULL) fclose(outfd); exit(1); } log(what) int what; { /** make an entry in the log files for the specified entry **/ FILE *fd; char filename[SLEN]; if (! show_only) { sprintf(filename, "%s/%s", home, filtersum); /* log action once! */ if ((fd = fopen(filename, "a")) == NULL) { if (outfd != NULL) fprintf(outfd, "filter (%s): Couldn't open log file %s\n", filename); fd = stdout; } fprintf(fd, "%d\n", rule_choosen); fclose(fd); } sprintf(filename, "%s/%s", home, filterlog); if (show_only) fd = stdout; else if ((fd = fopen(filename, "a")) == NULL) { if (outfd != NULL) fprintf(outfd, "filter (%s): Couldn't open log file %s\n", filename); fd = stdout; } #ifdef _IOFBF setvbuf(fd, NULL, _IOFBF, BUFSIZ); #endif if (strlen(from) + strlen(subject) > 60) fprintf(fd, "\nMail from %s\n\tabout %s\n", from, subject); else fprintf(fd, "\nMail from %s about %s\n", from, subject); if (rule_choosen != -1) if (rules[rule_choosen].condition->matchwhat == TO) fprintf(fd, "\t(addressed to %s)\n", to); switch (what) { case DELETE_MSG : fprintf(fd, "\tDELETED"); break; case SAVE : fprintf(fd, "\tSAVED in file \"%s\"", rules[rule_choosen].argument2); break; case SAVECC : fprintf(fd,"\tSAVED in file \"%s\" AND PUT in mailbox", rules[rule_choosen].argument2); break; case FORWARD : fprintf(fd, "\tFORWARDED to \"%s\"", rules[rule_choosen].argument2); break; case EXEC : fprintf(fd, "\tEXECUTED \"%s\"", rules[rule_choosen].argument2); break; case LEAVE : fprintf(fd, "\tPUT in mailbox"); break; } if (rule_choosen != -1) fprintf(fd, " by rule #%d\n", rule_choosen+1); else fprintf(fd, ": the default action\n"); fflush(fd); fclose(fd); } int contains(string, pattern) char *string, *pattern; { /** Returns TRUE iff pattern occurs IN IT'S ENTIRETY in buffer. **/ register int i = 0, j = 0; while (string[i] != '\0') { while (tolower(string[i++]) == tolower(pattern[j++])) if (pattern[j] == '\0') return(TRUE); i = i - j + 1; j = 0; } return(FALSE); } char *itoa(i, two_digit) int i, two_digit; { /** return 'i' as a null-terminated string. If two-digit use that size field explicitly! **/ static char value[10]; if (two_digit) sprintf(value, "%02d", i); else sprintf(value, "%d", i); return( (char *) value); } lowercase(string) char *string; { /** translate string into all lower case **/ register int i; for (i= strlen(string); --i >= 0; ) if (isupper(string[i])) string[i] = tolower(string[i]); }