summaryrefslogtreecommitdiff
path: root/src/driver/slbt_split_argv.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2024-03-05 00:14:03 +0000
committermidipix <writeonce@midipix.org>2024-03-05 01:12:54 +0000
commit8ef9e14afc6d97e6cf2da17995c3278f7309cf25 (patch)
treed72b6e1bb57dfd3c3c22355ab9cb66078aa8fae8 /src/driver/slbt_split_argv.c
parent4451024fec461fdcd1ee4f01fa2366685cb4b245 (diff)
downloadslibtool-8ef9e14afc6d97e6cf2da17995c3278f7309cf25.tar.bz2
slibtool-8ef9e14afc6d97e6cf2da17995c3278f7309cf25.tar.xz
driver: finalized support of -`-dlpreopen self` and `-dlpreopen force`.
Diffstat (limited to 'src/driver/slbt_split_argv.c')
-rw-r--r--src/driver/slbt_split_argv.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/driver/slbt_split_argv.c b/src/driver/slbt_split_argv.c
index bdde474..df0db37 100644
--- a/src/driver/slbt_split_argv.c
+++ b/src/driver/slbt_split_argv.c
@@ -503,12 +503,19 @@ slbt_hidden int slbt_split_argv(
*targv++ = argv[i];
} else if (!(strcmp("dlpreopen",&argv[i][1]))) {
- *cargv++ = argv[i];
- *targv++ = argv[i++];
+ if (!argv[i+1])
+ return -1;
- *cargv++ = argv[i];
- *targv++ = argv[i];
+ if (strcmp(argv[i+1],"self") && strcmp(argv[i+1],"force")) {
+ *cargv++ = argv[i];
+ *targv++ = argv[i++];
+ *cargv++ = argv[i];
+ *targv++ = argv[i];
+ } else {
+ *targv++ = argv[i++];
+ *targv++ = argv[i];
+ }
} else {
for (popt=optout; popt[0] && popt[0]->long_name; popt++)
if (!(strcmp(popt[0]->long_name,&argv[i][1])))