summaryrefslogtreecommitdiff
path: root/src/logic/slbt_exec_uninstall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logic/slbt_exec_uninstall.c')
-rw-r--r--src/logic/slbt_exec_uninstall.c55
1 files changed, 24 insertions, 31 deletions
diff --git a/src/logic/slbt_exec_uninstall.c b/src/logic/slbt_exec_uninstall.c
index 5c59d3f..98bd85b 100644
--- a/src/logic/slbt_exec_uninstall.c
+++ b/src/logic/slbt_exec_uninstall.c
@@ -1,6 +1,6 @@
/*******************************************************************/
-/* slibtool: a skinny libtool implementation, written in C */
-/* Copyright (C) 2016--2021 SysDeer Technologies, LLC */
+/* slibtool: a strong libtool implementation, written in C */
+/* Copyright (C) 2016--2024 SysDeer Technologies, LLC */
/* Released under the Standard MIT License; see COPYING.SLIBTOOL. */
/*******************************************************************/
@@ -11,12 +11,11 @@
#include <errno.h>
#include <sys/stat.h>
-#define ARGV_DRIVER
-
#include <slibtool/slibtool.h>
#include "slibtool_driver_impl.h"
#include "slibtool_uninstall_impl.h"
#include "slibtool_readlink_impl.h"
+#include "slibtool_snprintf_impl.h"
#include "slibtool_errinfo_impl.h"
#include "argv/argv.h"
@@ -37,26 +36,26 @@ static int slbt_uninstall_usage(
switch (noclr) {
case 0:
- argv_usage(fdout,header,optv,arg);
+ slbt_argv_usage(fdout,header,optv,arg);
break;
default:
- argv_usage_plain(fdout,header,optv,arg);
+ slbt_argv_usage_plain(fdout,header,optv,arg);
break;
}
- argv_free(meta);
+ slbt_argv_free(meta);
return SLBT_USAGE;
}
static int slbt_exec_uninstall_fail(
- struct slbt_exec_ctx * actx,
+ struct slbt_exec_ctx * ectx,
struct argv_meta * meta,
int ret)
{
- argv_free(meta);
- slbt_free_exec_ctx(actx);
+ slbt_argv_free(meta);
+ slbt_ectx_free_exec_ctx(ectx);
return ret;
}
@@ -85,7 +84,7 @@ static int slbt_exec_uninstall_fs_entry(
*parg = path;
if (!(dctx->cctx->drvflags & SLBT_DRIVER_SILENT))
- if (slbt_output_uninstall(dctx,ectx))
+ if (slbt_output_uninstall(ectx))
return SLBT_NESTED_ERROR(dctx);
/* directory? */
@@ -172,8 +171,9 @@ static int slbt_exec_uninstall_entry(
char path [PATH_MAX];
char lpath[PATH_MAX];
- if ((size_t)snprintf(path,PATH_MAX,"%s",
- entry->arg) >= PATH_MAX-8)
+ if (slbt_snprintf(path,
+ PATH_MAX - 8,
+ "%s",entry->arg) < 0)
return SLBT_BUFFER_ERROR(dctx);
*parg = (char *)entry->arg;
@@ -264,16 +264,13 @@ static int slbt_exec_uninstall_entry(
return 0;
}
-int slbt_exec_uninstall(
- const struct slbt_driver_ctx * dctx,
- struct slbt_exec_ctx * ectx)
+int slbt_exec_uninstall(const struct slbt_driver_ctx * dctx)
{
- int ret;
int fdout;
char ** argv;
char ** iargv;
uint32_t flags;
- struct slbt_exec_ctx * actx;
+ struct slbt_exec_ctx * ectx;
struct argv_meta * meta;
struct argv_entry * entry;
const struct argv_option * optv[SLBT_OPTV_ELEMENTS];
@@ -283,21 +280,17 @@ int slbt_exec_uninstall(
return 0;
/* context */
- if (ectx)
- actx = 0;
- else if ((ret = slbt_get_exec_ctx(dctx,&ectx)))
- return ret;
- else
- actx = ectx;
+ if (slbt_ectx_get_exec_ctx(dctx,&ectx) < 0)
+ return SLBT_NESTED_ERROR(dctx);
/* initial state, uninstall mode skin */
- slbt_reset_arguments(ectx);
+ slbt_ectx_reset_arguments(ectx);
slbt_disable_placeholders(ectx);
iargv = ectx->cargv;
fdout = slbt_driver_fdout(dctx);
/* missing arguments? */
- argv_optv_init(slbt_uninstall_options,optv);
+ slbt_optv_init(slbt_uninstall_options,optv);
if (!iargv[1] && (dctx->cctx->drvflags & SLBT_DRIVER_VERBOSITY_USAGE))
return slbt_uninstall_usage(
@@ -307,14 +300,14 @@ int slbt_exec_uninstall(
dctx->cctx->drvflags & SLBT_DRIVER_ANNOTATE_NEVER);
/* <uninstall> argv meta */
- if (!(meta = argv_get(
+ if (!(meta = slbt_argv_get(
iargv,optv,
dctx->cctx->drvflags & SLBT_DRIVER_VERBOSITY_ERRORS
? ARGV_VERBOSITY_ERRORS
: ARGV_VERBOSITY_NONE,
fdout)))
return slbt_exec_uninstall_fail(
- actx,meta,
+ ectx,meta,
SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_UNINSTALL_FAIL));
/* dest, alternate argument vector options */
@@ -374,11 +367,11 @@ int slbt_exec_uninstall(
if (!entry->fopt)
if (slbt_exec_uninstall_entry(dctx,ectx,entry,argv,flags))
return slbt_exec_uninstall_fail(
- actx,meta,
+ ectx,meta,
SLBT_NESTED_ERROR(dctx));
- argv_free(meta);
- slbt_free_exec_ctx(actx);
+ slbt_argv_free(meta);
+ slbt_ectx_free_exec_ctx(ectx);
return 0;
}