From 8902815c5f5a9f16224140245c0b800d12455735 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 21 Oct 2018 21:14:45 -0400 Subject: slbt_exec_link_finalize_argument_vector(): refactor argument removal logic. --- src/logic/slbt_exec_link.c | 76 ++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index 25a9412..ed45d67 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -634,9 +634,11 @@ static int slbt_exec_link_finalize_argument_vector( arg = *parg; dot = strrchr(arg,'.'); + /* object input argument? */ if (dot && (!strcmp(dot,".o") || !strcmp(dot,".lo"))) { *oarg++ = *parg++; + /* --whole-archive input argument? */ } else if ((arg[0] == '-') && (arg[1] == 'W') && (arg[2] == 'l') @@ -650,52 +652,54 @@ static int slbt_exec_link_finalize_argument_vector( *oarg++ = *parg++; *oarg++ = *parg++; + /* local archive input argument? */ } else if (dot && !strcmp(dot,arsuffix)) { *oarg++ = *parg++; - } else { - /* not a -l argument? */ - if ((parg[0][0] != '-') || (parg[0][1] != 'l')) { - if (!strncmp(*parg,"-USLIBTOOL_PLACEHOLDER_",23)) - parg++; - else - *aarg++ = *parg++; - - } else { - /* find the previus occurence of this -l argument */ - for (rarg=0, larg=&aarg[-1]; !rarg && (larg>=aargv); larg--) - if (!strcmp(*larg,*parg)) - rarg = larg; + /* -l argument? */ + } else if ((parg[0][0] == '-') && (parg[0][1] == 'l')) { + /* find the previous occurence of this -l argument */ + for (rarg=0, larg=&aarg[-1]; !rarg && (larg>=aargv); larg--) + if (!strcmp(*larg,*parg)) + rarg = larg; - /* first occurence of this specific -l argument? */ - if (!rarg) { - *aarg++ = *parg++; + /* first occurence of this specific -l argument? */ + if (!rarg) { + *aarg++ = *parg++; - } else { - larg = rarg; - - /* if all -l arguments following the previous */ - /* occurence had already appeared before the */ - /* previous argument, then the current */ - /* occurence is redundant. */ - - for (darg=&larg[1]; rarg && darg