X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Ffmt_date.c;h=62caf410c83524ef23243bb39719cdad58cc815e;hb=HEAD;hp=7979ecf585efec511d573c8c63ee795739b035fe;hpb=898bab06ba7d6cf04a9b5e41bfcc6319ff3bb8de;p=citadel.git diff --git a/webcit/fmt_date.c b/webcit/fmt_date.c index 7979ecf58..5050c1cce 100644 --- a/webcit/fmt_date.c +++ b/webcit/fmt_date.c @@ -1,23 +1,17 @@ /* - * Copyright (c) 1996-2010 by the citadel.org team + * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 3 of the - * License, or (at your option) any later version. + * modify it under the terms of the GNU General Public License, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "webcit.h" -#include "webserver.h" + #ifdef HAVE_USELOCALE extern locale_t *wc_locales; @@ -40,6 +34,7 @@ typedef unsigned char byte; size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm) { +#ifdef ENABLE_NLS #ifdef HAVE_USELOCALE if (wc_locales[WC->selected_language] == NULL) { return strftime(s, max, format, tm); @@ -50,6 +45,9 @@ size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm) #else return strftime(s, max, format, tm); #endif +#else + return strftime(s, max, format, tm); +#endif } @@ -57,8 +55,9 @@ size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm) /* * Format a date/time stamp for output */ -void webcit_fmt_date(char *buf, size_t siz, time_t thetime, int Format) +long webcit_fmt_date(char *buf, size_t siz, time_t thetime, int Format) { + long retlen = 0; struct tm tm; struct tm today_tm; time_t today_timet; @@ -86,33 +85,34 @@ void webcit_fmt_date(char *buf, size_t siz, time_t thetime, int Format) &&(tm.tm_mon == today_tm.tm_mon) &&(tm.tm_mday == today_tm.tm_mday)) { if (time_format == WC_TIMEFORMAT_24) - wc_strftime(buf, siz, "%k:%M", &tm); + retlen = wc_strftime(buf, siz, "%k:%M", &tm); else - wc_strftime(buf, siz, "%l:%M%p", &tm); + retlen = wc_strftime(buf, siz, "%l:%M%p", &tm); } else if (today_timet - thetime < 15552000) { if (time_format == WC_TIMEFORMAT_24) - wc_strftime(buf, siz, "%b %d %k:%M", &tm); + retlen = wc_strftime(buf, siz, "%b %d %k:%M", &tm); else - wc_strftime(buf, siz, "%b %d %l:%M%p", &tm); + retlen = wc_strftime(buf, siz, "%b %d %l:%M%p", &tm); } else { - wc_strftime(buf, siz, "%b %d %Y", &tm); + retlen = wc_strftime(buf, siz, "%b %d %Y", &tm); } break; case DATEFMT_FULL: if (time_format == WC_TIMEFORMAT_24) - wc_strftime(buf, siz, "%a %b %d %Y %T %Z", &tm); + retlen = wc_strftime(buf, siz, "%a %b %d %Y %T %Z", &tm); else - wc_strftime(buf, siz, "%a %b %d %Y %r %Z", &tm); + retlen = wc_strftime(buf, siz, "%a %b %d %Y %r %Z", &tm); break; case DATEFMT_RAWDATE: - wc_strftime(buf, siz, "%a %b %d %Y", &tm); + retlen = wc_strftime(buf, siz, "%a %b %d %Y", &tm); break; case DATEFMT_LOCALEDATE: - wc_strftime(buf, siz, "%x", &tm); + retlen = wc_strftime(buf, siz, "%x", &tm); break; } + return retlen; } @@ -280,7 +280,11 @@ time_t httpdate_to_timestamp(StrBuf *buf) * some systems. */ tzset(); +#ifdef __FreeBSD__ + tt.tm_sec = tt.tm_sec - tt.tm_gmtoff; +#else tt.tm_sec = tt.tm_sec - (int)timezone; +#endif t = mktime(&tt); return t; }