Review of SRFI 170 through 3.2 I/O
hga@xxxxxx
(22 Apr 2020 17:13 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
John Cowan
(22 Apr 2020 20:42 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(22 Apr 2020 20:53 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
John Cowan
(22 Apr 2020 21:29 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
hga@xxxxxx
(22 Apr 2020 23:58 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(22 Apr 2020 21:36 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(22 Apr 2020 21:43 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
John Cowan
(23 Apr 2020 03:38 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(23 Apr 2020 07:02 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(23 Apr 2020 07:05 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Göran Weinholt
(23 Apr 2020 10:54 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Marc Feeley
(23 Apr 2020 11:09 UTC)
|
Per-thread umask
Lassi Kortela
(23 Apr 2020 11:30 UTC)
|
Re: Per-thread umask
Marc Feeley
(23 Apr 2020 11:44 UTC)
|
Re: Per-thread umask
Lassi Kortela
(23 Apr 2020 11:47 UTC)
|
Re: Per-thread umask
Marc Feeley
(23 Apr 2020 11:59 UTC)
|
Re: Per-thread umask
John Cowan
(23 Apr 2020 15:03 UTC)
|
Re: Per-thread umask
Marc Feeley
(23 Apr 2020 15:20 UTC)
|
Re: Per-thread umask
Lassi Kortela
(23 Apr 2020 16:02 UTC)
|
Re: Per-thread umask
John Cowan
(23 Apr 2020 16:03 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Lassi Kortela
(23 Apr 2020 11:14 UTC)
|
current directory and openat() et al
Lassi Kortela
(23 Apr 2020 11:27 UTC)
|
Re: current directory and openat() et al Marc Feeley (23 Apr 2020 13:56 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Marc Feeley
(23 Apr 2020 11:33 UTC)
|
Normalizing the current directory
Lassi Kortela
(23 Apr 2020 11:39 UTC)
|
Re: Normalizing the current directory
Marc Feeley
(23 Apr 2020 11:55 UTC)
|
Re: Normalizing the current directory
Lassi Kortela
(23 Apr 2020 12:10 UTC)
|
Using paths that are searchable but not completely readable
hga@xxxxxx
(23 Apr 2020 12:30 UTC)
|
Per-thread working directory and umask proposal
John Cowan
(23 Apr 2020 14:13 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Sebastien Marie
(23 Apr 2020 13:32 UTC)
|
Definition of working directory
Lassi Kortela
(23 Apr 2020 13:51 UTC)
|
Re: Definition of working directory
Marc Feeley
(23 Apr 2020 14:07 UTC)
|
Re: Definition of working directory
Sebastien Marie
(23 Apr 2020 15:31 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
Marc Nieper-Wißkirchen
(23 Apr 2020 15:24 UTC)
|
Separate high-level and low-level APIs
Lassi Kortela
(23 Apr 2020 15:38 UTC)
|
Re: Separate high-level and low-level APIs
Marc Nieper-Wißkirchen
(23 Apr 2020 15:44 UTC)
|
Re: Separate high-level and low-level APIs
Lassi Kortela
(23 Apr 2020 15:48 UTC)
|
Re: Separate high-level and low-level APIs
hga@xxxxxx
(23 Apr 2020 16:19 UTC)
|
Re: Separate high-level and low-level APIs
Lassi Kortela
(23 Apr 2020 16:42 UTC)
|
Re: Review of SRFI 170 through 3.2 I/O
hga@xxxxxx
(23 Apr 2020 15:41 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(23 Apr 2020 14:16 UTC)
|
Re: Per-thread working directory and umask proposal
John Cowan
(23 Apr 2020 16:07 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Nieper-Wißkirchen
(23 Apr 2020 16:14 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(23 Apr 2020 16:25 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Nieper-Wißkirchen
(23 Apr 2020 17:26 UTC)
|
Re: Per-thread working directory and umask proposal
John Cowan
(23 Apr 2020 18:38 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(23 Apr 2020 17:55 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Nieper-Wißkirchen
(23 Apr 2020 18:55 UTC)
|
Re: Per-thread working directory and umask proposal
John Cowan
(23 Apr 2020 20:12 UTC)
|
Re: Per-thread working directory and umask proposal
Shiro Kawai
(23 Apr 2020 22:17 UTC)
|
Re: Per-thread working directory and umask proposal
Lassi Kortela
(24 Apr 2020 08:43 UTC)
|
Re: Per-thread working directory and umask proposal
Shiro Kawai
(24 Apr 2020 11:27 UTC)
|
Re: Per-thread working directory and umask proposal
Lassi Kortela
(24 Apr 2020 11:37 UTC)
|
Re: Per-thread working directory and umask proposal
Shiro Kawai
(24 Apr 2020 12:22 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(24 Apr 2020 12:28 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Nieper-Wißkirchen
(26 Apr 2020 09:19 UTC)
|
Re: Per-thread working directory and umask proposal
John Cowan
(27 Apr 2020 22:46 UTC)
|
Re: Per-thread working directory and umask proposal
Shiro Kawai
(27 Apr 2020 23:42 UTC)
|
Re: Per-thread working directory and umask proposal
John Cowan
(28 Apr 2020 00:42 UTC)
|
Re: Per-thread working directory and umask proposal
Shiro Kawai
(28 Apr 2020 00:56 UTC)
|
os-working-directory
Lassi Kortela
(29 Apr 2020 09:23 UTC)
|
Re: os-working-directory
Duy Nguyen
(29 Apr 2020 09:28 UTC)
|
current-umask
Lassi Kortela
(29 Apr 2020 09:43 UTC)
|
Windows
Lassi Kortela
(29 Apr 2020 09:47 UTC)
|
Re: Windows
Lassi Kortela
(29 Apr 2020 09:49 UTC)
|
Re: Windows
John Cowan
(29 Apr 2020 14:53 UTC)
|
Re: current-umask
hga@xxxxxx
(29 Apr 2020 13:14 UTC)
|
Re: current-umask
Lassi Kortela
(29 Apr 2020 13:25 UTC)
|
Re: current-umask
Marc Feeley
(29 Apr 2020 13:31 UTC)
|
Re: current-umask
Marc Feeley
(29 Apr 2020 13:45 UTC)
|
Re: current-umask
Lassi Kortela
(29 Apr 2020 14:12 UTC)
|
Re: current-umask
hga@xxxxxx
(29 Apr 2020 16:21 UTC)
|
Re: current-umask
Lassi Kortela
(29 Apr 2020 16:44 UTC)
|
Re: current-umask
John Cowan
(30 Apr 2020 04:02 UTC)
|
Re: os-working-directory
John Cowan
(30 Apr 2020 02:49 UTC)
|
Re: os-working-directory
Lassi Kortela
(30 Apr 2020 06:12 UTC)
|
Re: os-working-directory
Sebastien Marie
(30 Apr 2020 07:19 UTC)
|
Re: os-working-directory
Sebastien Marie
(30 Apr 2020 07:53 UTC)
|
Should the SRFI mandate current-directory per thread?
Lassi Kortela
(30 Apr 2020 12:14 UTC)
|
Re: Should the SRFI mandate current-directory per thread?
Sebastien Marie
(30 Apr 2020 17:00 UTC)
|
Re: Per-thread working directory and umask proposal
hga@xxxxxx
(28 Apr 2020 01:03 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(28 Apr 2020 01:42 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Nieper-Wißkirchen
(30 Apr 2020 07:11 UTC)
|
Re: Per-thread working directory and umask proposal
Marc Feeley
(30 Apr 2020 11:33 UTC)
|
> On Apr 23, 2020, at 7:27 AM, Lassi Kortela <xxxxxx@lassi.io> wrote: > >>> I suspect that if the current working directory is specified in terms >>> of parameter-like semantics then it should be possible to make use of >>> openat() etc behind the scenes >> Gambit does some of this; I suggest grepping the source code > > All of the calls are in os_files.c: > > $ grep -nF 'at (' lib/os_files.c > 542: new_dir = openat (dir, start, O_DIRECTORY); > 587: fd = openat (dir, path2, flags, mode); > 621: result = mkfifoat (dir, path2, mode); > 655: result = mkdirat (dir, path2, mode); > 686: result = unlinkat (dir, path2, 0); > 724: result = linkat (olddir, oldpath2, newdir, newpath2, 0); > 760: result = symlinkat (target, dir, path2); > 797: result = readlinkat (dir, path2, buf, bufsize); > 893: result = linkat (olddir, oldpath2, newdir, newpath2, 0); > 900: result = unlinkat (olddir, oldpath2, 0); > 911: result = renameat (olddir, oldpath2, newdir, newpath2); > 962: int fd = openat (dir, path2, O_DIRECTORY); > 1001: result = fstatat (dir, path2, statbuf, follow ? 0 : AT_SYMLINK_NOFOLLOW); Interestingly the use of the “at” system calls was added to Gambit to handle filenames that are longer than PATH_MAX. It allows accessing files that are very deeply nested. It uses openat() on successive chunks of the path <= PATH_MAX to reach deeply nested files. In the following example Gambit handles a path of length 10009 on linux (well beyond the typical 1024 character limit) whereas most other Scheme implementations give an error (I tested Chicken, Chez and Guile): % cat long.scm (define deep-dir (string-append "/tmp" (apply string-append (vector->list (make-vector 5000 "/x"))))) (define path (string-append deep-dir "/file")) (write (list (string-length path) (read (open-input-file path)))) (newline) % gsi long.scm (10009 hello!) % csi -quiet long.scm Error: (open-input-file) cannot open file - File name too long: "/tmp/.../x/x/x/x/file" ... % scheme --quiet --script long.scm Exception in open-input-file: failed for /tmp/.../x/x/x/x/file: file name too long % guile long.scm ... ERROR: In procedure open-file: ERROR: In procedure open-file: File name too long: "/tmp/.../x/x/x/x/file" Marc