From: Jim Meyering Date: Tue, 10 May 2011 07:46:59 +0000 (+0200) Subject: openat: add comments X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f1e41e3755fc46e97ca3ada87779d60751417d2;p=pspp openat: add comments * lib/openat-proc.c (openat_proc_name): Add comments, mostly from Eric Blake. --- diff --git a/ChangeLog b/ChangeLog index 36fb1fecf6..5a89d18d5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-05-10 Jim Meyering + + openat: add comments + * lib/openat-proc.c (openat_proc_name): Add comments, + mostly from Eric Blake. + 2011-05-09 Eric Blake openat: reduce syscalls in first probe of /proc diff --git a/lib/openat-proc.c b/lib/openat-proc.c index 5711896a16..c326ffcbef 100644 --- a/lib/openat-proc.c +++ b/lib/openat-proc.c @@ -80,6 +80,10 @@ openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file) proc_status = -1; else { + /* Detect whether /proc/self/fd/../fd exists. On Linux, that name + resolves to /proc/self/fd, which was opened above. However, on + Solaris, it may resolve to /proc/self/fd/fd, which cannot exist, + since all names in /proc/self/fd are numeric. */ char dotdot_buf[PROC_SELF_FD_NAME_SIZE_BOUND (sizeof "../fd" - 1)]; sprintf (dotdot_buf, PROC_SELF_FD_FORMAT, proc_self_fd, "../fd"); proc_status = access (dotdot_buf, F_OK) ? -1 : 1;