diff --git a/.config/suckless/dmenu/Makefile b/.config/suckless/dmenu/Makefile index 2509063..e0a302a 100644 --- a/.config/suckless/dmenu/Makefile +++ b/.config/suckless/dmenu/Makefile @@ -1,4 +1,22 @@ -include config.mk +.POSIX: +VERSION = 5.3 + +PREFIX = /usr/local + +X11INC = /usr/X11R6/include +X11LIB = /usr/X11R6/lib + +FREETYPELIBS = -lfontconfig -lXft +FREETYPEINC = /usr/include/freetype2 + +INCS = -I$(X11INC) -I$(FREETYPEINC) +LIBS = -L$(X11LIB) -lX11 $(FREETYPELIBS) + +CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L +CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) +LDFLAGS = $(LIBS) + +CC = gcc SRC = drw.c dmenu.c util.c OBJ = $(SRC:.c=.o) @@ -8,24 +26,20 @@ all: dmenu .c.o: $(CC) -c $(CFLAGS) $< -$(OBJ): arg.h config.h config.mk drw.h +$(OBJ): drw.h dmenu: dmenu.o drw.o util.o $(CC) -o $@ dmenu.o drw.o util.o $(LDFLAGS) clean: - rm -f dmenu stest $(OBJ) + rm -f dmenu $(OBJ) install: all mkdir -p $(DESTDIR)$(PREFIX)/bin - cp -f dmenu dmenu_path dmenu_run $(DESTDIR)$(PREFIX)/bin + cp -f dmenu dmenu_run $(DESTDIR)$(PREFIX)/bin chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu - chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_path chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_run uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/dmenu\ - $(DESTDIR)$(PREFIX)/bin/dmenu_path\ $(DESTDIR)$(PREFIX)/bin/dmenu_run\ - -.PHONY: all clean install uninstall diff --git a/.config/suckless/dmenu/arg.h b/.config/suckless/dmenu/arg.h deleted file mode 100644 index e94e02b..0000000 --- a/.config/suckless/dmenu/arg.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copy me if you can. - * by 20h - */ - -#ifndef ARG_H__ -#define ARG_H__ - -extern char *argv0; - -/* use main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ - argv[0] && argv[0][0] == '-'\ - && argv[0][1];\ - argc--, argv++) {\ - char argc_;\ - char **argv_;\ - int brk_;\ - if (argv[0][1] == '-' && argv[0][2] == '\0') {\ - argv++;\ - argc--;\ - break;\ - }\ - for (brk_ = 0, argv[0]++, argv_ = argv;\ - argv[0][0] && !brk_;\ - argv[0]++) {\ - if (argv_ != argv)\ - break;\ - argc_ = argv[0][0];\ - switch (argc_) - -#define ARGEND }\ - } - -#define ARGC() argc_ - -#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ - ((x), abort(), (char *)0) :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\ - (char *)0 :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#endif diff --git a/.config/suckless/dmenu/config.h b/.config/suckless/dmenu/config.h deleted file mode 100644 index 8bb8e77..0000000 --- a/.config/suckless/dmenu/config.h +++ /dev/null @@ -1,14 +0,0 @@ -static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ -static const char *fonts[] = { - "CaskaydiaCove NFM style:SemiBold:size=11" -}; -static const char *prompt = NULL; /* -p option; prompt to the left of input field */ -static const char *colors[SchemeLast][2] = { - [SchemeNorm] = { "#D3C6AA", "#272E33" }, - [SchemeSel] = { "#272E33", "#DBBC7F" }, - [SchemeOut] = { "#E67E80", "#272E33" }, -}; - -static unsigned int lines = 0; -static unsigned int columns = 0; -static const char worddelimiters[] = " "; diff --git a/.config/suckless/dmenu/config.mk b/.config/suckless/dmenu/config.mk deleted file mode 100644 index a6b7536..0000000 --- a/.config/suckless/dmenu/config.mk +++ /dev/null @@ -1,18 +0,0 @@ -VERSION = 5.3 - -PREFIX = /usr/local - -X11INC = /usr/X11R6/include -X11LIB = /usr/X11R6/lib - -FREETYPELIBS = -lfontconfig -lXft -FREETYPEINC = /usr/include/freetype2 - -INCS = -I$(X11INC) -I$(FREETYPEINC) -LIBS = -L$(X11LIB) -lX11 $(FREETYPELIBS) - -CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" -CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) -LDFLAGS = $(LIBS) - -CC = gcc diff --git a/.config/suckless/dmenu/dmenu.c b/.config/suckless/dmenu/dmenu.c index 3bb03e8..c4d6892 100644 --- a/.config/suckless/dmenu/dmenu.c +++ b/.config/suckless/dmenu/dmenu.c @@ -48,7 +48,19 @@ static XIC xic; static Drw *drw; static Clr *scheme[SchemeLast]; -#include "config.h" +static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ +static const char *fonts[] = { + "CaskaydiaCove NFM style:SemiBold:size=11" +}; +static const char *prompt = NULL; /* -p option; prompt to the left of input field */ +static const char *colors[SchemeLast][2] = { + [SchemeNorm] = { "#D3C6AA", "#272E33" }, + [SchemeSel] = { "#272E33", "#DBBC7F" }, + [SchemeOut] = { "#E67E80", "#272E33" }, +}; + +static unsigned int lines = 0; +static const char worddelimiters[] = " "; static int (*fstrncmp)(const char *, const char *, size_t) = strncmp; static char *(*fstrstr)(const char *, const char *) = strstr; @@ -79,7 +91,7 @@ calcoffsets(void) int i, n; if (lines > 0) - n = lines * columns * bh; + n = lines * bh; else n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">")); /* calculate which items will begin the next page and previous page */ @@ -164,15 +176,10 @@ drawmenu(void) } if (lines > 0) { - /* draw grid */ - int i = 0; - for (item = curr; item != next; item = item->right, i++) - drawitem( - item, - x + ((i / lines) * ((mw - x) / columns)), - y + (((i % lines) + 1) * bh), - (mw - x) / columns - ); + /* draw vertical list */ + for (item = curr; item != next; item = item->right) + drawitem(item, x, y += bh, mw - x); + } else if (matches) { /* draw horizontal list */ x += inputw; @@ -329,8 +336,6 @@ keypress(XKeyEvent *ev) int len; KeySym ksym = NoSymbol; Status status; - int i, offscreen = 0; - struct item *tmpsel; len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status); switch (status) { @@ -462,27 +467,6 @@ insert: calcoffsets(); break; case XK_Left: - if (columns > 1) { - if (!sel) - return; - tmpsel = sel; - for (i = 0; i < lines; i++) { - if (!tmpsel->left || tmpsel->left->right != tmpsel) { - if (offscreen) - break; - return; - } - if (tmpsel == curr) - offscreen = 1; - tmpsel = tmpsel->left; - } - sel = tmpsel; - if (offscreen) { - curr = prev; - calcoffsets(); - } - break; - } case XK_KP_Left: if (cursor > 0 && (!sel || !sel->left || lines > 0)) { cursor = nextrune(-1); @@ -523,27 +507,6 @@ insert: sel->out = 1; break; case XK_Right: - if (columns > 1) { - if (!sel) - return; - tmpsel = sel; - for (i = 0; i < lines; i++) { - if (!tmpsel->right || tmpsel->right->left != tmpsel) { - if (offscreen) - break; - return; - } - tmpsel = tmpsel->right; - if (tmpsel == next) - offscreen = 1; - } - sel = tmpsel; - if (offscreen) { - curr = next; - calcoffsets(); - } - break; - } case XK_KP_Right: if (text[cursor] != '\0') { cursor = nextrune(+1); @@ -735,10 +698,7 @@ main(int argc, char *argv[]) for (i = 1; i < argc; i++) /* these options take no arguments */ - if (!strcmp(argv[i], "-v")) { /* prints version information */ - puts("dmenu-"VERSION); - exit(0); - } else if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ + if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ topbar = 0; else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ fast = 1; @@ -748,13 +708,9 @@ main(int argc, char *argv[]) } else if (i + 1 == argc) usage(); /* these options take one argument */ - else if (!strcmp(argv[i], "-g")) { /* number of columns in grid */ - columns = atoi(argv[++i]); - if (lines == 0) lines = 1; - } else if (!strcmp(argv[i], "-l")) { /* number of lines in grid */ + else if (!strcmp(argv[i], "-l")) /* number of lines in vertical list */ lines = atoi(argv[++i]); - if (columns == 0) columns = 1; - } else if (!strcmp(argv[i], "-m")) + else if (!strcmp(argv[i], "-m")) mon = atoi(argv[++i]); else if (!strcmp(argv[i], "-p")) /* adds prompt to left of input field */ prompt = argv[++i]; diff --git a/.config/suckless/dmenu/dmenu_path b/.config/suckless/dmenu/dmenu_path deleted file mode 100755 index b17bf21..0000000 --- a/.config/suckless/dmenu/dmenu_path +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}" -cache="$cachedir/dmenu_run" - -[ ! -e "$cachedir" ] && mkdir -p "$cachedir" - -IFS=: -cat "$cache" diff --git a/.config/suckless/dmenu/dmenu_run b/.config/suckless/dmenu/dmenu_run index 834ede5..2fb5e45 100755 --- a/.config/suckless/dmenu/dmenu_run +++ b/.config/suckless/dmenu/dmenu_run @@ -1,2 +1,9 @@ #!/bin/sh -dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} & + +cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}" +cache="$cachedir/dmenu_run" + +[ ! -e "$cachedir" ] && mkdir -p "$cachedir" + +IFS=: +cat "$cache" | dmenu "$@" | ${SHELL:-"/bin/sh"} & diff --git a/.config/suckless/dmenu/drw.c b/.config/suckless/dmenu/drw.c index c41e6af..06896a3 100644 --- a/.config/suckless/dmenu/drw.c +++ b/.config/suckless/dmenu/drw.c @@ -1,4 +1,3 @@ -/* See LICENSE file for copyright and license details. */ #include #include #include @@ -10,9 +9,7 @@ #define UTF_INVALID 0xFFFD -static int -utf8decode(const char *s_in, long *u, int *err) -{ +static int utf8decode(const char *s_in, long *u, int *err) { static const unsigned char lens[] = { /* 0XXXX */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 10XXX */ 0, 0, 0, 0, 0, 0, 0, 0, /* invalid */ @@ -28,8 +25,7 @@ utf8decode(const char *s_in, long *u, int *err) int len = lens[*s >> 3]; *u = UTF_INVALID; *err = 1; - if (len == 0) - return 1; + if (len == 0) return 1; long cp = s[0] & leading_mask[len - 1]; for (int i = 1; i < len; ++i) { @@ -38,17 +34,14 @@ utf8decode(const char *s_in, long *u, int *err) cp = (cp << 6) | (s[i] & 0x3F); } /* out of range, surrogate, overlong encoding */ - if (cp > 0x10FFFF || (cp >> 11) == 0x1B || cp < overlong[len - 1]) - return len; + if (cp > 0x10FFFF || (cp >> 11) == 0x1B || cp < overlong[len - 1]) return len; *err = 0; *u = cp; return len; } -Drw * -drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h) -{ +Drw * drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h) { Drw *drw = ecalloc(1, sizeof(Drw)); drw->dpy = dpy; @@ -63,11 +56,8 @@ drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h return drw; } -void -drw_resize(Drw *drw, unsigned int w, unsigned int h) -{ - if (!drw) - return; +void drw_resize(Drw *drw, unsigned int w, unsigned int h) { + if (!drw) return; drw->w = w; drw->h = h; @@ -76,9 +66,7 @@ drw_resize(Drw *drw, unsigned int w, unsigned int h) drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen)); } -void -drw_free(Drw *drw) -{ +void drw_free(Drw *drw) { XFreePixmap(drw->dpy, drw->drawable); XFreeGC(drw->dpy, drw->gc); drw_fontset_free(drw->fonts); @@ -88,9 +76,7 @@ drw_free(Drw *drw) /* This function is an implementation detail. Library users should use * drw_fontset_create instead. */ -static Fnt * -xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) -{ +static Fnt * xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) { Fnt *font; XftFont *xfont = NULL; FcPattern *pattern = NULL; @@ -139,14 +125,11 @@ xfont_free(Fnt *font) free(font); } -Fnt* -drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount) -{ +Fnt* drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount) { Fnt *cur, *ret = NULL; size_t i; - if (!drw || !fonts) - return NULL; + if (!drw || !fonts) return NULL; for (i = 1; i <= fontcount; i++) { if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) { @@ -157,20 +140,15 @@ drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount) return (drw->fonts = ret); } -void -drw_fontset_free(Fnt *font) -{ +void drw_fontset_free(Fnt *font) { if (font) { drw_fontset_free(font->next); xfont_free(font); } } -void -drw_clr_create(Drw *drw, Clr *dest, const char *clrname) -{ - if (!drw || !dest || !clrname) - return; +void drw_clr_create(Drw *drw, Clr *dest, const char *clrname) { + if (!drw || !dest || !clrname) return; if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen), @@ -178,52 +156,31 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) die("error, cannot allocate color '%s'", clrname); } -/* Wrapper to create color schemes. The caller has to call free(3) on the - * returned color scheme when done using it. */ -Clr * -drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) -{ +Clr * drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) { size_t i; Clr *ret; - /* need at least two colors for a scheme */ - if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) - return NULL; - - for (i = 0; i < clrcount; i++) - drw_clr_create(drw, &ret[i], clrnames[i]); + if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) return NULL; + for (i = 0; i < clrcount; i++) drw_clr_create(drw, &ret[i], clrnames[i]); return ret; } -void -drw_setfontset(Drw *drw, Fnt *set) -{ - if (drw) - drw->fonts = set; +void drw_setfontset(Drw *drw, Fnt *set) { + if (drw) drw->fonts = set; } -void -drw_setscheme(Drw *drw, Clr *scm) -{ - if (drw) - drw->scheme = scm; +void drw_setscheme(Drw *drw, Clr *scm) { + if (drw) drw->scheme = scm; } -void -drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert) -{ - if (!drw || !drw->scheme) - return; +void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert) { + if (!drw || !drw->scheme) return; XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel); - if (filled) - XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); - else - XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1); + if (filled) XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); + else XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1); } -int -drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert) -{ +int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert) { int ty, ellipsis_x = 0; unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len, hash, h0, h1; XftDraw *d = NULL; @@ -240,16 +197,13 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp static unsigned int nomatches[128], ellipsis_width, invalid_width; static const char invalid[] = "�"; - if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) - return 0; - + if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) return 0; if (!render) { w = invert ? invert : ~invert; } else { XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel); XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); - if (w < lpad) - return x + w; + if (w < lpad) return x + w; d = XftDrawCreate(drw->dpy, drw->drawable, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen)); @@ -258,10 +212,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp } usedfont = drw->fonts; - if (!ellipsis_width && render) - ellipsis_width = drw_fontset_getwidth(drw, "..."); - if (!invalid_width && render) - invalid_width = drw_fontset_getwidth(drw, invalid); + if (!ellipsis_width && render) ellipsis_width = drw_fontset_getwidth(drw, "..."); + if (!invalid_width && render) invalid_width = drw_fontset_getwidth(drw, invalid); while (1) { ew = ellipsis_len = utf8err = utf8charlen = utf8strlen = 0; utf8str = text; @@ -284,10 +236,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp /* called from drw_fontset_getwidth_clamp(): * it wants the width AFTER the overflow */ - if (!render) - x += tmpw; - else - utf8strlen = ellipsis_len; + if (!render) x += tmpw; + else utf8strlen = ellipsis_len; } else if (curfont == usedfont) { text += utf8charlen; utf8strlen += utf8err ? 0 : utf8charlen; @@ -299,10 +249,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp } } - if (overflow || !charexists || nextfont || utf8err) - break; - else - charexists = 0; + if (overflow || !charexists || nextfont || utf8err) break; + else charexists = 0; } if (utf8strlen) { @@ -315,13 +263,11 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp w -= ew; } if (utf8err && (!render || invalid_width < w)) { - if (render) - drw_text(drw, x, y, w, h, 0, invalid, invert); + if (render) drw_text(drw, x, y, w, h, 0, invalid, invert); x += invalid_width; w -= invalid_width; } - if (render && overflow) - drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert); + if (render && overflow) drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert); if (!*text || overflow) { break; @@ -376,72 +322,47 @@ no_match: } } } - if (d) - XftDrawDestroy(d); - + if (d) XftDrawDestroy(d); return x + (render ? w : 0); } -void -drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h) -{ - if (!drw) - return; - +void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h) { + if (!drw) return; XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y); XSync(drw->dpy, False); } -unsigned int -drw_fontset_getwidth(Drw *drw, const char *text) -{ - if (!drw || !drw->fonts || !text) - return 0; +unsigned int drw_fontset_getwidth(Drw *drw, const char *text) { + if (!drw || !drw->fonts || !text) return 0; return drw_text(drw, 0, 0, 0, 0, 0, text, 0); } -unsigned int -drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n) -{ +unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n) { unsigned int tmp = 0; - if (drw && drw->fonts && text && n) - tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n); + if (drw && drw->fonts && text && n) tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n); return MIN(n, tmp); } -void -drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) -{ +void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) { XGlyphInfo ext; - if (!font || !text) - return; + if (!font || !text) return; XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext); - if (w) - *w = ext.xOff; - if (h) - *h = font->h; + if (w) *w = ext.xOff; + if (h) *h = font->h; } -Cur * -drw_cur_create(Drw *drw, int shape) -{ +Cur * drw_cur_create(Drw *drw, int shape) { Cur *cur; - - if (!drw || !(cur = ecalloc(1, sizeof(Cur)))) - return NULL; - + if (!drw || !(cur = ecalloc(1, sizeof(Cur)))) return NULL; cur->cursor = XCreateFontCursor(drw->dpy, shape); return cur; } -void -drw_cur_free(Drw *drw, Cur *cursor) -{ - if (!cursor) - return; +void drw_cur_free(Drw *drw, Cur *cursor) { + if (!cursor) return; XFreeCursor(drw->dpy, cursor->cursor); free(cursor); diff --git a/.config/suckless/dmenu/util.c b/.config/suckless/dmenu/util.c index 8e26a51..5c8f571 100644 --- a/.config/suckless/dmenu/util.c +++ b/.config/suckless/dmenu/util.c @@ -1,4 +1,3 @@ -/* See LICENSE file for copyright and license details. */ #include #include #include @@ -7,9 +6,7 @@ #include "util.h" -void -die(const char *fmt, ...) -{ +void die(const char *fmt, ...) { va_list ap; int saved_errno; @@ -19,19 +16,13 @@ die(const char *fmt, ...) vfprintf(stderr, fmt, ap); va_end(ap); - if (fmt[0] && fmt[strlen(fmt)-1] == ':') - fprintf(stderr, " %s", strerror(saved_errno)); + if (fmt[0] && fmt[strlen(fmt)-1] == ':') fprintf(stderr, " %s", strerror(saved_errno)); fputc('\n', stderr); - exit(1); } -void * -ecalloc(size_t nmemb, size_t size) -{ +void * ecalloc(size_t nmemb, size_t size) { void *p; - - if (!(p = calloc(nmemb, size))) - die("calloc:"); + if (!(p = calloc(nmemb, size))) die("calloc:"); return p; }