r += add_key(keys, "devices", DEVICES, 0);
r += add_key(keys, "format", FMT, 1);
r += add_key(keys, "wildcards", WILDCARDS, 0);
+ r += add_key(keys, "quit", QUIT, 0);
+ r += add_key(keys, "exit", QUIT, 0);
if (r) {
free_keys(keys);
add_handler(RESUME+MAP, NULL);
add_handler(REINSTATE+PATH, NULL);
add_handler(FAIL+PATH, NULL);
+ add_handler(QUIT, NULL);
return 0;
}
__DEVICES,
__FMT,
__WILDCARDS,
+ __QUIT,
};
#define LIST (1 << __LIST)
#define DEVICES (1 << __DEVICES)
#define FMT (1 << __FMT)
#define WILDCARDS (1 << __WILDCARDS)
+#define QUIT (1 << __QUIT)
#define INITIAL_REPLY_LEN 1000
};
struct handler {
- int fingerprint;
+ unsigned long fingerprint;
int (*fn)(void *, char **, int *, void *);
};
return show_devices(reply, len, vecs);
}
+
+int
+cli_quit (void * v, char ** reply, int * len, void * data)
+{
+ return 0;
+}
int cli_resume(void * v, char ** reply, int * len, void * data);
int cli_reinstate(void * v, char ** reply, int * len, void * data);
int cli_fail(void * v, char ** reply, int * len, void * data);
+int cli_quit(void * v, char ** reply, int * len, void * data);
set_handler_callback(RESUME+MAP, cli_resume);
set_handler_callback(REINSTATE+PATH, cli_reinstate);
set_handler_callback(FAIL+PATH, cli_fail);
+ set_handler_callback(QUIT, cli_quit);
uxsock_listen(&uxsock_trigger, ap);
free(line);
continue;
}
+ if (!strncmp(line, "exit", 4) && llen == 4)
+ break;
+ if (!strncmp(line, "quit", 4) && llen == 4)
+ break;
if (send_packet(fd, line, llen + 1) != 0) break;
if (recv_packet(fd, &reply, &len) != 0) break;