|
|
1.1 ! root 1: #include "mk.h" ! 2: ! 3: Word * ! 4: newword(s) ! 5: char *s; ! 6: { ! 7: register Word *w = (Word *)Malloc(sizeof(Word)); ! 8: ! 9: w->s = strdup(s); ! 10: w->next = 0; ! 11: return(w); ! 12: } ! 13: ! 14: Word * ! 15: stow(s) ! 16: char *s; ! 17: { ! 18: char save; ! 19: register char *t; ! 20: Word *head, *w; ! 21: ! 22: w = head = newword(""); ! 23: while(*s){ ! 24: while(SEP(*s)) ! 25: s++; ! 26: if(*s == 0) break; ! 27: for(t = s; *t && !SEP(*t); t++) ! 28: ; ! 29: save = *t; ! 30: *t = 0; ! 31: w->next = newword(s); ! 32: w = w->next; ! 33: *t = save; ! 34: s = t; ! 35: } ! 36: w = head->next; ! 37: delword(head); ! 38: return(w); ! 39: } ! 40: ! 41: char * ! 42: wtos(w) ! 43: register Word *w; ! 44: { ! 45: static char buf[BIGBLOCK]; ! 46: register char *s = buf; ! 47: register char *t; ! 48: ! 49: for(; w; w = w->next){ ! 50: for(t = w->s; *t;) ! 51: *s++ = *t++; ! 52: if(w->next) ! 53: *s++ = ' '; ! 54: } ! 55: *s = 0; ! 56: return(strdup(buf)); ! 57: } ! 58: ! 59: delword(w) ! 60: Word *w; ! 61: { ! 62: free(w->s); ! 63: free((char *)w); ! 64: } ! 65: ! 66: dumpw(s, w) ! 67: char *s; ! 68: Word *w; ! 69: { ! 70: Fprint(1, "%s", s); ! 71: for(; w; w = w->next) ! 72: Fprint(1, " '%s'", w->s); ! 73: Fputc(1, '\n'); ! 74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.