Просмотр исходного кода

history_add() now creates an etag.

default 3 лет назад
Родитель
Сommit
dae2e406d6
3 измененных файлов с 11 добавлено и 4 удалено
  1. 7 1
      data.c
  2. 2 2
      html.c
  3. 2 1
      snac.h

+ 7 - 1
data.c

@@ -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);
+        }
     }
 }
 

+ 2 - 2
html.c

@@ -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);
             }
         }
     }

+ 2 - 1
snac.h

@@ -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);