#include "postgres_fe.h"
#include "private.h"
Go to the source code of this file.
Functions | |
const char * | scheck (const char *string, const char *format) |
const char* scheck | ( | const char * | string, | |
const char * | format | |||
) |
Definition at line 15 of file scheck.c.
References ifree(), imalloc(), is_digit, and NULL.
Referenced by gethms(), inleap(), and rulesub().
{ char *fbuf; const char *fp; char *tp; int c; 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; }