# include ishex (a) char *a; { if (!*a) return NO; for (; *a; a++) if (!hexchar (*a)) return NO; return YES; } hexchar (a) char a; { return element (a, "01234567890abcdefABCDEF"); } numeric (a) char *a; { if (!*a) return NO; /* null strings are not numeric */ for (; *a; a++) if (!isdigit (*a)) return NO; return YES; } /* * remove trailing newlines, etc. */ shorten (a) char *a; { for (; *a; a++) if (*a == '\r' || *a == '\n' || *a == 26) *a = NULL; } htoi (a) char *a; {  int sum; sum = 0; for (; ishex (*a); a++) { sum *= 16; if (isdigit (*a)) sum += *a - '0'; else sum += toupper (*a) - 'A' + 10; } return sum; } char * save (a) char *a; { char *b; b = alloc (lenstr (a) + 1); cpystr (b, a, NULL); return b; } char * getword (a, b) char *a, *b; { a = skipbl (a); while (!iswhite (*a)) *b++ = *a++; *b = NULL; return a; } char * skipbl (a) char *a; { while (*a == ' ' || *a == '\t') a++; return a; } empty (a) char *a; { for (; *a; a++) if (!iswhite (*a)) return NO; return YES; }