X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fgenstamp.c;h=9c5ba5f3d6e613c3c1f15ecb2781ac3438a49bb5;hb=2b80e75820618944e1c75b9c01aeeefc8b6b0c81;hp=cfbb8bbb6c7ef16a378ba042e9a1d0d37c097b7e;hpb=75416f4fc36cd31c2d8fa432237f66e0c8403a52;p=citadel.git diff --git a/citadel/genstamp.c b/citadel/genstamp.c index cfbb8bbb6..9c5ba5f3d 100644 --- a/citadel/genstamp.c +++ b/citadel/genstamp.c @@ -1,16 +1,8 @@ /* - * $Id$ - * * Function to generate RFC822-compliant textual time/date stamp - * */ -#ifdef DLL_EXPORT -#define IN_LIBCIT -#endif - -#define timezonevar 1 - +#include "sysdep.h" #include #include #include @@ -44,56 +36,60 @@ static char *weekdays[] = { * Supplied with a unix timestamp, generate an RFC822-compliant textual * time and date stamp. */ -void datestring(char *buf, time_t xtime, int which_format) { - struct tm *t; +long datestring(char *buf, size_t n, time_t xtime, int which_format) { + struct tm t; long offset; char offsign; - t = localtime(&xtime); + localtime_r(&xtime, &t); /* Convert "seconds west of GMT" to "hours/minutes offset" */ #ifdef HAVE_STRUCT_TM_TM_GMTOFF - offset = t->tm_gmtoff; + offset = t.tm_gmtoff; #else offset = timezone; #endif if (offset > 0) { - offsign = '-'; + offsign = '+'; } else { offset = 0L - offset; - offsign = '+'; + offsign = '-'; } offset = ( (offset / 3600) * 100 ) + ( offset % 60 ); switch(which_format) { case DATESTRING_RFC822: - sprintf(buf, "%s, %02d %s %04d %02d:%02d:%02d %c%04ld", - weekdays[t->tm_wday], - t->tm_mday, - months[t->tm_mon], - t->tm_year + 1900, - t->tm_hour, - t->tm_min, - t->tm_sec, + return snprintf( + buf, n, + "%s, %02d %s %04d %02d:%02d:%02d %c%04ld", + weekdays[t.tm_wday], + t.tm_mday, + months[t.tm_mon], + t.tm_year + 1900, + t.tm_hour, + t.tm_min, + t.tm_sec, offsign, offset ); break; case DATESTRING_IMAP: - sprintf(buf, "%02d-%s-%04d %02d:%02d:%02d %c%04ld", - t->tm_mday, - months[t->tm_mon], - t->tm_year + 1900, - t->tm_hour, - t->tm_min, - t->tm_sec, + return snprintf( + buf, n, + "%02d-%s-%04d %02d:%02d:%02d %c%04ld", + t.tm_mday, + months[t.tm_mon], + t.tm_year + 1900, + t.tm_hour, + t.tm_min, + t.tm_sec, offsign, offset ); break; } + return 0; } -