Current Path : /usr/src/contrib/tzcode/zic/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/src/contrib/tzcode/zic/scheck.c |
/* ** This file is in the public domain, so clarified as of ** 2006-07-17 by Arthur David Olson. */ #ifndef lint #ifndef NOID static const char elsieid[] = "@(#)scheck.c 8.19"; #endif /* !defined lint */ #endif /* !defined NOID */ #ifndef lint static const char rcsid[] = "$FreeBSD: release/9.1.0/contrib/tzcode/zic/scheck.c 192625 2009-05-23 06:31:50Z edwin $"; #endif /* not lint */ /*LINTLIBRARY*/ #include "private.h" const char * scheck(string, format) const char * const string; const char * const format; { register char * fbuf; register const char * fp; register char * tp; register int c; register const char * result; char dummy; result = ""; if (string == NULL || format == NULL) return result; fbuf = imalloc((int) (2 * strlen(format) + 4)); if (fbuf == NULL) return result; fp = format; tp = fbuf; while ((*tp++ = c = *fp++) != '\0') { if (c != '%') continue; if (*fp == '%') { *tp++ = *fp++; continue; } *tp++ = '*'; if (*fp == '*') ++fp; while (is_digit(*fp)) *tp++ = *fp++; if (*fp == 'l' || *fp == 'h') *tp++ = *fp++; else if (*fp == '[') do *tp++ = *fp++; while (*fp != '\0' && *fp != ']'); if ((*tp++ = *fp++) == '\0') break; } *(tp - 1) = '%'; *tp++ = 'c'; *tp = '\0'; if (sscanf(string, fbuf, &dummy) != 1) result = (char *) format; ifree(fbuf); return result; }