[hackers] [wmii] Cleanup.

From: Kris Maglione <jg_AT_suckless.org>
Date: Sun Feb 03 21:11:54 2008

changeset: 2273:febfb42a727e
tag: tip
user: Kris Maglione <jg_AT_suckless.org>
date: Sun Feb 03 15:06:26 2008 -0500
summary: Cleanup.

diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/_util.c
--- a/cmd/wmii/_util.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/_util.c Sun Feb 03 15:06:26 2008 -0500
@@ -101,7 +101,8 @@ comm(int cols, char **toka, char **tokb)
                         tokb++;
                 }
         }
- ret = strlistdup((char**)vec.ary, vec.n);
+ vector_ppush(&vec, nil);
+ ret = strlistdup((char**)vec.ary);
         free(vec.ary);
         return ret;
 }
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/area.c
--- a/cmd/wmii/area.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/area.c Sun Feb 03 15:06:26 2008 -0500
@@ -96,7 +96,7 @@ area_create(View *v, Area *pos, uint w)
                 a->next->prev = a;
 
         if(a == v->area)
- a->floating = True;
+ a->floating = true;
 
         if(v->sel == nil)
                 area_focus(a);
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/client.c
--- a/cmd/wmii/client.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/client.c Sun Feb 03 15:06:26 2008 -0500
@@ -93,7 +93,7 @@ client_create(XWindow w, XWindowAttribut
         WinAttr fwa;
         Point p;
 
- c = emallocz(sizeof(Client));
+ c = emallocz(sizeof *c);
         c->border = wa->border_width;
 
         c->r.min = Pt(wa->x, wa->y);
@@ -199,9 +199,8 @@ client_manage(Client *c) {
         if(newgroup) {
                 if(f->area != f->view->sel)
                         f->view->oldsel = f->view->sel;
- focus(c, false);
- }
- else {
+ frame_focus(f);
+ }else {
                 frame_restack(c->sel, c->sel->area->sel);
                 view_restack(c->sel->view);
         }
@@ -233,9 +232,9 @@ client_destroy(Client *c) {
 
         r = client_grav(c, ZR);
 
- hide = False;
+ hide = false;
         if(!c->sel || c->sel->view != screen->sel)
- hide = True;
+ hide = true;
 
         XGrabServer(display);
 
@@ -264,6 +263,7 @@ client_destroy(Client *c) {
         event("DestroyClient %C\n", c);
 
         flushenterevents();
+ flushevents(FocusChangeMask, true);
         free(c->w.hints);
         free(c);
 }
@@ -322,9 +322,12 @@ client_grav(Client *c, Rectangle rd) {
         if(eqrect(rd, ZR)) {
                 if(c->sel) {
                         r = c->sel->floatr;
- }else
- r = frame_client2rect(c, c->r, true);
- cr = frame_rect2client(c, r, true);
+ cr = frame_rect2client(c, r, true);
+ }else {
+ cr = c->r;
+ r = frame_client2rect(c, cr, true);
+ r = rectsetorigin(r, cr.min);
+ }
                 sp = subpt(cr.min, r.min);
                 r = gravitate(r, cr, h->grav);
                 if(!h->gravstatic)
@@ -445,7 +448,7 @@ void
 void
 client_focus(Client *c) {
         static long id;
- flushevents(FocusChangeMask, True);
+ flushevents(FocusChangeMask, true);
 
         Dprint(DFocus, "client_focus([%C]%s) %ld\n", c, clientname(c), id++);
 
@@ -505,7 +508,7 @@ client_resize(Client *c, Rectangle r) {
         }
         sync(); /* Not ideal. */
         flushenterevents();
- flushevents(FocusChangeMask|ExposureMask, True);
+ flushevents(FocusChangeMask|ExposureMask, true);
 }
 
 void
@@ -530,7 +533,7 @@ client_configure(Client *c) {
         e.event = c->w.w;
         e.window = c->w.w;
         e.above = None;
- e.override_redirect = False;
+ e.override_redirect = false;
 
         e.x = r.min.x;
         e.y = r.min.y;
@@ -650,7 +653,7 @@ update_class(Client *c) {
                 strcpy(c->props, "::");
                 str = c->props + 1;
         }
- utflcpy(str+1, c->name, sizeof(c->props));
+ utflcpy(str+1, c->name, sizeof c->props);
 }
 
 static void
@@ -663,7 +666,7 @@ client_updatename(Client *c) {
         if(str == nil)
                 str = getprop_string(&c->w, "WM_NAME");
         if(str)
- utflcpy(c->name, str, sizeof(c->name));
+ utflcpy(c->name, str, sizeof c->name);
         free(str);
 
         update_class(c);
@@ -685,12 +688,20 @@ updatemwm(Client *c) {
         ulong *ret;
         int n;
 
+ /* To quote Metacity, or KWin quoting Metacity:
+ * We support MWM hints deemed non-stupid
+ * Our definition of non-stupid is a bit less lenient than
+ * theirs, though. In fact, we don't really even support the
+ * idea of supporting the hints that we support, but apps
+ * like xmms (which noone should use) break if we don't.
+ */
+
         n = getprop_long(&c->w, "_MOTIF_WM_HINTS", "_MOTIF_WM_HINTS",
                         0L, (long**)&ret, 3L);
 
- /* FIXME: Look over this. */
+ /* FIXME: Should somehow handle all frames. */
         if(c->sel)
- r = frame_rect2client(c, c->sel->r, c->sel->area->floating);
+ r = client_grav(c, ZR);
 
         c->borderless = 0;
         c->titleless = 0;
@@ -703,7 +714,7 @@ updatemwm(Client *c) {
         free(ret);
 
         if(c->sel) {
- r = frame_client2rect(c, r, c->sel->area->floating);
+ r = client_grav(c, r);
                 client_resize(c, r);
                 frame_draw(c->sel);
         }
@@ -746,7 +757,7 @@ client_prop(Client *c, Atom a) {
                 break;
         case XA_WM_CLASS:
                 n = getprop_textlist(&c->w, "WM_CLASS", &class);
- snprint(c->props, sizeof(c->props), "%s:%s:",
+ snprint(c->props, sizeof c->props, "%s:%s:",
                                 (n > 0 ? class[0] : "<nil>"),
                                 (n > 1 ? class[1] : "<nil>"));
                 freestringlist(class);
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/column.c
--- a/cmd/wmii/column.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/column.c Sun Feb 03 15:06:26 2008 -0500
@@ -191,14 +191,14 @@ column_scale(Area *a) {
                         i++, j++;
                 if(f->collapsed) {
                         if(i < 0 && (f != a->sel)) {
- f->collapsed = False;
+ f->collapsed = false;
                                 area_moveto(f->view->area, f);
                                 continue;
                         }
                         i--;
                 }else {
                         if(j < 0 && (f != a->sel))
- f->collapsed = True;
+ f->collapsed = true;
                         j--;
                 }
                 /* Doesn't change if we 'continue' */
@@ -287,7 +287,7 @@ column_arrange(Area *a, bool dirty) {
                 break;
         case Colmax:
                 for(f=a->frame; f; f=f->anext) {
- f->collapsed = False;
+ f->collapsed = false;
                         f->r = a->r;
                 }
                 goto resize;
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/dat.h
--- a/cmd/wmii/dat.h Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/dat.h Sun Feb 03 15:06:26 2008 -0500
@@ -360,5 +360,5 @@ extern char* debugtab[];
 extern char* debugtab[];
 
 #define Debug(x) if((debugflag|debugfile)&(x) && setdebug(x))
-#define Dprint(x, ...) BLOCK( debug(x, __VA_ARGS__) )
-
+#define Dprint(x, ...) BLOCK( if((debugflag|debugfile)&(x)) debug(x, __VA_ARGS__) )
+
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/div.c
--- a/cmd/wmii/div.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/div.c Sun Feb 03 15:06:26 2008 -0500
@@ -19,7 +19,7 @@ getdiv(Divide **dp) {
 
         d = emallocz(sizeof *d);
 
- wa.override_redirect = True;
+ wa.override_redirect = true;
         wa.cursor = cursor[CurDHArrow];
         wa.event_mask =
                   ExposureMask
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/event.c
--- a/cmd/wmii/event.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/event.c Sun Feb 03 15:06:26 2008 -0500
@@ -9,9 +9,10 @@ dispatch_event(XEvent *e) {
 dispatch_event(XEvent *e) {
         Debug(DEvent)
                 printevent(e);
- if(e->type < nelem(handler) && handler[e->type])
- handler[e->type](e);
- else
+ if(e->type < nelem(handler)) {
+ if(handler[e->type])
+ handler[e->type](e);
+ }else
                 xext_event(e);
 }
 
@@ -38,12 +39,12 @@ findenter(Display *d, XEvent *e, XPointe
         USED(d);
         l = (long*)v;
         if(*l)
- return False;
+ return false;
         if(e->type == EnterNotify)
- return True;
+ return true;
         if(e->type == MotionNotify)
                 (*l)++;
- return False;
+ return false;
 }
 
 /* This isn't perfect. If there were motion events in the queue
@@ -147,7 +148,7 @@ enternotify(XEvent *e) {
         if((w = findwin(ev->window)))
                 handle(w, enter, ev);
         else if(ev->window == scr.root.w) {
- sel_screen = True;
+ sel_screen = true;
                 frame_draw_all();
         }
 }
@@ -159,7 +160,7 @@ leavenotify(XEvent *e) {
         ev = &e->xcrossing;
         xtime = ev->time;
         if((ev->window == scr.root.w) && !ev->same_screen) {
- sel_screen = True;
+ sel_screen = true;
                 frame_draw_all();
         }
 }
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/float.c
--- a/cmd/wmii/float.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/float.c Sun Feb 03 15:06:26 2008 -0500
@@ -83,8 +83,10 @@ float_placeframe(Frame *f) {
         a = f->area;
         c = f->client;
 
+ /*
         if(c->trans)
                 return;
+ */
         if(c->fullscreen || c->w.hints->position || starting) {
                 f->r = client_grav(c, c->r);
                 return;
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/frame.c
--- a/cmd/wmii/frame.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/frame.c Sun Feb 03 15:06:26 2008 -0500
@@ -30,7 +30,7 @@ frame_create(Client *c, View *v) {
                 f->floatr = c->sel->floatr;
                 f->r = c->sel->r;
         }else{
- f->r = frame_client2rect(c, client_grav(c, ZR), true);
+ f->r = client_grav(c, ZR);
                 f->floatr = f->r;
                 c->sel = f;
         }
@@ -545,7 +545,7 @@ frame_focus(Frame *f) {
         client_focus(f->client);
 
         if(!a->floating && ((a->mode == Colstack) || (a->mode == Colmax)))
- column_arrange(a, False);
+ column_arrange(a, false);
 }
 
 int
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/fs.c
--- a/cmd/wmii/fs.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/fs.c Sun Feb 03 15:06:26 2008 -0500
@@ -184,7 +184,7 @@ get_file(void) {
         FileId *temp;
         if(!free_fileid) {
                 uint i = 15;
- temp = emallocz(sizeof(FileId) * i);
+ temp = emallocz(i * sizeof *temp);
                 for(; i; i--) {
                         temp->next = free_fileid;
                         free_fileid = temp++;
@@ -414,7 +414,7 @@ event(const char *format, ...) {
         va_list ap;
 
         va_start(ap, format);
- vsnprint(buffer, sizeof(buffer), format, ap);
+ vsnprint(buffer, sizeof buffer, format, ap);
         va_end(ap);
 
         pending_write(&events, buffer, strlen(buffer));
@@ -435,11 +435,15 @@ vdebug(int flag, const char *fmt, va_lis
         if(flag == 0)
                 flag = dflags;
 
+ if(!((debugflag|debugfile) & flag))
+ return;
+
         s = vsmprint(fmt, ap);
         len = strlen(s);
 
         if(debugflag&flag)
                 print("%s", s);
+
         if(debugfile&flag)
         for(i=0; i < nelem(pdebug); i++)
                 if(flag & (1<<i))
@@ -1102,7 +1106,7 @@ fs_clunk(Ixp9Req *r) {
                         *q-- = '\0';
 
                 q = f->p.bar->text;
- utflcpy(q, (char*)m.pos, sizeof(((Bar*)0)->text));
+ utflcpy(q, (char*)m.pos, sizeof ((Bar*)0)->text);
 
                 free(p);
 
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/key.c
--- a/cmd/wmii/key.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/key.c Sun Feb 03 15:06:26 2008 -0500
@@ -56,12 +56,12 @@ static void
 static void
 grabkey(Key *k) {
         XGrabKey(display, k->key, k->mod, scr.root.w,
- True, GrabModeAsync, GrabModeAsync);
+ true, GrabModeAsync, GrabModeAsync);
         if(numlock_mask) {
                 XGrabKey(display, k->key, k->mod | numlock_mask, scr.root.w,
- True, GrabModeAsync, GrabModeAsync);
+ true, GrabModeAsync, GrabModeAsync);
                 XGrabKey(display, k->key, k->mod | numlock_mask | LockMask, scr.root.w,
- True, GrabModeAsync, GrabModeAsync);
+ true, GrabModeAsync, GrabModeAsync);
         }
         sync();
 }
@@ -81,7 +81,7 @@ name2key(const char *name) {
         Key *k;
 
         for(k=key; k; k=k->lnext)
- if(!strncmp(k->name, name, sizeof(k->name)))
+ if(!strncmp(k->name, name, sizeof k->name))
                         return k;
         return nil;
 }
@@ -101,16 +101,16 @@ getkey(const char *name) {
                 ungrabkey(k);
                 return k;
         }
- utflcpy(buf, name, sizeof(buf));
+ utflcpy(buf, name, sizeof buf);
         toks = tokenize(seq, 8, buf, ',');
         for(i = 0; i < toks; i++) {
                 if(!k)
- r = k = emallocz(sizeof(Key));
+ r = k = emallocz(sizeof *k);
                 else {
- k->next = emallocz(sizeof(Key));
- k = k->next;
- }
- utflcpy(k->name, name, sizeof(k->name));
+ k->next = emallocz(sizeof *k);
+ k = k->next;
+ }
+ utflcpy(k->name, name, sizeof k->name);
                 kstr = strrchr(seq[i], '-');
                 if(kstr)
                         kstr++;
@@ -189,7 +189,7 @@ kpress_seq(XWindow w, Key *done) {
         Key *found;
 
         next_keystroke(&mod, &key);
- found = match_keys(done, mod, key, True);
+ found = match_keys(done, mod, key, true);
         if((done->mod == mod) && (done->key == key))
                 fake_keypress(mod, key); /* double key */
         else {
@@ -208,14 +208,14 @@ kpress(XWindow w, ulong mod, KeyCode key
 
         for(k=key; k; k=k->lnext)
                  k->tnext=k->lnext;
- found = match_keys(key, mod, keycode, False);
+ found = match_keys(key, mod, keycode, false);
         if(!found) /* grabbed but not found */
                 XBell(display, 0);
         else if(!found->tnext && !found->next)
                 event("Key %s\n", found->name);
         else {
- XGrabKeyboard(display, w, True, GrabModeAsync, GrabModeAsync, CurrentTime);
- flushevents(FocusChangeMask, True);
+ XGrabKeyboard(display, w, true, GrabModeAsync, GrabModeAsync, CurrentTime);
+ flushevents(FocusChangeMask, true);
                 kpress_seq(w, found);
                 XUngrabKeyboard(display, CurrentTime);
                 sync();
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/main.c
--- a/cmd/wmii/main.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/main.c Sun Feb 03 15:06:26 2008 -0500
@@ -20,11 +20,15 @@ static const char
         version[] = "wmii-"VERSION", ©2007 Kris Maglione\n";
 
 static int (*xlib_errorhandler) (Display*, XErrorEvent*);
-static char *address, *ns_path;
-static int check_other_wm;
-static struct sigaction sa;
-static struct passwd *passwd;
-static int sleeperfd, sock, exitsignal;
+static char* address;
+static char* ns_path;
+static bool check_other_wm;
+static int sleeperfd;
+static int sock;
+static int exitsignal;
+
+static struct sigaction sa;
+static struct passwd* passwd;
 
 static void
 usage(void) {
@@ -67,49 +71,8 @@ scan_wins(void) {
                 XFree(wins);
 }
 
-static char*
-ns_display(void) {
- char *s, *disp;
-
- disp = getenv("DISPLAY");
- if(disp == nil)
- fatal("DISPLAY is unset");
-
- disp = estrdup(disp);
- s = &disp[strlen(disp) - 2];
- if(strcmp(s, ".0") == 0)
- *s = '\0';
-
- s = emalloc(strlen(disp) + strlen(user) + strlen("/tmp/ns..") + 1);
- sprint(s, "/tmp/ns.%s.%s", user, disp);
-
- free(disp);
- return s;
-}
-
-static void
-rmkdir(char *path, int mode) {
- char *p;
- int ret;
- char c;
-
- for(p = path+1; ; p++) {
- c = *p;
- if((c == '/') || (c == '\0')) {
- *p = '\0';
- ret = mkdir(path, mode);
- if((ret == -1) && (errno != EEXIST))
- fatal("Can't create path '%s': %r", path);
- *p = c;
- }
- if(c == '\0')
- break;
- }
-}
-
 static void
 init_ns(void) {
- struct stat st;
         char *s;
 
         if(address && strncmp(address, "unix!", 5) == 0) {
@@ -117,35 +80,24 @@ init_ns(void) {
                 s = strrchr(ns_path, '/');
                 if(s != nil)
                         *s = '\0';
- }
- else if((s = getenv("NAMESPACE")))
- ns_path = s;
- else
- ns_path = ns_display();
-
- if(ns_path[0] != '/' || ns_path[0] == '\0')
- fatal("Bad ns_path");
-
- rmkdir(ns_path, 0700);
-
- if(stat(ns_path, &st))
- fatal("Can't stat ns_path '%s': %r", ns_path);
- if(getuid() != st.st_uid)
- fatal("ns_path '%s' exists but is not owned by you", ns_path);
- if(st.st_mode & 077)
- if(chmod(ns_path, st.st_mode & ~077))
- fatal("ns_path '%s' exists, but has group or world permissions", ns_path);
+ if(ns_path[0] != '/' || ns_path[0] == '\0')
+ fatal("address \"%s\" is not an absolute path", address);
+ setenv("NAMESPACE", ns_path, true);
+ }else
+ ns_path = ixp_namespace();
+
+ if(ns_path == nil)
+ fatal("Bad namespace path: %r\n");
 }
 
 static void
 init_environment(void) {
         init_ns();
 
- if(address == nil)
+ if(address)
+ setenv("WMII_ADDRESS", address, true);
+ else
                 address = smprint("unix!%s/wmii", ns_path);
-
- setenv("WMII_NS_DIR", ns_path, True);
- setenv("WMII_ADDRESS", address, True);
 }
 
 static void
@@ -249,7 +201,7 @@ cleanup_handler(int signal) {
         sa.sa_handler = SIG_DFL;
         sigaction(signal, &sa, nil);
 
- srv.running = False;
+ srv.running = false;
 
         switch(signal) {
         default:
@@ -395,7 +347,7 @@ main(int argc, char *argv[]) {
                 usage();
 
         setlocale(LC_CTYPE, "");
- starting = True;
+ starting = true;
 
         initdisplay();
 
@@ -449,7 +401,7 @@ main(int argc, char *argv[]) {
         sel_screen = pointerscreen();
 
         num_screens = 1;
- screens = emallocz(num_screens * sizeof(*screens));
+ screens = emallocz(num_screens * sizeof *screens);
         screen = &screens[0];
         for(i = 0; i < num_screens; i++) {
                 s = &screens[i];
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/message.c
--- a/cmd/wmii/message.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/message.c Sun Feb 03 15:06:26 2008 -0500
@@ -382,7 +382,7 @@ message_root(void *p, IxpMsg *m) {
                 if((n & (Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) == 0)
                         return Ebadvalue;
 
- utflcpy(def.grabmod, s, sizeof(def.grabmod));
+ utflcpy(def.grabmod, s, sizeof def.grabmod);
                 def.mod = n;
                 break;
         case LNORMCOLORS:
@@ -462,7 +462,7 @@ message_view(View *v, IxpMsg *m) {
                         return Ebadvalue;
 
                 a->mode = i;
- column_arrange(a, True);
+ column_arrange(a, true);
                 view_restack(v);
 
                 if(v == screen->sel)
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/rule.c
--- a/cmd/wmii/rule.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/rule.c Sun Feb 03 15:06:26 2008 -0500
@@ -91,7 +91,7 @@ update_rules(Rule **rule, const char *da
                                 *rule = emallocz(sizeof **rule);
                                 (*rule)->regex = regcomp(regex);
                                 if((*rule)->regex) {
- utflcpy((*rule)->value, value, sizeof(rul->value));
+ utflcpy((*rule)->value, value, sizeof rul->value);
                                         rule = &(*rule)->next;
                                 }else
                                         free(*rule);
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/view.c
--- a/cmd/wmii/view.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/view.c Sun Feb 03 15:06:26 2008 -0500
@@ -73,7 +73,7 @@ view_create(const char *name) {
         v->r = screen->r;
         v->r.max.y = screen->barwin->r.min.y;
 
- utflcpy(v->name, name, sizeof(v->name));
+ utflcpy(v->name, name, sizeof v->name);
 
         event("CreateTag %s\n", v->name);
         area_create(v, nil, 0);
@@ -265,7 +265,7 @@ view_select(const char *arg) {
 view_select(const char *arg) {
         char buf[256];
 
- utflcpy(buf, arg, sizeof(buf));
+ utflcpy(buf, arg, sizeof buf);
         trim(buf, " \t+/");
 
         if(buf[0] == '\0')
@@ -301,10 +301,16 @@ view_attach(View *v, Frame *f) {
 
 void
 view_detach(Frame *f) {
+ Client *c;
         View *v;
 
         v = f->view;
+ c = f->client;
+
         area_detach(f);
+ if(c->sel == f)
+ c->sel = f->cnext;
+
         if(v != screen->sel && empty_p(v))
                 view_destroy(v);
 }
@@ -449,7 +455,7 @@ view_rects(View *v, uint *num, Frame *ig
         for(f=v->area->frame; f; f=f->anext)
                 i++;
 
- result = emallocz(i * sizeof(Rectangle));
+ result = emallocz(i * sizeof *result);
 
         i = 0;
         for(f=v->area->frame; f; f=f->anext)
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii/x11.c
--- a/cmd/wmii/x11.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii/x11.c Sun Feb 03 15:06:26 2008 -0500
@@ -411,7 +411,7 @@ convpts(Point *pt, int np) {
         XPoint *rp;
         int i;
         
- rp = emalloc(np * sizeof(*rp));
+ rp = emalloc(np * sizeof *rp);
         for(i = 0; i < np; i++) {
                 rp[i].x = pt[i].x;
                 rp[i].y = pt[i].y;
@@ -628,7 +628,7 @@ xatom(char *name) {
         
         e = hash_get(&atommap, name, 1);
         if(e->val == nil)
- e->val = (void*)XInternAtom(display, name, False);
+ e->val = (void*)XInternAtom(display, name, false);
         return (Atom)e->val;
 }
 
@@ -660,7 +660,7 @@ keycode(char *name) {
 
 void
 sync(void) {
- XSync(display, False);
+ XSync(display, false);
 }
 
 /* Properties */
@@ -732,7 +732,7 @@ getprop(Window *w, char *prop, char *typ
         typea = (type ? xatom(type) : 0L);
 
         status = XGetWindowProperty(display, w->w,
- xatom(prop), offset, length, False /* delete */,
+ xatom(prop), offset, length, false /* delete */,
                 typea, actual, format, &n, &extra, ret);
 
         if(status != Success) {
@@ -762,8 +762,6 @@ getprop_long(Window *w, char *prop, char
         n = getprop(w, prop, type, &actual, &format, offset, (uchar**)ret, length);
         if(n == 0 || format == 32 && xatom(type) == actual)
                 return n;
- Dprint(DGeneric, "getprop_long(%W, %s, %s) format=%d, actual=\"%A\"\n",
- w, prop, type, format, actual);
         free(*ret);
         *ret = 0;
         return 0;
@@ -775,19 +773,21 @@ getprop_ulong(Window *w, char *prop, cha
 }
 
 char**
-strlistdup(char *list[], int n) {
+strlistdup(char *list[]) {
         char **p, *q;
- int i, m;
-
- for(i=0, m=0; i < n; i++)
- m += strlen(list[i])+1;
-
- p = malloc((n+1)*sizeof(char*) + m);
+ int i, m, n;
+
+ n = 0;
+ m = 0;
+ for(p=list; *p; p++, n++)
+ m += strlen(*p) + 1;
+
+ p = malloc((n+1) * sizeof(*p) + m);
         q = (char*)&p[n+1];
 
         for(i=0; i < n; i++) {
                 p[i] = q;
- m = strlen(list[i])+1;
+ m = strlen(list[i]) + 1;
                 memcpy(q, list[i], m);
                 q += m;
         }
@@ -879,7 +879,7 @@ grabpointer(Window *w, Window *confine,
         cw = None;
         if(confine)
                 cw = confine->w;
- return XGrabPointer(display, w->w, False /* owner events */, mask,
+ return XGrabPointer(display, w->w, false /* owner events */, mask,
                 GrabModeAsync, GrabModeAsync, cw, cur, CurrentTime
                 ) == GrabSuccess;
 }
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmii9menu.c
--- a/cmd/wmii9menu.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmii9menu.c Sun Feb 03 15:06:26 2008 -0500
@@ -169,8 +169,8 @@ main(int argc, char **argv)
 
         numitems = argc;
 
- labels = emalloc(numitems * sizeof(*labels));
- commands = emalloc(numitems * sizeof(*labels));
+ labels = emalloc(numitems * sizeof *labels);
+ commands = emalloc(numitems * sizeof *labels);
 
         for(i = 0; i < numitems; i++) {
                 labels[i] = argv[i];
diff -r 392f0fdd29fa -r febfb42a727e cmd/wmiir.c
--- a/cmd/wmiir.c Sun Feb 03 15:06:21 2008 -0500
+++ b/cmd/wmiir.c Sun Feb 03 15:06:26 2008 -0500
@@ -1,4 +1,4 @@
-/* Copyright ©2007 Kris Maglione <fbsdaemon_AT_gmail.com>
+/* Copyight ©2007-2008 Kris Maglione <fbsdaemon_AT_gmail.com>
  * See LICENSE file for license details.
  */
 #define IXP_NO_P9_
@@ -35,12 +35,13 @@ write_data(IxpCFid *fid, char *name) {
         int len;
 
         buf = emalloc(fid->iounit);;
- do {
+ for(;;) {
                 len = read(0, buf, fid->iounit);
- if(len > 0 && ixp_write(fid, buf, len) != len)
+ if(len <= 0)
+ break;
+ if(ixp_write(fid, buf, len) != len)
                         fatal("cannot write file '%s': %r\n", name);
- } while(len > 0);
-
+ }
         free(buf);
 }
 
@@ -88,16 +89,24 @@ timestr(uint val) {
 }
 
 static void
-print_stat(Stat *s, int lflag) {
+print_stat(Stat *s, int lflag, char *file, int pflag) {
+ char *slash;
+
+ slash = "";
+ if(pflag)
+ slash = "/";
+ else
+ file = "";
+
         if(lflag)
- print("%s %s %s %5llud %s %s\n",
+ print("%s %s %s %5llud %s %s%s%s\n",
                                 modestr(s->mode), s->uid, s->gid, s->length,
- timestr(s->mtime), s->name);
+ timestr(s->mtime), file, slash, s->name);
         else {
                 if((s->mode&P9_DMDIR) && strcmp(s->name, "/"))
- print("%s/\n", s->name);
+ print("%s%s%s/\n", file, slash, s->name);
                 else
- print("%s\n", s->name);
+ print("%s%s%s\n", file, slash, s->name);
         }
 }
 
@@ -125,8 +134,8 @@ static int
 static int
 xawrite(int argc, char *argv[]) {
         IxpCFid *fid;
- char *file, *buf, *arg;
- int nbuf, mbuf, len;
+ char *file, *buf;
+ int nbuf, i;
 
         ARGBEGIN{
         default:
@@ -139,19 +148,14 @@ xawrite(int argc, char *argv[]) {
                 fatal("Can't open file '%s': %r\n", file);
 
         nbuf = 0;
- mbuf = 128;
- buf = emalloc(mbuf);
+ for(i=0; i < argc; i++)
+ nbuf += strlen(argv[i]) + 1;
+ buf = emalloc(nbuf);
+ buf[0] = '\0';
         while(argc) {
- arg = ARGF();
- len = strlen(arg);
- if(nbuf + len + 1 > mbuf) {
- mbuf <<= 1;
- buf = erealloc(buf, mbuf);
- }
- memcpy(buf+nbuf, arg, len);
- nbuf += len;
+ strcat(buf, ARGF());
                 if(argc)
- buf[nbuf++] = ' ';
+ strcat(buf, " ");
         }
 
         if(ixp_write(fid, buf, nbuf) == -1)
@@ -237,9 +241,10 @@ xls(int argc, char *argv[]) {
         IxpCFid *fid;
         char *file;
         char *buf;
- int lflag, dflag, count, nstat, mstat, i;
-
- lflag = dflag = 0;
+ int lflag, dflag, pflag;
+ int count, nstat, mstat, i;
+
+ lflag = dflag = pflag = 0;
 
         ARGBEGIN{
         case 'l':
@@ -248,52 +253,78 @@ xls(int argc, char *argv[]) {
         case 'd':
                 dflag++;
                 break;
- default:
- usage();
- }ARGEND;
-
- file = EARGF(usage());
-
- stat = ixp_stat(client, file);
- if(stat == nil)
- fatal("cannot stat file '%s': %r\n", file);
-
- if(dflag || (stat->mode&P9_DMDIR) == 0) {
- print_stat(stat, lflag);
+ case 'p':
+ pflag++;
+ break;
+ default:
+ usage();
+ }ARGEND;
+
+ file = EARGF(usage());
+ do {
+ stat = ixp_stat(client, file);
+ if(stat == nil)
+ fatal("cannot stat file '%s': %r\n", file);
+
+ i = strlen(file);
+ if(file[i-1] == '/') {
+ file[i-1] = '\0';
+ if(!(stat->mode&P9_DMDIR))
+ fatal("%s: not a directory", file);
+ }
+ if(dflag || (stat->mode&P9_DMDIR) == 0) {
+ print_stat(stat, lflag, file, pflag);
+ ixp_freestat(stat);
+ continue;
+ }
                 ixp_freestat(stat);
- return 0;
- }
- ixp_freestat(stat);
-
- fid = ixp_open(client, file, P9_OREAD);
- if(fid == nil)
- fatal("Can't open file '%s': %r\n", file);
-
- nstat = 0;
- mstat = 16;
- stat = emalloc(sizeof(*stat) * mstat);
- buf = emalloc(fid->iounit);
- while((count = ixp_read(fid, buf, fid->iounit)) > 0) {
- m = ixp_message(buf, count, MsgUnpack);
- while(m.pos < m.end) {
- if(nstat == mstat) {
- mstat <<= 1;
- stat = erealloc(stat, sizeof(*stat) * mstat);
+
+ fid = ixp_open(client, file, P9_OREAD);
+ if(fid == nil)
+ fatal("Can't open file '%s': %r\n", file);
+
+ nstat = 0;
+ mstat = 16;
+ stat = emalloc(mstat * sizeof *stat);
+ buf = emalloc(fid->iounit);
+ while((count = ixp_read(fid, buf, fid->iounit)) > 0) {
+ m = ixp_message(buf, count, MsgUnpack);
+ while(m.pos < m.end) {
+ if(nstat == mstat) {
+ mstat <<= 1;
+ stat = erealloc(stat, mstat * sizeof *stat);
+ }
+ ixp_pstat(&m, &stat[nstat++]);
                         }
- ixp_pstat(&m, &stat[nstat++]);
                 }
- }
- ixp_close(fid);
-
- qsort(stat, nstat, sizeof(*stat), comp_stat);
- for(i = 0; i < nstat; i++) {
- print_stat(&stat[i], lflag);
- ixp_freestat(&stat[i]);
- }
- free(stat);
+ ixp_close(fid);
+
+ qsort(stat, nstat, sizeof *stat, comp_stat);
+ for(i = 0; i < nstat; i++) {
+ print_stat(&stat[i], lflag, file, pflag);
+ ixp_freestat(&stat[i]);
+ }
+ free(stat);
+ } while((file = ARGF()));
 
         if(count == -1)
                 fatal("cannot read directory '%s': %r\n", file);
+ return 0;
+}
+
+static int
+xnamespace(int argc, char *argv[]) {
+ char *path;
+
+ ARGBEGIN{
+ default:
+ usage();
+ }ARGEND;
+
+ path = ixp_namespace();
+ if(path == nil)
+ fatal("can't find namespace: %r\n");
+ print("%s\n", path);
         return 0;
 }
 
@@ -322,17 +353,20 @@ struct exectab {
 struct exectab {
         char *cmd;
         int (*fn)(int, char**);
-} etab[] = {
+} fstab[] = {
         {"cat", xread},
         {"create", xcreate},
         {"ls", xls},
         {"read", xread},
         {"remove", xremove},
         {"rm", xremove},
- {"setsid", xsetsid},
         {"write", xwrite},
         {"xwrite", xawrite},
- {0, 0}
+ {0, }
+}, utiltab[] = {
+ {"namespace", xnamespace},
+ {"setsid", xsetsid},
+ {0, }
 };
 
 int
@@ -347,7 +381,7 @@ main(int argc, char *argv[]) {
 
         ARGBEGIN{
         case 'v':
- print("%s-" VERSION ", ©2007 Kris Maglione\n", argv0);
+ print("%s-" VERSION ", ©2008 Kris Maglione\n", argv0);
                 exit(0);
         case 'a':
                 address = EARGF(usage());
@@ -356,14 +390,18 @@ main(int argc, char *argv[]) {
                 usage();
         }ARGEND;
 
- if(!address)
- fatal("$WMII_ADDRESS not set\n");
-
- client = ixp_mount(address);
+ for(tab=utiltab; tab->cmd; tab++)
+ if(!strcmp(*argv, tab->cmd))
+ return tab->fn(argc, argv);
+
+ if(address && *address)
+ client = ixp_mount(address);
+ else
+ client = ixp_nsmount("wmii");
         if(client == nil)
                 fatal("can't mount: %r\n");
 
- for(tab = etab; tab->cmd; tab++)
+ for(tab=fstab; tab->cmd; tab++)
                 if(strcmp(*argv, tab->cmd) == 0) break;
         if(tab->cmd == 0)
                 usage();
@@ -373,3 +411,4 @@ main(int argc, char *argv[]) {
         ixp_unmount(client);
         return ret;
 }
+
diff -r 392f0fdd29fa -r febfb42a727e img/mkfile
--- a/img/mkfile Sun Feb 03 15:06:21 2008 -0500
+++ b/img/mkfile Sun Feb 03 15:06:26 2008 -0500
@@ -8,7 +8,7 @@ iconscale = `{*=$epsbox; hoc -e $iconwid
 iconscale = `{*=$epsbox; hoc -e $iconwidth/'('$3-' '$1')'}
 iconheight = `{*=$epsbox; hoc -e '('$4-' '$2')*'$iconscale}
 
-icon.png: $eps
+%.png: %.eps
         * = `{hoc -e'-('$epsbox')'}
         x = $1
         y = $2
@@ -20,3 +20,18 @@ icon.png: $eps
                 quit
         !
 
+%-small.png: %.eps
+ iconwidth = 16
+ iconscale = `{*=$epsbox; hoc -e $iconwidth/'('$3-' '$1')'}
+ iconheight = `{*=$epsbox; hoc -e '('$4-' '$2')*'$iconscale}
+ * = `{hoc -e'-('$epsbox')'}
+ x = $1
+ y = $2
+ gs -q -dBATCH -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=$target -g$iconwidth'x'$iconheight - <<!
+ $iconscale $iconscale scale
+ $x $y translate
+ ($eps) run
+ showpage
+ quit
+ !
+
diff -r 392f0fdd29fa -r febfb42a727e include/x11.h
--- a/include/x11.h Sun Feb 03 15:06:21 2008 -0500
+++ b/include/x11.h Sun Feb 03 15:06:26 2008 -0500
@@ -226,7 +226,7 @@ void sethints(Window*);
 void sethints(Window*);
 void setshapemask(Window *dst, Image *src, Point);
 void setwinattr(Window*, WinAttr*, int valmask);
-char** strlistdup(char**, int);
+char** strlistdup(char**);
 Point subpt(Point, Point);
 void sync(void);
 uint textwidth(Font*, char*);
diff -r 392f0fdd29fa -r febfb42a727e rc/rc.wmii.rc
--- a/rc/rc.wmii.rc Sun Feb 03 15:06:21 2008 -0500
+++ b/rc/rc.wmii.rc Sun Feb 03 15:06:26 2008 -0500
@@ -123,10 +123,10 @@ fn Event-LeftBarMouseDown {
 
 # Actions
 fn Action-rehash {
- comm -23 <{ls $WMII_NS_DIR/proglist.* >[2]/dev/null | awk -F'\.' '{print $NF}'} \
+ comm -23 <{ls `{namespace}/proglist.* >[2]/dev/null | awk -F'\.' '{print $NF}'} \
                  <{ps | awk '{print $2}'} |
         while(id=`{read})
- rm $WMII_NS_DIR/proglist.$id
+ rm `{namespace}/proglist.$id
         wi_proglist $PATH >$progs_file}
 fn Action-quit {
         wmiir xwrite /ctl quit}
@@ -221,7 +221,6 @@ key Shift-$MODKEY-^`{seq 0 9} || fn $key
 
 #` WM Configuration
 wmiir write /ctl <<!
- view 1
         grabmod $MODKEY
         border 2
         font $wmiifont
@@ -234,7 +233,7 @@ Action overridekeys
 Action overridekeys
 
 # Misc Setup
-progs_file=$WMII_NS_DIR/proglist.$pid
+progs_file=`{namespace}/proglist.$pid
 Action status
 Action rehash
 
diff -r 392f0fdd29fa -r febfb42a727e rc/wmiirc.sh
--- a/rc/wmiirc.sh Sun Feb 03 15:06:21 2008 -0500
+++ b/rc/wmiirc.sh Sun Feb 03 15:06:26 2008 -0500
@@ -185,7 +185,7 @@ export WMII_FOCUSCOLORS WMII_SELCOLORS W
 export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS
 
 # Misc
-progsfile="$WMII_NS_DIR/.proglist"
+progsfile="$(wmiir namespace)/.proglist"
 Action status &
 wi_proglist $PATH >$progsfile &
 
Received on Sun Feb 03 2008 - 21:11:54 UTC

This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 15:59:15 UTC