annotate scid/scid.c @ 60:3804a2ab60ec

misc: documentation improvements
author David Demelier <markand@malikania.fr>
date Thu, 18 Aug 2022 10:12:54 +0200
parents 85c59fbf1407
children 5076be758687
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 = {
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 .dbpath = VARDIR "/db/sci/sci.db"
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 };
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
54
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
31 static inline void
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
32 init_log(void)
26
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
54
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
34 log_open("scid");
44
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
35 }
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 static void
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
38 init_database(void)
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
39 {
26
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 if (db_open(scid.dbpath) < 0)
44
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
41 log_die("scid: unable to open database");
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
42
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
43 /* Retrieve or create the API key if not existing. */
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
44 switch (db_key_get(scid.apikey, sizeof (scid.apikey))) {
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
45 case 0:
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
46 /* Not found, create immediately. */
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
47 if (db_key_init(scid.apikey, sizeof (scid.apikey)) < 0)
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
48 log_die("scid: unable to insert key");
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
49
44
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
50 break;
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
51 case -1:
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
52 log_die("scid: unable to retrieve API key in database");
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 default:
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
55 /* We already fetched it. */
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 }
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
58 }
576f4b1ec79f scid: implement API authentication
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
59
54
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
60 static inline void
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
61 init_theme(void)
44
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 theme_open(scid.themedir);
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
64 }
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
65
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
66 void
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
67 scid_init(enum scid_init init)
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 if (init & SCID_INIT_LOG)
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
70 init_log();
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
71 if (init & SCID_INIT_DATABASE)
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
72 init_database();
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
73 if (init & SCID_INIT_THEME)
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
74 init_theme();
26
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 }
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 void
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 scid_finish(void)
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 db_finish();
54
85c59fbf1407 scid: add commands to retrieve API key
David Demelier <markand@malikania.fr>
parents: 44
diff changeset
81 theme_finish();
26
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 log_finish();
7e10cace67a3 scid: add basic mustache support
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 }