1 #include <u.h>
2 #include <libc.h>
3
4 void
main(int argc,char * argv[])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