|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)scheck.c 1.1 (Berkeley) 3/29/87"; ! 3: #endif ! 4: ! 5: /*LINTLIBRARY*/ ! 6: ! 7: #include "stdio.h" ! 8: #include "ctype.h" ! 9: ! 10: extern char * imalloc(); ! 11: ! 12: char * ! 13: scheck(string, format) ! 14: char * string; ! 15: char * format; ! 16: { ! 17: register char * fbuf; ! 18: register char * fp; ! 19: register char * tp; ! 20: register int c; ! 21: register char * result; ! 22: char dummy; ! 23: ! 24: result = ""; ! 25: if (string == NULL || format == NULL) ! 26: return result; ! 27: fbuf = imalloc(2 * strlen(format) + 4); ! 28: if (fbuf == NULL) ! 29: return result; ! 30: fp = format; ! 31: tp = fbuf; ! 32: while ((*tp++ = c = *fp++) != '\0') { ! 33: if (c != '%') ! 34: continue; ! 35: if (*fp == '%') { ! 36: *tp++ = *fp++; ! 37: continue; ! 38: } ! 39: *tp++ = '*'; ! 40: if (*fp == '*') ! 41: ++fp; ! 42: while (isascii(*fp) && isdigit(*fp)) ! 43: *tp++ = *fp++; ! 44: if (*fp == 'l' || *fp == 'h') ! 45: *tp++ = *fp++; ! 46: else if (*fp == '[') ! 47: do *tp++ = *fp++; ! 48: while (*fp != '\0' && *fp != ']'); ! 49: if ((*tp++ = *fp++) == '\0') ! 50: break; ! 51: } ! 52: *(tp - 1) = '%'; ! 53: *tp++ = 'c'; ! 54: *tp = '\0'; ! 55: if (sscanf(string, fbuf, &dummy) != 1) ! 56: result = format; ! 57: free(fbuf); ! 58: return result; ! 59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.