Thread: AW: AW: AW: AW: Re: tinterval - operator problems on AI X
> > The correct thing to do instead of the #if defined (_AIX) would be to use > > something like #ifdef NO_NEGATIVE_MKTIME and set that with a configure. > > Thomas, are you volunteering ? > > Actually, I can volunteer to be supportive of your efforts ;) I'm > traveling at the moment, and don't have the original thread(s) which > describe in detail what we need to do for platforms I don't have. > > If Peter E. would be willing to do a configure test for this mktime() > problem, then you or I can massage the actual code. Peter, is this > something you could pick up? > > I do not have the original thread where Andreas describes the behavior > of mktime() on his machine. Andreas, can you suggest a simple configure > test to be used? #include <time.h> int main() { struct tm tt, *tm=&tt; int i = -50000000; tm = localtime (&i); i = mktime (tm); if (i != -50000000) /* on AIXthis check could also be (i == -1) */ { printf("ERROR: mktime(3) does not correctly support datetimes before 1970\n"); return(1); } } Andreas
> > > The correct thing to do instead of the #if defined (_AIX) would be to use > > > something like #ifdef NO_NEGATIVE_MKTIME and set that with a configure. > > ...Andreas, can you suggest a simple configure > > test to be used? > #include <time.h> > int main() > { > struct tm tt, *tm=&tt; > int i = -50000000; > tm = localtime (&i); > i = mktime (tm); > if (i != -50000000) /* on AIX this check could also be (i == -1) */ > { > printf("ERROR: mktime(3) does not correctly support datetimes before 1970\n"); > return(1); > } > } On my Linux box, where the test passes, the compiler is happier if "i" is declared as time_t. Any problem on other platforms if we change this? - Thomas
Zeugswetter Andreas SB writes: > > I do not have the original thread where Andreas describes the behavior > > of mktime() on his machine. Andreas, can you suggest a simple configure > > test to be used? > > #include <time.h> > int main() > { > struct tm tt, *tm=&tt; > int i = -50000000; > tm = localtime (&i); > i = mktime (tm); > if (i != -50000000) /* on AIX this check could also be (i == -1) */ > { > printf("ERROR: mktime(3) does not correctly support datetimes before 1970\n"); > return(1); > } > } You don't need to put this check into configure, you can just do the check after mktime() is used. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/