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: |
.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: |
clean: |
||||||
rm -f msh *.o
|
rm -f msh *.o
|
||||||
|
Reference in new issue