From 7bab5a71cefe37b583b08fec0177fc569f041980 Mon Sep 17 00:00:00 2001 From: midipix Date: Sat, 6 Jan 2024 09:19:04 +0000 Subject: ar mode: slbt_get_archive_ctx(): initial implementation and integration. --- src/logic/slbt_exec_ar.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/logic/slbt_exec_ar.c') diff --git a/src/logic/slbt_exec_ar.c b/src/logic/slbt_exec_ar.c index a68ff03..56eee4e 100644 --- a/src/logic/slbt_exec_ar.c +++ b/src/logic/slbt_exec_ar.c @@ -71,6 +71,7 @@ int slbt_exec_ar( char ** argv; char ** iargv; struct slbt_archive_ctx ** arctxv; + struct slbt_archive_ctx ** arctxp; const char ** unitv; const char ** unitp; size_t nunits; @@ -160,7 +161,25 @@ int slbt_exec_ar( if (!entry->fopt) *unitp++ = entry->arg; + /* archive context vector initialization */ + for (unitp=unitv,arctxp=arctxv; *unitp; unitp++,arctxp++) { + if (slbt_get_archive_ctx(dctx,*unitp,arctxp) < 0) { + for (arctxp=arctxv; *arctxp; arctxp++) + slbt_free_archive_ctx(*arctxp); + + free(unitv); + free(arctxv); + + return slbt_exec_ar_fail( + actx,meta, + SLBT_NESTED_ERROR(dctx)); + } + } + /* all done */ + for (arctxp=arctxv; *arctxp; arctxp++) + slbt_free_archive_ctx(*arctxp); + free(unitv); free(arctxv); -- cgit v1.2.3