fish: Use guestfs_event_to_string instead of guestfish-specific generated functions.

This commit is contained in:
Richard W.M. Jones
2013-02-19 11:32:59 +00:00
parent 5c513060b1
commit 2a8de9001e
3 changed files with 20 additions and 45 deletions

View File

@@ -112,11 +112,15 @@ do_event_handler (guestfs_h *g,
}
if (pid == 0) { /* Child process. */
char *str;
shell = getenv ("SHELL");
if (!shell)
shell = "/bin/sh";
setenv ("EVENT", event_name_of_event_bitmask (event), 1);
str = guestfs_event_to_string (event);
setenv ("EVENT", str, 1);
free (str);
/* Construct the command and arguments. */
i = 0;
@@ -244,6 +248,21 @@ run_delete_event (const char *cmd, size_t argc, char *argv[])
return 0;
}
static void
print_event_set (uint64_t event_bitmask, FILE *fp)
{
if (event_bitmask == GUESTFS_EVENT_ALL)
fputs ("*", fp);
else {
CLEANUP_FREE char *str = guestfs_event_to_string (event_bitmask);
if (!str) {
perror ("guestfs_event_to_string");
exit (EXIT_FAILURE);
}
fputs (str, fp);
}
}
static bool
list_event (void *x, void *data)
{

View File

@@ -71,8 +71,6 @@ extern void init_event_handlers (void);
extern void free_event_handlers (void);
/* in event-names.c (auto-generated) */
extern const char *event_name_of_event_bitmask (uint64_t);
extern void print_event_set (uint64_t, FILE *);
extern int event_bitmask_of_event_set (const char *arg, uint64_t *);
/* in alloc.c */

View File

@@ -1000,48 +1000,6 @@ and generate_fish_event_names () =
#include \"fish.h\"
const char *
event_name_of_event_bitmask (uint64_t ev)
{
switch (ev) {
";
List.iter (
fun (name, _) ->
pr " case GUESTFS_EVENT_%s:\n" (String.uppercase name);
pr " return \"%s\";\n" name
) events;
pr " default:
abort (); /* should not happen */
}
}
void
print_event_set (uint64_t event_bitmask, FILE *fp)
{
int comma = 0;
if (event_bitmask == GUESTFS_EVENT_ALL) {
fputs (\"*\", fp);
return;
}
";
iteri (
fun i (name, _) ->
pr " if (event_bitmask & GUESTFS_EVENT_%s) {\n" (String.uppercase name);
if i > 0 then
pr " if (comma) fputc (',', fp);\n";
pr " comma = 1;\n";
pr " fputs (\"%s\", fp);\n" name;
pr " }\n"
) events;
pr "\
}
int
event_bitmask_of_event_set (const char *arg, uint64_t *eventset_r)
{