Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v
retrieving revision 1.314
diff -c -c -r1.314 xlog.c
*** src/backend/access/transam/xlog.c	12 Jun 2008 09:12:30 -0000	1.314
--- src/backend/access/transam/xlog.c	30 Jun 2008 22:10:07 -0000
***************
*** 4523,4535 ****
  			/*
  			 * does nothing if a recovery_target is not also set
  			 */
! 			if (strcmp(tok2, "true") == 0)
! 				recoveryTargetInclusive = true;
! 			else
! 			{
! 				recoveryTargetInclusive = false;
! 				tok2 = "false";
! 			}
  			ereport(LOG,
  					(errmsg("recovery_target_inclusive = %s", tok2)));
  		}
--- 4523,4532 ----
  			/*
  			 * does nothing if a recovery_target is not also set
  			 */
! 			if (!parse_bool(tok2, &recoveryTargetInclusive))
! 				  ereport(ERROR,
! 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
! 					  errmsg("parameter \"recovery_target_inclusive\" requires a Boolean value")));
  			ereport(LOG,
  					(errmsg("recovery_target_inclusive = %s", tok2)));
  		}
***************
*** 4538,4550 ****
  			/*
  			 * does nothing if a recovery_target is not also set
  			 */
! 			if (strcmp(tok2, "true") == 0)
! 				recoveryLogRestartpoints = true;
! 			else
! 			{
! 				recoveryLogRestartpoints = false;
! 				tok2 = "false";
! 			}
  			ereport(LOG,
  					(errmsg("log_restartpoints = %s", tok2)));
  		}
--- 4535,4544 ----
  			/*
  			 * does nothing if a recovery_target is not also set
  			 */
! 			if (!parse_bool(tok2, &recoveryLogRestartpoints))
! 				  ereport(ERROR,
! 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
! 					  errmsg("parameter \"log_restartpoints\" requires a Boolean value")));
  			ereport(LOG,
  					(errmsg("log_restartpoints = %s", tok2)));
  		}
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.457
diff -c -c -r1.457 guc.c
*** src/backend/utils/misc/guc.c	30 Jun 2008 10:58:47 -0000	1.457
--- src/backend/utils/misc/guc.c	30 Jun 2008 22:10:07 -0000
***************
*** 3991,3997 ****
   * If the string parses okay, return true, else false.
   * If okay and result is not NULL, return the value in *result.
   */
! static bool
  parse_bool(const char *value, bool *result)
  {
  	size_t		len = strlen(value);
--- 3991,3997 ----
   * If the string parses okay, return true, else false.
   * If okay and result is not NULL, return the value in *result.
   */
! bool
  parse_bool(const char *value, bool *result)
  {
  	size_t		len = strlen(value);
Index: src/include/utils/guc.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/utils/guc.h,v
retrieving revision 1.96
diff -c -c -r1.96 guc.h
*** src/include/utils/guc.h	28 May 2008 09:04:06 -0000	1.96
--- src/include/utils/guc.h	30 Jun 2008 22:10:07 -0000
***************
*** 223,228 ****
--- 223,229 ----
  extern void AtEOXact_GUC(bool isCommit, int nestLevel);
  extern void BeginReportingGUCOptions(void);
  extern void ParseLongOption(const char *string, char **name, char **value);
+ extern bool parse_bool(const char *value, bool *result);
  extern bool set_config_option(const char *name, const char *value,
  				  GucContext context, GucSource source,
  				  GucAction action, bool changeVal);
