File: timefuncs.c

package info (click to toggle)
haskell-snap-core 1.0.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 812 kB
  • sloc: haskell: 7,668; sh: 47; ansic: 26; makefile: 2
file content (33 lines) | stat: -rw-r--r-- 704 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define _DEFAULT_SOURCE
#define _XOPEN_SOURCE
#define _BSD_SOURCE
#include <time.h>
#include <locale.h>


void set_c_locale() {
    setlocale(LC_TIME, "C");
}


// When given invalid input, returns 0.
time_t c_parse_http_time(char* s) {
    if (s == NULL) return 0;
    struct tm dest;
    if (strptime(s, "%a, %d %b %Y %H:%M:%S GMT", &dest) == NULL) {
        return 0;
    }
    return timegm(&dest);
}

void c_format_http_time(time_t src, char* dest) {
    struct tm t;
    gmtime_r(&src, &t);
    strftime(dest, 40, "%a, %d %b %Y %H:%M:%S GMT", &t);
}

void c_format_log_time(time_t src, char* dest) {
    struct tm t;
    localtime_r(&src, &t);
    strftime(dest, 40, "%d/%b/%Y:%H:%M:%S %z", &t);
}