Mercurial > sci
annotate scid/scid.c @ 66:5076be758687 0.1.0
misc: update before 0.1.0 release
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 20 Aug 2022 10:36:55 +0200 |
parents | 85c59fbf1407 |
children | 71cd8447e3a4 |
rev | line source |
---|---|
33
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
1 /* |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
2 * scid.c -- main scid file and configuration |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
3 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
4 * Copyright (c) 2021-2022 David Demelier <markand@malikania.fr> |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
5 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
9 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
17 */ |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
18 |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdio.h> |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include "db.h" |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include "log.h" |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include "scid.h" |
28
4c16bb25e4f1
scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
25 #include "theme.h" |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 struct scid scid = { |
66
5076be758687
misc: update before 0.1.0 release
David Demelier <markand@malikania.fr>
parents:
54
diff
changeset
|
28 .themedir = SHAREDIR "/sci/themes/bulma", |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 .dbpath = VARDIR "/db/sci/sci.db" |
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 |
54
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
32 static inline void |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
33 init_log(void) |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 { |
54
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
35 log_open("scid"); |
44
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
36 } |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
37 |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
38 static void |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
39 init_database(void) |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
40 { |
66
5076be758687
misc: update before 0.1.0 release
David Demelier <markand@malikania.fr>
parents:
54
diff
changeset
|
41 log_info("scid: opening database %s", scid.dbpath); |
5076be758687
misc: update before 0.1.0 release
David Demelier <markand@malikania.fr>
parents:
54
diff
changeset
|
42 |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 if (db_open(scid.dbpath) < 0) |
66
5076be758687
misc: update before 0.1.0 release
David Demelier <markand@malikania.fr>
parents:
54
diff
changeset
|
44 exit(1); |
44
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
45 |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
46 /* Retrieve or create the API key if not existing. */ |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
47 switch (db_key_get(scid.apikey, sizeof (scid.apikey))) { |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
48 case 0: |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
49 /* Not found, create immediately. */ |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
50 if (db_key_init(scid.apikey, sizeof (scid.apikey)) < 0) |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
51 log_die("scid: unable to insert key"); |
28
4c16bb25e4f1
scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
26
diff
changeset
|
52 |
44
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
53 break; |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
54 case -1: |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
55 log_die("scid: unable to retrieve API key in database"); |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
56 break; |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
57 default: |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
58 /* We already fetched it. */ |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
59 break; |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
60 } |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
61 } |
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
62 |
54
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
63 static inline void |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
64 init_theme(void) |
44
576f4b1ec79f
scid: implement API authentication
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
65 { |
54
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
66 theme_open(scid.themedir); |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
67 } |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
68 |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
69 void |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
70 scid_init(enum scid_init init) |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
71 { |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
72 if (init & SCID_INIT_LOG) |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
73 init_log(); |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
74 if (init & SCID_INIT_DATABASE) |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
75 init_database(); |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
76 if (init & SCID_INIT_THEME) |
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
77 init_theme(); |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 } |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 void |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 scid_finish(void) |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 { |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 db_finish(); |
54
85c59fbf1407
scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
84 theme_finish(); |
26
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 log_finish(); |
7e10cace67a3
scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 } |