diff options
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/argv/argv.h | 23 | ||||
-rw-r--r-- | src/internal/slibtool_driver_impl.h | 7 | ||||
-rw-r--r-- | src/internal/slibtool_lconf_impl.c | 18 |
3 files changed, 43 insertions, 5 deletions
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h index aa4e5f5..0b9def7 100644 --- a/src/internal/argv/argv.h +++ b/src/internal/argv/argv.h @@ -856,8 +856,10 @@ static void argv_show_status( struct argv_ctx * ctx, struct argv_meta * meta) { + int i; int argc; char ** argv; + struct argv_keyval * keyv; struct argv_entry * entry; const struct argv_option * option; char short_name[2] = {0}; @@ -887,6 +889,27 @@ static void argv_show_status( else argv_dprintf(fd,"[-%s,--%s]\n", short_name,option->long_name); + + if (entry->keyv) { + for (i=0,keyv=entry->keyv; keyv->keyword; i++,keyv++) { + switch (keyv->flags) { + case ARGV_KEYVAL_ASSIGN: + argv_dprintf(fd,"\tkeyval[%d]: <%s>=%s\n", + i,keyv->keyword,keyv->value); + break; + + case ARGV_KEYVAL_OVERRIDE: + argv_dprintf(fd,"\tkeyval[%d]: <%s>:=%s\n", + i,keyv->keyword,keyv->value); + break; + + default: + argv_dprintf(fd,"\tkeyval[%d]: <%s>\n", + i,keyv->keyword); + break; + } + } + } } else { argv_dprintf(fd,"<program arg> := %s\n",entry->arg); } diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h index 429cdc4..7b6114d 100644 --- a/src/internal/slibtool_driver_impl.h +++ b/src/internal/slibtool_driver_impl.h @@ -20,6 +20,11 @@ #define SLBT_OPTV_ELEMENTS 128 +#define SLBT_DRIVER_OUTPUT_MASK (SLBT_DRIVER_OUTPUT_M4_DIR \ + | SLBT_DRIVER_OUTPUT_AUX_DIR \ + | SLBT_DRIVER_OUTPUT_SHARED_EXT \ + | SLBT_DRIVER_OUTPUT_STATIC_EXT) + extern const struct argv_option slbt_default_options[]; enum app_tags { @@ -32,6 +37,8 @@ enum app_tags { TAG_DUMPMACHINE, TAG_PRINT_AUX_DIR, TAG_PRINT_M4_DIR, + TAG_PRINT_SHARED_EXT, + TAG_PRINT_STATIC_EXT, TAG_DEBUG, TAG_DRY_RUN, TAG_FEATURES, diff --git a/src/internal/slibtool_lconf_impl.c b/src/internal/slibtool_lconf_impl.c index ffe92b0..7f43034 100644 --- a/src/internal/slibtool_lconf_impl.c +++ b/src/internal/slibtool_lconf_impl.c @@ -545,6 +545,7 @@ static int slbt_lconf_open( fdcwd = slbt_driver_fdcwd(dctx); fdlconfdir = fdcwd; fsilent |= (dctx->cctx->drvflags & SLBT_DRIVER_SILENT); + fsilent |= (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK); if (lconf) { mconf = 0; @@ -629,15 +630,21 @@ static int slbt_lconf_open( if (stparent.st_dev != stcwd.st_dev) { trace_result(dctx,fdparent,fdparent,".",EXDEV,lconfpath); close(fdparent); - return SLBT_CUSTOM_ERROR( - dctx,SLBT_ERR_LCONF_OPEN); + + return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK) + ? (-1) + : SLBT_CUSTOM_ERROR( + dctx,SLBT_ERR_LCONF_OPEN); } if (stparent.st_ino == stinode) { trace_result(dctx,fdparent,fdparent,".",ELOOP,lconfpath); close(fdparent); - return SLBT_CUSTOM_ERROR( - dctx,SLBT_ERR_LCONF_OPEN); + + return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK) + ? (-1) + : SLBT_CUSTOM_ERROR( + dctx,SLBT_ERR_LCONF_OPEN); } fdlconfdir = fdparent; @@ -766,7 +773,8 @@ slbt_hidden int slbt_get_lconf_flags( /* open relative libtool script */ if ((fdlconf = slbt_lconf_open(dctx,lconf,fsilent,&val)) < 0) - return SLBT_NESTED_ERROR(dctx); + return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK) + ? (-1) : SLBT_NESTED_ERROR(dctx); /* cache the configuration in library friendly form) */ if (slbt_lib_get_txtfile_ctx(dctx,val,&ctx->lconfctx) < 0) |