wmii

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

commit 629b23ae5d647a120ff086a13eb4616fd358093e
parent 244f66731a6ec97e9b03c8b66cb3e55ca462743a
Author: garbeam <garbeam@localhost.wmii.de>
Date:   Thu,  8 Dec 2005 02:31:23 +0200

sanitized emalloc into emallocz which let's us get rid of various init crap


Diffstat:
cmd/wm/area.c | 5+----
cmd/wm/client.c | 5+----
cmd/wm/frame.c | 5+----
cmd/wm/layout_column.c | 9++-------
cmd/wm/layout_float.c | 3+--
cmd/wm/page.c | 4++--
cmd/wmibar.c | 4++--
cmd/wmibar2.c | 19+++++++------------
cmd/wmifs.c | 5+----
cmd/wmikeys.c | 7++-----
cmd/wmimenu.c | 7+++----
libcext/Makefile | 2+-
libcext/cext.h | 4++--
libcext/container.c | 11++++-------
libcext/emalloc.c | 21---------------------
libcext/emallocz.c | 21+++++++++++++++++++++
libcext/estrdup.c | 2+-
libixp/client.c | 6++----
libixp/message.c | 30+++++++++++++-----------------
libixp/ramfs.c | 9+++------
libixp/server.c | 12++++--------
test/test_container.c | 4++--
22 files changed, 76 insertions(+), 119 deletions(-)

diff --git a/cmd/wm/area.c b/cmd/wm/area.c @@ -9,15 +9,12 @@ #include "wm.h" -static Area zero_area = {0}; - Area *alloc_area(Page *p, XRectangle * r, char *layout) { char buf[MAX_BUF]; - Area *a = (Area *) cext_emalloc(sizeof(Area)); + Area *a = (Area *) cext_emallocz(sizeof(Area)); size_t id = cext_sizeof(&p->areas); - *a = zero_area; a->rect = *r; a->page = p; snprintf(buf, MAX_BUF, "/%s/a/%d", p->file[P_PREFIX]->name, id); diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -10,16 +10,13 @@ #include "wm.h" -static Client zero_client = { 0 }; - Client *alloc_client(Window w) { static int id = 0; char buf[MAX_BUF]; char buf2[MAX_BUF]; - Client *c = (Client *) cext_emalloc(sizeof(Client)); + Client *c = (Client *) cext_emallocz(sizeof(Client)); - *c = zero_client; c->win = w; snprintf(buf, MAX_BUF, "/detached/c/%d", id); c->file[C_PREFIX] = ixp_create(ixps, buf); diff --git a/cmd/wm/frame.c b/cmd/wm/frame.c @@ -10,8 +10,6 @@ #include "wm.h" -static Frame zero_frame = { 0 }; - static void select_client(void *obj, char *cmd); static void handle_after_write_frame(IXPServer * s, File * f); static void handle_before_read_frame(IXPServer * s, File * f); @@ -27,10 +25,9 @@ Frame *alloc_frame(XRectangle * r) XSetWindowAttributes wa; static int id = 0; char buf[MAX_BUF]; - Frame *f = (Frame *) cext_emalloc(sizeof(Frame)); + Frame *f = (Frame *) cext_emallocz(sizeof(Frame)); int bw, th; - *f = zero_frame; f->rect = *r; f->cursor = normal_cursor; diff --git a/cmd/wm/layout_column.c b/cmd/wm/layout_column.c @@ -34,9 +34,6 @@ static void resize_col(Frame * f, XRectangle * new, XPoint * pt); static Layout lcol = { "col", init_col, deinit_col, arrange_col, attach_col, detach_col, resize_col }; -static Column zero_column = { 0 }; -static Acme zero_acme = { 0 }; - void init_layout_column() { cext_attach_item(&layouts, &lcol); @@ -76,13 +73,12 @@ static void arrange_col(Area *a) static void init_col(Area *a) { - Acme *acme = cext_emalloc(sizeof(Acme)); + Acme *acme = cext_emallocz(sizeof(Acme)); int i, cols = 1; unsigned int width; //size_t size; Column *col; - *acme = zero_acme; a->aux = acme; /* processing argv */ @@ -100,8 +96,7 @@ static void init_col(Area *a) width = a->rect.width / cols; for (i = 0; i < cols; i++) { - col = cext_emalloc(sizeof(Column)); - *col = zero_column; + col = cext_emallocz(sizeof(Column)); col->rect = a->rect; col->rect.x = i * width; col->rect.width = width; diff --git a/cmd/wm/layout_float.c b/cmd/wm/layout_float.c @@ -37,8 +37,7 @@ static void iter_attach_float(void *client, void *area) static void init_float(Area *a) { - Container *c = cext_emalloc(sizeof(Container)); - c->list = c->stack = nil; + Container *c = cext_emallocz(sizeof(Container)); a->aux = c; cext_iterate(&a->clients, a, iter_attach_float); } diff --git a/cmd/wm/page.c b/cmd/wm/page.c @@ -20,7 +20,7 @@ Action page_acttbl[] = { Page *alloc_page() { - Page *p = cext_emalloc(sizeof(Page)); + Page *p = cext_emallocz(sizeof(Page)); char buf[MAX_BUF], buf2[16]; size_t id = cext_sizeof(&pages); @@ -98,7 +98,7 @@ XRectangle *rectangles(unsigned int *num) XRectangle r; if (XQueryTree(dpy, root, &d1, &d2, &wins, num)) { - result = cext_emalloc(*num * sizeof(XRectangle)); + result = cext_emallocz(*num * sizeof(XRectangle)); for (i = 0; i < *num; i++) { if (!XGetWindowAttributes(dpy, wins[i], &wa)) continue; diff --git a/cmd/wmibar.c b/cmd/wmibar.c @@ -288,14 +288,14 @@ static void draw_bar(void *obj, char *arg) n = 0; for (f = label; f; f = f->next) n++; - paths = cext_emalloc(sizeof(char *) * n); + paths = cext_emallocz(sizeof(char *) * n); i = 0; for (f = label; f; f = f->next) paths[i++] = f->name; qsort(paths, n, sizeof(char *), comp_str); for (i = 0; i < n; i++) { snprintf(buf, sizeof(buf), "/%s", paths[i]); - item = cext_emalloc(sizeof(Item)); + item = cext_emallocz(sizeof(Item)); items = (Item **) attach_item_end((void **) items, item, sizeof(Item *)); init_item(buf, item); } diff --git a/cmd/wmibar2.c b/cmd/wmibar2.c @@ -207,13 +207,11 @@ static int make_qid(Qid * dir, char *wname, Qid * new) static int attach(IXPServer * s, IXPConn * c) { - Map *map = cext_emalloc(sizeof(Map)); - fprintf(stderr, "attaching %d %s %s\n", s->fcall.afid, s->fcall.uname, - s->fcall.aname); + Map *map = cext_emallocz(sizeof(Map)); + fprintf(stderr, "attaching %d %s %s\n", s->fcall.afid, s->fcall.uname, s->fcall.aname); map->qid = root_qid; map->fid = s->fcall.fid; - c->aux = - (Map **) attach_item_begin((void **) c->aux, map, sizeof(Map *)); + c->aux = (Map **) attach_item_begin((void **) c->aux, map, sizeof(Map *)); s->fcall.id = RATTACH; s->fcall.qid = root_qid; return TRUE; @@ -252,16 +250,13 @@ static int walk(IXPServer * s, IXPConn * c) */ if (nwqid == s->fcall.nwname) { if (s->fcall.fid == s->fcall.newfid) { - c->aux = - (Map **) detach_item((void **) c->aux, map, sizeof(Map *)); + c->aux = (Map **) detach_item((void **) c->aux, map, sizeof(Map *)); free(map); } - map = cext_emalloc(sizeof(Map)); + map = cext_emallocz(sizeof(Map)); map->qid = qid; map->fid = s->fcall.newfid; - c->aux = - (Map **) attach_item_begin((void **) c->aux, map, - sizeof(Map *)); + c->aux = (Map **) attach_item_begin((void **) c->aux, map, sizeof(Map *)); } s->fcall.id = RWALK; s->fcall.nwqid = nwqid; @@ -437,7 +432,7 @@ int main(int argc, char *argv[]) atexit(exit_cleanup); /* default item settings */ - item = cext_emalloc(sizeof(Item)); + item = cext_emallocz(sizeof(Item)); item->id = 0; item->text[0] = '\0'; item->value = 0; diff --git a/cmd/wmifs.c b/cmd/wmifs.c @@ -29,7 +29,6 @@ struct Bind { char *prefix; }; -static Bind zero_bind = { 0 }; static Display *dpy; static IXPServer *ixps; static char *sockfile = 0; @@ -135,9 +134,7 @@ static void bind(void *obj, char *arg) arg); return; /* shortcut with empty argument */ } - b = cext_emalloc(sizeof(Bind)); - *b = zero_bind; - + b = cext_emallocz(sizeof(Bind)); b->client = init_ixp_client(sfile); if (!b->client) { diff --git a/cmd/wmikeys.c b/cmd/wmikeys.c @@ -54,8 +54,6 @@ static unsigned int num_lock_mask, valid_mask; static char buf[MAX_BUF]; static XFontStruct *font; -static Shortcut zero_shortcut = { "", 0, 0, 0, 0 }; - static void grab_shortcut(Shortcut * s); static void ungrab_shortcut(Shortcut * s); static void draw_shortcut_box(char *text); @@ -126,12 +124,11 @@ static void create_shortcut(File * f) for (i = 0; i < toks; i++) { if (!s) - r = s = cext_emalloc(sizeof(Shortcut)); + r = s = cext_emallocz(sizeof(Shortcut)); else { - s->next = cext_emalloc(sizeof(Shortcut)); + s->next = cext_emallocz(sizeof(Shortcut)); s = s->next; } - *s = zero_shortcut; cext_strlcpy(s->name, chain[i], MAX_BUF); k = strrchr(chain[i], '-'); if (k) diff --git a/cmd/wmimenu.c b/cmd/wmimenu.c @@ -111,9 +111,8 @@ static void _exec(char *cmd) add_history(cmd); if (files[M_PRE_COMMAND]->content) { size_t len = strlen(cmd) + files[M_PRE_COMMAND]->size + 2; - rc = cext_emalloc(len); - snprintf(rc, len, "%s %s", (char *) files[M_PRE_COMMAND]->content, - cmd); + rc = cext_emallocz(len); + snprintf(rc, len, "%s %s", (char *) files[M_PRE_COMMAND]->content, cmd); } /* fallback */ spawn(dpy, rc); @@ -240,7 +239,7 @@ static int update_items(char *pattern) items = 0; item_size = size; if (item_size) - items = (File **) cext_emalloc((item_size + 1) * sizeof(File *)); + items = (File **) cext_emallocz((item_size + 1) * sizeof(File *)); } size = 0; diff --git a/libcext/Makefile b/libcext/Makefile @@ -3,7 +3,7 @@ include ../config.mk -SRC = container.c emalloc.c estrdup.c strlcat.c strlcpy.c strtonum.c tokenize.c +SRC = container.c emallocz.c estrdup.c strlcat.c strlcpy.c strtonum.c tokenize.c OBJ = ${SRC:.c=.o} diff --git a/libcext/cext.h b/libcext/cext.h @@ -52,8 +52,8 @@ int count_items(void **items); int index_next_item(void **items, void *item); int index_prev_item(void **items, void *item); -/* emalloc.c */ -void *cext_emalloc(size_t size); +/* emallocz.c */ +void *cext_emallocz(size_t size); /* estrdup.c */ char *cext_estrdup(const char *s); diff --git a/libcext/container.c b/libcext/container.c @@ -9,8 +9,6 @@ #include "cext.h" -static CItem zero_item = { 0 }; - static int comp_ptr(void *p1, void *p2) { return p1 == p2; @@ -51,9 +49,8 @@ static void attach_to_stack(Container *c, CItem *i) void cext_attach_item(Container *c, void *item) { - CItem *i, *new = cext_emalloc(sizeof(CItem)); + CItem *i, *new = cext_emallocz(sizeof(CItem)); fprintf(stderr, "XX %s\n", "cext_attach_item()"); - *new = zero_item; new->item = item; if (!c->list) c->list = new; @@ -204,7 +201,7 @@ void **attach_item_begin(void **old, void *item, size_t size_item) int i, size_old; void **result = 0; for (size_old = 0; old && old[size_old]; size_old++); - result = cext_emalloc(size_item * (size_old + 2)); + result = cext_emallocz(size_item * (size_old + 2)); result[0] = item; for (i = 0; old && old[i]; i++) result[i + 1] = old[i]; @@ -219,7 +216,7 @@ void **attach_item_end(void **old, void *item, size_t size_item) int i, size_old; void **result = 0; for (size_old = 0; old && old[size_old]; size_old++); - result = cext_emalloc(size_item * (size_old + 2)); + result = cext_emallocz(size_item * (size_old + 2)); for (i = 0; old && old[i]; i++) result[i] = old[i]; result[i++] = item; @@ -235,7 +232,7 @@ void **detach_item(void **old, void *item, size_t size_item) void **result = 0; for (size_old = 0; old && old[size_old]; size_old++); if (size_old != 1) { - result = cext_emalloc(size_item * size_old); + result = cext_emallocz(size_item * size_old); for (i = 0; old[i]; i++) if (old[i] != item) result[j++] = old[i]; diff --git a/libcext/emalloc.c b/libcext/emalloc.c @@ -1,21 +0,0 @@ -/* - * (C)opyright MMIV-MMV Anselm R. Garbe <garbeam at gmail dot com> - * See LICENSE file for license details. - */ - -#include <stdlib.h> -#include <stdio.h> - -#include "cext.h" - -void *cext_emalloc(size_t size) -{ - void *res = malloc(size); - - if (!res) { - fprintf(stderr, "fatal: could not malloc() %d bytes\n", - (int) size); - exit(1); - } - return res; -} diff --git a/libcext/emallocz.c b/libcext/emallocz.c @@ -0,0 +1,21 @@ +/* + * (C)opyright MMIV-MMV Anselm R. Garbe <garbeam at gmail dot com> + * See LICENSE file for license details. + */ + +#include <stdlib.h> +#include <stdio.h> + +#include "cext.h" + +void *cext_emallocz(size_t size) +{ + void *res = calloc(1, size); + + if (!res) { + fprintf(stderr, "fatal: could not malloc() %d bytes\n", + (int) size); + exit(1); + } + return res; +} diff --git a/libcext/estrdup.c b/libcext/estrdup.c @@ -13,7 +13,7 @@ char *cext_estrdup(const char *s) { char *tmp; - tmp = (char *) cext_emalloc(strlen(s) + 1); + tmp = (char *) cext_emallocz(strlen(s) + 1); strcpy(tmp, (char *) s); return tmp; diff --git a/libixp/client.c b/libixp/client.c @@ -16,7 +16,6 @@ #include <cext.h> -static IXPClient zero_client = { 0 }; static size_t offsets[MAX_CONN * MAX_OPEN_FILES][2]; /* set of possible fd's */ static void check_error(IXPClient * c, void *msg) @@ -117,7 +116,7 @@ static void *poll_server(IXPClient * c, void *request, size_t req_len, handle_dead_server(c); return 0; } - result = cext_emalloc(*out_len); + result = cext_emallocz(*out_len); header = 1; } r = read(c->fd, ((char *) result) + num, *out_len - num); @@ -256,8 +255,7 @@ IXPClient *init_ixp_client(char *sockfile) socklen_t su_len; /* init */ - IXPClient *c = (IXPClient *) cext_emalloc(sizeof(IXPClient)); - *c = zero_client; + IXPClient *c = (IXPClient *) cext_emallocz(sizeof(IXPClient)); c->create = cixp_create; c->open = cixp_open; c->read = cixp_read; diff --git a/libixp/message.c b/libixp/message.c @@ -10,14 +10,12 @@ #include <cext.h> -/* request messages ------------------------------------------------ */ - void *tcreate_message(char *path, size_t * msg_len) { char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader) + strlen(path) + 1; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TCREATE; memcpy(msg, &h, sizeof(ReqHeader)); memcpy(msg + sizeof(ReqHeader), path, strlen(path) + 1); @@ -29,7 +27,7 @@ void *topen_message(char *path, size_t * msg_len) char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader) + strlen(path) + 1; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TOPEN; memcpy(msg, &h, sizeof(ReqHeader)); memcpy(msg + sizeof(ReqHeader), path, strlen(path) + 1); @@ -42,7 +40,7 @@ void *tread_message(int fd, size_t offset, size_t buf_len, char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TREAD; h.fd = fd; h.offset = offset; @@ -57,7 +55,7 @@ void *twrite_message(int fd, size_t offset, void *content, char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader) + content_len; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TWRITE; h.fd = fd; h.offset = offset; @@ -72,7 +70,7 @@ void *tclose_message(int fd, size_t * msg_len) char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TCLUNK; h.fd = fd; memcpy(msg, &h, sizeof(ReqHeader)); @@ -84,21 +82,19 @@ void *tremove_message(char *path, size_t * msg_len) char *msg; ReqHeader h; *msg_len = sizeof(ReqHeader) + strlen(path) + 1; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.req = TREMOVE; memcpy(msg, &h, sizeof(ReqHeader)); memcpy(msg + sizeof(ReqHeader), path, strlen(path) + 1); return msg; } -/* response messages ----------------------------------------------- */ - void *rcreate_message(size_t * msg_len) { char *msg; ResHeader h; *msg_len = sizeof(ResHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RCREATE; memcpy(msg, &h, sizeof(ResHeader)); return msg; @@ -109,7 +105,7 @@ void *ropen_message(int fd, size_t * msg_len) char *msg; ResHeader h; *msg_len = sizeof(ResHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = ROPEN; h.fd = fd; memcpy(msg, &h, sizeof(ResHeader)); @@ -121,7 +117,7 @@ void *rread_message(void *content, size_t content_len, size_t * msg_len) char *msg; ResHeader h; *msg_len = sizeof(ResHeader) + content_len; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RREAD; h.buf_len = content_len; memcpy(msg, &h, sizeof(ResHeader)); @@ -134,7 +130,7 @@ void *rwrite_message(size_t * msg_len) char *msg; ResHeader h; *msg_len = sizeof(ResHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RWRITE; memcpy(msg, &h, sizeof(ResHeader)); return msg; @@ -145,7 +141,7 @@ void *rclose_message(size_t * msg_len) char *msg; ResHeader h; *msg_len = sizeof(ResHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RCLUNK; memcpy(msg, &h, sizeof(ResHeader)); return msg; @@ -156,7 +152,7 @@ void *rremove_message(size_t * msg_len) char *msg; ResHeader h; *msg_len = sizeof(ResHeader); - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RREMOVE; memcpy(msg, &h, sizeof(ResHeader)); return msg; @@ -168,7 +164,7 @@ void *rerror_message(char *errstr, size_t * msg_len) size_t len = strlen(errstr) + 1; ResHeader h; *msg_len = sizeof(ResHeader) + len; - msg = cext_emalloc(*msg_len); + msg = cext_emallocz(*msg_len); h.res = RERROR; memcpy(msg, &h, sizeof(ResHeader)); memmove(msg + sizeof(ResHeader), errstr, len); diff --git a/libixp/ramfs.c b/libixp/ramfs.c @@ -11,8 +11,6 @@ #include <cext.h> -static File zero_file = { 0 }; - int is_directory(File * f) { return !f->size && f->content; @@ -53,8 +51,7 @@ File *ixp_create(IXPServer * s, char *path) } /* only create missing parts, if file is directory */ while (tok) { - f = (File *) cext_emalloc(sizeof(File)); - *f = zero_file; + f = (File *) cext_emallocz(sizeof(File)); f->name = strdup(tok); f->parent = p; if (p->content) { @@ -90,7 +87,7 @@ static char *_ls(File * f) for (p = f; p; p = p->next) num++; - tmp = cext_emalloc(sizeof(File *) * num); + tmp = cext_emallocz(sizeof(File *) * num); i = 0; for (p = f; p; p = p->next) { size += strlen(p->name) + 1; @@ -99,7 +96,7 @@ static char *_ls(File * f) tmp[i++] = p; } qsort(tmp, num, sizeof(char *), comp_file_name); - result = cext_emalloc(size); + result = cext_emallocz(size); result[0] = '\0'; for (i = 0; i < num; i++) { strncat(result, tmp[i]->name, size); diff --git a/libixp/server.c b/libixp/server.c @@ -17,8 +17,6 @@ #include <cext.h> -static File zero_file = { 0 }; -static IXPServer zero_server = { 0 }; static Connection zero_conn = { 0 }; static int user_fd = -1; @@ -81,7 +79,7 @@ static void handle_ixp_read(Connection * c, ReqHeader * h) void *data = 0; size_t out_len; - data = cext_emalloc(h->buf_len); + data = cext_emallocz(h->buf_len); out_len = c->s->read(c->s, h->fd, h->offset, data, h->buf_len); free(c->data); if (c->s->errstr) { @@ -219,7 +217,7 @@ static void read_conn(Connection * c) return; } c->remain = c->len; - c->data = cext_emalloc(c->len); + c->data = cext_emallocz(c->len); c->header = 1; } r = read(c->fd, ((char *) c->data) + c->len - c->remain, c->remain); @@ -347,10 +345,9 @@ IXPServer *init_server(char *sockfile, void (*cleanup) (void)) IXPServer *s; /* init */ - s = (IXPServer *) cext_emalloc(sizeof(IXPServer)); - *s = zero_server; + s = (IXPServer *) cext_emallocz(sizeof(IXPServer)); s->sockfile = sockfile; - s->root = (File *) cext_emalloc(sizeof(File)); + s->root = (File *) cext_emallocz(sizeof(File)); s->runlevel = HALT; /* initially server is not running */ s->create = ixp_create; s->remove = ixp_remove; @@ -358,7 +355,6 @@ IXPServer *init_server(char *sockfile, void (*cleanup) (void)) s->close = ixp_close; s->read = ixp_read; s->write = ixp_write; - *s->root = zero_file; s->root->name = strdup(""); for (i = 0; i < MAX_CONN; i++) { s->conn[i].s = s; diff --git a/test/test_container.c b/test/test_container.c @@ -21,7 +21,7 @@ int main(int argc, char *argv[]) printf("--------------------------------\n"); { - int *e = cext_emalloc(sizeof(int)); + int *e = cext_emallocz(sizeof(int)); cext_attach_item(&c, e); cext_iterate(&c, nil, iter_print_container); cext_detach_item(&c, e); @@ -31,7 +31,7 @@ int main(int argc, char *argv[]) printf("--------------------------------\n"); for (i = 0; i < 10; i++) { - int *e = cext_emalloc(sizeof(int)); + int *e = cext_emallocz(sizeof(int)); *e = i; cext_attach_item(&c, e); }