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).
Me neither. I think the symbolic version is better and prevents programmers from hardcoding the fd numbers in scripts. > > If you are done please post to ast-us...@research.att.com to that > Chester Ramey <chet.ra...@case.edu> can port this to bash :) Agreed. I think this is very useful to make the long paths to experiment data (often > 2k) we have more manageable in scripts. Lionel _______________________________________________ ast-developers mailing list ast-developers@research.att.com https://mailman.research.att.com/mailman/listinfo/ast-developers