/* -----------------------------------------------------------------------
* formatting.c
*
- * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.109 2006/04/19 14:48:06 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.110 2006/04/19 18:49:09 momjian Exp $
*
*
* Portions Copyright (c) 1999-2006, PostgreSQL Global Development Group
static char *get_th(char *num, int type);
static char *str_numth(char *dest, char *num, int type);
+static int strspace_len(char *str);
static int strdigits_len(char *str);
static char *str_toupper(char *buff);
static char *str_tolower(char *buff);
return TRUE; /* some non-digit input (separator) */
}
+static int
+strspace_len(char *str)
+{
+ int len = 0;
+
+ while (*str && isspace((unsigned char) *str))
+ {
+ str++;
+ len++;
+ }
+ return len;
+}
+
static int
strdigits_len(char *str)
{
char *p = str;
- int len = 0;
+ int len;
+ len = strspace_len(str);
+ p += len;
+
while (*p && isdigit((unsigned char) *p) && len <= DCH_MAX_ITEM_SIZ)
{
len++;
else
{
sscanf(inout, "%02d", &tmfc->hh);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->hh);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->mi);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->ss);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%05d", &tmfc->ssss);
- return 5 + SKIP_THth(suf);
+ return strspace_len(inout) + 5 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->mm);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%03d", &tmfc->ddd);
- return 3 + SKIP_THth(suf);
+ return strspace_len(inout) + 3 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->dd);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%1d", &tmfc->d);
- return 1 + SKIP_THth(suf);
+ return strspace_len(inout) + 1 + SKIP_THth(suf);
}
break;
case DCH_WW:
else
{
sscanf(inout, "%02d", &tmfc->ww);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%02d", &tmfc->iw);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
else
{
sscanf(inout, "%1d", &tmfc->q);
- return 1 + SKIP_THth(suf);
+ return strspace_len(inout) + 1 + SKIP_THth(suf);
}
break;
case DCH_CC:
else
{
sscanf(inout, "%02d", &tmfc->cc);
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
}
break;
{
sscanf(inout, "%04d", &tmfc->year);
tmfc->yysz = 4;
- return 4 + SKIP_THth(suf);
+ return strspace_len(inout) + 4 + SKIP_THth(suf);
}
}
break;
else
tmfc->year += 2000;
tmfc->yysz = 3;
- return 3 + SKIP_THth(suf);
+ return strspace_len(inout) + 3 + SKIP_THth(suf);
}
break;
case DCH_YY:
else
tmfc->year += 1900;
tmfc->yysz = 2;
- return 2 + SKIP_THth(suf);
+ return strspace_len(inout) + 2 + SKIP_THth(suf);
}
break;
case DCH_Y:
*/
tmfc->year += 2000;
tmfc->yysz = 1;
- return 1 + SKIP_THth(suf);
+ return strspace_len(inout) + 1 + SKIP_THth(suf);
}
break;
case DCH_RM:
else
{
sscanf(inout, "%1d", &tmfc->w);
- return 1 + SKIP_THth(suf);
+ return strspace_len(inout) + 1 + SKIP_THth(suf);
}
break;
case DCH_J: