]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc_aux.c
do not use the echo(1) -n option, it is not portable;
[mandoc.git] / mandoc_aux.c
index b5376735ceea298bda5a67d9bc642743a47cb916..5d595ce0c29297ef730cf0ab026cd26a76a4b9cf 100644 (file)
@@ -1,7 +1,7 @@
-/*     $Id: mandoc_aux.c,v 1.3 2014/07/09 08:20:34 schwarze Exp $ */
+/*     $Id: mandoc_aux.c,v 1.11 2018/02/07 20:04:57 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <sys/types.h>
 
+#if HAVE_ERR
+#include <err.h>
+#endif
 #include <stdarg.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -29,6 +30,7 @@
 #include "mandoc.h"
 #include "mandoc_aux.h"
 
+
 int
 mandoc_asprintf(char **dest, const char *fmt, ...)
 {
@@ -39,11 +41,9 @@ mandoc_asprintf(char **dest, const char *fmt, ...)
        ret = vasprintf(dest, fmt, ap);
        va_end(ap);
 
-       if (-1 == ret) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(ret);
+       if (ret == -1)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ret;
 }
 
 void *
@@ -52,11 +52,9 @@ mandoc_calloc(size_t num, size_t size)
        void    *ptr;
 
        ptr = calloc(num, size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(ptr);
+       if (ptr == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ptr;
 }
 
 void *
@@ -65,35 +63,36 @@ mandoc_malloc(size_t size)
        void    *ptr;
 
        ptr = malloc(size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(ptr);
+       if (ptr == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ptr;
 }
 
 void *
 mandoc_realloc(void *ptr, size_t size)
 {
-
        ptr = realloc(ptr, size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(ptr);
+       if (ptr == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ptr;
 }
 
 void *
 mandoc_reallocarray(void *ptr, size_t num, size_t size)
 {
-
        ptr = reallocarray(ptr, num, size);
-       if (NULL == ptr) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(ptr);
+       if (ptr == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ptr;
+}
+
+void *
+mandoc_recallocarray(void *ptr, size_t oldnum, size_t num, size_t size)
+{
+       ptr = recallocarray(ptr, oldnum, num, size);
+       if (ptr == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return ptr;
 }
 
 char *
@@ -102,11 +101,9 @@ mandoc_strdup(const char *ptr)
        char    *p;
 
        p = strdup(ptr);
-       if (NULL == p) {
-               perror(NULL);
-               exit((int)MANDOCLEVEL_SYSERR);
-       }
-       return(p);
+       if (p == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return p;
 }
 
 char *
@@ -114,8 +111,8 @@ mandoc_strndup(const char *ptr, size_t sz)
 {
        char    *p;
 
-       p = mandoc_malloc(sz + 1);
-       memcpy(p, ptr, sz);
-       p[(int)sz] = '\0';
-       return(p);
+       p = strndup(ptr, sz);
+       if (p == NULL)
+               err((int)MANDOCLEVEL_SYSERR, NULL);
+       return p;
 }