#include #include #include void chomp(char *buffer, int length) { char *ref = buffer; for (ref += length; ref != buffer; ref--) { if ((*ref) == '\n' || (*ref) == '\r') { (*ref) = '\0'; } else if ((*ref) != '\0') { break; } } } /* FIXME: please rewrite this routine, its bad! */ int contains(char *buffer, char *pattern) { int length = strlen(buffer); int patlen = strlen(pattern); int pos = 0; while((*(buffer + pos)) != '\0' && pos < (length + 1)) { if(tolower(*(buffer + pos)) == tolower((*pattern))) { if(strncasecmp((buffer + pos),pattern,patlen) == 0) { return 1; } else { ++pos; } } else { ++pos; } } return 0; } char *word(char *data, int pos) { char *begin; char *end; char *nword; int i; for (i = 1; i < pos; ++i) { while(isspace(*data) && (*data) != '\0') { ++data; } while(!isspace(*data) && (*data) != '\0') { ++data; } } while(isspace(*data) && (*data) != '\0') { ++data; } begin = data; while(!isspace(*data) && (*data) != '\0') { ++data; } end = data; i = (end - begin); nword = malloc(i + 1); if (i > 0) { strncpy(nword, begin, i); } (*(nword + i)) = '\0'; fprintf(stderr,"\tWord:%s\n",nword); return nword; }