f827fada63
With gcc version 6, we get the following error when building logrotate: logrotate.c: In function 'postrotateSingleLog': logrotate.c:1784:5: error: this 'if' clause does not guard... [-Werror=misleading-indentation] if (!state->doRotate) ^~ logrotate.c:1787:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (!hasErrors && log->flags & LOG_FLAG_TMPFILENAME) { ^~ This is fixed by grabbing an upstream commit, 6a36c105587b07ad14fc937f3ee6e2eb402621a2. Once this is fixed, we get: config.c: In function 'strndup': config.c:87:10: error: nonnull argument 's' compared to NULL [-Werror=nonnull-compare] if(!s) ^ cc1: all warnings being treated as errors make[2]: *** [config.o] Error 1 make[2]: *** Waiting for unfinished jobs.... cc1: all warnings being treated as errors make[2]: *** [logrotate.o] Error 1 This is due to logrotate providing its own implementation of strndup(). We could fix it, but it much better to simply use the one provided by the C library, by fixing the detection method for strndup availability. This is done in patch 0002-Use-autoconf-checks-for-strndup-and-asprintf.patch. Fixes: http://autobuild.buildroot.net/results/6dc2eb22104076920d77425b1e608ef9b9e01c94/ Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com> [Thomas: replace fix for the nonnull issue with a different one.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
62 lines
1.8 KiB
Diff
62 lines
1.8 KiB
Diff
From 24fd7f81f9966071717f6a0effe8190310f1b393 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
Date: Fri, 19 Aug 2016 22:39:17 +0200
|
|
Subject: [PATCH] Use autoconf checks for strndup and asprintf
|
|
|
|
The current code in config.c can provide its own implementation of
|
|
asprintf() and strndup() if not provided by the system. However, in
|
|
order to decide if they should be provided, the check done is:
|
|
|
|
#if !defined(name_of_function)
|
|
|
|
which only works if the function is actually defined as a macro, which
|
|
is not necessarily the case.
|
|
|
|
Therefore, we replace this logic by a proper AC_CHECK_FUNCS() check in
|
|
the configure script.
|
|
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
---
|
|
config.c | 4 ++--
|
|
configure.ac | 2 ++
|
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/config.c b/config.c
|
|
index dbbf563..2209afd 100644
|
|
--- a/config.c
|
|
+++ b/config.c
|
|
@@ -45,7 +45,7 @@
|
|
#include "asprintf.c"
|
|
#endif
|
|
|
|
-#if !defined(asprintf) && !defined(_FORTIFY_SOURCE)
|
|
+#if !defined(HAVE_ASPRINTF) && !defined(_FORTIFY_SOURCE)
|
|
#include <stdarg.h>
|
|
|
|
int asprintf(char **string_ptr, const char *format, ...)
|
|
@@ -78,7 +78,7 @@ int asprintf(char **string_ptr, const char *format, ...)
|
|
|
|
#endif
|
|
|
|
-#if !defined(strndup)
|
|
+#if !defined(HAVE_STRNDUP)
|
|
char *strndup(const char *s, size_t n)
|
|
{
|
|
size_t nAvail;
|
|
diff --git a/configure.ac b/configure.ac
|
|
index e655b85..73b98da 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -13,6 +13,8 @@ AC_STRUCT_ST_BLOCKS
|
|
AC_CHECK_LIB([popt],[poptParseArgvString],,
|
|
AC_MSG_ERROR([libpopt required but not found]))
|
|
|
|
+AC_CHECK_FUNCS([strndup asprintf])
|
|
+
|
|
AC_ARG_WITH([selinux],
|
|
[AS_HELP_STRING([--with-selinux],
|
|
[support handling SELinux contexts (yes,no,check) @<:@default=check@:>@])],
|
|
--
|
|
2.7.4
|
|
|