Mercurial > sci
annotate scid/page-static.c @ 57:bc617784ec97
scid: many fixes in pages
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Aug 2022 18:26:27 +0200 |
parents | 1d0ddf9e6efd |
children | 71cd8447e3a4 |
rev | line source |
---|---|
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * page-static.c -- page /static |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> |
33
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
29
diff
changeset
|
5 * |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
33
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
29
diff
changeset
|
9 * |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <sys/types.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <sys/stat.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <assert.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <limits.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <stdarg.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <stdint.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <stdio.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
29
695637f1d8a7
scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
27 #include "pageutil.h" |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 #include "scid.h" |
29
695637f1d8a7
scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
29 #include "util.h" |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 static void |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 get(struct kreq *req) |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 { |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 struct stat st; |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 char path[PATH_MAX]; |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 snprintf(path, sizeof (path), "%s%s", scid.themedir, req->fullpath); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 if (stat(path, &st) < 0) |
29
695637f1d8a7
scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
40 pageutil_status(req, KHTTP_404); |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 else { |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 khttp_head(req, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 khttp_head(req, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[req->mime]); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 khttp_head(req, kresps[KRESP_CONTENT_LENGTH], |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 "%llu", (unsigned long long)(st.st_size)); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 khttp_body(req); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 khttp_template(req, NULL, path); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 khttp_free(req); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 } |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 void |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 page_static(struct kreq *r) |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 assert(r); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 switch (r->method) { |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 case KMETHOD_GET: |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 get(r); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 break; |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 default: |
29
695637f1d8a7
scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
62 pageutil_status(r, KHTTP_400); |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 break; |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 } |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 } |