aboutsummaryrefslogtreecommitdiffstats
path: root/src/dmon.c
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2013-04-13 23:31:06 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2013-04-14 00:19:01 +0200
commit694d28eb78dfad98e2e7ea670d93a153d8efd368 (patch)
tree485dc11d3644d9dadb5fd4d67c5ef8103be79623 /src/dmon.c
parent9907069f442c56c90b67accb2d8fbd046dfce6db (diff)
downloadcalcurse-694d28eb78dfad98e2e7ea670d93a153d8efd368.tar.gz
calcurse-694d28eb78dfad98e2e7ea670d93a153d8efd368.zip
Use tabs instead of spaces for indentation
This completes our switch to the Linux kernel coding style. Note that we still use deeply nested constructs at some places which need to be fixed up later. Converted using the `Lindent` script from the Linux kernel code base, along with some manual fixes. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'src/dmon.c')
-rw-r--r--src/dmon.c233
1 files changed, 120 insertions, 113 deletions
diff --git a/src/dmon.c b/src/dmon.c
index 0fd7962..d1ef1cd 100644
--- a/src/dmon.c
+++ b/src/dmon.c
@@ -66,124 +66,130 @@ static unsigned data_loaded;
static void dmon_sigs_hdlr(int sig)
{
- if (data_loaded)
- free_user_data();
+ if (data_loaded)
+ free_user_data();
- DMON_LOG(_("terminated at %s with signal %d\n"), nowstr(), sig);
+ DMON_LOG(_("terminated at %s with signal %d\n"), nowstr(), sig);
- if (unlink(path_dpid) != 0) {
- DMON_LOG(_("Could not remove daemon lock file: %s\n"), strerror(errno));
- exit(EXIT_FAILURE);
- }
+ if (unlink(path_dpid) != 0) {
+ DMON_LOG(_("Could not remove daemon lock file: %s\n"),
+ strerror(errno));
+ exit(EXIT_FAILURE);
+ }
- exit(EXIT_SUCCESS);
+ exit(EXIT_SUCCESS);
}
static unsigned daemonize(int status)
{
- int fd;
-
- /*
- * Operate in the background: Daemonizing.
- *
- * First need to fork in order to become a child of the init process,
- * once the father exits.
- */
- switch (fork()) {
- case -1: /* fork error */
- EXIT(_("Could not fork: %s\n"), strerror(errno));
- break;
- case 0: /* child */
- break;
- default: /* parent */
- exit(status);
- }
-
- /*
- * Process independency.
- *
- * Obtain a new process group and session in order to get detached from the
- * controlling terminal.
- */
- if (setsid() == -1) {
- DMON_LOG(_("Could not detach from the controlling terminal: %s\n"),
- strerror(errno));
- return 0;
- }
-
- /*
- * Change working directory to root directory,
- * to prevent filesystem unmounts.
- */
- if (chdir("/") == -1) {
- DMON_LOG(_("Could not change working directory: %s\n"), strerror(errno));
- return 0;
- }
-
- /* Redirect standard file descriptors to /dev/null. */
- if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- dup2(fd, STDIN_FILENO);
- dup2(fd, STDOUT_FILENO);
- dup2(fd, STDERR_FILENO);
- if (fd > 2)
- close(fd);
- }
-
- /* Write access for the owner only. */
- umask(0022);
-
- if (!sigs_set_hdlr(SIGINT, dmon_sigs_hdlr)
- || !sigs_set_hdlr(SIGTERM, dmon_sigs_hdlr)
- || !sigs_set_hdlr(SIGALRM, dmon_sigs_hdlr)
- || !sigs_set_hdlr(SIGQUIT, dmon_sigs_hdlr)
- || !sigs_set_hdlr(SIGCHLD, SIG_IGN))
- return 0;
-
- return 1;
+ int fd;
+
+ /*
+ * Operate in the background: Daemonizing.
+ *
+ * First need to fork in order to become a child of the init process,
+ * once the father exits.
+ */
+ switch (fork()) {
+ case -1: /* fork error */
+ EXIT(_("Could not fork: %s\n"), strerror(errno));
+ break;
+ case 0: /* child */
+ break;
+ default: /* parent */
+ exit(status);
+ }
+
+ /*
+ * Process independency.
+ *
+ * Obtain a new process group and session in order to get detached from the
+ * controlling terminal.
+ */
+ if (setsid() == -1) {
+ DMON_LOG(_("Could not detach from the controlling terminal: %s\n"),
+ strerror(errno));
+ return 0;
+ }
+
+ /*
+ * Change working directory to root directory,
+ * to prevent filesystem unmounts.
+ */
+ if (chdir("/") == -1) {
+ DMON_LOG(_("Could not change working directory: %s\n"),
+ strerror(errno));
+ return 0;
+ }
+
+ /* Redirect standard file descriptors to /dev/null. */
+ if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+ dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDERR_FILENO);
+ if (fd > 2)
+ close(fd);
+ }
+
+ /* Write access for the owner only. */
+ umask(0022);
+
+ if (!sigs_set_hdlr(SIGINT, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGTERM, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGALRM, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGQUIT, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGCHLD, SIG_IGN))
+ return 0;
+
+ return 1;
}
void dmon_start(int parent_exit_status)
{
- if (!daemonize(parent_exit_status))
- DMON_ABRT(_("Cannot daemonize, aborting\n"));
-
- if (!io_dump_pid(path_dpid))
- DMON_ABRT(_("Could not set lock file\n"));
-
- if (!io_file_exist(path_conf))
- DMON_ABRT(_("Could not access \"%s\": %s\n"), path_conf, strerror(errno));
- config_load();
-
- if (!io_file_exist(path_apts))
- DMON_ABRT(_("Could not access \"%s\": %s\n"), path_apts, strerror(errno));
- apoint_llist_init();
- recur_apoint_llist_init();
- event_llist_init();
- todo_init_list();
- io_load_app();
- data_loaded = 1;
-
- DMON_LOG(_("started at %s\n"), nowstr());
- for (;;) {
- int left;
-
- if (!notify_get_next_bkgd())
- DMON_ABRT(_("error loading next appointment\n"));
-
- left = notify_time_left();
- if (left > 0 && left < nbar.cntdwn && notify_needs_reminder()) {
- DMON_LOG(_("launching notification at %s for: \"%s\"\n"),
- nowstr(), notify_app_txt());
- if (!notify_launch_cmd())
- DMON_LOG(_("error while sending notification\n"));
- }
-
- DMON_LOG(ngettext("sleeping at %s for %d second\n",
- "sleeping at %s for %d seconds\n",
- DMON_SLEEP_TIME), nowstr(), DMON_SLEEP_TIME);
- psleep(DMON_SLEEP_TIME);
- DMON_LOG(_("awakened at %s\n"), nowstr());
- }
+ if (!daemonize(parent_exit_status))
+ DMON_ABRT(_("Cannot daemonize, aborting\n"));
+
+ if (!io_dump_pid(path_dpid))
+ DMON_ABRT(_("Could not set lock file\n"));
+
+ if (!io_file_exist(path_conf))
+ DMON_ABRT(_("Could not access \"%s\": %s\n"), path_conf,
+ strerror(errno));
+ config_load();
+
+ if (!io_file_exist(path_apts))
+ DMON_ABRT(_("Could not access \"%s\": %s\n"), path_apts,
+ strerror(errno));
+ apoint_llist_init();
+ recur_apoint_llist_init();
+ event_llist_init();
+ todo_init_list();
+ io_load_app();
+ data_loaded = 1;
+
+ DMON_LOG(_("started at %s\n"), nowstr());
+ for (;;) {
+ int left;
+
+ if (!notify_get_next_bkgd())
+ DMON_ABRT(_("error loading next appointment\n"));
+
+ left = notify_time_left();
+ if (left > 0 && left < nbar.cntdwn
+ && notify_needs_reminder()) {
+ DMON_LOG(_("launching notification at %s for: \"%s\"\n"),
+ nowstr(), notify_app_txt());
+ if (!notify_launch_cmd())
+ DMON_LOG(_("error while sending notification\n"));
+ }
+
+ DMON_LOG(ngettext("sleeping at %s for %d second\n",
+ "sleeping at %s for %d seconds\n",
+ DMON_SLEEP_TIME), nowstr(),
+ DMON_SLEEP_TIME);
+ psleep(DMON_SLEEP_TIME);
+ DMON_LOG(_("awakened at %s\n"), nowstr());
+ }
}
/*
@@ -192,12 +198,13 @@ void dmon_start(int parent_exit_status)
*/
void dmon_stop(void)
{
- int dpid;
+ int dpid;
- dpid = io_get_pid(path_dpid);
- if (!dpid)
- return;
+ dpid = io_get_pid(path_dpid);
+ if (!dpid)
+ return;
- if (kill((pid_t) dpid, SIGINT) < 0 && errno != ESRCH)
- EXIT(_("Could not stop calcurse daemon: %s\n"), strerror(errno));
+ if (kill((pid_t) dpid, SIGINT) < 0 && errno != ESRCH)
+ EXIT(_("Could not stop calcurse daemon: %s\n"),
+ strerror(errno));
}