On 2024-07-07 09:27:14 -0700, Matt Wette wrote: > With `--disable-tmpnam'  argument to configure, posix.test fails: missing > `tmpnam`. > > patch attached There also is #71796 as a possible patch (since June 27th), which is arguably bit smaller (albeit I am biased since I am the author over there ^_^ ). > > --- test-suite/tests/posix.test-orig    2024-07-03 15:45:16.352132881 -0700 > +++ test-suite/tests/posix.test    2024-07-07 09:21:53.342855356 -0700 > @@ -361,20 +361,21 @@ >        (status:exit-val (system* "something-that-does-not-exist")))) > >    (pass-if-equal "https://bugs.gnu.org/52835" > -      "bong\n" > -    (let ((file (tmpnam))) > +    "bong\n" > +    (let ((port (mkstemp "T-XXXXXX"))) >        ;; Redirect stdout and stderr to FILE. >        (define status > -        (call-with-output-file file > -          (lambda (port) > -            (with-output-to-port port > +        (with-output-to-port port > +          (lambda () > +            (with-error-to-port port >                (lambda () > -                (with-error-to-port port > -                  (lambda () > -                    (system* "sh" "-c" "echo bong >&2")))))))) > +                (system* "sh" "-c" "echo bong >&2")))))) > >        (and (zero? (status:exit-val status)) > -           (call-with-input-file file get-string-all)))) > +           (zero? (seek port 0 SEEK_SET)) > +           (let ((contents (get-string-all port))) > +             (close-port port) > +             contents)))) Interesting. Does this clean up the temporary file somehow or will it stay around? > >    (pass-if-equal "https://bugs.gnu.org/63024" >        0 > --- test-suite/tests/posix.test-orig 2024-07-03 15:45:16.352132881 -0700 > +++ test-suite/tests/posix.test 2024-07-07 09:21:53.342855356 -0700 > @@ -361,20 +361,21 @@ > (status:exit-val (system* "something-that-does-not-exist")))) > > (pass-if-equal "https://bugs.gnu.org/52835" > - "bong\n" > - (let ((file (tmpnam))) > + "bong\n" > + (let ((port (mkstemp "T-XXXXXX"))) > ;; Redirect stdout and stderr to FILE. > (define status > - (call-with-output-file file > - (lambda (port) > - (with-output-to-port port > + (with-output-to-port port > + (lambda () > + (with-error-to-port port > (lambda () > - (with-error-to-port port > - (lambda () > - (system* "sh" "-c" "echo bong >&2")))))))) > + (system* "sh" "-c" "echo bong >&2")))))) > > (and (zero? (status:exit-val status)) > - (call-with-input-file file get-string-all)))) > + (zero? (seek port 0 SEEK_SET)) > + (let ((contents (get-string-all port))) > + (close-port port) > + contents)))) > > (pass-if-equal "https://bugs.gnu.org/63024" > 0 Have a nice day, Tomas Volf -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.