2013/9/17 Glenn Fowler <[email protected]>:
> On Tue, 17 Sep 2013 21:14:38 +0200 Lionel Cons wrote:
>> On 17 September 2013 20:49, Glenn Fowler <[email protected]> wrote:
>> >
>> > from ksh did you try
>> >
>> > getconf name ~{fd}
>> > getconf name /dev/fd/${fd}
>
>> Forwarding the feedback from a coworker:
>> It may work for AST but it is not legal: ~{fd} expands to /proc, which
>> is a filesystem, and /dev/fd is a filesystem on Solaris too. What
>> happens if I want to find the pathconf properties of /proc or /dev/fd
>> in a POSIX conforming way?
>
> if you want to do fpathconf(2) from the command line in a posix conforming
> way then you can't
> posix has neither /proc nor /dev/fd
>
> now for a useful answer
> using ~{fd} or /dev/fd will only work for builtins or on systems that support
> /proc/<pid>/fd/<fd>
> right now the ksh93 getconf builtin defers to /usr/bin/getconf for most
> path_var operands
> those would have to be instead handled by the builtin to handle fds
>
> until then something like this should work on most modern unix (with
> /dev/fd/<fd> support)
>
> getconf path_var /dev/fd/0 < ~{fd}
Erm... this can't work (and quick testing&&looking at the Solaris and
Linux kernel sources confirms it) because |pathconf()|+|fpathconf()|
is a syscall which is directly forwarded to the matching filesystem
code in the kernel. The syscall passes the path (string for
|pathconf(), fd for |fpathconf()|) to the kernel and then the kernel
looks-up the matching filesystem and then forwards the call to that
filesystem...
Regardless how hard we try the current getconf(1) API won't work for a
given fd, e.g. it can't work using /dev/fd/ because /dev/fd is a
separate filesystem on Solaris and /dev (covering /dev/fd/) on Linux.
The same applies to ~{fd} which expands to /proc/$currpid/fd/$fd and
therefore refers to the proc filesystem instead of the filesystem the
fd is on.
AFAIK the only valid way is to add a --fd option to getconf(1) to deal
with that trouble because at least the Solaris test suite use
/usr/bin/getconf to test the devfs and procfs filesystems... which
means if we implement the AST intercept system to convert a /dev/fd or
/proc/self/fd/ path to a fd internally to call |fpathconf()| we break
such tests... ;-(
... on the bright side... adding |fpathconf()| support looks quite
easy to implement... if Glenn agrees I can make the patch for that
tonight...
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) [email protected]
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers