From 2a8de9001eae01c0534fe60e72305931adfff4df Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 19 Feb 2013 11:32:59 +0000 Subject: [PATCH] fish: Use guestfs_event_to_string instead of guestfish-specific generated functions. --- fish/events.c | 21 ++++++++++++++++++++- fish/fish.h | 2 -- generator/fish.ml | 42 ------------------------------------------ 3 files changed, 20 insertions(+), 45 deletions(-) diff --git a/fish/events.c b/fish/events.c index b69a7ef91..1607e42c2 100644 --- a/fish/events.c +++ b/fish/events.c @@ -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) { diff --git a/fish/fish.h b/fish/fish.h index 617f95bed..cd0536a34 100644 --- a/fish/fish.h +++ b/fish/fish.h @@ -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 */ diff --git a/generator/fish.ml b/generator/fish.ml index f7661703b..326fd5e06 100644 --- a/generator/fish.ml +++ b/generator/fish.ml @@ -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) {