Roland Mainz
2013-12-10 22:07:40 UTC
Hi!
----
The following testcase...
-- snip --
redirect {basefd}<"."
touch "x5"
cd -@ "x5"
redirect {n}<"."
cd -f ${basefd}
(cd -f "$n" ; print "hello5" >"myxattr5")
/usr/bin/runat "x5" "cat myxattr5"
(cd -@ "x5" ; cat "myxattr5" )
rm "x5"
-- snip --
... shows an issue with cd -f $fd in subshells in ast-ksh.2013-12-06
on Solaris 11/B145/64bit... it seems it doesn't restore the cwd of the
parent shell level when the non-|fork()|'ing subshell terminates:
-- snip --
$ ~/bin/ksh -x xattr_cd_fd002.sh
+ command exec
+ {basefd}< .
+ touch x5
+ cd -@ x5
+ command exec
+ {n}< .
+ cd -f 12
+ cd -f 10
+ print hello5
+ 1> myxattr5
+ /usr/bin/runat x5 'cat myxattr5'
runat: cannot open x5: No such file or directory
+ cd -@ x5
xxx.sh[8]: cd: /dev/file/xattr at x5//@//: [Not a directory]
+ cat myxattr5
hello5
+ rm x5
rm: x5: not found
-- snip --
Here is a reduced testcase which should work on all platforms:
-- snip --
$ ~/bin/ksh -c 'mkdir -p f1 ; redirect {d}<f1 ; /bin/pwd ; (cd -f $d ;
/bin/pwd) ; /bin/pwd ; true '
-- snip --
On Solaris 11/b145/AMD64/64bit and SuSE 12.3/AMD64/64bit it prints this...
-- snip --
/home/test001/x1
/home/test001/x1/f1
/home/test001/x1/f1
-- snip --
... but AFAIK it should print:
-- snip --
/home/test001/x1
/home/test001/x1/f1
/home/test001/x1
-- snip --
----
Bye,
Roland
----
The following testcase...
-- snip --
redirect {basefd}<"."
touch "x5"
cd -@ "x5"
redirect {n}<"."
cd -f ${basefd}
(cd -f "$n" ; print "hello5" >"myxattr5")
/usr/bin/runat "x5" "cat myxattr5"
(cd -@ "x5" ; cat "myxattr5" )
rm "x5"
-- snip --
... shows an issue with cd -f $fd in subshells in ast-ksh.2013-12-06
on Solaris 11/B145/64bit... it seems it doesn't restore the cwd of the
parent shell level when the non-|fork()|'ing subshell terminates:
-- snip --
$ ~/bin/ksh -x xattr_cd_fd002.sh
+ command exec
+ {basefd}< .
+ touch x5
+ cd -@ x5
+ command exec
+ {n}< .
+ cd -f 12
+ cd -f 10
+ print hello5
+ 1> myxattr5
+ /usr/bin/runat x5 'cat myxattr5'
runat: cannot open x5: No such file or directory
+ cd -@ x5
xxx.sh[8]: cd: /dev/file/xattr at x5//@//: [Not a directory]
+ cat myxattr5
hello5
+ rm x5
rm: x5: not found
-- snip --
Here is a reduced testcase which should work on all platforms:
-- snip --
$ ~/bin/ksh -c 'mkdir -p f1 ; redirect {d}<f1 ; /bin/pwd ; (cd -f $d ;
/bin/pwd) ; /bin/pwd ; true '
-- snip --
On Solaris 11/b145/AMD64/64bit and SuSE 12.3/AMD64/64bit it prints this...
-- snip --
/home/test001/x1
/home/test001/x1/f1
/home/test001/x1/f1
-- snip --
... but AFAIK it should print:
-- snip --
/home/test001/x1
/home/test001/x1/f1
/home/test001/x1
-- snip --
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) roland.mainz at nrubsig.org
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)
__ . . __
(o.\ \/ /.o) roland.mainz at nrubsig.org
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)