subtracting days from localtime problem
aleine at austrosearch.net
Fri Apr 1 00:15:51 PST 2005
ganbold at micom.mng.net wrote:
> One more question, what will happen next time when
> time goes back in October?
> Does following line correct it as same as now?
> /* make mktime(3) figure out whether DST is in effect */
> t->tm_isdst = -1;
Yes, it will work correctly. You can see what happens by
setting now to 1131131131 (where you currently have
now = time(NULL)). It's not an April Fools' Day joke, that
just happens to be an appropriate time in November. :-)
I also noticed a number of bugs in your code that you may
want to fix:
- memory leak: you are allocating memory with my_alloc(),
but then you neither free(3) it nor keep track of it.
You should remove my_alloc() and just create a buffer
in main() and then pass it by reference to functions that
need to modify its contents.
- with my_alloc() you basically reinvented strdup(3), see
man 3 strdup for details. You do not need strdup(3) for
what you want to achieve, just pass the buffer from main()
by reference and then use snprintf(3) to modify its contents.
- snprintf(3) handles the size argument correctly, meaning
that you should specify the full size of the string since
at most size-1 characters are written with guaranteed NULL
termination, see man 3 snprintf for details.
WebMail FREE http://mail.austrosearch.net
More information about the freebsd-hackers