#include #include #include "make.h" static char *stripwh (); /* * Get next token from the string. Return a pointer to it, or NULL. * Adjust pointer to point to next part of string. * The string is modified. * A token consists of any number of non-white characters. */ char *token (strpp) char **strpp; { register char *s; register char *beg = NULL; DBUG_ENTER ("token"); DBUG_3 ("tok", "get next token from '%s'", *strpp); (void) stripwh (strpp); if (**strpp) { beg = s = *strpp; while (*s && !isspace (*s)) { ++s; } if (*s) { *s++ = '\0'; } *strpp = s; DBUG_3 ("tok", "found token '%s'", beg); } DBUG_RETURN (beg); } /* * Parse character escape-sequences in a line of text. * = * n = newline, and so on * = * The string is truncated at the first non-escaped occurance of 'comchar'. */ void escape (str, comchar) char *str; char comchar; { register char *d; register char c; DBUG_ENTER ("escape"); for (d = str; *str && *str != comchar; ++str) { if (*str == ESCCHAR && *(str + 1)) { switch ((c = *++str)) { case ESCCHAR: *d++ = ESCCHAR; break; case 'n': *d++ = '\n'; break; case 'r': *d++ = '\r'; break; case 't': *d++ = '\t'; break; case 'b': *d++ = '\b'; break; case 'f': *d++ = '\f'; break; default: *d++ = c; break; } } else { *d++ = *str; } } *d++ = 0; DBUG_VOID_RETURN; } static char *stripwh (strpp) char **strpp; { register char *s; s = *strpp; while (isspace (*s)) { ++s; } return (*strpp = s); }