| 43 | | static SERVER_IDLE_REC * |
| 44 | | server_idle_create(const char *cmd, const char *redirect_cmd, int count, |
| 45 | | const char *arg, int remote, const char *failure_signal, |
| 46 | | va_list va) |
| 47 | | { |
| 48 | | SERVER_IDLE_REC *rec; |
| 49 | | const char *event, *signal; |
| 50 | | |
| 51 | | g_return_val_if_fail(cmd != NULL, FALSE);
|
| 52 | | |
| 53 | | rec = g_new0(SERVER_IDLE_REC, 1);
|
| 54 | | rec->cmd = g_strdup(cmd); |
| 55 | | rec->arg = g_strdup(arg); |
| 56 | | rec->tag = ++idlepos; |
| 57 | | |
| 58 | | rec->redirect_cmd = g_strdup(redirect_cmd); |
| 59 | | rec->count = count; |
| 60 | | rec->remote = remote; |
| 61 | | rec->failure_signal = g_strdup(failure_signal); |
| 62 | | |
| 63 | | while ((event = va_arg(va, const char *)) != NULL) {
|
| 64 | | signal = va_arg(va, const char *);
|
| 65 | | if (signal == NULL) {
|
| 66 | | g_warning("server_idle_create(%s): "
|
| 67 | | "signal not specified for event", |
| 68 | | redirect_cmd); |
| 69 | | break; |
| 70 | | } |
| 71 | | |
| 72 | | rec->redirects = |
| 73 | | g_slist_append(rec->redirects, g_strdup(event)); |
| 74 | | rec->redirects = |
| 75 | | g_slist_append(rec->redirects, g_strdup(signal)); |
| 76 | | } |
| 77 | | |
| 78 | | return rec; |
| 79 | | } |