X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fdtimep.lex;fp=sbr%2Fdtimep.lex;h=b4357a1e64c3e11f5f2ee6669641152deddcf0f0;hp=2e79c46c9da2af88aad9639748a2d258a970dd92;hb=11ce969d33d8d6ffafd010005af0b7188f0f5693;hpb=f88898638f4f0f8f6d77b1235b704982d295b832 diff --git a/sbr/dtimep.lex b/sbr/dtimep.lex index 2e79c46..b4357a1 100644 --- a/sbr/dtimep.lex +++ b/sbr/dtimep.lex @@ -153,6 +153,34 @@ static int day_map[] = { --cp; } #define SKIPTOSP() { while ( !isspace(*cp++) ) ; \ --cp; } + +#ifdef DSTXXX +# ifdef TIME_WITH_SYS_TIME +# include +# include +# else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif + +static void +zonehack (struct tws *tw) +{ + register struct tm *tm; + + if (dmktime (tw) == (time_t) -1) + return; + + tm = localtime (&tw->tw_clock); + if (tm->tm_isdst) { + tw->tw_flags |= TW_DST; + tw->tw_zone -= 60; + } +} +#endif /* DSTXXX */ %} sun ([Ss]un(day)?) @@ -327,11 +355,17 @@ d [0-9] INIT(); SKIPTOD(); SETZONE(atoi(cp)); +#ifdef DSTXXX + zonehack (&tw); +#endif /* DSTXXX */ } "-"{D}{d}{d} { INIT(); SKIPTOD(); SETZONE(-atoi(cp)); +#ifdef DSTXXX + zonehack (&tw); +#endif /* DSTXXX */ } "-"?("ut"|"UT") INIT(); SETZONE(0); "-"?("gmt"|"GMT") INIT(); SETZONE(0);