aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-08-21 14:37:10 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2013-08-21 15:03:21 +0200
commit7a7b0bd1a4182201a5006c31ab5f1a4ef5849ee6 (patch)
tree8a94ba006daac18af528abda6aa5a5820657513c
parenta9bf2a6890ee1a491fd6d09ea93b210b2b58b368 (diff)
downloadpingu-7a7b0bd1a4182201a5006c31ab5f1a4ef5849ee6.tar.bz2
pingu-7a7b0bd1a4182201a5006c31ab5f1a4ef5849ee6.tar.xz
configure: check for strlcpy
-rwxr-xr-xconfigure49
-rw-r--r--pingu_iface.c8
2 files changed, 55 insertions, 2 deletions
diff --git a/configure b/configure
index b0ea1cb..f78da45 100755
--- a/configure
+++ b/configure
@@ -121,7 +121,52 @@ if $enable_werror; then
CFLAGS="$CFLAGS -Werror"
fi
-config_vars="
+cc=${CC:-gcc}
+
+cat > $TMPC << EOF
+#include <string.h>
+int main(void) {
+ char src[4] = "asdf";
+ char dst[4];
+ return strlcpy(dst, src, sizeof(dst));
+}
+EOF
+
+echo -n "Checking for strlcpy: "
+if compile_prog "" ""; then
+ HAVE_STRLCPY=1
+ echo yes
+else
+ echo no
+fi
+
+# generate config.h
+config_h_vars="
+PACKAGE
+HAVE_STRLCPY
+"
+
+cat >config.h <<EOF
+/* this file is generated by $0 */
+#ifndef CONFIG_H
+#define CONFIG_H
+
+EOF
+for var in $config_h_vars; do
+ eval "value=\$$var"
+ case "$value" in
+ [0-9]) echo "#define $var $value" >> config.h;;
+ "") echo "/* $var is unset */" >> config.h;;
+ *) echo "#define $var \"$value\"" >> config.h;;
+ esac
+done
+echo "" >> config.h
+echo '#endif /* CONFIG_H */' >> config.h
+
+CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
+
+# generate config.mk
+config_mk_vars="
prefix
exec_prefix
bindir
@@ -137,7 +182,7 @@ LDFLAGS
"
echo "# this file is generated by $0" >config.mk
-for var in $config_vars; do
+for var in $config_mk_vars; do
eval "value=\$$var"
if [ -n "$value" ]; then
echo "$var = $value" >> config.mk
diff --git a/pingu_iface.c b/pingu_iface.c
index ec35628..815b1e9 100644
--- a/pingu_iface.c
+++ b/pingu_iface.c
@@ -20,6 +20,14 @@
#include "pingu_netlink.h"
#include "sockaddr_util.h"
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef HAVE_STRLCPY
+#define strlcpy(dst, src, dstsize) snprintf(dst, dstsize, "%s", src)
+#endif
+
static struct list_head iface_list = LIST_INITIALIZER(iface_list);
#define PINGU_ROUTE_TABLE_MIN 1