--- ./configure.ac.orig
+++ ./configure.ac
@@ -34,6 +34,7 @@
case "${host_os}" in
linux-gnu*) HOST_OS="linux-gnu" ;;
linux-uclibc*) HOST_OS="linux-gnu" ;;
+ linux-musl*) HOST_OS="linux-gnu" ;;
*) AC_MSG_ERROR([unkown host-os ${host_os}]) ;;
esac
AC_SUBST(HOST_OS)
@@ -234,6 +235,7 @@
sys/param.h \
sys/time.h \
unistd.h \
+ error.h \
])
# Checks for typedefs, structures, and compiler characteristics.
diff --git a/expr.c b/expr.c
index 32860fd..374c549 100644
--- a/expr.c
+++ b/expr.c
@@ -19,9 +19,12 @@
*/
#include <string.h>
+#include <stdio.h>
#include <assert.h>
#include <errno.h>
+#ifdef HAVE_ERROR_H
#include <error.h>
+#endif
#include <stdlib.h>
#include "expr.h"
@@ -330,8 +333,11 @@ expr_self(void)
static struct expr_node *node = NULL;
if (node == NULL) {
node = malloc(sizeof(*node));
- if (node == NULL)
- error(1, errno, "malloc expr_self");
+ if (node == NULL) {
+ fprintf(stderr, "%s: malloc expr_self\n",
+ strerror(errno));
+ exit(1);
+ }
expr_init_self(node);
}
return node;
diff --git a/glob.c b/glob.c
index 075c867..06fec47 100644
--- a/glob.c
+++ b/glob.c
@@ -180,7 +180,7 @@ glob_to_regex(const char *glob, char **retp)
goto fail;
}
*retp = buf;
- return REG_NOERROR;
+ return 0;
}
int
@@ -188,7 +188,7 @@ globcomp(regex_t *preg, const char *glob, int cflags)
{
char *regex = NULL;
int status = glob_to_regex(glob, ®ex);
- if (status != REG_NOERROR)
+ if (status != 0)
return status;
assert(regex != NULL);
status = regcomp(preg, regex, cflags);
diff --git a/options.c b/options.c
index 1e19dc7..1dc5e1e 100644
--- a/options.c
+++ b/options.c
@@ -204,7 +204,7 @@ compile_libname(const char *expr, const char *a_lib, int lib_re_p,
regex_t lib_re;
int status = (lib_re_p ? regcomp : globcomp)(&lib_re, lib, 0);
- if (status != REG_NOERROR) {
+ if (status != 0) {
char buf[100];
regerror(status, &lib_re, buf, sizeof buf);
fprintf(stderr, "Rule near '%s' will be ignored: %s.\n",
diff --git a/read_config_file.c b/read_config_file.c
index e247436..73528fe 100644
--- a/read_config_file.c
+++ b/read_config_file.c
@@ -27,7 +27,9 @@
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
+#ifdef HAVE_ERROR_H
#include <error.h>
+#endif
#include <assert.h>
#include "common.h"
@@ -1258,8 +1260,12 @@ void
init_global_config(void)
{
struct arg_type_info *info = malloc(2 * sizeof(*info));
- if (info == NULL)
- error(1, errno, "malloc in init_global_config");
+ if (info == NULL) {
+ report_error(filename, line_no,
+ "%s: malloc in init_global_config",
+ strerror(errno));
+ exit(1);
+ }
memset(info, 0, 2 * sizeof(*info));
info[0].type = ARGTYPE_POINTER;
diff --git a/zero.c b/zero.c
index bc119ee..e685f59 100644
--- a/zero.c
+++ b/zero.c
@@ -18,8 +18,11 @@
* 02110-1301 USA
*/
+#ifdef HAVE_ERROR_H
#include <error.h>
+#endif
#include <errno.h>
+#include <string.h>
#include "zero.h"
#include "common.h"
@@ -96,8 +99,11 @@ expr_node_zero(void)
static struct expr_node *node = NULL;
if (node == NULL) {
node = malloc(sizeof(*node));
- if (node == NULL)
- error(1, errno, "malloc expr_node_zero");
+ if (node == NULL) {
+ report_global_error("%s: malloc expr_node_zero",
+ strerror(errno));
+ exit(1);
+ }
expr_init_cb1(node, &zero1_callback,
expr_self(), 0, (void *)-1);
}
--- ./proc.h.orig
+++ ./proc.h
@@ -26,6 +26,7 @@
#include "config.h"
#include <sys/time.h>
+#include <unistd.h>
#if defined(HAVE_LIBUNWIND)
# include <libunwind.h>