diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-14 17:27:24 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-14 17:27:24 +0000 |
commit | a150899221a5badff9740703b754f901b4f52762 (patch) | |
tree | 3d6911874b0ee763e40490d04f56fc09d89ccfa6 /acme/bin/source/mkwnew.c | |
parent | 71cfa9c637386ebe00fc6d1bf6215db6657559f4 (diff) | |
download | plan9front-a150899221a5badff9740703b754f901b4f52762.tar.xz |
fill /acme
Diffstat (limited to 'acme/bin/source/mkwnew.c')
-rw-r--r-- | acme/bin/source/mkwnew.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/acme/bin/source/mkwnew.c b/acme/bin/source/mkwnew.c new file mode 100644 index 000000000..788e9d395 --- /dev/null +++ b/acme/bin/source/mkwnew.c @@ -0,0 +1,45 @@ +#include <u.h> +#include <libc.h> + +void +main(int argc, char *argv[]) +{ + int i, fd, pid, n; + char wdir[256]; + int dflag; + + dflag = 0; + ARGBEGIN{ + case 'd': + dflag = 1; + break; + default: + fprint(2, "usage: wnew [-d] [label]\n"); + }ARGEND + + pid = getpid(); + wdir[0] = '\0'; + if(!dflag) + getwd(wdir, sizeof wdir); + if(argc>0) + for(i=0; i<argc; i++) + snprint(wdir, sizeof wdir, "%s%c%s", wdir, i==0? '/' : '-', argv[i]); + else + snprint(wdir, sizeof wdir, "%s/-win", wdir); + + if((fd = open("/dev/wnew", ORDWR)) < 0) + sysfatal("wnew: can't open /dev/wnew: %r"); + + if(fprint(fd, "%d %s", pid, wdir+dflag) < 0) + sysfatal("wnew: can't create window: %r"); + + if(seek(fd, 0, 0) != 0) + sysfatal("wnew: can't seek: %r"); + + if((n=read(fd, wdir, sizeof wdir-1)) < 0) + sysfatal("wnew: can't read window id: %r"); + wdir[n] = '\0'; + + print("%s\n", wdir); + exits(nil); +} |