Skip to content

Commit ea8571d

Browse files
committed
libyang UPDATE cleanup after rebase of so4 on devel
1 parent a02aad5 commit ea8571d

File tree

2 files changed

+78
-65
lines changed

2 files changed

+78
-65
lines changed

src/tree_schema.c

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,7 +1594,7 @@ lys_parse_submodule(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT format, s
15941594
ly_set_erase(&pctx->tpdfs_nodes, NULL);
15951595
ly_set_erase(&pctx->grps_nodes, NULL);
15961596
ly_set_erase(&pctx->ext_inst, NULL);
1597-
lysp_module_free(&fctx, (struct lysp_module *)submod);
1597+
lysp_module_free(ctx, (struct lysp_module *)submod);
15981598
submod = NULL;
15991599
goto cleanup;
16001600
} else if (r) {
@@ -1619,7 +1619,7 @@ lys_parse_submodule(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT format, s
16191619
ly_set_erase(&pctx->grps_nodes, NULL);
16201620
ly_set_erase(&pctx->ext_inst, NULL);
16211621
}
1622-
lysp_module_free(&fctx, (struct lysp_module *)submod);
1622+
lysp_module_free(ctx, (struct lysp_module *)submod);
16231623
} else if (submod) {
16241624
*submodule = submod;
16251625

@@ -1814,98 +1814,98 @@ lysp_add_internal_ietf_netconf(struct lysp_ctx *pctx, struct lysp_module *mod)
18141814
*/
18151815
LY_LIST_NEW_RET(mod->mod->ctx, &mod->data, cont, next, LY_EMEM);
18161816
cont->nodetype = LYS_CONTAINER;
1817-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "rpc-error", 0, &cont->name));
1818-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "presence", 0, &cont->presence));
1817+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "rpc-error", 0, &cont->name));
1818+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "presence", 0, &cont->presence));
18191819
cont->flags = LYS_INTERNAL;
18201820

18211821
LY_LIST_NEW_RET(mod->mod->ctx, &cont->child, leaf, next, LY_EMEM);
18221822
leaf->nodetype = LYS_LEAF;
1823-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error-type", 0, &leaf->name));
1823+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error-type", 0, &leaf->name));
18241824
leaf->flags = LYS_INTERNAL;
1825-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
1825+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
18261826
leaf->type.pmod = mod;
18271827
leaf->type.flags = LYS_SET_ENUM;
18281828
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1829-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "transport", 0, &enm->name));
1829+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "transport", 0, &enm->name));
18301830
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1831-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "rpc", 0, &enm->name));
1831+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "rpc", 0, &enm->name));
18321832
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1833-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "protocol", 0, &enm->name));
1833+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "protocol", 0, &enm->name));
18341834
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1835-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "application", 0, &enm->name));
1835+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "application", 0, &enm->name));
18361836

18371837
LY_LIST_NEW_RET(mod->mod->ctx, &cont->child, leaf, next, LY_EMEM);
18381838
leaf->nodetype = LYS_LEAF;
1839-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error-tag", 0, &leaf->name));
1839+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error-tag", 0, &leaf->name));
18401840
leaf->flags = LYS_INTERNAL;
1841-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
1841+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
18421842
leaf->type.pmod = mod;
18431843
leaf->type.flags = LYS_SET_ENUM;
18441844
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1845-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "in-use", 0, &enm->name));
1845+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "in-use", 0, &enm->name));
18461846
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1847-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "invalid-value", 0, &enm->name));
1847+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "invalid-value", 0, &enm->name));
18481848
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1849-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "too-big", 0, &enm->name));
1849+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "too-big", 0, &enm->name));
18501850
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1851-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "missing-attribute", 0, &enm->name));
1851+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "missing-attribute", 0, &enm->name));
18521852
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1853-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "bad-attribute", 0, &enm->name));
1853+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "bad-attribute", 0, &enm->name));
18541854
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1855-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "unknown-attribute", 0, &enm->name));
1855+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "unknown-attribute", 0, &enm->name));
18561856
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1857-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "missing-element", 0, &enm->name));
1857+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "missing-element", 0, &enm->name));
18581858
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1859-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "bad-element", 0, &enm->name));
1859+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "bad-element", 0, &enm->name));
18601860
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1861-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "unknown-element", 0, &enm->name));
1861+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "unknown-element", 0, &enm->name));
18621862
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1863-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "unknown-namespace", 0, &enm->name));
1863+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "unknown-namespace", 0, &enm->name));
18641864
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1865-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "access-denied", 0, &enm->name));
1865+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "access-denied", 0, &enm->name));
18661866
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1867-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "lock-denied", 0, &enm->name));
1867+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "lock-denied", 0, &enm->name));
18681868
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1869-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "resource-denied", 0, &enm->name));
1869+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "resource-denied", 0, &enm->name));
18701870
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1871-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "rollback-failed", 0, &enm->name));
1871+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "rollback-failed", 0, &enm->name));
18721872
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1873-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "data-exists", 0, &enm->name));
1873+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "data-exists", 0, &enm->name));
18741874
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1875-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "data-missing", 0, &enm->name));
1875+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "data-missing", 0, &enm->name));
18761876
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1877-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "operation-not-supported", 0, &enm->name));
1877+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "operation-not-supported", 0, &enm->name));
18781878
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1879-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "operation-failed", 0, &enm->name));
1879+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "operation-failed", 0, &enm->name));
18801880
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1881-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "partial-operation", 0, &enm->name));
1881+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "partial-operation", 0, &enm->name));
18821882
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1883-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "malformed-message", 0, &enm->name));
1883+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "malformed-message", 0, &enm->name));
18841884

18851885
LY_LIST_NEW_RET(mod->mod->ctx, &cont->child, leaf, next, LY_EMEM);
18861886
leaf->nodetype = LYS_LEAF;
1887-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error-severity", 0, &leaf->name));
1887+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error-severity", 0, &leaf->name));
18881888
leaf->flags = LYS_INTERNAL;
1889-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
1889+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "enumeration", 0, &leaf->type.name));
18901890
leaf->type.pmod = mod;
18911891
leaf->type.flags = LYS_SET_ENUM;
18921892
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1893-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error", 0, &enm->name));
1893+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error", 0, &enm->name));
18941894
LY_ARRAY_NEW_RET(mod->mod->ctx, leaf->type.enums, enm, LY_EMEM);
1895-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "warning", 0, &enm->name));
1895+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "warning", 0, &enm->name));
18961896

18971897
LY_LIST_NEW_RET(mod->mod->ctx, &cont->child, leaf, next, LY_EMEM);
18981898
leaf->nodetype = LYS_LEAF;
1899-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error-app-tag", 0, &leaf->name));
1899+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error-app-tag", 0, &leaf->name));
19001900
leaf->flags = LYS_INTERNAL;
1901-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "string", 0, &leaf->type.name));
1901+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "string", 0, &leaf->type.name));
19021902
leaf->type.pmod = mod;
19031903

19041904
LY_LIST_NEW_RET(mod->mod->ctx, &cont->child, leaf, next, LY_EMEM);
19051905
leaf->nodetype = LYS_LEAF;
1906-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "error-path", 0, &leaf->name));
1906+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "error-path", 0, &leaf->name));
19071907
leaf->flags = LYS_INTERNAL;
1908-
LY_CHECK_RET(lydict_insert(mod->mod->ctx, "yang_:xpath1.0", 0, &leaf->type.name));
1908+
LY_CHECK_RET(lysdict_insert(mod->mod->ctx, "yang_:xpath1.0", 0, &leaf->type.name));
19091909
leaf->type.pmod = mod;
19101910

19111911
/* the rest are opaque nodes, error-message (because of 'xml:lang' attribute) and error-info (because can be any nodes) */
@@ -2221,10 +2221,10 @@ lys_parse_in(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT format, const st
22212221
LY_CHECK_GOTO(rc = lysp_check_dup_identities(pctx, mod->parsed), cleanup);
22222222

22232223
/* compile features, extensions, identities, and submodules */
2224-
LY_CHECK_GOTO(ret = lys_compile_feature_iffeatures(mod->parsed), cleanup);
2225-
LY_CHECK_GOTO(ret = lys_compile_extensions(mod), cleanup);
2226-
LY_CHECK_GOTO(ret = lys_compile_identities(mod), cleanup);
2227-
LY_CHECK_GOTO(ret = lys_compile_submodules(mod), cleanup);
2224+
LY_CHECK_GOTO(rc = lys_compile_feature_iffeatures(mod->parsed), cleanup);
2225+
LY_CHECK_GOTO(rc = lys_compile_extensions(mod), cleanup);
2226+
LY_CHECK_GOTO(rc = lys_compile_identities(mod), cleanup);
2227+
LY_CHECK_GOTO(rc = lys_compile_submodules(mod), cleanup);
22282228

22292229
cleanup:
22302230
if (rc && mod && mod->name) {

src/tree_schema_common.c

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,28 +1151,41 @@ lysp_load_submod_from_clb_or_file(struct lysp_ctx *pctx, const char *name, const
11511151
struct lysp_load_module_data mod_data = {0};
11521152
struct ly_in *in;
11531153

1154-
if (ctx->imp_clb(PARSER_CUR_PMOD(pctx)->mod->name, NULL, inc->name,
1155-
inc->rev[0] ? inc->rev : NULL, ctx->imp_clb_data,
1156-
&format, &submodule_data, &submodule_data_free) == LY_SUCCESS) {
1157-
LY_CHECK_RET(ly_in_new_memory(submodule_data, &in));
1158-
check_data.name = inc->name;
1159-
check_data.revision = inc->rev[0] ? inc->rev : NULL;
1160-
check_data.submoduleof = PARSER_CUR_PMOD(pctx)->mod->name;
1161-
lys_parse_submodule(ctx, in, format, pctx->main_ctx, lysp_load_module_check, &check_data, new_mods,
1162-
&submod);
1163-
1164-
/* update inc pointer - parsing another (YANG 1.0) submodule can cause injecting
1165-
* submodule's include into main module, where it is missing */
1166-
inc = &pmod->includes[u];
1167-
1168-
ly_in_free(in, 0);
1169-
if (submodule_data_free) {
1170-
submodule_data_free((void *)submodule_data, ctx->imp_clb_data);
1171-
}
1154+
assert(!submod_latest || (submod_latest->latest_revision != 2));
1155+
1156+
*submod = NULL;
1157+
1158+
if (!ctx->imp_clb) {
1159+
/* no callback to call */
1160+
clb_used = 1;
1161+
} else {
1162+
clb_used = 0;
1163+
}
1164+
1165+
if (ctx->opts & LY_CTX_DISABLE_SEARCHDIRS) {
1166+
/* searchdirs disabled */
1167+
searchdirs_used = 1;
1168+
} else {
1169+
searchdirs_used = 0;
1170+
}
1171+
1172+
while (!found && (!clb_used || !searchdirs_used)) {
1173+
if ((!(ctx->opts & LY_CTX_PREFER_SEARCHDIRS) || searchdirs_used) && !clb_used) {
1174+
if (!ctx->imp_clb(PARSER_CUR_PMOD(pctx)->mod->name, NULL, name, revision, ctx->imp_clb_data, &format,
1175+
&submodule_data, &submodule_data_free)) {
1176+
/* parse the submodule returned by the callback */
1177+
LY_CHECK_RET(ly_in_new_memory(submodule_data, &in));
1178+
mod_data.name = name;
1179+
mod_data.revision = revision;
1180+
mod_data.submoduleof = PARSER_CUR_PMOD(pctx)->mod->name;
1181+
r = lys_parse_submodule(ctx, in, format, pctx->main_ctx, &mod_data, 0, new_mods, submod);
1182+
ly_in_free(in, 0);
1183+
if (submodule_data_free) {
1184+
submodule_data_free((void *)submodule_data, ctx->imp_clb_data);
11721185
}
1173-
}
1174-
if (!submod && !(ctx->opts & LY_CTX_PREFER_SEARCHDIRS)) {
1175-
goto search_file;
1186+
LY_CHECK_RET(r);
1187+
1188+
found = 1;
11761189
}
11771190
clb_used = 1;
11781191
} else if (!searchdirs_used) {

0 commit comments

Comments
 (0)