parent
7414651893
commit
01d4457763
@ -0,0 +1,55 @@ |
||||
#define _POSIX_C_SOURCE 200809l |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include <stdarg.h> |
||||
#include <errno.h> |
||||
|
||||
#include "err.h" |
||||
|
||||
void die(const char *fmt, ...) |
||||
{ |
||||
va_list ap; |
||||
va_start(ap, fmt); |
||||
|
||||
vfprintf(stderr, fmt, ap); |
||||
|
||||
if (fmt[0] && fmt[strlen(fmt) - 1] == ':') |
||||
fprintf(stderr, " %s", strerror(errno)); |
||||
else |
||||
fputc('\n', stderr); |
||||
|
||||
va_end(ap); |
||||
exit(errno ? errno : EXIT_FAILURE); |
||||
} |
||||
|
||||
void *emalloc(size_t s) |
||||
{ |
||||
if (!s || s == (size_t)-1) |
||||
die("bad malloc: invalid size"); |
||||
void *p = malloc(s); |
||||
if (!p) |
||||
die("bad malloc:"); |
||||
return p; |
||||
} |
||||
|
||||
void *erealloc(void *p, size_t s) |
||||
{ |
||||
if (!s || s == (size_t)-1) |
||||
die("bad realloc: invalid size"); |
||||
void *r = realloc(p, s); |
||||
if (!r) |
||||
die("bad realloc:"); |
||||
return r; |
||||
} |
||||
|
||||
char *estrdup(const char *s) |
||||
{ |
||||
if (!s) |
||||
die("bad strdup: cannot duplicate NULL pointer"); |
||||
char *r = strdup(s); |
||||
if (!r) |
||||
die("bad strdup:"); |
||||
return r; |
||||
} |
@ -0,0 +1,16 @@ |
||||
#ifndef _ACRON_ERR_H |
||||
#define _ACRON_ERR_H |
||||
|
||||
/* Helper error/error-ing functions, like die() and dying versions of memory
|
||||
* allocating functions */ |
||||
|
||||
#include <stdlib.h> |
||||
|
||||
void die(const char *, ...); |
||||
|
||||
/* Erroring functions */ |
||||
void *emalloc(size_t); |
||||
void *erealloc(void *, size_t); |
||||
char *estrdup(const char *); |
||||
|
||||
#endif |
@ -1,8 +1,8 @@ |
||||
.POSIX: |
||||
|
||||
CFLAGS = -Wall -Werror -pedantic -Wextra -std=c11
|
||||
CFLAGS = -Wall -Werror -pedantic -Wextra -std=c11 -O0 -g
|
||||
|
||||
msh: msh.c fstr.c |
||||
msh: msh.c fstr.c err.c |
||||
|
||||
clean: |
||||
rm -f msh *.o
|
||||
|
Reference in new issue