aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/adt/formatting.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index 82fce58ad34..19cbd8ef209 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
* formatting.c
*
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.10 2000/06/09 01:11:08 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.11 2000/06/09 03:18:34 momjian Exp $
*
*
* Portions Copyright (c) 1999-2000, PostgreSQL, Inc
@@ -1258,14 +1258,17 @@ static char *
get_th(char *num, int type)
{
int len = strlen(num),
- last;
+ last, seclast;
last = *(num + (len - 1));
if (!isdigit((unsigned char) last))
elog(ERROR, "get_th: '%s' is not number.", num);
- /* 11 || 12 */
- if (len == 2 && (last == '1' || last == '2') && *num == '1')
+ /*
+ * All "teens" (<x>1[0-9]) get 'TH/th',
+ * while <x>[02-9][123] still get 'ST/st', 'ND/nd', 'RD/rd', respectively
+ */
+ if ((len > 1) && ((seclast = num[len-2]) == '1'))
last = 0;
switch (last)