wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 83834ba9b3ecd9cd0a457c8981658f15dae3b113
parent bcec7933d80389c7aa82eb0bdf2adbbd63f35782
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Thu,  6 Apr 2006 07:55:33 +0200

drastic reduction of ugly #define's


Diffstat:
cmd/wm/fs.c | 42+++++++++++++++++++++---------------------
cmd/wm/wm.h | 45++++++++++++++++++++++++++++++++++-----------
cmd/wmiimenu.c | 6+++++-
cmd/wmiir.c | 4++--
libcext/cext.h | 11++++-------
libcext/strtonum.c | 8+++++---
libixp/ixp.h | 59++++++++++++++++++++++++++++++++---------------------------
libixp/socket.c | 10++++------
8 files changed, 107 insertions(+), 78 deletions(-)

diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -27,7 +27,7 @@ static char Enofunc[] = "function not supported"; static char Enocommand[] = "command not supported"; static char Ebadvalue[] = "bad value"; -#define WMII_IOUNIT 2048 +enum { WMII_IOUNIT = 2048 }; /* * filesystem specification @@ -464,20 +464,20 @@ type2stat(Stat *stat, char *wname, Qid *dir) case FsDclients: case FsDlabel: case FsDroot: - return mkstat(stat, dir, wname, 0, DMDIR | DMREAD | DMEXEC); + return mkstat(stat, dir, wname, 0, IXP_DMDIR | IXP_DMREAD | IXP_DMEXEC); break; case FsDbar: - return mkstat(stat, dir, wname, 0, DMDIR | DMREAD | DMWRITE | DMEXEC); + return mkstat(stat, dir, wname, 0, IXP_DMDIR | IXP_DMREAD | IXP_DMWRITE | IXP_DMEXEC); break; case FsFctl: - return mkstat(stat, dir, wname, 0, DMWRITE); + return mkstat(stat, dir, wname, 0, IXP_DMWRITE); break; case FsFevent: - return mkstat(stat, dir, wname, 0, DMREAD | DMWRITE); + return mkstat(stat, dir, wname, 0, IXP_DMREAD | IXP_DMWRITE); break; case FsFborder: snprintf(buf, sizeof(buf), "%d", def.border); - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(buf), IXP_DMREAD | IXP_DMWRITE); break; case FsFgeom: if(dir_type == FsDclient) { @@ -490,68 +490,68 @@ type2stat(Stat *stat, char *wname, Qid *dir) snprintf(buf, sizeof(buf), "%d %d %d %d", c->rect.x, c->rect.y, c->rect.width, c->rect.height); } - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(buf), IXP_DMREAD | IXP_DMWRITE); break; case FsFclass: if(dir_type == FsDclient) { f = view.data[dir_i1]->area.data[dir_i2]->frame.data[dir_i3]; - return mkstat(stat, dir, wname, strlen(f->client->classinst), DMREAD); + return mkstat(stat, dir, wname, strlen(f->client->classinst), IXP_DMREAD); } else - return mkstat(stat, dir, wname, strlen(client.data[dir_i1]->classinst), DMREAD); + return mkstat(stat, dir, wname, strlen(client.data[dir_i1]->classinst), IXP_DMREAD); break; case FsFname: if(dir_type == FsDclient) { f = view.data[dir_i1]->area.data[dir_i2]->frame.data[dir_i3]; - return mkstat(stat, dir, wname, strlen(f->client->name), DMREAD); + return mkstat(stat, dir, wname, strlen(f->client->name), IXP_DMREAD); } else - return mkstat(stat, dir, wname, strlen(client.data[dir_i1]->name), DMREAD); + return mkstat(stat, dir, wname, strlen(client.data[dir_i1]->name), IXP_DMREAD); break; case FsFtags: switch(dir_type) { case FsDclient: f = view.data[dir_i1]->area.data[dir_i2]->frame.data[dir_i3]; tags2str(buf, sizeof(buf), f->client->tag, f->client->ntag); - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(buf), IXP_DMREAD | IXP_DMWRITE); break; case FsDGclient: tags2str(buf, sizeof(buf), client.data[dir_i1]->tag, client.data[dir_i1]->ntag); - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(buf), IXP_DMREAD | IXP_DMWRITE); break; default: { unsigned int i, len = 0; for(i = 0; i < tag.size; i++) len += strlen(tag.data[i]) + 1; - return mkstat(stat, dir, wname, len, DMREAD); + return mkstat(stat, dir, wname, len, IXP_DMREAD); } break; } break; case FsFtag: if(dir_type == FsDview) - return mkstat(stat, dir, wname, strlen(def.tag), DMREAD); + return mkstat(stat, dir, wname, strlen(def.tag), IXP_DMREAD); break; case FsFdata: - return mkstat(stat, dir, wname, (dir_i1 == label.size) ? 0 : strlen(label.data[dir_i1]->data), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, (dir_i1 == label.size) ? 0 : strlen(label.data[dir_i1]->data), IXP_DMREAD | IXP_DMWRITE); break; case FsFmode: - return mkstat(stat, dir, wname, strlen(mode2str(view.data[dir_i1]->area.data[dir_i2]->mode)), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(mode2str(view.data[dir_i1]->area.data[dir_i2]->mode)), IXP_DMREAD | IXP_DMWRITE); break; case FsFcolors: case FsFselcolors: case FsFnormcolors: - return mkstat(stat, dir, wname, 23, DMREAD | DMWRITE); + return mkstat(stat, dir, wname, 23, IXP_DMREAD | IXP_DMWRITE); break; case FsFkeys: - return mkstat(stat, dir, wname, def.keys ? strlen(def.keys) : 0, DMREAD | DMWRITE); + return mkstat(stat, dir, wname, def.keys ? strlen(def.keys) : 0, IXP_DMREAD | IXP_DMWRITE); break; case FsFrules: - return mkstat(stat, dir, wname, def.rules ? strlen(def.rules) : 0, DMREAD | DMWRITE); + return mkstat(stat, dir, wname, def.rules ? strlen(def.rules) : 0, IXP_DMREAD | IXP_DMWRITE); break; case FsFfont: - return mkstat(stat, dir, wname, strlen(def.font), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(def.font), IXP_DMREAD | IXP_DMWRITE); break; } return 0; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -63,17 +63,21 @@ enum { FsFmode }; -#define MAX_TAGS 8 -#define MAX_TAGLEN 32 -#define WM_PROTOCOL_DELWIN 1 -#define MIN_COLWIDTH 64 +enum { MAX_TAGS = 8 }; +enum { MAX_TAGLEN = 32 }; +enum { MIN_COLWIDTH = 64 }; +enum { WM_PROTOCOL_DELWIN = 1 }; typedef struct View View; typedef struct Area Area; typedef struct Frame Frame; typedef struct Client Client; -VECTOR(AreaVector, Area *); +typedef struct { + unsigned int size; + Area **data; +} AreaVector; + struct View { char name[MAX_TAGLEN]; unsigned short id; @@ -82,7 +86,11 @@ struct View { unsigned int revert; }; -VECTOR(FrameVector, Frame *); +typedef struct { + unsigned int size; + Frame **data; +} FrameVector; + struct Area { unsigned short id; FrameVector frame; @@ -155,20 +163,35 @@ typedef struct { } Default; /* global variables */ -VECTOR(ViewVector, View *); +typedef struct { + unsigned int size; + View **data; +} ViewVector; ViewVector view; unsigned int sel; -VECTOR(ClientVector, Client *); +typedef struct { + unsigned int size; + Client **data; +} ClientVector; ClientVector client; -VECTOR(KeyVector, Key *); +typedef struct { + unsigned int size; + Key **data; +} KeyVector; KeyVector key; -VECTOR(LabelVector, Label *); +typedef struct { + unsigned int size; + Label **data; +} LabelVector; LabelVector label; -VECTOR(TagVector, char *); +typedef struct { + unsigned int size; + char **data; +} TagVector; TagVector tag; Display *dpy; diff --git a/cmd/wmiimenu.c b/cmd/wmiimenu.c @@ -31,7 +31,11 @@ static Window win; static XRectangle mrect; static int screen; -VECTOR(ItemVector, char *); +typedef struct { + unsigned int size; + char **data; +} ItemVector; + static ItemVector allitem = {0}; static ItemVector item = {0}; diff --git a/cmd/wmiir.c b/cmd/wmiir.c @@ -57,7 +57,7 @@ xcreate(char *file) return -1; } p++; - if(ixp_client_create(&c, fid, p, DMWRITE, IXP_OWRITE) == -1) { + if(ixp_client_create(&c, fid, p, IXP_DMWRITE, IXP_OWRITE) == -1) { fprintf(stderr, "wmiir: cannot create file '%s': %s\n", p, c.errstr); return -1; } @@ -107,7 +107,7 @@ mode2str(unsigned int mode) { static char buf[16]; - if(mode & DMDIR) + if(mode & IXP_DMDIR) buf[0]='d'; else buf[0]='-'; diff --git a/libcext/cext.h b/libcext/cext.h @@ -29,13 +29,10 @@ long long cext_strtonum(const char *numstr, long long minval, unsigned int cext_tokenize(char **result, unsigned int reslen, char *str, char delim); /* vector.c */ -#define VECTOR(name, type) \ -typedef struct { \ - unsigned int size; \ - type *data; \ -} name - -VECTOR(Vector, void*); +typedef struct { + unsigned int size; + void **data; +} Vector; void cext_vattach(Vector *v, void *p); void cext_vdetach(Vector *v, void *p); diff --git a/libcext/strtonum.c b/libcext/strtonum.c @@ -19,9 +19,11 @@ #include <limits.h> #include <stdlib.h> -#define INVALID 1 -#define TOOSMALL 2 -#define TOOLARGE 3 +enum { + INVALID = 1, + TOOSMALL = 2, + TOOLARGE = 3 +}; long long cext_strtonum(const char *numstr, long long minval, long long maxval, diff --git a/libixp/ixp.h b/libixp/ixp.h @@ -6,18 +6,17 @@ #include <sys/types.h> #include <cext.h> -#define IXP_VERSION "9P2000" -#define IXP_MAX_VERSION 32 -#define IXP_MAX_ERROR 128 -#define IXP_MAX_CACHE 32 -#define IXP_MAX_MSG 8192 -#define IXP_MAX_FLEN 128 -#define IXP_MAX_ULEN 32 -#define IXP_MAX_STAT 64 -#define IXP_MAX_WELEM 16 /* MAXWELEM */ -#define IXP_MAX_TFUNCS 14 - -#define IXP_PORT 5640 +#define IXP_VERSION "9P2000" +#define IXP_NOTAG (unsigned short)~0U /*Dummy tag */ +#define IXP_NOFID (unsigned int)~0 /*No auth */ + +enum { IXP_MAX_VERSION = 32 }; +enum { IXP_MAX_ERROR = 128 }; +enum { IXP_MAX_CACHE = 32 }; +enum { IXP_MAX_MSG = 8192 }; +enum { IXP_MAX_FLEN = 128 }; +enum { IXP_MAX_ULEN = 32 }; +enum { IXP_MAX_WELEM = 16 }; /* 9P message types */ enum { @@ -52,16 +51,17 @@ enum { }; /* borrowed from libc.h of Plan 9 */ -#define DMDIR 0x80000000 /*mode bit for directories */ -#define DMAPPEND 0x40000000 /*mode bit for append only files */ -#define DMEXCL 0x20000000 /*mode bit for exclusive use files */ -#define DMMOUNT 0x10000000 /*mode bit for mounted channel */ -#define DMAUTH 0x08000000 /*mode bit for authentication file */ -#define DMTMP 0x04000000 /*mode bit for non-backed-up file */ - -#define DMREAD 0x4<<6 /*mode bit for read permission */ -#define DMWRITE 0x2<<6 /*mode bit for write permission */ -#define DMEXEC 0x1<<6 /*mode bit for execute permission */ +enum { + IXP_DMDIR = 0x80000000, /* mode bit for directories */ + IXP_DMAPPEND = 0x40000000, /* mode bit for append only files */ + IXP_DMEXCL = 0x20000000, /* mode bit for exclusive use files */ + IXP_DMMOUNT = 0x10000000, /* mode bit for mounted channel */ + IXP_DMAUTH = 0x08000000, /* mode bit for authentication file */ + IXP_DMTMP = 0x04000000, /* mode bit for non-backed-up file */ + IXP_DMREAD = 0x4<<6, /* mode bit for read permission */ + IXP_DMWRITE = 0x2<<6, /* mode bit for write permission */ + IXP_DMEXEC = 0x1<<6 /* mode bit for execute permission */ +}; /* modes */ enum { @@ -89,9 +89,6 @@ enum { IXP_QTFILE = 0x00, }; -#define IXP_NOTAG (unsigned short)~0U /*Dummy tag */ -#define IXP_NOFID (unsigned int)~0 /*No auth */ - typedef struct Qid Qid; struct Qid { unsigned char type; @@ -155,7 +152,11 @@ struct IXPMap { }; -VECTOR(MapVector, IXPMap *); +typedef struct { + unsigned int size; + IXPMap **data; +} MapVector; + struct IXPConn { int fd; IXPServer *srv; @@ -166,7 +167,11 @@ struct IXPConn { int is_pending; }; -VECTOR(ConnVector, IXPConn *); +typedef struct { + unsigned int size; + IXPConn **data; +} ConnVector; + struct IXPServer { int running; ConnVector conn; diff --git a/libixp/socket.c b/libixp/socket.c @@ -49,12 +49,10 @@ connect_inet_sock(char *host) unsigned int prt; if(!port) - prt = IXP_PORT; - else { - *port = 0; - port++; - prt = cext_strtonum(port, 0, 65535, &errstr); - } + return -1; + *port = 0; + port++; + prt = cext_strtonum(port, 0, 65535, &errstr); if(errstr) return -1;