meillo@0: /* meillo@0: ** support.c meillo@0: ** meillo@0: ** Author: Pr Emanuelsson meillo@0: ** Hacked by: Peter Eriksson meillo@0: */ meillo@0: #include meillo@0: #include meillo@0: meillo@0: #ifdef HAVE_ANSIHEADERS meillo@0: # include meillo@0: # include meillo@0: #else meillo@0: # define strchr(str, c) index(str, c) meillo@0: #endif meillo@0: meillo@0: #define IN_LIBIDENT_SRC meillo@0: #include "ident.h" meillo@0: meillo@0: meillo@0: char *id_strdup __P1(char *, str) meillo@0: { meillo@0: char *cp; meillo@0: meillo@0: cp = (char *) malloc(strlen(str)+1); meillo@0: if (cp == NULL) meillo@0: { meillo@0: #ifdef DEBUG meillo@0: perror("libident: malloc"); meillo@0: #endif meillo@0: return NULL; meillo@0: } meillo@0: meillo@0: strcpy(cp, str); meillo@0: meillo@0: return cp; meillo@0: } meillo@0: meillo@0: meillo@0: char *id_strtok __P3(char *, cp, meillo@0: char *, cs, meillo@0: char *, dc) meillo@0: { meillo@0: static char *bp = 0; meillo@0: meillo@0: if (cp) meillo@0: bp = cp; meillo@0: meillo@0: /* meillo@0: ** No delimitor cs - return whole buffer and point at end meillo@0: */ meillo@0: if (!cs) meillo@0: { meillo@0: while (*bp) meillo@0: bp++; meillo@0: return cs; meillo@0: } meillo@0: meillo@0: /* meillo@0: ** Skip leading spaces meillo@0: */ meillo@0: while (isspace(*bp)) meillo@0: bp++; meillo@0: meillo@0: /* meillo@0: ** No token found? meillo@0: */ meillo@0: if (!*bp) meillo@0: return 0; meillo@0: meillo@0: cp = bp; meillo@0: while (*bp && !strchr(cs, *bp)) meillo@0: bp++; meillo@0: meillo@0: /* meillo@0: ** Remove trailing spaces meillo@0: */ meillo@0: *dc = *bp; meillo@0: for (dc = bp-1; dc > cp && isspace(*dc); dc--) meillo@0: ; meillo@0: *++dc = '\0'; meillo@0: meillo@0: bp++; meillo@0: meillo@0: return cp; meillo@0: }