commit - 242fb700783a559472710581b56feeab8abc35f6
commit + 92803b004812d95b2147c6c8a54618bc26d7d98a
blob - 12f6a734d189c4da99262175e21c6126bc0cb8ee
blob + a55338f82b1ebd2768cd614edb414bbaad506cbe
--- mymenu.c
+++ mymenu.c
#include <ctype.h> /* isalnum */
+#include <err.h>
#include <errno.h>
#include <limits.h>
#include <locale.h> /* setlocale */
/* The number of lines to allocate in advance */
#define LINES_CHUNK 64
-/* Abort on NULL */
-#define check_allocation(a) \
- { \
- if (a == NULL) { \
- fprintf(stderr, "Could not allocate memory\n"); \
- abort(); \
- } \
- }
-
#define inner_height(r) (r->height - r->borders[0] - r->borders[2])
#define inner_width(r) (r->width - r->borders[1] - r->borders[3])
if ((len = strlen(str)) == 0)
return NULL;
- s = calloc(len, sizeof(char));
- check_allocation(s);
+ if ((s = calloc(len, sizeof(char))) == NULL)
+ err(1, "calloc");
p = 0;
while (*str) {
int val;
char *cpy;
- cpy = strdup(str);
- check_allocation(cpy);
+ if ((cpy = strdup(str)) == NULL)
+ err(1, "strdup");
+
cpy[len - 1] = '\0';
val = parse_integer(cpy, default_value);
free(cpy);
int i;
/* Open the X input method */
- r->xim = XOpenIM(r->d, *xdb, resname, resclass);
- check_allocation(r->xim);
+ if ((r->xim = XOpenIM(r->d, *xdb, resname, resclass)) == NULL)
+ err(1, "XOpenIM");
if (XGetIMValues(r->xim, XNQueryInputStyle, &xis, NULL) || !xis) {
fprintf(stderr, "Input Styles could not be retrieved\n");
r->xic = XCreateIC(r->xim, XNInputStyle, best_match_style,
XNClientWindow, r->w, XNFocusWindow, r->w, NULL);
- check_allocation(r->xic);
+ if (r->xic == NULL)
+ err(1, "XCreateIC");
}
void
fprintf(stderr, "%s version: %s\n", *argv, VERSION);
return 0;
case 'e': /* embed */
- parent_window_id = strdup(optarg);
- check_allocation(parent_window_id);
+ if ((parent_window_id = strdup(optarg)) == NULL)
+ err(1, "strdup");
break;
case 'd':
- sep = strdup(optarg);
- check_allocation(sep);
+ if ((sep = strdup(optarg)) == NULL)
+ err(1, "strdup");
+ break;
case 'A':
r.free_text = 0;
break;
if (sep != NULL) {
int l;
l = strlen(sep);
- vlines = calloc(nlines, sizeof(char *));
- check_allocation(vlines);
+ if ((vlines = calloc(nlines, sizeof(char *))) == NULL)
+ err(1, "calloc");
for (i = 0; i < nlines; i++) {
char *t;
/* the prompt. We duplicate the string so later is easy to
* free (in the case it's been overwritten by the user) */
- r.ps1 = strdup("$ ");
- check_allocation(r.ps1);
+ if ((r.ps1 = strdup("$ ")) == NULL)
+ err(1, "strdup");
/* same for the font name */
- fontname = strdup(default_fontname);
- check_allocation(fontname);
+ if ((fontname = strdup(default_fontname)) == NULL)
+ err(1, "strdup");
textlen = 10;
- text = malloc(textlen * sizeof(char));
- check_allocation(text);
+ if ((text = malloc(textlen * sizeof(char))) == NULL)
+ err(1, "malloc");
/* struct completions *cs = filter(text, lines); */
- cs = compls_new(nlines);
- check_allocation(cs);
+ if ((cs = compls_new(nlines)) == NULL)
+ err(1, "compls_new");
/* start talking to xorg */
r.d = XOpenDisplay(NULL);
if (XrmGetResource(xdb, "MyMenu.font", "*", datatype, &value)
== 1) {
free(fontname);
- fontname = strdup(value.addr);
- check_allocation(fontname);
+ if ((fontname = strdup(value.addr)) == NULL)
+ err(1, "strdup");
} else {
fprintf(stderr, "no font defined, using %s\n",
fontname);