diff options
Diffstat (limited to 'src/notify.c')
-rwxr-xr-x | src/notify.c | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/src/notify.c b/src/notify.c index 1d7fb42..e69317e 100755 --- a/src/notify.c +++ b/src/notify.c @@ -1,4 +1,4 @@ -/* $calcurse: notify.c,v 1.15 2007/07/21 19:36:45 culot Exp $ */ +/* $calcurse: notify.c,v 1.16 2007/07/28 13:11:42 culot Exp $ */ /* * Calcurse - text-based organizer @@ -24,22 +24,15 @@ * */ -#include <ncurses.h> -#include <pthread.h> #include <time.h> #include <stdlib.h> -#include <stdio.h> #include <string.h> #include <unistd.h> #include "i18n.h" #include "utils.h" #include "custom.h" -#include "vars.h" -#include "apoint.h" #include "notify.h" -#include "recur.h" -#include "wins.h" static struct notify_vars_s *notify = NULL; static struct notify_app_s *notify_app = NULL; @@ -78,6 +71,14 @@ notify_init_vars(void) nbar->shell = "/bin/sh"; } +/* Extract the appointment file name from the complete file path. */ +static void +extract_aptsfile(void) +{ + notify->apts_file = strrchr(path_apts, '/'); + notify->apts_file++; +} + /* * Create the notification bar, by initializing all the variables and * creating the notification window (l is the number of lines, c the @@ -93,7 +94,7 @@ notify_init_bar(window_t *win) pthread_mutex_init(¬ify_app->mutex, NULL); notify_app->got_app = 0; notify->win = newwin(win->h, win->w, win->y, win->x); - notify_extract_aptsfile(); + extract_aptsfile(); } /* Stop the notify-bar main thread. */ @@ -115,6 +116,26 @@ notify_reinit_bar(int l, int c, int y, int x) notify->win = newwin(l, c, y, x); } +/* Launch user defined command as a notification. */ +static void +launch_cmd(char *cmd, char *shell) +{ + int pid; + + pid = fork(); + + if (pid < 0) { + fputs(_("FATAL ERROR in launch_cmd: could not fork\n"), + stderr); + exit(EXIT_FAILURE); + } else if (pid == 0) { /* Child: launch user defined command */ + if (execlp(shell, shell, "-c", cmd, (char *)NULL) < 0) + fputs(_("FATAL ERROR in launch_cmd: could not " + "launch user command\n"), stderr); + exit(EXIT_FAILURE); + } +} + /* * Update the notification bar. This is useful when changing color theme * for example. @@ -180,7 +201,7 @@ notify_update_bar(void) if (blinking && !(notify_app->state & APOINT_NOTIFIED)) { notify_app->state |= APOINT_NOTIFIED; - notify_launch_cmd(nbar->cmd, nbar->shell); + launch_cmd(nbar->cmd, nbar->shell); } pthread_mutex_unlock(&nbar->mutex); } else { @@ -200,14 +221,6 @@ notify_update_bar(void) pthread_mutex_unlock(¬ify->mutex); } -/* Extract the appointment file name from the complete file path. */ -void -notify_extract_aptsfile(void) -{ - notify->apts_file = strrchr(path_apts, '/'); - notify->apts_file++; -} - /* Update the notication bar content */ static void * notify_main_thread(void *arg) @@ -380,26 +393,6 @@ notify_same_recur_item(recur_apoint_llist_node_t *i) return same; } -/* Launch user defined command as a notification. */ -void -notify_launch_cmd(char *cmd, char *shell) -{ - int pid; - - pid = fork(); - - if (pid < 0) { - fputs(_("FATAL ERROR in notify_launch_cmd: could not fork\n"), - stderr); - exit(EXIT_FAILURE); - } else if (pid == 0) { /* Child: launch user defined command */ - if (execlp(shell, shell, "-c", cmd, (char *)NULL) < 0) - fputs(_("FATAL ERROR in notify_launch_cmd: could not " - "launch user command\n"), stderr); - exit(EXIT_FAILURE); - } -} - /* Launch the notify-bar main thread. */ void notify_start_main_thread(void) |