1f8cc9fb9SGlenn Strauss /* 2f8cc9fb9SGlenn Strauss * http_date - HTTP date manipulation 3f8cc9fb9SGlenn Strauss * 4f8cc9fb9SGlenn Strauss * Copyright(c) 2015 Glenn Strauss gstrauss()gluelogic.com All rights reserved 5f8cc9fb9SGlenn Strauss * License: BSD 3-clause (same as lighttpd) 6f8cc9fb9SGlenn Strauss */ 7f8cc9fb9SGlenn Strauss #ifndef INCLUDED_HTTP_DATE_H 8f8cc9fb9SGlenn Strauss #define INCLUDED_HTTP_DATE_H 9f8cc9fb9SGlenn Strauss #include "first.h" 10f8cc9fb9SGlenn Strauss 11a0b615acSGlenn Strauss #include "sys-time.h" 12a0b615acSGlenn Strauss 13f8cc9fb9SGlenn Strauss 14f8cc9fb9SGlenn Strauss #ifdef __cplusplus 15f8cc9fb9SGlenn Strauss extern "C" { 16f8cc9fb9SGlenn Strauss #endif 17f8cc9fb9SGlenn Strauss 18f8cc9fb9SGlenn Strauss 19f8cc9fb9SGlenn Strauss #define HTTP_DATE_SZ 30 /* (IMF-fixdate is 29 chars + '\0') */ 20f8cc9fb9SGlenn Strauss 21*309c1693SGlenn Strauss uint32_t http_date_time_to_str (char *s, size_t sz, unix_time64_t t); 22f8cc9fb9SGlenn Strauss 23*309c1693SGlenn Strauss int http_date_if_modified_since (const char *ifmod, uint32_t ifmodlen, unix_time64_t lmtime); 24f8cc9fb9SGlenn Strauss 253a568c63SGlenn Strauss /*(convenience macro to append IMF-fixdate to (buffer *))*/ 263a568c63SGlenn Strauss #define http_date_time_append(b, t) \ 273a568c63SGlenn Strauss do { \ 283a568c63SGlenn Strauss if (!http_date_time_to_str(buffer_extend((b), HTTP_DATE_SZ-1), \ 293a568c63SGlenn Strauss HTTP_DATE_SZ, (t))) \ 303a568c63SGlenn Strauss buffer_truncate((b), (b)->used - HTTP_DATE_SZ); /*(truncate if err)*/ \ 313a568c63SGlenn Strauss } while (0) 32f8cc9fb9SGlenn Strauss 33f8cc9fb9SGlenn Strauss #ifdef __cplusplus 34f8cc9fb9SGlenn Strauss } 35f8cc9fb9SGlenn Strauss #endif 36f8cc9fb9SGlenn Strauss 37f8cc9fb9SGlenn Strauss 38f8cc9fb9SGlenn Strauss #endif 39