Mercurial > masqmail
diff src/libident/support.c @ 0:08114f7dcc23 0.2.21
this is masqmail-0.2.21 from oliver kurth
author | meillo@marmaro.de |
---|---|
date | Fri, 26 Sep 2008 17:05:23 +0200 |
parents | |
children | 26e34ae9a3e3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/libident/support.c Fri Sep 26 17:05:23 2008 +0200 @@ -0,0 +1,86 @@ +/* +** support.c +** +** Author: Pr Emanuelsson <pell@lysator.liu.se> +** Hacked by: Peter Eriksson <pen@lysator.liu.se> +*/ +#include <stdio.h> +#include <ctype.h> + +#ifdef HAVE_ANSIHEADERS +# include <stdlib.h> +# include <string.h> +#else +# define strchr(str, c) index(str, c) +#endif + +#define IN_LIBIDENT_SRC +#include "ident.h" + + +char *id_strdup __P1(char *, str) +{ + char *cp; + + cp = (char *) malloc(strlen(str)+1); + if (cp == NULL) + { +#ifdef DEBUG + perror("libident: malloc"); +#endif + return NULL; + } + + strcpy(cp, str); + + return cp; +} + + +char *id_strtok __P3(char *, cp, + char *, cs, + char *, dc) +{ + static char *bp = 0; + + if (cp) + bp = cp; + + /* + ** No delimitor cs - return whole buffer and point at end + */ + if (!cs) + { + while (*bp) + bp++; + return cs; + } + + /* + ** Skip leading spaces + */ + while (isspace(*bp)) + bp++; + + /* + ** No token found? + */ + if (!*bp) + return 0; + + cp = bp; + while (*bp && !strchr(cs, *bp)) + bp++; + + /* + ** Remove trailing spaces + */ + *dc = *bp; + for (dc = bp-1; dc > cp && isspace(*dc); dc--) + ; + *++dc = '\0'; + + bp++; + + return cp; +}