|
|
1.1 ! root 1: #include "defs.h" ! 2: /* ! 3: * stretching buffers ! 4: */ ! 5: _strinit(sp) ! 6: stretch *sp; ! 7: { ! 8: sp->ptr = NULL; ! 9: sp->len = 0; ! 10: } ! 11: ! 12: _strcat(sp, p1, p2, p3) ! 13: stretch *sp; ! 14: char *p1, *p2, *p3; ! 15: { ! 16: char buf[2048]; ! 17: int len=0; ! 18: char *malloc(); ! 19: ! 20: if (p1) { ! 21: len += strlen(p1); ! 22: if (p2) { ! 23: len += strlen(p2); ! 24: if (p3) ! 25: len += strlen(p3); ! 26: } ! 27: } ! 28: if (len<sizeof(buf)) { ! 29: buf[0] = '\0'; ! 30: if (p1) { ! 31: strcat(buf, p1); ! 32: if (p2) { ! 33: strcat(buf, p2); ! 34: if (p3) ! 35: strcat(buf, p3); ! 36: } ! 37: } ! 38: } else { ! 39: strcpy(buf, "string_too_long"); ! 40: len = strlen(buf); ! 41: } ! 42: if (sp->len<=len) { ! 43: if(sp->ptr) ! 44: free(sp->ptr); ! 45: sp->ptr = malloc(len+1); ! 46: sp->len = len+1; ! 47: } ! 48: strcpy(sp->ptr, buf); ! 49: } ! 50: ! 51: _strkill(sp) ! 52: stretch *sp; ! 53: { ! 54: if (sp->ptr) ! 55: free(sp->ptr); ! 56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.