This tiny routine is in a .so loadable module I use. (It's part of the mailfront SMTP daemon.)
static const char* date_string(void) { static char datebuf[64]; time_t now = time(0); struct tm* tm = gmtime(&now); strftime(datebuf, sizeof datebuf - 1, "%d %b %Y %H:%M:%S -0000", tm); return datebuf; } I was getting bogus dates. Running it under GDB, time() is returning -1, and setting errno to 22, which is EINVAL. Changing the call to time to time(NULL) or time(&now) made no difference. I changed it to a call to gettimeofday(), which works fine. But what could the problem have been? When I splice this routine into a tiny test program that calls it and prints out the result, it works fine. The obvious problem, since it's in a .so, is that it's linking to something other than the system library time() function, but I did an nm on the .so, and it said this, which sure looks like the system time() function to me: U time@@FBSD_1.0 Setting a breakpoint in gdb gets a complaint about trying to set a breakpoint in /lib/libc.so.7. Any ideas what the problem was? R's, John _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"