more
[metze/wireshark/wip.git] / conditions.c
index ac7963cc7d79e6aa9431061560e7f23ee6bac81a..35a24bc6fb3caf08e22c9f3fc7f6fccd93a3041e 100644 (file)
@@ -1,76 +1,65 @@
 /* conditions.c
  * Implementation for condition handler.
  *
- * $Id$
- *
  * 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
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
-#include "config.h"
+#include <config.h>
 
 #include <string.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include "conditions.h"
+#include "ws_attributes.h"
 
 /* container for condition classes */
-static GHashTableclasses = NULL;
+static GHashTable *classes = NULL;
 
 /* condition data structure declaration */
 struct condition{
-  charclass_id;
-  voiduser_data;
-  _cnd_eval eval_func;
-  _cnd_reset reset_func;
+  char       *class_id;
+  void       *user_data;
+  _cnd_eval   eval_func;
+  _cnd_reset  reset_func;
 };
 
 /* structure used to store class functions in GHashTable */
 typedef struct _cnd_class{
   _cnd_constr constr_func;
-  _cnd_destr destr_func;
-  _cnd_eval eval_func;
-  _cnd_reset reset_func;
+  _cnd_destr  destr_func;
+  _cnd_eval   eval_func;
+  _cnd_reset  reset_func;
 } _cnd_class;
 
 /* helper function prototypes */
 static void _cnd_init(void);
 static void _cnd_find_hash_key_for_class_id(gpointer, gpointer, gpointer);
 
-condition* cnd_new(const char* class_id, ...){
-  va_list ap;
-  condition *cnd = NULL, *cnd_ref = NULL;
-  _cnd_class *cls = NULL;
-  char* id = NULL;
+condition *cnd_new(const char *class_id, ...) {
+  va_list     ap;
+  condition  *cnd     = NULL;
+  condition  *cnd_ref = NULL;
+  _cnd_class *cls     = NULL;
+  char       *id      = NULL;
 
   /* check if hash table is already initialized */
   _cnd_init();
 
   /* get class structure for this id */
-  if((cls = (_cnd_class*)g_hash_table_lookup(classes, class_id)) == NULL) {
+  if ((cls = (_cnd_class *)g_hash_table_lookup(classes, class_id)) == NULL) {
     g_warning("cnd_new: Couldn't find class ID \"%s\"", class_id);
     return NULL;
   }
 
   /* initialize the basic structure */
-  if((cnd_ref = (condition*)g_malloc(sizeof(condition))) == NULL) return NULL;
-  cnd_ref->user_data = NULL;
-  cnd_ref->eval_func = cls->eval_func;
+  if ((cnd_ref = (condition *)g_malloc(sizeof(condition))) == NULL)
+    return NULL;
+  cnd_ref->user_data  = NULL;
+  cnd_ref->eval_func  = cls->eval_func;
   cnd_ref->reset_func = cls->reset_func;
 
   cnd_ref->class_id = g_strdup(class_id);
@@ -81,37 +70,40 @@ condition* cnd_new(const char* class_id, ...){
   va_end(ap);
 
   /* check for successful construction */
-  if(cnd == NULL){
+  if (cnd == NULL) {
     g_free(cnd_ref);
     g_free(id);
   }
   return cnd;
 } /* END cnd_new() */
 
-void cnd_delete(condition *cnd){
+void cnd_delete(condition *cnd) {
   _cnd_class *cls = NULL;
   const char* class_id;
   /* check for valid pointer */
-  if(cnd == NULL) return;
+  if (cnd == NULL)
+    return;
 
   class_id = cnd->class_id;
   /* check if hash table is already initialized */
   _cnd_init();
   /* get the condition class */
-  cls = (_cnd_class*)g_hash_table_lookup(classes, class_id);
+  cls = (_cnd_class *)g_hash_table_lookup(classes, class_id);
   /* call class specific destructor */
-  if(cls != NULL) (cls->destr_func)(cnd);
+  if (cls != NULL)
+    (cls->destr_func)(cnd);
   /* free memory */
   g_free(cnd->class_id);
   /* free basic structure */
   g_free(cnd);
 } /* END cnd_delete() */
 
-gboolean cnd_eval(condition *cnd, ...){
+gboolean cnd_eval(condition *cnd, ...) {
   va_list ap;
   gboolean ret_val = FALSE;
   /* validate cnd */
-  if(cnd == NULL) return FALSE;
+  if (cnd == NULL)
+    return FALSE;
   /* call specific handler */
   va_start(ap, cnd);
   ret_val = (cnd->eval_func)(cnd, ap);
@@ -119,33 +111,34 @@ gboolean cnd_eval(condition *cnd, ...){
   return ret_val;
 } /*  END cnd_eval() */
 
-void cnd_reset(condition *cnd){
-  if(cnd != NULL) (cnd->reset_func)(cnd);
+void cnd_reset(condition *cnd) {
+  if (cnd != NULL)
+    (cnd->reset_func)(cnd);
 } /* END cnd_reset() */
 
-void* cnd_get_user_data(condition *cnd){
+void* cnd_get_user_data(condition *cnd) {
   return cnd->user_data;
 } /* END cnd_get_user_data() */
 
-void cnd_set_user_data(condition *cnd, void* user_data){
+void cnd_set_user_data(condition *cnd, void *user_data) {
   cnd->user_data = user_data;
 } /* END cnd_set_user_data() */
 
-gboolean cnd_register_class(const charclass_id,
+gboolean cnd_register_class(const char *class_id,
                             _cnd_constr constr_func,
-                            _cnd_destr destr_func,
-                            _cnd_eval eval_func,
-                            _cnd_reset reset_func){
-  charkey = NULL;
+                            _cnd_destr  destr_func,
+                            _cnd_eval   eval_func,
+                            _cnd_reset  reset_func) {
+  char *key = NULL;
   _cnd_class *cls = NULL;
   /* check for valid parameters */
-  if((constr_func == NULL) || (destr_func == NULL) ||
-     (eval_func == NULL) || (reset_func == NULL) || (class_id == NULL))
+  if ((constr_func == NULL) || (destr_func == NULL) ||
+      (eval_func == NULL) || (reset_func == NULL) || (class_id == NULL))
     return FALSE;
   /* check if hash table is already initialized */
   _cnd_init();
   /* check for unique class id */
-  if(g_hash_table_lookup(classes, class_id) != NULL) {
+  if (g_hash_table_lookup(classes, class_id) != NULL) {
     g_warning("cnd_register_class: Duplicate class ID \"%s\"", class_id);
     return FALSE;
   }
@@ -153,21 +146,21 @@ gboolean cnd_register_class(const char* class_id,
      table. Allocate memory and copy the class id which we use as key. */
   key = g_strdup(class_id);
   /* initialize class structure */
-  if((cls = (_cnd_class*)g_malloc(sizeof(_cnd_class))) == NULL){
+  if ((cls = (_cnd_class*)g_malloc(sizeof(_cnd_class))) == NULL) {
     g_free(key);
     return FALSE;
   }
   cls->constr_func = constr_func;
-  cls->destr_func = destr_func;
-  cls->eval_func = eval_func;
-  cls->reset_func = reset_func;
+  cls->destr_func  = destr_func;
+  cls->eval_func   = eval_func;
+  cls->reset_func  = reset_func;
   /* insert new class */
   g_hash_table_insert(classes, key, cls);
   return TRUE;
 } /* END cnd_register_class() */
 
-static charpkey = NULL;
-void cnd_unregister_class(const char* class_id){
+static char *pkey = NULL;
+void cnd_unregister_class(const char* class_id) {
   const char *key = (const char*)class_id;
   _cnd_class *cls = NULL;
   /* check if hash table is already initialized */
@@ -190,8 +183,9 @@ void cnd_unregister_class(const char* class_id){
 /*
  * Initialize hash table.
  */
-static void _cnd_init(void){
-  if(classes != NULL) return;
+static void _cnd_init(void) {
+  if (classes != NULL)
+    return;
   /* create hash table, we use strings as keys */
   classes = g_hash_table_new(g_str_hash, g_str_equal);
 } /* END _cnd_init() */
@@ -205,10 +199,11 @@ static void _cnd_init(void){
  */
 void _cnd_find_hash_key_for_class_id(gpointer key,
                                      gpointer value _U_,
-                                     gpointer user_data){
-  char* class_id = (char*)user_data;
-  char* key_value = (char*)key;
-  if(strcmp(class_id, key_value) == 0) pkey = key_value;
+                                     gpointer user_data) {
+  char *class_id  = (char *)user_data;
+  char *key_value = (char *)key;
+  if (strcmp(class_id, key_value) == 0)
+    pkey = key_value;
 } /* END _cnd_find_hash_key_for_class_id() */
 
 /*