static const char * GetTokenInLine(void) { char *p = ParseNext; char *token = TokenBuffer; /* * Remove initial white space. */ while (isspace(*p)) p++; if ((*p == '\0') || (*p == '#')) return NULL; /* * Find end of token. */ if (is_token_separator(*p)) { /* a separator is always a complete token */ *token++ = *p++; } else while (*p != '\0' && !is_token_separator(*p) && !isspace(*p)) { if (*p == '\\') p++; if (*p) *token++ = *p++; } *token = '\0'; ParseNext = p; return TokenBuffer; }
static const char * GetToken( int allow_eol ) { char *p; char *token = TokenBuffer; for (;;) { /* remove initial white space */ p = ParseNext; while (isspace(*p)) p++; if (*p == '\\' && p[1] == '\n') /* line continuation */ { if (!get_next_line()) { if (!allow_eol) error( "Unexpected end of file\n" ); return NULL; } } else break; } if ((*p == '\0') || is_token_comment(*p)) { if (!allow_eol) error( "Declaration not terminated properly\n" ); return NULL; } /* * Find end of token. */ if (is_token_separator(*p)) { /* a separator is always a complete token */ *token++ = *p++; } else while (*p != '\0' && !is_token_separator(*p) && !isspace(*p)) { if (*p == '\\') p++; if (*p) *token++ = *p++; } *token = '\0'; ParseNext = p; return TokenBuffer; }