bug#57567: ‘primitive-load’ should open files with O_CLOEXEC

Ludovic Courtès <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
Hi,

Currently ‘primitive-load’ opens files without O_CLOEXEC:

    port = scm_open_file_with_encoding (filename,
                                        scm_from_latin1_string ("r"),
                                        SCM_BOOL_T, /* guess_encoding */
                                        scm_from_latin1_string ("UTF-8"));

We should fix that; here’s an example where it shows:

--8<---------------cut here---------------start------------->8---
$ guix shell bash -- sh -c 'ls -l /proc/$$/fd'
total 0
lrwx------ 1 ludo users 64 Sep  3 21:20 0 -> /dev/pts/0
lrwx------ 1 ludo users 64 Sep  3 21:20 1 -> /dev/pts/0
lrwx------ 1 ludo users 64 Sep  3 21:20 2 -> /dev/pts/0
lr-x------ 1 ludo users 64 Sep  3 21:20 3 -> /proc/9563/fd
lr-x------ 1 ludo users 64 Sep  3 21:20 5 -> /gnu/store/4qbqaa4dgr2fwjjs9i2naqrd0djrcnw3-guix-command
$ head -1 $(type -P guix)
#!/gnu/store/9z95jms1r801z1kxpiq5xw594cxaw5jx-guile-wrapper/bin/guile --no-auto-compile
--8<---------------cut here---------------end--------------->8---

For a proper fix, one possibility would be to first augment
‘scm_i_mode_to_open_flags’ to recognize some letter for O_CLOEXEC.  In
glibc, fopen(3) uses “e” for that.

Thoughts?

Ludo’.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.