annotate imgpasterd.c @ 1:874f6b582761

imgpasterd: fix default path
author David Demelier <markand@malikania.fr>
date Wed, 25 Nov 2020 21:44:17 +0100
parents f41e1b48510d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * imgpasterd.c -- main imgpasterd(8) file
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <stdio.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <stdlib.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <stdnoreturn.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <time.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <unistd.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include "config.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include "database.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include "http.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include "log.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include "util.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 static void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 defaults(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 snprintf(config.databasepath, sizeof (config.databasepath),
1
874f6b582761 imgpasterd: fix default path
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
35 "%s", VARDIR "/imgpaster/imgpaster.db");
0
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 static void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 init(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 srand(time(NULL));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 log_open();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 if (!config.databasepath[0])
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 die("abort: no database specified\n");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 if (!database_open(config.databasepath))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 die("abort: could not open database\n");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 static void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 quit(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 database_finish();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 log_finish();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 static noreturn void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 usage(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 fprintf(stderr, "usage: paster [-fqv] [-d database-path] [-t theme-directory]\n");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 exit(1);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 int
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 main(int argc, char **argv)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 const char *value;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 int opt;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 void (*run)(void) = &(http_cgi_run);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 defaults();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 /* Seek environment variables before options. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 if ((value = getenv("IMGPASTERD_DATABASE_PATH")))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 snprintf(config.databasepath, sizeof (config.databasepath), "%s", value);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 if ((value = getenv("IMGPASTERD_THEME_DIR")))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 snprintf(config.themedir, sizeof (config.themedir), "%s", value);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 if ((value = getenv("IMGPASTERD_VERBOSITY")))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 config.verbosity = atoi(value);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 while ((opt = getopt(argc, argv, "d:ft:qv")) != -1) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 switch (opt) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 case 'd':
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 snprintf(config.databasepath, sizeof (config.databasepath), "%s", optarg);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 case 't':
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 snprintf(config.themedir, sizeof (config.themedir), "%s", optarg);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 case 'f':
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 run = &(http_fcgi_run);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 case 'v':
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 config.verbosity++;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 case 'q':
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 config.verbosity = 0;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 default:
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 usage();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 break;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 init();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 run();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 quit();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }