|
1 | 1 | /* -----------------------------------------------------------------------
|
2 | 2 | * formatting.c
|
3 | 3 | *
|
4 |
| - * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.83 2005/01/01 05:43:07 momjian Exp $ |
| 4 | + * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.84 2005/01/13 01:40:13 tgl Exp $ |
5 | 5 | *
|
6 | 6 | *
|
7 | 7 | * Portions Copyright (c) 1999-2005, PostgreSQL Global Development Group
|
@@ -1462,7 +1462,9 @@ get_th(char *num, int type)
|
1462 | 1462 | staticchar*
|
1463 | 1463 | str_numth(char*dest,char*num,inttype)
|
1464 | 1464 | {
|
1465 |
| -sprintf(dest,"%s%s",num,get_th(num,type)); |
| 1465 | +if (dest!=num) |
| 1466 | +strcpy(dest,num); |
| 1467 | +strcat(dest,get_th(num,type)); |
1466 | 1468 | returndest;
|
1467 | 1469 | }
|
1468 | 1470 |
|
@@ -2057,6 +2059,7 @@ static int
|
2057 | 2059 | dch_date(intarg,char*inout,intsuf,intflag,FormatNode*node,void*data)
|
2058 | 2060 | {
|
2059 | 2061 | charbuff[DCH_CACHE_SIZE],
|
| 2062 | +workbuff[32], |
2060 | 2063 | *p_inout;
|
2061 | 2064 | inti,
|
2062 | 2065 | len;
|
@@ -2117,7 +2120,6 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data)
|
2117 | 2120 |
|
2118 | 2121 | switch (arg)
|
2119 | 2122 | {
|
2120 |
| - |
2121 | 2123 | caseDCH_A_D:
|
2122 | 2124 | caseDCH_B_C:
|
2123 | 2125 | if (flag==TO_CHAR)
|
@@ -2179,8 +2181,8 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data)
|
2179 | 2181 | }
|
2180 | 2182 | break;
|
2181 | 2183 | caseDCH_MONTH:
|
2182 |
| -strcpy(inout,months_full[tm->tm_mon-1]); |
2183 |
| -sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(inout)); |
| 2184 | +strcpy(workbuff,months_full[tm->tm_mon-1]); |
| 2185 | +sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(workbuff)); |
2184 | 2186 | if (S_FM(suf))
|
2185 | 2187 | returnstrlen(p_inout)-1;
|
2186 | 2188 | else
|
@@ -2242,8 +2244,8 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data)
|
2242 | 2244 | }
|
2243 | 2245 | break;
|
2244 | 2246 | caseDCH_DAY:
|
2245 |
| -strcpy(inout,days[tm->tm_wday]); |
2246 |
| -sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(inout)); |
| 2247 | +strcpy(workbuff,days[tm->tm_wday]); |
| 2248 | +sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(workbuff)); |
2247 | 2249 | if (S_FM(suf))
|
2248 | 2250 | returnstrlen(p_inout)-1;
|
2249 | 2251 | else
|
|