thandle 9p servers - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 80f72cbedc7c0b60d2172ed83279585ad6079247 (DIR) parent 3a6f92eed18aa29c7f5f2e150c0fb81adaa3a6bf (HTM) Author: rsc <devnull@localhost> Date: Fri, 18 Mar 2005 19:27:03 +0000 handle 9p servers Diffstat: M bin/netfileget | 13 +++++++++++++ M bin/netfileput | 20 ++++++++++++++++---- M bin/netfilestat | 52 ++++++++++++++++++++++--------- 3 files changed, 66 insertions(+), 19 deletions(-) --- (DIR) diff --git a/bin/netfileget b/bin/netfileget t@@ -11,6 +11,10 @@ if(! ~ $#* 2){ exit usage } +ns=`{namespace} +if(u test -S $ns/$1) + f=$f^9p + t=/tmp/netget.$pid.$USER fn sigexit { rm -f $t } t@@ -21,12 +25,21 @@ fn getfile { cat $t } +fn getfile9p { + if(! 9p read $1/$2) + exit 1 +} + fn getdir { if(! {echo cd $2; echo ls -l} | sftp -b - $1 | sed '1,2d; s/sftp> //g; /^$/d' >$t) exit 1 cat $t | awk '$NF == "." || $NF == ".." { next } {s = $NF; if($0 ~ /^d/) s = s "/"; print s}' } +fn getdir9p { + 9p ls -l $1/$2 | awk '{s=$NF; if($0 ~ /^d/) s=s"/"; print s}' +} + $f $1 $2 exit 0 (DIR) diff --git a/bin/netfileput b/bin/netfileput t@@ -1,15 +1,27 @@ #!/usr/local/plan9/bin/rc -whatis '*' if(! ~ $#* 2){ echo 'usage: netput system path' >[1=2] exit usage } +f=putfile +ns=`{namespace} +if(u test -S $ns/$1) + f=$f^9p + t=/tmp/netget.$pid.$USER fn sigexit { rm -f $t } -cat >$t -if(! echo put $t $2 | sftp -b - $1 >/dev/null) - exit 1 +fn putfile{ + cat >$t + if(! echo put $t $2 | sftp -b - $1 >/dev/null) + exit 1 +} +fn putfile9p{ + if(! 9p write $1/$2) + exit 1 +} + +$f $1 $2 exit 0 (DIR) diff --git a/bin/netfilestat b/bin/netfilestat t@@ -5,26 +5,48 @@ if(! ~ $#* 2){ exit usage } +f=dostat +ns=`{namespace} +if(u test -S $ns/$1) + f=$f^9p + t=/tmp/netisdir.$pid.$USER fn sigexit { rm -f $t } -{ - echo !echo XXX connected - echo cd $2 - echo !echo XXX directory exists -} | sftp -b - $1 >$t >[2=1] -if(9 grep -s XXX.directory.exists $t){ - echo directory +fn dostat { + { + echo !echo XXX connected + echo cd $2 + echo !echo XXX directory exists + } | sftp -b - $1 >$t >[2=1] + if(9 grep -s XXX.directory.exists $t){ + echo directory + exit 0 + } + if(9 grep -s 'is not a directory' $t){ + echo file + exit 0 + } + cat $t | sed 's/sftp> //g; /^$/d; /XXX/d; /^cd /d' >[1=2] + if(! 9 grep -s XXX.connected $t){ + echo connect failed + exit 0 + } + echo nonexistent exit 0 } -if(9 grep -s 'is not a directory' $t){ + +fn dostat9p { + if(! 9p ls -ld $1/$2 >$t >[2]/dev/null){ + echo nonexistent + exit 0 + } + if(9 grep -s '^d' $t){ + echo directory + exit 0 + } echo file exit 0 } -cat $t | sed 's/sftp> //g; /^$/d; /XXX/d; /^cd /d' >[1=2] -if(! 9 grep -s XXX.connected $t){ - echo connect failed - exit 0 -} -echo nonexistent -exit 0 + +$f $1 $2