Hi folks,

here's a patch against p9p for an "proxy mode" in 9pserve, like Russ 
suggested. It just adds an new "-c" option which tells 9pserve to
dial to an address as it's input connection (instead of taking stdio). 

This way, 9pserve can eg. be used as a proxy between a unix socket
and TCP, making p9p servers available via TCP.

cu
-- 
----------------------------------------------------------------------
 Enrico Weigelt, metux IT service -- http://www.metux.de/

 cellphone: +49 174 7066481   email: [EMAIL PROTECTED]   skype: nekrad666
----------------------------------------------------------------------
 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------
Index: src/cmd/9pserve.c
===================================================================
--- src/cmd/9pserve.c   (revision 707)
+++ src/cmd/9pserve.c   (working copy)
@@ -136,7 +136,7 @@
 void
 usage(void)
 {
-       fprint(2, "usage: 9pserve [-lnv] [-A aname afid] [-M msize] address\n");
+       fprint(2, "usage: 9pserve [-c pipe] [-lnv] [-A aname afid] [-M msize] 
address\n");
        fprint(2, "\treads/writes 9P messages on stdin/stdout\n");
        threadexitsall("usage");
 }
@@ -157,6 +157,19 @@
        ARGBEGIN{
        default:
                usage();
+       case 'c':
+       {
+               char* pipename = EARGF(usage());
+               printf("pipename=\"%s\"\n", pipename);
+
+                if((fd = dial(pipename, nil, nil, nil)) < 0)                   
                                     
+                   sysfatal("dial %s: %r");                                    
                                      
+               dup(fd, 0);                                                     
                                          
+               dup(fd, 1);                                                     
                                          
+               if(fd > 1)                                                      
                                          
+                   close(fd);                                                  
                                      
+       }
+       break;  
        case 'A':
                attached = 1;
                xaname = EARGF(usage());

Reply via email to