Re: wrong timestamps

2005-05-14 Thread Alain Guibert
 On Monday, May 9, 2005 at 5:53:26 PM +0200, Hrvoje Niksic wrote:

 Alain Guibert [EMAIL PROTECTED] writes:
 What about another method: putenv(TZ=GMT0), tzset(), mktime(), reset
 TZ to previous state, tzset() again. Not portable?
 That sounds at least as non-portable as the current method, and it
 might be slow in addition. Have you tried that method? Does it help
 in your case?

It seems to work correctly on Linux and Cygwin, and is roughly 3
times faster. I tried this:

| static time_t
| mktime_from_utc (struct tm *t)
| {
|   time_t time;
|   char *tz;
|   char save_tz[100];
|
|   tz=getenv(TZ);
|   if (tz)
| strncpy(save_tz, tz, sizeof(save_tz));
|   setenv(TZ, GMT0, 1);
|   tzset();
|   time=mktime(t);
|   if (tz)
| setenv(TZ, save_tz, 1);
|   else
| unsetenv(TZ);
|   tzset();
|   return (time);
| }

But I'm sure it will fail on some platforms, so not good.


 I find it strange that the cmpt.c mktime produces garbage when that
 version is taken from glibc.

Note that with TZ=GMT0 method and #undef HAVE_MKTIME, wget gives correct
timestamps. Maybe cmpt.c mktime is failing because of incompatible
timezone and daylight infos on the platform? It calls __tzset() but does
not provide it.


| init.c:214: structure has no member named `random_file'
| init.c:214: initializer element for `commands[76].place' is not constant
 This has been fixed in CVS; the fix is to wrap the offending init.c
 line in #ifdef HAVE_SSL.

That's it, thank you!


Alain.


Re: wrong timestamps

2005-05-14 Thread Hrvoje Niksic
Alain Guibert [EMAIL PROTECTED] writes:

 I find it strange that the cmpt.c mktime produces garbage when that
 version is taken from glibc.

 Note that with TZ=GMT0 method and #undef HAVE_MKTIME, wget gives
 correct timestamps. Maybe cmpt.c mktime is failing because of
 incompatible timezone and daylight infos on the platform? It calls
 __tzset() but does not provide it.

It doesn't call __tzset() because _LIBC is undefined in Wget sources.

If you change __tzset() to tzset() and remove the surrounding #ifdef
_LIBC, does it then work?