2012/9/6 Roland Mainz <roland.ma...@nrubsig.org>:
> 2012/9/6 Joshuah Hurst <joshhu...@gmail.com>:
>> 2012/9/5 Roland Mainz <roland.ma...@nrubsig.org>:
>>> 2012/9/5 Roland Mainz <roland.ma...@nrubsig.org>:
>>>> 2012/9/5 David Korn <d...@research.att.com>:
>>>> [CC:ing ast-developers@research.att.com so that the patch gets archived]
>>>>> cc: g...@research.att.com olga.kryzhanov...@gmail.com
>>>>> Subject: Re: New syntax for paths relative to directory fds 
>>>>> (~{dirfd}/foo/bar.txt) ...
>>>>>> [Mostly Olga's idea (who is away and can't post anyway here since the
>>>>>> AT&T spam filters have a grudge against her native name... ;-( )]
>>>>>>
>>>>>> Woud the following syntax for paths relative to a directory fd "dirfd"
>>>>>> be possible without violating POSIX (right now the only way to archive
>>>>>> this is to use /dev/fd/${dirfd}/ ... which works OK but may not be
>>>>>> suiteable for a new version of the POSIX standard since POSIX does not
>>>>>> mandate any absolute paths):
>>>>>>
>>>>>> ~{dirfd}/foo/bar/txt
>>>>>>
>>>>>> (where "dirfd" is a directory fd and "foo/bar/txt" is a path relative
>>>>>> to this fd)
>>>>>>
>>>>>> Example usage:
>>>>>> -- snip --
>>>>>> # print contents of /etc/profile and /etc/ksh.kshrc
>>>>>> redirect {dirfd}<"/etc"
>>>>>> cat <~{dirfd}/profile
>>>>>> cat <~{dirfd}/ksh.kshrc
>>>>>> -- snip --
>>>>>>
>>>>>
>>>>> That could be done.  The code is in sh/macro.c sh_tilde_expand2().
>>>> [snip]
>>>>
>>>> Attached (as "astksh_tilde_fd001.diff.txt") is a prototype patch.
>>>> Technically it works without problems... but I'm not happy with the
>>>> |static| variable |devfdname| (short: Ugly |static| variable... which
>>>> means: Global variable (with function-local scope). Not thread-safe).
>>>>
>>>> Question: Is it _valid_ to allocate space from |shp->stk| and return
>>>> the string as return value of |sh_tilde()| ? Who or what is going to
>>>> deallocate the memory chunk ?
>>>
>>> Short answer from David:
>>> -- snip --
>>> Anything on shp->stk will get deleted when the command that it is
>>> expanding completes.
>>> -- snip --
>>>
>>> Attached (as "astksh_tilde_fd002.diff.txt") is a revised patch
>>> (without function-static variables) per David&co.'s (code review)
>>> feedback...
>>
>> Tried, tested, fell in love :)
>>
>> My only concern is that redirect {f}<>file never allowed plain numbers
>> as f, i.e. redirect {512}<>file. IMO you should remove that, or add
>> support that redirect {512}<>file works (I doubt David Korn is going
>> to like that and I am not going to like it either).
>
> Grumpf... you're the 2nd person to complain about that detail... ;-/
>
> ... attached (as "astksh_tilde_fd003.diff.txt") is an updated patch
> which has the support for ~{12345} removed. I added another testcase
> to cover the nested use of directory fds, too.

If there will ever be another version of ksh93 u+ please consider this
patch for a backport. Thank you.

Lionel
_______________________________________________
ast-developers mailing list
ast-developers@research.att.com
https://mailman.research.att.com/mailman/listinfo/ast-developers

Reply via email to