cvs: /php4/ext/standard parsedate.y
| From: | Sam Ruby | Date: | Tue, 07 Dec 1999 02:48:06 +0000 |
| Subject: | cvs: /php4/ext/standard parsedate.y | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-7571@lists.php.net to get a copy of this message | ||
rubys Mon Dec 6 21:48:06 1999 EDT
Modified files:
/php4/ext/standard parsedate.y
Log:
-kludges -warning +reentrancy(more) +compiles(Unix)
Index: php4/ext/standard/parsedate.y
diff -u php4/ext/standard/parsedate.y:1.12 php4/ext/standard/parsedate.y:1.13
--- php4/ext/standard/parsedate.y:1.12 Mon Dec 6 14:04:01 1999
+++ php4/ext/standard/parsedate.y Mon Dec 6 21:47:35 1999
@@ -1,5 +1,5 @@
%{
-/* $Revision: 1.12 $
+/* $Revision: 1.13 $
**
** Originally written by Steven M. Bellovin <smb@research.att.com> while
** at the University of North Carolina at Chapel Hill. Later tweaked by
@@ -52,8 +52,6 @@
#if WIN32||WINNT
# include <time.h>
-# include "php.h"
-# undef YYSTYPE
# include "php_reentrancy.h"
#else
# if !defined(HAVE_TM_ZONE) && !defined(_TIMEZONE)
@@ -62,8 +60,6 @@
#endif
-
-
#define yylhs date_yylhs
#define yylen date_yylen
#define yydefred date_yydefred
@@ -157,10 +153,6 @@
static time_t yyRelSeconds;
-extern struct tm *localtime(const time_t *timep);
-
-/* YYSTYPE is not yet defined at this point */
-static int date_lex(void *yylval);
static void date_error(char *s);
@@ -174,6 +166,10 @@
enum _MERIDIAN Meridian;
}
+%{
+static int date_lex(YYSTYPE *yylval);
+%}
+
%token tDAY tDAYZONE tMERIDIAN tMONTH tMONTH_UNIT tSEC_UNIT tSNUMBER
%token tUNUMBER tZONE
@@ -642,6 +638,7 @@
time_t Julian;
int i;
time_t tod;
+ struct tm tmbuf;
/* Year should not be passed as a relative value, but absolute one.
so this should not happen, but just ensure it */
@@ -674,7 +671,7 @@
return -1;
Julian += tod;
tod = Julian;
- if (dst == DSTon || (dst == DSTmaybe && localtime(&tod)->tm_isdst))
+ if (dst == DSTon || (dst == DSTmaybe && localtime_r(&tod,&tmbuf)->tm_isdst))
Julian -= DST_OFFSET * 60 * 60;
return Julian;
}
@@ -685,9 +682,10 @@
{
time_t StartDay;
time_t FutureDay;
+ struct tm tmbuf;
- StartDay = (localtime(&Start)->tm_hour + 1) % 24;
- FutureDay = (localtime(&Future)->tm_hour + 1) % 24;
+ StartDay = (localtime_r(&Start,&tmbuf)->tm_hour + 1) % 24;
+ FutureDay = (localtime_r(&Future,&tmbuf)->tm_hour + 1) % 24;
return (Future - Start) + (StartDay - FutureDay) * DST_OFFSET * 60 * 60;
}
@@ -864,7 +862,6 @@
time_t parsedate(char *p, TIMEINFO *now)
{
- extern int date_parse(void);
struct tm *tm, tmbuf;
TIMEINFO ti;
time_t Start;
@@ -895,7 +892,7 @@
yyHaveRel = 0;
yyHaveTime = 0;
- if (date_parse() || yyHaveTime > 1 || yyHaveDate > 1)
+ if (date_parse(YYPARSE_PARAM_ARG) || yyHaveTime > 1 || yyHaveDate > 1)
return -1;
if (yyHaveDate || yyHaveTime) {