1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
23 /* All Rights Reserved */
24
25
26 #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1. */
27 #include "mail.h"
28 /*
29 * isheader(lp, ctf) - check if lp is header line and return type
30 * lp -> pointer to line
31 * ctfp -> continuation flag (should be FALSE the first time
32 * isheader() is called on a message. isheader() sets
33 * it for the remaining calls to that message)
34 * returns
35 * FALSE -> not header line
36 * H_* -> type of header line found.
37 */
38 int
isheader(lp,ctfp)39 isheader(lp, ctfp)
40 char *lp;
41 int *ctfp;
42 {
43 register char *p, *q;
44 register int i;
45
46 p = lp;
47 while((*p) && (*p != '\n') && (isspace(*p))) {
48 p++;
49 }
50 if((*p == NULL) || (*p == '\n')) {
51 /* blank line */
52 return (FALSE);
53 }
54
55 if ((*ctfp) && ((*lp == ' ') || (*lp == '\t'))) {
56 return(H_CONT);
57 }
58
59 *ctfp = FALSE;
60 for (i = 1; i < H_CONT; i++) {
61 if (!isit(lp, i)) {
62 continue;
63 }
64 if ((i == H_FROM) || (i == H_FROM1)) {
65 /*
66 * Should NEVER get 'From ' or '>From ' line on stdin
67 * if invoked as mail (rather than rmail) since
68 * 'From ' and/or '>From ' lines are generated by
69 * program itself. Therefore, if it DOES match and
70 * ismail == TRUE, it must be part of the content.
71 */
72 if (sending && ismail && !deliverflag) {
73 return (FALSE);
74 }
75 }
76 *ctfp = TRUE;
77 return (i);
78 }
79 /*
80 * Check if name: value pair
81 */
82 if ((p = strpbrk(lp, ":")) != NULL ) {
83 for(q = lp; q < p; q++) {
84 if ((*q == ' ') || (!isprint(*q))) {
85 return(FALSE);
86 }
87 }
88 *ctfp = TRUE;
89 return(H_NAMEVALUE);
90 }
91 return(FALSE);
92 }
93