1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
#!/usr/local/bin/pike 
 
inherit Stdio.File; 
 
string handle_input() 
{ 
  object stdin=Stdio.File("stdin"); 
  while(string s=stdin->read(1000,1)) 
    write(s); 
} 
 
 
#if !constant(strerror) 
#define strerror(X) X 
#endif 
 
int main(int argc, string *cmd) 
{ 
  if(!connect(getenv("NTHOST"),(int)getenv("NTPORT"))) 
  { 
    werror("Failed to connect "+strerror(errno())+".\n"); 
    exit(1); 
  } 
 
  string tmp=getcwd(); 
  string mnt=getenv("NTMOUNT"); 
  if(mnt && strlen(mnt)) tmp=replace(tmp,mnt,""); 
  cmd[0]=getenv("NTDRIVE")+replace(tmp,"/","\\"); 
  write(sprintf("%4c",sizeof(cmd))); 
  for(int e=0;e<sizeof(cmd);e++) 
    write(sprintf("%4c%s",strlen(cmd[e]),cmd[e])); 
 
  thread_create(handle_input); 
  while(1) 
  { 
    sscanf(read(4),"%4c",int len); 
    if(!len) break; 
    predef::write(read(len)); 
  } 
  sscanf(read(4),"%4c",int code); 
  exit(code); 
}