aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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