diff options
-rw-r--r-- | data.c | 8 | ||||
-rw-r--r-- | html.c | 4 | ||||
-rw-r--r-- | snac.h | 3 |
3 files changed, 11 insertions, 4 deletions
@@ -1677,7 +1677,8 @@ double history_mtime(snac *snac, const char *id) } -void history_add(snac *snac, const char *id, const char *content, int size) +void history_add(snac *snac, const char *id, const char *content, int size, + xs_str **etag) /* adds something to the history */ { xs *fn = _history_fn(snac, id); @@ -1686,6 +1687,11 @@ void history_add(snac *snac, const char *id, const char *content, int size) if (fn && (f = fopen(fn, "w")) != NULL) { fwrite(content, size, 1, f); fclose(f); + + if (etag) { + double tm = mtime(fn); + *etag = xs_fmt("W/\"snac-%.0lf\"", tm); + } } } @@ -1891,7 +1891,7 @@ int html_get_handler(const xs_dict *req, const char *q_path, status = 200; if (save) - history_add(&snac, h, *body, *b_size); + history_add(&snac, h, *body, *b_size, etag); } } else @@ -1922,7 +1922,7 @@ int html_get_handler(const xs_dict *req, const char *q_path, status = 200; if (save) - history_add(&snac, "timeline.html_", *body, *b_size); + history_add(&snac, "timeline.html_", *body, *b_size, etag); } } } @@ -149,7 +149,8 @@ void static_put_meta(snac *snac, const char *id, const char *str); xs_str *static_get_meta(snac *snac, const char *id); double history_mtime(snac *snac, const char *id); -void history_add(snac *snac, const char *id, const char *content, int size); +void history_add(snac *snac, const char *id, const char *content, int size, + xs_str **etag); int history_get(snac *snac, const char *id, xs_str **content, int *size, const char *inm, xs_str **etag); int history_del(snac *snac, const char *id); |