/****** shepherd/shepconf/shepconf_has_notify_signal() ************************ * NAME * shepconf_has_notify_signal() -- Do we have a notification signal * * SYNOPSIS * int shepconf_has_notify_signal(char *notify_name, int *signal) * * FUNCTION * This function checks if the notification mechanism is enabled. * In this case the function will retuen 'true' and it will * return the default signal or the user defined signal for * the given "notify_name". * * INPUTS * char *notify_name - "notify_susp" or "notify_kill" * int *signal - signal id * * RESULT * int - true or false *******************************************************************************/ int shepconf_has_notify_signal(const char *notify_name, int *signal) { const char *notify_array[] = { "notify_susp", "notify_kill", NULL }; int signal_array[] = { SIGUSR1, SIGUSR2, 0 }; dstring param_name = DSTRING_INIT; char *conf_type = NULL; int conf_id; int ret = 0; /* * There are three possibilities: * a) There is a user defined signal which should be used * b) Default signal should be used * c) Notification mechanism is disabled */ sge_dstring_sprintf(¶m_name, "%s%s", notify_name, "_type"); conf_type = search_conf_val(sge_dstring_get_string(¶m_name)); sge_dstring_free(¶m_name); if (conf_type != NULL) { conf_id = atol(conf_type); } else { conf_id = 1; /* Default signal should be used */ } if (conf_id == 0) { char *conf_signal = search_conf_val(notify_name); if (conf_signal != NULL) { *signal = sge_sys_str2signal(conf_signal); ret = 1; } } else if (conf_id == 1) { int i; for (i = 0; notify_array[i] != NULL; i++) { if (!strcmp(notify_array[i], notify_name)) { break; } } *signal = signal_array[i]; ret = 1; } else { *signal = 0; ret = 0; } return ret; }
int shepherd_sys_str2signal(char *override_signal) { if (!isdigit(override_signal[0])) override_signal = &override_signal[3]; return sge_sys_str2signal(override_signal); }