diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-10-09 15:15:57 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-10-09 15:15:57 +0200 |
commit | 3cc39a0ac7da0bcf7840f58c0986b18ab01898a2 (patch) | |
tree | 41455ed6daa95862b0ed8c0799ad42dcd6e4d385 /sys/src/cmd/vnc/vncv.c | |
parent | 14817c49910494426fdd624dd7b4dc693a41594c (diff) |
vncv: snarfvers race, silly walks, add -l option for clipboard charset
Diffstat (limited to 'sys/src/cmd/vnc/vncv.c')
-rw-r--r-- | sys/src/cmd/vnc/vncv.c | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/sys/src/cmd/vnc/vncv.c b/sys/src/cmd/vnc/vncv.c index 3108bbae3..8d44813c9 100644 --- a/sys/src/cmd/vnc/vncv.c +++ b/sys/src/cmd/vnc/vncv.c @@ -2,7 +2,8 @@ #include "vncv.h" #include <libsec.h> -char* encodings = "copyrect hextile corre rre raw mousewarp"; +char* charset = "utf-8"; +char* encodings = "copyrect hextile corre rre raw mousewarp"; int bpp12; int shared; int verbose; @@ -10,6 +11,7 @@ Vnc* vnc; int mousefd; int tls; + static int vncstart(Vnc*, int); enum @@ -36,7 +38,7 @@ shutdown(void) pid = getpid(); for(i = 0; i < NProcs; i++) - if(pids[i] != pid) + if(pids[i] != 0 && pids[i] != pid) postnote(PNPROC, pids[i], killkin); } @@ -72,15 +74,15 @@ vnchungup(Vnc*) void usage(void) { - fprint(2, "usage: vncv [-e encodings] [-k keypattern] [-csv] host[:n]\n"); + fprint(2, "usage: vncv [-e encodings] [-k keypattern] [-l charset] [-csv] host[:n]\n"); exits("usage"); } void main(int argc, char **argv) { - int p, fd, dfd, cfd, shared; - char *keypattern, *addr; + int p, dfd, cfd, shared; + char *keypattern, *addr, *label; Point d; TLSconn conn; @@ -105,6 +107,9 @@ main(int argc, char **argv) case 'k': keypattern = EARGF(usage()); break; + case 'l': + charset = EARGF(usage()); + break; default: usage(); }ARGEND; @@ -132,7 +137,8 @@ main(int argc, char **argv) if(vncstart(vnc, shared) < 0) sysfatal("init failure: %r"); - if(initdraw(0, 0, "vncv") < 0) + label = smprint("vnc %s", serveraddr); + if(initdraw(0, 0, label) < 0) sysfatal("initdraw: %r"); display->locking = 1; unlockdisplay(display); @@ -173,22 +179,15 @@ main(int argc, char **argv) } pids[2] = p; - fd = open("/dev/label", OWRITE); - if(fd >= 0){ - fprint(fd, "vnc %s", serveraddr); - close(fd); - } - if(access("/dev/snarf", AEXIST) >= 0){ - switch(p = rfork(RFPROC|RFMEM)){ - case -1: - sysfatal("rfork: %r"); - default: - break; - case 0: - atexit(shutdown); - readkbd(vnc); - exits(nil); - } + switch(p = rfork(RFPROC|RFMEM)){ + case -1: + sysfatal("rfork: %r"); + default: + break; + case 0: + atexit(shutdown); + readkbd(vnc); + exits(nil); } pids[3] = p; |