From 1ed71a9b2fff4dfc73432b94e3049b92d16d1717 Mon Sep 17 00:00:00 2001 From: midipix Date: Mon, 12 Sep 2016 16:26:28 -0400 Subject: execute mode: properly handle direct program invocation. --- src/logic/slbt_exec_execute.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/logic/slbt_exec_execute.c b/src/logic/slbt_exec_execute.c index 2b422d2..5445cbe 100644 --- a/src/logic/slbt_exec_execute.c +++ b/src/logic/slbt_exec_execute.c @@ -25,6 +25,7 @@ int slbt_exec_execute( char * mark; char exeref [PATH_MAX]; char wrapper[PATH_MAX]; + struct stat st; struct slbt_exec_ctx * actx = 0; /* dry run */ @@ -65,9 +66,13 @@ int slbt_exec_execute( sprintf(mark,".libs/%s",base); /* swap vector */ - ectx->cargv[0] = wrapper; - ectx->cargv[1] = program; - ectx->cargv[2] = exeref; + if (!(stat(script,&st)) && !(stat(wrapper,&st))) { + ectx->cargv[0] = wrapper; + ectx->cargv[1] = program; + ectx->cargv[2] = exeref; + } else { + script = program; + } /* execute mode */ ectx->program = script; @@ -80,7 +85,7 @@ int slbt_exec_execute( return SLBT_NESTED_ERROR(dctx); } - execvp(wrapper,ectx->argv); + execvp(ectx->cargv[0],ectx->argv); slbt_free_exec_ctx(actx); return SLBT_SYSTEM_ERROR(dctx); -- cgit v1.2.3