aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/bool.c
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1997-10-17 05:38:32 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1997-10-17 05:38:32 +0000
commit962c8bd66d7ba6da40379fd5cf4de72706ee765c (patch)
tree224fa27769e91ab4a8f837c2d086503482474d42 /src/backend/utils/adt/bool.c
parent9c800b8e4800f8d1c901c0370b83b25706f7ae52 (diff)
downloadpostgresql-962c8bd66d7ba6da40379fd5cf4de72706ee765c.tar.gz
postgresql-962c8bd66d7ba6da40379fd5cf4de72706ee765c.zip
Accept additional values for TRUE: y, Y, 1.
Leave all other input values to return FALSE. In next version, do more checking for valid inputs for both TRUE and FALSE.
Diffstat (limited to 'src/backend/utils/adt/bool.c')
-rw-r--r--src/backend/utils/adt/bool.c50
1 files changed, 42 insertions, 8 deletions
diff --git a/src/backend/utils/adt/bool.c b/src/backend/utils/adt/bool.c
index 4746e436197..aec60c776fe 100644
--- a/src/backend/utils/adt/bool.c
+++ b/src/backend/utils/adt/bool.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.7 1997/10/09 05:06:12 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.8 1997/10/17 05:38:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -24,16 +24,50 @@
/*
* boolin - converts "t" or "f" to 1 or 0
*
- * Check explicitly for "true/TRUE" and allow any odd ASCII value to be "true".
- * This handles "true/false", "yes/no", "1/0". - thomas 1997-10-05
+ * Check explicitly for "true/false" and TRUE/FALSE, 1/0, YES/NO.
+ * Reject other values. - thomas 1997-10-05
+ * For now, allow old behavior of everything FALSE if not TRUE.
+ * After v6.2.1 release, then enable code to reject goofy values.
+ * Also, start checking the entire string rather than just the first character.
+ * - thomas 1997-10-16
+ *
+ * In the switch statement, check the most-used possibilities first.
*/
bool
boolin(char *b)
{
- if (b == NULL)
- elog(WARN, "Bad input string for type bool");
- return ((bool) (((*b) == 't') || ((*b) == 'T') || ((*b) & 1)));
-}
+ switch(*b) {
+ case 't':
+ case 'T':
+ return (TRUE);
+ break;
+
+ case 'f':
+ case 'F':
+ return (FALSE);
+ break;
+
+ case 'y':
+ case 'Y':
+ case '1':
+ return (TRUE);
+ break;
+
+ case 'n':
+ case 'N':
+ case '0':
+ return (FALSE);
+ break;
+
+ default:
+#if FALSE
+ elog(WARN,"Invalid input string '%s'\n", b);
+#endif
+ break;
+ }
+
+ return (FALSE);
+} /* boolin() */
/*
* boolout - converts 1 or 0 to "t" or "f"
@@ -46,7 +80,7 @@ boolout(bool b)
*result = (b) ? 't' : 'f';
result[1] = '\0';
return (result);
-}
+} /* boolout() */
/*****************************************************************************
* PUBLIC ROUTINES *