X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-runscript.c;h=a3f4c2f6d07efe0e21c071483264b2deca97a301;hb=ba901e2a9d0361de899461397cc6380549f8661a;hp=b0b0e29d276b99fbed8015222de863397f754fa0;hpb=c42956d483a79cb96ac9d9f8d1f173915c045afd;p=zpackage diff --git a/zpm-runscript.c b/zpm-runscript.c index b0b0e29..a3f4c2f 100644 --- a/zpm-runscript.c +++ b/zpm-runscript.c @@ -148,17 +148,19 @@ int main(int ac, char **av){ pkgid = zpm_findpkg(&zpm, pkgstr); if (pkgid) { if (zpm_script_hash(&zpm, pkgid, phase, hash)) { - rv = zpm_extract(&zpm, hash, script, 0700); + /* since the script file name doesn't really + * mean anything, pass in the phase as arg 0 + */ - /* perhaps also pass in the phase name? or ENV? */ /* TODO sanitize environment ? */ - args[0] = script; + args[0] = phase; args[1] = pkgid; args[2] = 0; args[3] = 0; if (argn + 1 <= ac) { args[2] = av[argn+1]; } + if (rootdir) { if (chdir(rootdir) == -1) { perror("can not chdir to rootdir"); @@ -179,6 +181,12 @@ int main(int ac, char **av){ exit(EXIT_FAILURE); } } + + if (!zpm_extract(&zpm, hash, script, 0700)) { + fprintf(stderr, "unable to extract script"); + exit(EXIT_FAILURE); + } + rv = run(script, args, output, &status); if (rv) { // cat(output); @@ -186,8 +194,12 @@ int main(int ac, char **av){ pkgid, rv); } /* TODO log output */ - unlink(script); - unlink(output); + if (script) { + unlink(script); + } + if (output) { + unlink(output); + } if (rv) { failures++; }