summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2024-02-25 21:57:24 +0000
committermidipix <writeonce@midipix.org>2024-02-25 21:57:24 +0000
commit3d2f83b5a3d42dd9b3430379a08a81f8004c7eb4 (patch)
treef08419e339d106e37eded799da4832699160212e /src
parentb1be90f4870a6ee3b8807b15b3e8bfe9c5573bbc (diff)
downloadslibtool-3d2f83b5a3d42dd9b3430379a08a81f8004c7eb4.tar.bz2
slibtool-3d2f83b5a3d42dd9b3430379a08a81f8004c7eb4.tar.xz
internals: added slbt_impl_get_txtfile_ctx() (caller-provided fd as input).
Diffstat (limited to 'src')
-rw-r--r--src/driver/slbt_txtfile_ctx.c23
-rw-r--r--src/internal/slibtool_driver_impl.h6
2 files changed, 27 insertions, 2 deletions
diff --git a/src/driver/slbt_txtfile_ctx.c b/src/driver/slbt_txtfile_ctx.c
index 12b9cff..6159b1e 100644
--- a/src/driver/slbt_txtfile_ctx.c
+++ b/src/driver/slbt_txtfile_ctx.c
@@ -14,6 +14,7 @@
#include <slibtool/slibtool.h>
#include "slibtool_driver_impl.h"
#include "slibtool_errinfo_impl.h"
+#include "slibtool_visibility_impl.h"
/********************************************************/
/* Read a text file, and create an in-memory vecotr of */
@@ -45,9 +46,10 @@ static int slbt_lib_free_txtfile_ctx_impl(
return ret;
}
-int slbt_lib_get_txtfile_ctx(
+static int slbt_lib_get_txtfile_ctx_impl(
const struct slbt_driver_ctx * dctx,
const char * path,
+ int fdsrc,
struct slbt_txtfile_ctx ** pctx)
{
struct slbt_txtfile_ctx_impl * ctx;
@@ -62,7 +64,7 @@ int slbt_lib_get_txtfile_ctx(
int cint;
/* map txtfile file temporarily */
- if (slbt_fs_map_input(dctx,-1,path,PROT_READ,&mapinfo) < 0)
+ if (slbt_fs_map_input(dctx,fdsrc,path,PROT_READ,&mapinfo) < 0)
return SLBT_NESTED_ERROR(dctx);
/* alloc context */
@@ -140,6 +142,23 @@ int slbt_lib_get_txtfile_ctx(
return 0;
}
+slbt_hidden int slbt_impl_get_txtfile_ctx(
+ const struct slbt_driver_ctx * dctx,
+ const char * path,
+ int fdsrc,
+ struct slbt_txtfile_ctx ** pctx)
+{
+ return slbt_lib_get_txtfile_ctx_impl(dctx,path,fdsrc,pctx);
+}
+
+int slbt_lib_get_txtfile_ctx(
+ const struct slbt_driver_ctx * dctx,
+ const char * path,
+ struct slbt_txtfile_ctx ** pctx)
+{
+ return slbt_lib_get_txtfile_ctx_impl(dctx,path,(-1),pctx);
+}
+
void slbt_lib_free_txtfile_ctx(struct slbt_txtfile_ctx * ctx)
{
struct slbt_txtfile_ctx_impl * ictx;
diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h
index fcb8324..b6ab601 100644
--- a/src/internal/slibtool_driver_impl.h
+++ b/src/internal/slibtool_driver_impl.h
@@ -308,6 +308,12 @@ void slbt_reset_placeholders (struct slbt_exec_ctx *);
void slbt_disable_placeholders (struct slbt_exec_ctx *);
+int slbt_impl_get_txtfile_ctx(
+ const struct slbt_driver_ctx * dctx,
+ const char * path,
+ int fdsrc,
+ struct slbt_txtfile_ctx ** pctx);
+
static inline struct slbt_archive_ctx_impl * slbt_get_archive_ictx(const struct slbt_archive_ctx * actx)
{