masqmail
annotate src/libident/support.c @ 6:c9bce6bb2a5d
switched tests dir to ordinary Makefile
author | meillo@marmaro.de |
---|---|
date | Fri, 26 Sep 2008 22:55:52 +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 } |