/* ** support.c ** ** Author: Pr Emanuelsson ** Hacked by: Peter Eriksson */ #include #include #include #include #define IN_LIBIDENT_SRC #include "ident.h" char *id_strdup (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 (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; }