diff options
author | Josselin Poiret <dev@jpoiret.xyz> | 2023-05-05 15:39:23 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-05-08 16:06:28 +0200 |
commit | 36fd2b4920ae926c79b936c29e739e71a6dff2bc (patch) | |
tree | cde55553728dc26e06a004faf1d820ae101f51af /test-suite | |
parent | ccd7400fdbebca73fc4340ad4ca0248655009f04 (diff) | |
download | guile-36fd2b4920ae926c79b936c29e739e71a6dff2bc.tar.gz |
In Guile 3.0.9, 'system*' would no longer open /dev/null for file
descriptors 0, 1, and 2 when its 'current-input-port',
'current-output-port', or 'current-output-port' is not bound to a file
port. This patch reinstates that behavior.
Fixes <https://bugs.gnu.org/63024>.
* libguile/posix.c (piped_process): Open /dev/null to use as in/out/err
if the corresponding port is not backed by a file descriptor.
* test-suite/tests/posix.test ("system*")["https://bugs.gnu.org/63024"]:
New test.
* NEWS: Update.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'test-suite')
-rw-r--r-- | test-suite/tests/posix.test | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test index d5cf47cda..18dad8902 100644 --- a/test-suite/tests/posix.test +++ b/test-suite/tests/posix.test @@ -374,7 +374,17 @@ (system* "sh" "-c" "echo bong >&2")))))))) (and (zero? (status:exit-val status)) - (call-with-input-file file get-string-all))))) + (call-with-input-file file get-string-all)))) + + (pass-if-equal "https://bugs.gnu.org/63024" + 0 + (if (file-exists? "/proc/self/fd/0") ;on GNU/Linux? + (parameterize ((current-output-port (%make-void-port "w0"))) + (system* "guile" "-c" + (object->string + '(exit (string=? "/dev/null" + (readlink "/proc/self/fd/1")))))) + (throw 'unresolved)))) ;; ;; spawn |