|
|
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.