*
* $Id$
*
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
*/
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
((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);
}
* Function called for a stat command-line argument
* ********************************************************************** */
gboolean
-process_stat_cmd_arg(char *optarg)
+process_stat_cmd_arg(char *optstr)
{
GSList *entry;
stat_cmd_arg *sca;
for(entry=stat_cmd_arg_list;entry;entry=g_slist_next(entry)){
sca=entry->data;
- if(!strncmp(sca->cmd,optarg,strlen(sca->cmd))){
+ if(!strncmp(sca->cmd,optstr,strlen(sca->cmd))){
tr=g_malloc(sizeof (stat_requested));
tr->sca = sca;
- tr->arg=g_strdup(optarg);
+ tr->arg=g_strdup(optstr);
stats_requested=g_slist_append(stats_requested, tr);
return TRUE;
}
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);