* Don't fork in `nix run'.

This commit is contained in:
Eelco Dolstra 2003-03-28 10:33:34 +00:00
parent f915f77349
commit 278ea4097e
3 changed files with 25 additions and 46 deletions

View file

@ -406,15 +406,6 @@ void runPkg(string hash, const vector<string> & args)
runner = getFromEnv(env, "run"); runner = getFromEnv(env, "run");
/* Fork a child to build the package. */
pid_t pid;
switch (pid = fork()) {
case -1:
throw Error("unable to fork");
case 0: { /* child */
/* Fill in the environment. We don't bother freeing the /* Fill in the environment. We don't bother freeing the
strings, since we'll exec or die soon anyway. */ strings, since we'll exec or die soon anyway. */
for (Environment::iterator it = env.begin(); for (Environment::iterator it = env.begin();
@ -437,21 +428,7 @@ void runPkg(string hash, const vector<string> & args)
execv(runner.c_str(), (char * *) args2); execv(runner.c_str(), (char * *) args2);
cout << strerror(errno) << endl; cout << strerror(errno) << endl;
throw Error("unable to execute runner");
cout << "unable to execute runner\n";
_exit(1); }
}
/* parent */
/* Wait for the child to finish. */
int status;
if (waitpid(pid, &status, 0) != pid)
throw Error("unable to wait for child");
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
throw Error("unable to run package");
} }
@ -750,7 +727,6 @@ void main2(int argc, char * * argv)
/* Parse the global flags. */ /* Parse the global flags. */
while (argc) { while (argc) {
string arg(*argv); string arg(*argv);
cout << arg << endl;
if (arg == "-h" || arg == "--help") { if (arg == "-h" || arg == "--help") {
printUsage(); printUsage();
return; return;

View file

@ -4,4 +4,7 @@ export LD_LIBRARY_PATH=$glib/lib:$atk/lib:$pango/lib:$gtk/lib:$gnet/lib:$pspell/
ldd $pan/bin/pan ldd $pan/bin/pan
$pan/bin/pan $* prog=$1
shift
$pan/bin/$prog $*

View file

@ -1,4 +1,4 @@
id : pan-0.13.91-run id : pan-0.13.91-run-2
pan <- ./pan-0.13.91.nix pan <- ./pan-0.13.91.nix