4 * Miscellaneous routines
13 #include <sys/types.h>
15 #include <sys/socket.h>
18 #include <netinet/in.h>
28 #include "webserver.h"
30 typedef unsigned char byte;
36 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
37 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
41 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
45 * Format a date/time stamp for output
47 void fmt_date(char *buf, time_t thetime, int brief)
53 char calhourformat[16];
55 get_preference("calhourformat", calhourformat, sizeof calhourformat);
57 today_timet = time(NULL);
58 localtime_r(&today_timet, &today_tm);
60 localtime_r(&thetime, &tm);
71 if ((tm.tm_year == today_tm.tm_year)
72 &&(tm.tm_mon == today_tm.tm_mon)
73 &&(tm.tm_mday == today_tm.tm_mday)) {
74 if (!strcasecmp(calhourformat, "24")) {
75 sprintf(buf, "%2d:%02d",
80 sprintf(buf, "%2d:%02d%s",
82 ((tm.tm_hour >= 12) ? "pm" : "am")
87 sprintf(buf, "%s %d %d",
95 if (!strcasecmp(calhourformat, "24")) {
96 sprintf(buf, "%s %d %d %2d:%02d",
100 tm.tm_hour, tm.tm_min
104 sprintf(buf, "%s %d %d %2d:%02d%s",
105 ascmonths[tm.tm_mon],
108 hour, tm.tm_min, ((tm.tm_hour >= 12) ? "pm" : "am")
117 * Format TIME ONLY for output
119 void fmt_time(char *buf, time_t thetime)
123 char calhourformat[16];
125 get_preference("calhourformat", calhourformat, sizeof calhourformat);
128 tm = localtime(&thetime);
135 if (!strcasecmp(calhourformat, "24")) {
136 sprintf(buf, "%2d:%02d",
137 tm->tm_hour, tm->tm_min
141 sprintf(buf, "%d:%02d%s",
142 hour, tm->tm_min, ((tm->tm_hour > 12) ? "pm" : "am")
151 * Format a date/time stamp to the format used in HTTP headers
153 void httpdate(char *buf, time_t thetime)
158 tm = localtime(&thetime);
160 sprintf(buf, "%s, %02d %s %4d %02d:%02d:%02d",
161 ascdays[tm->tm_wday],
163 ascmonths[tm->tm_mon],
164 tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec);