X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-runscript.c;h=ccaee48c30229f062e97afd8280b63a9c2086de7;hb=8d39ba5617367d688e653ab40192a9c7f9a5c187;hp=b0b0e29d276b99fbed8015222de863397f754fa0;hpb=c42956d483a79cb96ac9d9f8d1f173915c045afd;p=zpackage diff --git a/zpm-runscript.c b/zpm-runscript.c index b0b0e29..ccaee48 100644 --- a/zpm-runscript.c +++ b/zpm-runscript.c @@ -148,7 +148,6 @@ 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); /* perhaps also pass in the phase name? or ENV? */ /* TODO sanitize environment ? */ @@ -159,6 +158,7 @@ int main(int ac, char **av){ if (argn + 1 <= ac) { args[2] = av[argn+1]; } + if (rootdir) { if (chdir(rootdir) == -1) { perror("can not chdir to rootdir"); @@ -179,6 +179,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 +192,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++; }