masqmail-0.2

annotate src/libident/support.c @ 3:8c55886cacd8

man pages will be maintained in troff now
author meillo@marmaro.de
date Fri, 26 Sep 2008 21:40:10 +0200
parents
children 26e34ae9a3e3
rev   line source
meillo@0 1 /*
meillo@0 2 ** support.c
meillo@0 3 **
meillo@0 4 ** Author: Pr Emanuelsson <pell@lysator.liu.se>
meillo@0 5 ** Hacked by: Peter Eriksson <pen@lysator.liu.se>
meillo@0 6 */
meillo@0 7 #include <stdio.h>
meillo@0 8 #include <ctype.h>
meillo@0 9
meillo@0 10 #ifdef HAVE_ANSIHEADERS
meillo@0 11 # include <stdlib.h>
meillo@0 12 # include <string.h>
meillo@0 13 #else
meillo@0 14 # define strchr(str, c) index(str, c)
meillo@0 15 #endif
meillo@0 16
meillo@0 17 #define IN_LIBIDENT_SRC
meillo@0 18 #include "ident.h"
meillo@0 19
meillo@0 20
meillo@0 21 char *id_strdup __P1(char *, str)
meillo@0 22 {
meillo@0 23 char *cp;
meillo@0 24
meillo@0 25 cp = (char *) malloc(strlen(str)+1);
meillo@0 26 if (cp == NULL)
meillo@0 27 {
meillo@0 28 #ifdef DEBUG
meillo@0 29 perror("libident: malloc");
meillo@0 30 #endif
meillo@0 31 return NULL;
meillo@0 32 }
meillo@0 33
meillo@0 34 strcpy(cp, str);
meillo@0 35
meillo@0 36 return cp;
meillo@0 37 }
meillo@0 38
meillo@0 39
meillo@0 40 char *id_strtok __P3(char *, cp,
meillo@0 41 char *, cs,
meillo@0 42 char *, dc)
meillo@0 43 {
meillo@0 44 static char *bp = 0;
meillo@0 45
meillo@0 46 if (cp)
meillo@0 47 bp = cp;
meillo@0 48
meillo@0 49 /*
meillo@0 50 ** No delimitor cs - return whole buffer and point at end
meillo@0 51 */
meillo@0 52 if (!cs)
meillo@0 53 {
meillo@0 54 while (*bp)
meillo@0 55 bp++;
meillo@0 56 return cs;
meillo@0 57 }
meillo@0 58
meillo@0 59 /*
meillo@0 60 ** Skip leading spaces
meillo@0 61 */
meillo@0 62 while (isspace(*bp))
meillo@0 63 bp++;
meillo@0 64
meillo@0 65 /*
meillo@0 66 ** No token found?
meillo@0 67 */
meillo@0 68 if (!*bp)
meillo@0 69 return 0;
meillo@0 70
meillo@0 71 cp = bp;
meillo@0 72 while (*bp && !strchr(cs, *bp))
meillo@0 73 bp++;
meillo@0 74
meillo@0 75 /*
meillo@0 76 ** Remove trailing spaces
meillo@0 77 */
meillo@0 78 *dc = *bp;
meillo@0 79 for (dc = bp-1; dc > cp && isspace(*dc); dc--)
meillo@0 80 ;
meillo@0 81 *++dc = '\0';
meillo@0 82
meillo@0 83 bp++;
meillo@0 84
meillo@0 85 return cp;
meillo@0 86 }