On Feb 29 17:27, Austin Group Bug Tracker via austin-group-l at The Open Group 
wrote:
> ====================================================================== 
> Summary:                    Must posix_getdents remember file offsets across
> exec?
> ====================================================================== 
> [...]
> Likewise, the behavior is unspecified if in between two calls to
> <i>posix_getdents</i>() on one file descriptor, the file offset is altered
> by a call made on a different file descriptor that refers to the same open
> file description and the new offset is not zero.</blockquote>

While the new clarifications look mostly good to me, this snippet still
looks like a problem, in particular the restriction "and the new offset
is not zero".

The reason is that after dup, the process has to create a new DIR
for the dup'ed descriptor.  The two DIR's are logically distinct.

The above paragraph sounds like the behaviour is not supposed to be
undefined in the follwoing situation:

  posix_getdents (fd1, ...);    // file pos != 0 after this call

  fd2 = dup (fd1);

  lseek (fd2, SEEK_SET, 0);     // seeks file to pos 0 via fd2

  posix_getdents (fd1, ...);    // is now supposed to start at pos 0?

If so, I'm not sure how to do this via underlying DIR pointer.

The DIR pointer attached to fd1 is either dropped from or duplicated
to fd2.  It's certainly not the same DIR pointer.  The lseek in
fd2 can only affect the DIR attached to fd2, not the one from fd1.

So, given we don't have a seekable underlying OS file descriptor,
how is the second posix_getdents on fd1 supposed to know that it
has to restart at pos 0?


Thanks,
Corinna

  • [Issue 8 dra... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
      • Re:... Eric Blake via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
      • Re:... Corinna Vinschen via austin-group-l at The Open Group
        • ... Corinna Vinschen via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
      • Re:... Steffen Nurpmeso via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
      • Re:... Steffen Nurpmeso via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group
    • [Issue ... Austin Group Bug Tracker via austin-group-l at The Open Group

Reply via email to