#include #include #include /* function compute number of locations of char c from buffer to character e */ int strlenc(char *buffer, char c, char e) { int i = 0; while (*buffer != e) { if (*buffer == c) i++; buffer++; } return i; } /* interpreting special characters in name string */ char *name(char *buffer) { register char *ret; char num[2]; if (*ret != '/') return NULL; ret = (char *) malloc(255); while (*ret != ' ') { if (*ret == '#') { num[0] = *(ret + 1); num[1] = *(ret + 2); ret += 2; } ret++; } return buffer; } /* parse arrays */ char **array(char *buffer) { register char **ret; register int end, a, index; if (*buffer != '[') return NULL; ret = (char **) malloc(strlenc(buffer, ' ', ']') * sizeof(char)); end = a = index = 0; while (end > 0) { switch (*buffer) { case '[': end++; buffer++; break; case ']': end--; break; case ' ': if (*(buffer + 1) == ']') break; ret[index] = buffer - a; *buffer = '\0'; a = 0; index++; break; default: a++; } buffer++; } return ret; }