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