home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.sbin / sendmail / aux / matchhdr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-19  |  3.5 KB  |  126 lines

  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, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 1. Redistributions of source code must retain the above copyright
  10.  *    notice, this list of conditions and the following disclaimer.
  11.  * 2. Redistributions in binary form must reproduce the above copyright
  12.  *    notice, this list of conditions and the following disclaimer in the
  13.  *    documentation and/or other materials provided with the distribution.
  14.  * 3. All advertising materials mentioning features or use of this software
  15.  *    must display the following acknowledgement:
  16.  *    This product includes software developed by the University of
  17.  *    California, Berkeley and its contributors.
  18.  * 4. Neither the name of the University nor the names of its contributors
  19.  *    may be used to endorse or promote products derived from this software
  20.  *    without specific prior written permission.
  21.  *
  22.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32.  * SUCH DAMAGE.
  33.  */
  34.  
  35. #ifndef lint
  36. char copyright[] =
  37. "@(#) Copyright (c) 1988 Regents of the University of California.\n\
  38.  All rights reserved.\n";
  39. #endif /* not lint */
  40.  
  41. #ifndef lint
  42. static char sccsid[] = "@(#)matchhdr.c    5.4 (Berkeley) 6/1/90";
  43. #endif /* not lint */
  44.  
  45. # include <stdio.h>
  46. # include <ctype.h>
  47. # include <useful.h>
  48.  
  49. SCCSID(@(#)matchhdr.c    5.4        6/1/90);
  50.  
  51. /*
  52. **  MATCHHDR -- Match header line
  53. **
  54. **    Matches a header line in arpanet format (case and white
  55. **    space is ignored).
  56. **
  57. **    This routine is used by arpa-mailer and sendmail.
  58. **
  59. **    Parameters:
  60. **        line -- the line to match against.
  61. **        pat -- the pattern to match against; must be in
  62. **            lower case.
  63. **
  64. **    Returns:
  65. **        address of the 'value' of the pattern (the beginning
  66. **            of the non-white string following the delim).
  67. **        NULL if none found.
  68. **
  69. **    Side Effects:
  70. **        none
  71. **
  72. **    Called By:
  73. **        maketemp
  74. **        sendmail [arpa.c]
  75. **
  76. **    Deficiencies:
  77. **        It doesn't handle folded lines.
  78. */
  79.  
  80. char *
  81. matchhdr(line, pat)
  82.     char *line;
  83.     char *pat;
  84. {
  85.     register char *p;
  86.     register char *q;
  87.  
  88.     for (q = pat, p = line; *q != '\0'; p++, q++)
  89.         if (lowercase(*p) != *q)
  90.             return (NULL);
  91.     while (isspace(*p))
  92.         p++;
  93.     if (*p != ':')
  94.         return (NULL);
  95.     while (isspace(*++p))
  96.         continue;
  97.     return (*p == '\0' ? NULL : p);
  98. }
  99. /*
  100. **  LOWERCASE -- Convert a character to lower case
  101. **
  102. **    If the argument is an upper case letter, it is converted
  103. **    to a lower case letter, otherwise it is passed through
  104. **    unchanged.
  105. **
  106. **    Parameters:
  107. **        c -- the character to check.
  108. **
  109. **    Returns:
  110. **        c converted to lower case.
  111. **
  112. **    Side Effects:
  113. **        none
  114. **
  115. **    Called By:
  116. **        matchhdr
  117. */
  118.  
  119. lowercase(c)
  120.     register char c;
  121. {
  122.     if (isupper(c))
  123.         c -= 'A' - 'a';
  124.     return (c);
  125. }
  126.