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@10: char* meillo@10: id_strdup __P1(char *, str) meillo@0: { meillo@10: char *cp; meillo@0: meillo@10: cp = (char *) malloc(strlen(str) + 1); meillo@10: if (cp == NULL) { meillo@0: #ifdef DEBUG meillo@10: perror("libident: malloc"); meillo@0: #endif meillo@10: return NULL; meillo@10: } meillo@0: meillo@10: strcpy(cp, str); meillo@0: meillo@10: return cp; meillo@0: } meillo@0: meillo@0: meillo@10: char* meillo@10: id_strtok __P3(char *, cp, char *, cs, char *, dc) meillo@0: { meillo@10: static char *bp = 0; meillo@10: meillo@10: if (cp) meillo@10: bp = cp; meillo@10: meillo@10: /* meillo@10: ** No delimitor cs - return whole buffer and point at end meillo@10: */ meillo@10: if (!cs) { meillo@10: while (*bp) meillo@10: bp++; meillo@10: return cs; meillo@10: } meillo@10: meillo@10: /* meillo@10: ** Skip leading spaces meillo@10: */ meillo@10: while (isspace(*bp)) meillo@10: bp++; meillo@10: meillo@10: /* meillo@10: ** No token found? meillo@10: */ meillo@10: if (!*bp) meillo@10: return 0; meillo@10: meillo@10: cp = bp; meillo@10: while (*bp && !strchr(cs, *bp)) meillo@10: bp++; meillo@10: meillo@10: /* meillo@10: ** Remove trailing spaces meillo@10: */ meillo@10: *dc = *bp; meillo@10: for (dc = bp - 1; dc > cp && isspace(*dc); dc--); meillo@10: *++dc = '\0'; meillo@10: meillo@0: bp++; meillo@10: meillo@10: return cp; meillo@0: }