]> xenbits.xensource.com Git - people/dariof/libvirt.git/commitdiff
Introduce virTypedParamsCheck internal API
authorJiri Denemark <jdenemar@redhat.com>
Mon, 6 May 2013 10:04:06 +0000 (12:04 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 24 Jun 2013 22:38:24 +0000 (00:38 +0200)
This API is useful for checking whether only a specific subset of
supported typed parameters were passed.

docs/apibuild.py
src/libvirt_private.syms
src/util/virtypedparam.c
src/util/virtypedparam.h

index 686a23496ca8e9a4c5e6352d0faa95717bcac7a1..c816197dc98a4afacf6d8e81545e2ce4e761d703 100755 (executable)
@@ -67,6 +67,7 @@ ignored_functions = {
   "virTypedParamsValidate": "internal function in virtypedparam.c",
   "virTypedParameterAssign": "internal function in virtypedparam.c",
   "virTypedParameterAssignFromStr": "internal function in virtypedparam.c",
+  "virTypedParamsCheck": "internal function in virtypedparam.c",
 }
 
 ignored_macros = {
index 912a1774270dc5a0bc4b315125dd9d22538d5a62..af32b3e36fb85294a44829c14892fb3f5929dd3e 100644 (file)
@@ -1943,6 +1943,7 @@ virTPMCreateCancelPath;
 # util/virtypedparam.h
 virTypedParameterAssign;
 virTypedParameterAssignFromStr;
+virTypedParamsCheck;
 virTypedParamsValidate;
 
 
index eef9e305ca3b4e56a8f111e198a02c744ceb9504..825148b00c233bb938726e997859e96d7e691089 100644 (file)
@@ -109,6 +109,32 @@ cleanup:
 
 }
 
+/* Check if params contains only specified parameter names. Return true if
+ * only specified names are present in params, false if params contains any
+ * unspecified parameter name. */
+bool
+virTypedParamsCheck(virTypedParameterPtr params,
+                    int nparams,
+                    const char **names,
+                    int nnames)
+{
+    int i, j;
+
+    for (i = 0; i < nparams; i++) {
+        bool found = false;
+        for (j = 0; j < nnames; j++) {
+            if (STREQ(params[i].field, names[j])) {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+            return false;
+    }
+
+    return true;
+}
+
 /* Assign name, type, and the appropriately typed arg to param; in the
  * case of a string, the caller is assumed to have malloc'd a string,
  * or can pass NULL to have this function malloc an empty string.
index 8f6bd1b83734634f0d7fe3570053fd1fce23c45c..b0f852202bc34b7797d65bca383600e0320490d0 100644 (file)
@@ -29,6 +29,11 @@ int virTypedParamsValidate(virTypedParameterPtr params, int nparams,
                            /* const char *name, int type ... */ ...)
     ATTRIBUTE_SENTINEL ATTRIBUTE_RETURN_CHECK;
 
+bool virTypedParamsCheck(virTypedParameterPtr params,
+                         int nparams,
+                         const char **names,
+                         int nnames);
+
 int virTypedParameterAssign(virTypedParameterPtr param, const char *name,
                             int type, /* TYPE arg */ ...)
     ATTRIBUTE_RETURN_CHECK;