final touches on dkim test harness
[citadel.git] / webcit / fmt_date.c
index 81e16932429c95c133435a2d760423047d2741ab..5050c1cceed4b7a917eb024b78a525770f367cf7 100644 (file)
@@ -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 free 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.
+ * This program is open source software.  You can redistribute it and/or
+ * 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;
@@ -61,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;
@@ -90,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;
 }
 
 
@@ -284,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;
 }