AC_CONFIG_SRCDIR([src])
AC_CONFIG_HEADER([config.h])
+AC_DEFINE([_GNU_SOURCE], [], [We want GNU extensions])
+
AM_PROG_AR
AC_PROG_CC
AC_PROG_LIBTOOL
# This is always checked (library needs this)
AC_HEADER_STDC
AC_FUNC_MALLOC
+AC_FUNC_STRERROR_R
AC_CHECK_FUNC([ioctl], [], [FUNC_NOT_FOUND_LIB([ioctl])])
AC_CHECK_FUNC([asprintf], [], [FUNC_NOT_FOUND_LIB([asprintf])])
AC_CHECK_FUNC([readdir], [], [FUNC_NOT_FOUND_LIB([readdir])])
lib_LTLIBRARIES = libgpiod.la
libgpiod_la_SOURCES = core.c
-libgpiod_la_CFLAGS = -Wall -Wextra -g -D_GNU_SOURCE
+libgpiod_la_CFLAGS = -Wall -Wextra -g
libgpiod_la_CFLAGS += -fvisibility=hidden -I$(top_srcdir)/include/
libgpiod_la_CFLAGS += -include $(top_srcdir)/config.h
libgpiod_la_LDFLAGS = -version-number $(subst .,:,$(PACKAGE_VERSION))
return last_error;
}
+static const char * strerror_r_wrapper(int errnum, char *buf, size_t buflen)
+{
+#ifdef STRERROR_R_CHAR_P
+ return strerror_r(errnum, buf, buflen);
+#else
+ int status;
+
+ status = strerror_r(errnum, buf, buflen);
+ if (status != 0)
+ snprintf(buf, buflen, "error in strerror_r(): %d", status);
+
+ return buf;
+#endif
+}
+
const char * gpiod_strerror(int errnum)
{
if (errnum < __GPIOD_ERRNO_OFFSET)
- return strerror_r(errnum, errmsg, sizeof(errmsg));
+ return strerror_r_wrapper(errnum, errmsg, sizeof(errmsg));
else if (errnum > __GPIOD_MAX_ERR)
return "invalid error number";
else
#
AM_CFLAGS = -I$(top_srcdir)/include/ -include $(top_srcdir)/config.h
-AM_CFLAGS += -Wall -Wextra -g -D_GNU_SOURCE -L$(top_srcdir)/src/lib
+AM_CFLAGS += -Wall -Wextra -g -L$(top_srcdir)/src/lib
AM_LDFLAGS = -lgpiod
DEPENDENCIES = libgpiod.la