|
|
1.1 root 1: # include <stdio.h>
2: # include <ctype.h>
3: # include "useful.h"
4:
5: SCCSID(@(#)matchhdr.c 4.1 7/25/83);
6:
7: /*
8: ** MATCHHDR -- Match header line
9: **
10: ** Matches a header line in arpanet format (case and white
11: ** space is ignored).
12: **
13: ** This routine is used by arpa-mailer and sendmail.
14: **
15: ** Parameters:
16: ** line -- the line to match against.
17: ** pat -- the pattern to match against; must be in
18: ** lower case.
19: **
20: ** Returns:
21: ** address of the 'value' of the pattern (the beginning
22: ** of the non-white string following the delim).
23: ** NULL if none found.
24: **
25: ** Side Effects:
26: ** none
27: **
28: ** Called By:
29: ** maketemp
30: ** sendmail [arpa.c]
31: **
32: ** Deficiencies:
33: ** It doesn't handle folded lines.
34: */
35:
36: char *
37: matchhdr(line, pat)
38: char *line;
39: char *pat;
40: {
41: register char *p;
42: register char *q;
43:
44: for (q = pat, p = line; *q != '\0'; p++, q++)
45: if (lowercase(*p) != *q)
46: return (NULL);
47: while (isspace(*p))
48: p++;
49: if (*p != ':')
50: return (NULL);
51: while (isspace(*++p))
52: continue;
53: return (*p == '\0' ? NULL : p);
54: }
55: /*
56: ** LOWERCASE -- Convert a character to lower case
57: **
58: ** If the argument is an upper case letter, it is converted
59: ** to a lower case letter, otherwise it is passed through
60: ** unchanged.
61: **
62: ** Parameters:
63: ** c -- the character to check.
64: **
65: ** Returns:
66: ** c converted to lower case.
67: **
68: ** Side Effects:
69: ** none
70: **
71: ** Called By:
72: ** matchhdr
73: */
74:
75: lowercase(c)
76: register char c;
77: {
78: if (isupper(c))
79: c -= 'A' - 'a';
80: return (c);
81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.