diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2009-12-19 03:27:40 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2009-12-19 03:27:40 +0000 |
commit | e2b5967ae3f0cdb2833f2ecc425966da9d4db10b (patch) | |
tree | a138f33b076b36ffbfa04008066ca170e5440176 /lib/libsystem.c | |
parent | 6d9b81564e2dc1ec40e46659ee5b2b810f0f618f (diff) | |
download | netpbm-mirror-e2b5967ae3f0cdb2833f2ecc425966da9d4db10b.tar.gz netpbm-mirror-e2b5967ae3f0cdb2833f2ecc425966da9d4db10b.tar.xz netpbm-mirror-e2b5967ae3f0cdb2833f2ecc425966da9d4db10b.zip |
Fix pm_system* error message when execvp() fails
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@1058 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/libsystem.c')
-rw-r--r-- | lib/libsystem.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libsystem.c b/lib/libsystem.c index 4581aa66..31c23bf6 100644 --- a/lib/libsystem.c +++ b/lib/libsystem.c @@ -49,11 +49,12 @@ execProgram(const char * const progName, -----------------------------------------------------------------------------*/ int stdinSaveFd, stdoutSaveFd; int rc; + int execErrno; /* Make stdinFd Standard Input. Make stdoutFd Standard Output. */ - stdinSaveFd = dup(STDIN); + stdinSaveFd = dup(STDIN); stdoutSaveFd = dup(STDOUT); close(STDIN); @@ -64,6 +65,8 @@ execProgram(const char * const progName, rc = execvp(progName, (char **)argArray); + execErrno = errno; + close(STDIN); close(STDOUT); dup2(stdinSaveFd, STDIN); @@ -75,7 +78,7 @@ execProgram(const char * const progName, pm_error("Unable to exec '%s' " "(i.e. the program did not run at all). " "execvp() errno=%d (%s)", - progName, errno, strerror(errno)); + progName, execErrno, strerror(execErrno)); else pm_error("INTERNAL ERROR. execvp() returns, but does not fail."); } |