diff options
| author | Miles Bader | 1996-07-06 20:02:39 +0000 |
|---|---|---|
| committer | Miles Bader | 1996-07-06 20:02:39 +0000 |
| commit | 6f89d28ab449805db76410c551f1b945e5f03c94 (patch) | |
| tree | 377a8992b2ea2caa3725403d82fe3c52e18f20e8 /src | |
| parent | f3e9aa2d38949cb99027e0400eaaf07dba3607f6 (diff) | |
| download | emacs-6f89d28ab449805db76410c551f1b945e5f03c94.tar.gz emacs-6f89d28ab449805db76410c551f1b945e5f03c94.zip | |
(Fcall_process) [MSDOS]:
Initialize fd[0]; unlink `tempfile' in case of errors.
Make the `tempfile' parameter passed to `report_file_error' be a Lisp string.
(Fcall_process):
When fd_error is negative, don't close fd[0] if it's same as filefd.
If stderr is redirected to NULL_DEVICE, make `report_file_error' print the
name of device. Make the arguments a cons cell.
Diffstat (limited to 'src')
| -rw-r--r-- | src/callproc.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/callproc.c b/src/callproc.c index 58d8e8714f7..dc0c945925c 100644 --- a/src/callproc.c +++ b/src/callproc.c | |||
| @@ -350,10 +350,12 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") | |||
| 350 | if (outfilefd < 0) | 350 | if (outfilefd < 0) |
| 351 | { | 351 | { |
| 352 | close (filefd); | 352 | close (filefd); |
| 353 | report_file_error ("Opening process output file", Fcons (tempfile, Qnil)); | 353 | report_file_error ("Opening process output file", |
| 354 | Fcons (build_string (tempfile), Qnil)); | ||
| 354 | } | 355 | } |
| 356 | fd[0] = filefd; | ||
| 355 | fd[1] = outfilefd; | 357 | fd[1] = outfilefd; |
| 356 | #endif | 358 | #endif /* MSDOS */ |
| 357 | 359 | ||
| 358 | if (INTEGERP (buffer)) | 360 | if (INTEGERP (buffer)) |
| 359 | fd[1] = open (NULL_DEVICE, O_WRONLY), fd[0] = -1; | 361 | fd[1] = open (NULL_DEVICE, O_WRONLY), fd[0] = -1; |
| @@ -404,10 +406,17 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") | |||
| 404 | if (fd_error < 0) | 406 | if (fd_error < 0) |
| 405 | { | 407 | { |
| 406 | close (filefd); | 408 | close (filefd); |
| 407 | close (fd[0]); | 409 | if (fd[0] != filefd) |
| 410 | close (fd[0]); | ||
| 408 | if (fd1 >= 0) | 411 | if (fd1 >= 0) |
| 409 | close (fd1); | 412 | close (fd1); |
| 410 | report_file_error ("Cannot open", error_file); | 413 | #ifdef MSDOS |
| 414 | unlink (tempfile); | ||
| 415 | #endif | ||
| 416 | report_file_error ("Cannot redirect stderr", | ||
| 417 | Fcons ((NILP (error_file) | ||
| 418 | ? build_string (NULL_DEVICE) : error_file), | ||
| 419 | Qnil)); | ||
| 411 | } | 420 | } |
| 412 | #ifdef MSDOS /* MW, July 1993 */ | 421 | #ifdef MSDOS /* MW, July 1993 */ |
| 413 | /* ??? Someone who knows MSDOG needs to check whether this properly | 422 | /* ??? Someone who knows MSDOG needs to check whether this properly |