pike.git
/
NT
/
tools
/
sprshd
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/NT/tools/sprshd:15:
object p; sscanf(io->read(4),"%4c",int args); string *cmd=allocate(args); for(int e=0;e<args;e++) { sscanf(io->read(4),"%4c",int len); cmd[e]=io->read(len); } object pi=Stdio.File();
+
#if constant(Stdio.PROP_IPC)
+
object p2=pi->pipe(Stdio.PROP_IPC);
+
#else
object p2=pi->pipe();
-
+
#endif
string dir=cmd[0]; cmd=cmd[1..]; write("Doing "+cmd*" "+"\n"); switch(lower_case(cmd[0])) { case "mkdir": { io->write(sprintf("%4c",0));
pike.git/NT/tools/sprshd:37:
io->write(sprintf("%4c",0)); break; } case "copy": { string from=combine_path(combine_path(getcwd(),dir),cmd[1]); string to=combine_path(combine_path(getcwd(),dir),cmd[2]); if(mixed stat=file_stat(to))
+
{
if(stat[1]==-2)
-
to=combine_path(to,cmd[1]);
+
{
+
to=combine_path(to,
basename(
cmd[1])
)
;
+
}
+
}
-
+
+
int ret=Stdio.cp(from,to);
+
if(!ret)
+
{
+
string x=sprintf("Errno is %d\n"
+
"CWD=%s\n"
+
"from=%s\n"
+
"to=%s\n"
+
"dir=%s (%s)\n",
+
errno(),
+
getcwd(),
+
from,
+
to,
+
dir, combine_path(getcwd(),dir));
+
io->write(sprintf("%4c%s",strlen(x),x));
+
}
io->write(sprintf("%4c",0));
-
io->write(sprintf("%4c",!
Stdio.cp(from,to
))
)
;
+
io->write(sprintf("%4c",!
ret
));
break; } case "getenv": { string s=getenv(cmd[1])+"\n"; io->write(sprintf("%4c%s",strlen(s),s)); io->write(sprintf("%4c",0)); io->write(sprintf("%4c",0)); break; }
pike.git/NT/tools/sprshd:67:
"stdin":io, "stdout":p2, "stderr":p2, "cwd":dir, ])); }; if(!err) {
+
#if !constant(Process.PROP_IPC)
thread_create(monitor,p2,p);
-
+
#endif
while(1) { string s=pi->read(1000,1); if(!s || !strlen(s)) break; io->write(sprintf("%4c%s",strlen(s),s)); } io->write(sprintf("%4c",0)); io->write(sprintf("%4c",p->wait())); }else{ destruct(p2); io->write(sprintf("%4c",0)); io->write(sprintf("%4c",69)); } } io->close("w"); destruct(io); }
-
+
int main(int argc, string *argv) { if(argc<2) { werror("Usage: sprshd <port> <host to accept connections from>\n"); exit(1); } if(!bind((int)argv[1])) { werror("Failed to bind port.\n");