1 #include <u.h> 2 #include <libc.h> 3 4 void 5 main(int argc, char *argv[]) 6 { 7 int i, fd, pid, n; 8 char wdir[256]; 9 int dflag; 10 11 dflag = 0; 12 ARGBEGIN{ 13 case 'd': 14 dflag = 1; 15 break; 16 default: 17 fprint(2, "usage: wnew [-d] [label]\n"); 18 }ARGEND 19 20 pid = getpid(); 21 wdir[0] = '\0'; 22 if(!dflag) 23 getwd(wdir, sizeof wdir); 24 if(argc>0) 25 for(i=0; i<argc; i++) 26 snprint(wdir, sizeof wdir, "%s%c%s", wdir, i==0? '/' : '-', argv[i]); 27 else 28 snprint(wdir, sizeof wdir, "%s/-win", wdir); 29 30 if((fd = open("/dev/wnew", ORDWR)) < 0) 31 sysfatal("wnew: can't open /dev/wnew: %r"); 32 33 if(fprint(fd, "%d %s", pid, wdir+dflag) < 0) 34 sysfatal("wnew: can't create window: %r"); 35 36 if(seek(fd, 0, 0) != 0) 37 sysfatal("wnew: can't seek: %r"); 38 39 if((n=read(fd, wdir, sizeof wdir-1)) < 0) 40 sysfatal("wnew: can't read window id: %r"); 41 wdir[n] = '\0'; 42 43 print("%s\n", wdir); 44 exits(nil); 45 } 46