Set environment variables for scripts
This commit is contained in:
parent
293d71264e
commit
0d5cbfcfce
@ -133,6 +133,26 @@ void notification_run_script(struct notification *n)
|
|||||||
if (pid2) {
|
if (pid2) {
|
||||||
exit(0);
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
|
// Set environment variables
|
||||||
|
gchar *n_id_str = g_strdup_printf("%i", n->id);
|
||||||
|
gchar *n_progress_str = g_strdup_printf("%i", n->progress);
|
||||||
|
gchar *n_timeout_str = g_strdup_printf("%li", n->timeout/1000);
|
||||||
|
gchar *n_timestamp_str = g_strdup_printf("%li", n->timestamp / 1000);
|
||||||
|
char* icon_path = get_path_from_icon_name(icon);
|
||||||
|
safe_setenv("DUNST_APP_NAME", appname);
|
||||||
|
safe_setenv("DUNST_SUMMARY", summary);
|
||||||
|
safe_setenv("DUNST_BODY", body);
|
||||||
|
safe_setenv("DUNST_ICON_PATH", icon_path);
|
||||||
|
safe_setenv("DUNST_URGENCY", urgency);
|
||||||
|
safe_setenv("DUNST_ID", n_id_str);
|
||||||
|
safe_setenv("DUNST_PROGRESS", n_progress_str);
|
||||||
|
safe_setenv("DUNST_CATEGORY", n->category);
|
||||||
|
safe_setenv("DUNST_STACK_TAG", n->stack_tag);
|
||||||
|
safe_setenv("DUNST_URLS", n->urls);
|
||||||
|
safe_setenv("DUNST_TIMEOUT", n_timeout_str);
|
||||||
|
safe_setenv("DUNST_TIMESTAMP", n_timestamp_str);
|
||||||
|
safe_setenv("DUNST_STACK_TAG", n->stack_tag);
|
||||||
|
|
||||||
int ret = execlp(script,
|
int ret = execlp(script,
|
||||||
script,
|
script,
|
||||||
appname,
|
appname,
|
||||||
@ -142,7 +162,7 @@ void notification_run_script(struct notification *n)
|
|||||||
urgency,
|
urgency,
|
||||||
(char *)NULL);
|
(char *)NULL);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
LOG_W("Unable to run script: %s", strerror(errno));
|
LOG_W("Unable to run script %s: %s", n->scripts[i], strerror(errno));
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,9 @@ struct notification {
|
|||||||
char *iconname; /**< plain icon information (may be a path or just a name)
|
char *iconname; /**< plain icon information (may be a path or just a name)
|
||||||
Use this to compare the icon name with rules.*/
|
Use this to compare the icon name with rules.*/
|
||||||
|
|
||||||
gint64 start; /**< begin of current display */
|
gint64 start; /**< begin of current display (in milliseconds) */
|
||||||
gint64 timestamp; /**< arrival time */
|
gint64 timestamp; /**< arrival time (in milliseconds) */
|
||||||
gint64 timeout; /**< time to display */
|
gint64 timeout; /**< time to display (in milliseconds) */
|
||||||
int locked; /**< If non-zero the notification is locked **/
|
int locked; /**< If non-zero the notification is locked **/
|
||||||
|
|
||||||
GHashTable *actions;
|
GHashTable *actions;
|
||||||
|
12
src/utils.c
12
src/utils.c
@ -247,4 +247,16 @@ const char *user_get_home(void)
|
|||||||
return home_directory;
|
return home_directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool safe_setenv(const char* key, const char* value){
|
||||||
|
if (!key)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!value)
|
||||||
|
setenv(key, "", 1);
|
||||||
|
else
|
||||||
|
setenv(key, value, 1);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* vim: set ft=c tabstop=8 shiftwidth=8 expandtab textwidth=0: */
|
/* vim: set ft=c tabstop=8 shiftwidth=8 expandtab textwidth=0: */
|
||||||
|
12
src/utils.h
12
src/utils.h
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
//! Test if a string is NULL or empty
|
//! Test if a string is NULL or empty
|
||||||
#define STR_EMPTY(s) (!s || (*s == '\0'))
|
#define STR_EMPTY(s) (!s || (*s == '\0'))
|
||||||
@ -137,5 +138,16 @@ gint64 time_monotonic_now(void);
|
|||||||
*/
|
*/
|
||||||
const char *user_get_home(void);
|
const char *user_get_home(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to set an environment variable safely. If an environment variable with
|
||||||
|
* name `key` exists, it will be overwritten.
|
||||||
|
* If `value` is null, `key` will be set to an empty string.
|
||||||
|
*
|
||||||
|
* @param key (nullable) The environment variable to change
|
||||||
|
* @param value (nullable) The value to change it to.
|
||||||
|
* @returns: A bool that is true when it succeeds
|
||||||
|
*/
|
||||||
|
bool safe_setenv(const char* key, const char* value);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* vim: set ft=c tabstop=8 shiftwidth=8 expandtab textwidth=0: */
|
/* vim: set ft=c tabstop=8 shiftwidth=8 expandtab textwidth=0: */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user