Next: , Previous: Header files, Up: Gnulib


1.3 ctime

The ctime function need not be reentrant, and consequently is not required to be thread safe. Implementations of ctime typically write the time stamp into static buffer. If two threads call ctime at roughly the same time, you might end up with the wrong date in one of the threads, or some undefined string. There is a re-entrant interface ctime_r, that take a pre-allocated buffer and length of the buffer, and return NULL on errors. The input buffer should be at least 26 bytes in size. The output string is locale-independent. However, years can have more than 4 digits if time_t is sufficiently wide, so the length of the required output buffer is not easy to determine. Increasing the buffer size when ctime_r return NULL is not necessarily sufficient. The NULL return value could mean some other error condition, which will not go away by increasing the buffer size.

A more flexible function is strftime. However, note that it is locale dependent.