# /*LINTLIBRARY*/ #include "stdio.h" #ifdef OBJECTID static char sccsid[] = "%W%"; #endif #include "ctype.h" #ifndef alloc_t #define alloc_t unsigned #endif #ifndef MAL #define MAL 0 #endif extern char * malloc(); char * scheck(string, format) char * string; char * format; { register char * fbuf; register char * fp; register char * tp; register int c; register char * result; char dummy; if (string == NULL || format == NULL) return ""; fbuf = malloc((alloc_t) (2 * strlen(format) + 4)); if (fbuf == MAL) return ""; fp = format; tp = fbuf; while ((*tp++ = c = *fp++) != '\0') { if (c != '%') continue; if (*fp == '%') { *tp++ = *fp++; continue; } *tp++ = '*'; if (*fp == '*') ++fp; while (*fp != '\0' && isascii(*fp) && isdigit(*fp)) *tp++ = *fp++; if (*fp == 'l') *tp++ = *fp++; else if (*fp == '[') do *tp++ = *fp++; while (*fp != '\0' && *fp != ']'); if ((*tp++ = *fp++) == '\0') break; } if (c != '\0') result = ""; else { *(tp - 1) = '%'; *tp++ = 'c'; *tp++ = '\0'; if (sscanf(string, fbuf, &dummy) == 1) result = ""; else result = format; } free(fbuf); return result; }