Browse Source

kxml: PARAMs can add sub-PARAMs

Serj Kalichev 2 years ago
parent
commit
deccaf9068
1 changed files with 19 additions and 8 deletions
  1. 19 8
      klish/xml-helper/load.c

+ 19 - 8
klish/xml-helper/load.c

@@ -434,20 +434,31 @@ static bool_t process_param(const kxml_node_t *element, void *parent,
 	if (!param)
 		goto err;
 
-	if (parent_tag != KTAG_COMMAND) {
+	if (KTAG_COMMAND == parent_tag) {
+		kcommand_t *command = (kcommand_t *)parent;
+		if (!kcommand_add_param(command, param)) {
+			faux_error_sprintf(error,
+				TAG": Can't add PARAM \"%s\" to COMMAND \"%s\"",
+				kparam_name(param), kcommand_name(command));
+			kparam_free(param);
+			goto err;
+		}
+	} else if (KTAG_PARAM == parent_tag) {
+		kparam_t *parent_param = (kparam_t *)parent;
+		if (!kparam_add_param(parent_param, param)) {
+			faux_error_sprintf(error,
+				TAG": Can't add PARAM \"%s\" to PARAM \"%s\"",
+				kparam_name(param), kparam_name(parent_param));
+			kparam_free(param);
+			goto err;
+		}
+	} else {
 		faux_error_sprintf(error,
 			TAG": Tag \"%s\" can't contain PARAM tag",
 			kxml_tag_name(parent_tag));
 		return BOOL_FALSE;
 	}
 
-	if (!kcommand_add_param((kcommand_t *)parent, param)) {
-		faux_error_sprintf(error, TAG": Can't add PARAM \"%s\"",
-			kparam_name(param));
-		kparam_free(param);
-		goto err;
-	}
-
 	if (!process_children(element, param, error))
 		goto err;