#include char *domalloc(unsigned long bytes); void parsefields(char *str, char **fields, int *numfields, char delim, int max); unsigned long _allocated = 0; /* parsefields() changes delim and end of line into '\0' , putting the args into array of char pointers */ void parsefields (char *str, char **fields, int *numfields, char delim, int max) { char *cp; cp = index (str, '\r'); if (!cp) cp = index (str, '\n'); if (cp) *cp = 0; if (strlen(str) < 1) { *numfields = 0; return; } fields[0] = str; for (*numfields = 1; *numfields < max ; ) { fields[*numfields] = index (fields[(*numfields)-1], delim); if (fields[*numfields]) { *(fields[*numfields]) = 0; /* wipe out delim */ fields[*numfields] += 1; /* move one char past delim */ (*numfields)++; } else break; } } char * domalloc(unsigned long bytes) { char *cp; if (bytes == 0) bytes = 1; cp = (char *) malloc(bytes); _allocated += bytes; if (!cp) printf("Malloc failed to get %lu bytes.\n", bytes); return cp; } /**************************************************************************/ /* Count # of occurences of char c in string str */ int strcnt(char *str, char c) { register int cnt = 0; while (*str) if (*str++ == c) cnt++; return cnt; } /**************************************************************************/ /* tolower a string, returning the length of the string */ int strlower(char *str) { int cnt = 0; while (*str) { if (isupper(*str)) *str = tolower(*str); str++, cnt++; } return cnt; } substi_char (char *istr, char *ostr, char ch_frm, char ch_to) /* Convert ch_frm into ch_to where ever it occurs in istr, write results in ostr */ { char *cp; strcpy (ostr, istr); /* copy istr to ostr */ for (cp = ostr; *cp; cp++) { if (*cp == ch_frm) *cp = ch_to; } }