From: Thomas G. Lockhart Date: Fri, 17 Oct 1997 05:38:32 +0000 (+0000) Subject: Accept additional values for TRUE: y, Y, 1. X-Git-Tag: REL9_0_0~28153 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=962c8bd66d7ba6da40379fd5cf4de72706ee765c;p=pg-rex%2Fsyncrep.git 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. --- diff --git a/src/backend/utils/adt/bool.c b/src/backend/utils/adt/bool.c index 4746e43619..aec60c776f 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 *