@@ -409,7 +409,7 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend,
409409struct state * ts = & lsp -> u .st ;
410410
411411up -> buf [nread - 1 ]= '\0' ;
412- if (tzparse (& up -> buf [1 ],ts , false)== 0
412+ if (tzparse (& up -> buf [1 ],ts , false)
413413&& ts -> typecnt == 2 )
414414{
415415/*
@@ -534,7 +534,7 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend,
534534 * given name is stored there (the buffer must be > TZ_STRLEN_MAX bytes!).
535535 */
536536int
537- tzload (const char * name ,char * canonname ,struct state * sp ,int doextend )
537+ tzload (const char * name ,char * canonname ,struct state * sp ,bool doextend )
538538{
539539union local_storage ls ;
540540
@@ -864,13 +864,10 @@ transtime(int year, const struct rule * rulep,
864864/*
865865 * Given a POSIX section 8-style TZ string, fill in the rule tables as
866866 * appropriate.
867- *
868- * Returns 0 on success, -1 on failure. (Note: tzcode has converted this
869- * to a bool true-on-success convention, but we're holding the line in PG
870- * for the moment, to avoid external API changes.)
867+ * Returns true on success, false on failure.
871868 */
872- int
873- tzparse (const char * name ,struct state * sp ,int lastditch )
869+ bool
870+ tzparse (const char * name ,struct state * sp ,bool lastditch )
874871{
875872const char * stdname ;
876873const char * dstname = NULL ;
@@ -908,7 +905,7 @@ tzparse(const char *name, struct state * sp, int lastditch)
908905stdname = name ;
909906name = getqzname (name ,'>' );
910907if (* name != '>' )
911- return -1 ;
908+ return false ;
912909stdlen = name - stdname ;
913910name ++ ;
914911}
@@ -918,13 +915,13 @@ tzparse(const char *name, struct state * sp, int lastditch)
918915stdlen = name - stdname ;
919916}
920917if (* name == '\0' )/* we allow empty STD abbrev, unlike IANA */
921- return -1 ;
918+ return false ;
922919name = getoffset (name ,& stdoffset );
923920if (name == NULL )
924- return -1 ;
921+ return false ;
925922charcnt = stdlen + 1 ;
926923if (sizeof sp -> chars < charcnt )
927- return -1 ;
924+ return false ;
928925load_ok = tzload (TZDEFRULES ,NULL ,sp , false)== 0 ;
929926}
930927if (!load_ok )
@@ -936,7 +933,7 @@ tzparse(const char *name, struct state * sp, int lastditch)
936933dstname = ++ name ;
937934name = getqzname (name ,'>' );
938935if (* name != '>' )
939- return -1 ;
936+ return false ;
940937dstlen = name - dstname ;
941938name ++ ;
942939}
@@ -947,15 +944,15 @@ tzparse(const char *name, struct state * sp, int lastditch)
947944dstlen = name - dstname ;/* length of DST zone name */
948945}
949946if (!dstlen )
950- return -1 ;
947+ return false ;
951948charcnt += dstlen + 1 ;
952949if (sizeof sp -> chars < charcnt )
953- return -1 ;
950+ return false ;
954951if (* name != '\0' && * name != ',' && * name != ';' )
955952{
956953name = getoffset (name ,& dstoffset );
957954if (name == NULL )
958- return -1 ;
955+ return false ;
959956}
960957else
961958dstoffset = stdoffset - SECSPERHOUR ;
@@ -972,13 +969,13 @@ tzparse(const char *name, struct state * sp, int lastditch)
972969
973970++ name ;
974971if ((name = getrule (name ,& start ))== NULL )
975- return -1 ;
972+ return false ;
976973if (* name ++ != ',' )
977- return -1 ;
974+ return false ;
978975if ((name = getrule (name ,& end ))== NULL )
979- return -1 ;
976+ return false ;
980977if (* name != '\0' )
981- return -1 ;
978+ return false ;
982979sp -> typecnt = 2 ;/* standard time and DST */
983980
984981/*
@@ -1044,7 +1041,7 @@ tzparse(const char *name, struct state * sp, int lastditch)
10441041int j ;
10451042
10461043if (* name != '\0' )
1047- return -1 ;
1044+ return false ;
10481045
10491046/*
10501047 * Initial values of theirstdoffset and theirdstoffset.
@@ -1148,7 +1145,7 @@ tzparse(const char *name, struct state * sp, int lastditch)
11481145memcpy (cp ,dstname ,dstlen );
11491146* (cp + dstlen )= '\0' ;
11501147}
1151- return 0 ;
1148+ return true ;
11521149}
11531150
11541151static void