|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Eric P. Allman ! 3: * Copyright (c) 1988 Regents of the University of California. ! 4: * All rights reserved. ! 5: * ! 6: * Redistribution and use in source and binary forms are permitted provided ! 7: * that: (1) source distributions retain this entire copyright notice and ! 8: * comment, and (2) distributions including binaries display the following ! 9: * acknowledgement: ``This product includes software developed by the ! 10: * University of California, Berkeley and its contributors'' in the ! 11: * documentation or other materials provided with the distribution and in ! 12: * all advertising materials mentioning features or use of this software. ! 13: * Neither the name of the University nor the names of its contributors may ! 14: * be used to endorse or promote products derived from this software without ! 15: * specific prior written permission. ! 16: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 17: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 18: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 19: */ ! 20: ! 21: #ifndef lint ! 22: char copyright[] = ! 23: "@(#) Copyright (c) 1988 Regents of the University of California.\n\ ! 24: All rights reserved.\n"; ! 25: #endif /* not lint */ ! 26: ! 27: #ifndef lint ! 28: static char sccsid[] = "@(#)matchhdr.c 5.4 (Berkeley) 6/1/90"; ! 29: #endif /* not lint */ ! 30: ! 31: # include <stdio.h> ! 32: # include <ctype.h> ! 33: # include <useful.h> ! 34: ! 35: SCCSID(@(#)matchhdr.c 5.4 6/1/90); ! 36: ! 37: /* ! 38: ** MATCHHDR -- Match header line ! 39: ** ! 40: ** Matches a header line in arpanet format (case and white ! 41: ** space is ignored). ! 42: ** ! 43: ** This routine is used by arpa-mailer and sendmail. ! 44: ** ! 45: ** Parameters: ! 46: ** line -- the line to match against. ! 47: ** pat -- the pattern to match against; must be in ! 48: ** lower case. ! 49: ** ! 50: ** Returns: ! 51: ** address of the 'value' of the pattern (the beginning ! 52: ** of the non-white string following the delim). ! 53: ** NULL if none found. ! 54: ** ! 55: ** Side Effects: ! 56: ** none ! 57: ** ! 58: ** Called By: ! 59: ** maketemp ! 60: ** sendmail [arpa.c] ! 61: ** ! 62: ** Deficiencies: ! 63: ** It doesn't handle folded lines. ! 64: */ ! 65: ! 66: char * ! 67: matchhdr(line, pat) ! 68: char *line; ! 69: char *pat; ! 70: { ! 71: register char *p; ! 72: register char *q; ! 73: ! 74: for (q = pat, p = line; *q != '\0'; p++, q++) ! 75: if (lowercase(*p) != *q) ! 76: return (NULL); ! 77: while (isspace(*p)) ! 78: p++; ! 79: if (*p != ':') ! 80: return (NULL); ! 81: while (isspace(*++p)) ! 82: continue; ! 83: return (*p == '\0' ? NULL : p); ! 84: } ! 85: /* ! 86: ** LOWERCASE -- Convert a character to lower case ! 87: ** ! 88: ** If the argument is an upper case letter, it is converted ! 89: ** to a lower case letter, otherwise it is passed through ! 90: ** unchanged. ! 91: ** ! 92: ** Parameters: ! 93: ** c -- the character to check. ! 94: ** ! 95: ** Returns: ! 96: ** c converted to lower case. ! 97: ** ! 98: ** Side Effects: ! 99: ** none ! 100: ** ! 101: ** Called By: ! 102: ** matchhdr ! 103: */ ! 104: ! 105: lowercase(c) ! 106: register char c; ! 107: { ! 108: if (isupper(c)) ! 109: c -= 'A' - 'a'; ! 110: return (c); ! 111: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.