summaryrefslogtreecommitdiff
path: root/src/logic/slbt_exec_compile.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2024-02-21 05:23:06 +0000
committermidipix <writeonce@midipix.org>2024-02-21 05:23:06 +0000
commit2e30eb25a9f78fcb462c03c4766a8a8669c1f291 (patch)
treeca0f1a7752ac01b3b1c2cfdb2fe1a3820376ea04 /src/logic/slbt_exec_compile.c
parent53c651164d18578c1b50f5b09e923ae1fd5e10c5 (diff)
downloadslibtool-2e30eb25a9f78fcb462c03c4766a8a8669c1f291.tar.bz2
slibtool-2e30eb25a9f78fcb462c03c4766a8a8669c1f291.tar.xz
core api: simplified the _exec_ interfaces.
Diffstat (limited to 'src/logic/slbt_exec_compile.c')
-rw-r--r--src/logic/slbt_exec_compile.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c
index 8c5e870..193bb5a 100644
--- a/src/logic/slbt_exec_compile.c
+++ b/src/logic/slbt_exec_compile.c
@@ -163,14 +163,12 @@ static int slbt_exec_compile_finalize_argument_vector(
return 0;
}
-int slbt_exec_compile(
- const struct slbt_driver_ctx * dctx,
- struct slbt_exec_ctx * ectx)
+int slbt_exec_compile(const struct slbt_driver_ctx * dctx)
{
int ret;
char * fpic;
char * ccwrap;
- struct slbt_exec_ctx * actx = 0;
+ struct slbt_exec_ctx * ectx;
const struct slbt_common_ctx * cctx = dctx->cctx;
/* dry run */
@@ -178,12 +176,8 @@ int slbt_exec_compile(
return 0;
/* context */
- if (ectx)
- slbt_reset_placeholders(ectx);
- else if ((ret = slbt_ectx_get_exec_ctx(dctx,&ectx)))
- return ret;
- else
- actx = ectx;
+ if (slbt_ectx_get_exec_ctx(dctx,&ectx) < 0)
+ return SLBT_NESTED_ERROR(dctx);
/* remove old .lo wrapper */
if (slbt_exec_compile_remove_file(dctx,ectx,ectx->ltobjname))
@@ -193,7 +187,7 @@ int slbt_exec_compile(
if (cctx->drvflags & SLBT_DRIVER_SHARED)
if (slbt_mkdir(dctx,ectx->ldirname)) {
ret = SLBT_SYSTEM_ERROR(dctx,ectx->ldirname);
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return ret;
}
@@ -231,17 +225,17 @@ int slbt_exec_compile(
if (!(cctx->drvflags & SLBT_DRIVER_SILENT)) {
if (slbt_output_compile(ectx)) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_NESTED_ERROR(dctx);
}
}
if ((slbt_spawn(ectx,true) < 0) && (ectx->pid < 0)) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_SYSTEM_ERROR(dctx,0);
} else if (ectx->exitcode) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_COMPILE_ERROR);
}
@@ -266,23 +260,23 @@ int slbt_exec_compile(
if (!(cctx->drvflags & SLBT_DRIVER_SILENT)) {
if (slbt_output_compile(ectx)) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_NESTED_ERROR(dctx);
}
}
if ((slbt_spawn(ectx,true) < 0) && (ectx->pid < 0)) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_SYSTEM_ERROR(dctx,0);
} else if (ectx->exitcode) {
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_COMPILE_ERROR);
}
}
ret = slbt_create_object_wrapper(dctx,ectx);
- slbt_ectx_free_exec_ctx(actx);
+ slbt_ectx_free_exec_ctx(ectx);
return ret ? SLBT_NESTED_ERROR(dctx) : 0;
}