Sketched some ideas for socket I/O
[tlb/tomd.git] / src / main.c
1 /* Copyright (C) 2018 Thomas Balzer */
2
3 /* This file is part of tomd. */
4
5 /* tomd is free software: you can redistribute it and/or modify */
6 /* it under the terms of the GNU General Public License as published by */
7 /* the Free Software Foundation, either version 3 of the License, or */
8 /* (at your option) any later version. */
9
10 /* tomd is distributed in the hope that it will be useful, */
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
13 /* GNU General Public License for more details. */
14
15 /* You should have received a copy of the GNU General Public License */
16 /* along with tomd. If not, see <http://www.gnu.org/licenses/>. */
17
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <unistd.h>
21
22 static void header(void)
23 {
24 printf("Tom's Daemon, Copyright (C) 2018 Thomas Balzer\n");
25 printf("GPL v3 or later license.\n");
26 }
27
28 static void init(void)
29 {
30 /* TODO */
31 }
32
33 /* These defines are here to improve the local readability */
34 #define CHDIR 0
35 #define DONT_CHDIR 1
36 #define CLOSE_PIPES 0
37 #define DONT_CLOSE_PIPES 1
38
39 static void daemonize(void)
40 {
41 /* daemon is in unistd. */
42 /* arg1 - 0 changes dir to / */
43 /* arg2 - 0 closes all pipes (/dev/null) */
44 /* WARNING > THIS BEHAVIOR IS SILENT AND EASY TO MISPLACE THE
45 PROCESS */
46 daemon(DONT_CHDIR, CLOSE_PIPES);
47 }
48
49 static void run(void)
50 {
51 /* listen on socket, respond to requests. */
52 /* perform all registered 'tick' operations */
53 }
54
55 int main(int argc, char **argv)
56 {
57 header();
58 init();
59 daemonize();
60 run();
61
62 return EXIT_SUCCESS;
63 }