diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-11 13:05:24 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-11 13:05:24 +0000 |
commit | fcf7b3789cec5595880d27e0109387e2d8733b38 (patch) | |
tree | 04149b75555afc2d39791e321970f76b1bcaca38 /epan | |
parent | ca970e37571a3a39d6fc257c899ffacc25222269 (diff) |
add an userdata argument to register_stat_cmd_arg() and its callback to use the callback for multiple registrations.
svn path=/trunk/; revision=17252
Diffstat (limited to 'epan')
-rw-r--r-- | epan/stat_cmd_args.c | 9 | ||||
-rw-r--r-- | epan/stat_cmd_args.h | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/epan/stat_cmd_args.c b/epan/stat_cmd_args.c index 7499228b46..e116032095 100644 --- a/epan/stat_cmd_args.c +++ b/epan/stat_cmd_args.c @@ -39,8 +39,10 @@ */ typedef struct _stat_cmd_arg { const char *cmd; - void (*func)(const char *arg); + void (*func)(const char *arg, void* userdata); + void* userdata; } stat_cmd_arg; + static GSList *stat_cmd_arg_list=NULL; /* structure to keep track of what stats have been specified on the @@ -63,13 +65,14 @@ sort_by_name(gconstpointer a, gconstpointer b) ((const stat_cmd_arg *)b)->cmd); } void -register_stat_cmd_arg(const char *cmd, void (*func)(const char *arg)) +register_stat_cmd_arg(const char *cmd, void (*func)(const char*, void*),void* userdata) { stat_cmd_arg *newsca; newsca=g_malloc(sizeof(stat_cmd_arg)); newsca->cmd=cmd; newsca->func=func; + newsca->userdata=userdata; stat_cmd_arg_list=g_slist_insert_sorted(stat_cmd_arg_list, newsca, sort_by_name); } @@ -122,7 +125,7 @@ start_requested_stats(void) while(stats_requested){ sr=stats_requested->data; - (*sr->sca->func)(sr->arg); + (*sr->sca->func)(sr->arg,sr->sca->userdata); g_free(sr->arg); g_free(sr); stats_requested=g_slist_remove(stats_requested, sr); diff --git a/epan/stat_cmd_args.h b/epan/stat_cmd_args.h index d0314f5405..20297eb4dd 100644 --- a/epan/stat_cmd_args.h +++ b/epan/stat_cmd_args.h @@ -27,7 +27,7 @@ #define _STAT_H_ extern void register_stat_cmd_arg(const char *cmd, - void (*func)(const char *arg)); + void (*func)(const char *arg,void* userdata), void* userdata); extern gboolean process_stat_cmd_arg(char *optarg); extern void list_stat_cmd_args(void); extern void start_requested_stats(void); |