about summary refs log tree commit diff
path: root/configure.ng
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2024-01-18 22:39:10 +0100
committerAlexander Barton <alex@barton.de>2024-01-18 22:49:48 +0100
commit1d527eaf17435089e70b530955e271bbd0440fe4 (patch)
tree64d3b1262aec1178e48f088131b48032304636d1 /configure.ng
parentd702ebab0ad69905293466594359645835ba65b5 (diff)
downloadngircd-1d527eaf17435089e70b530955e271bbd0440fe4.tar.gz
ngircd-1d527eaf17435089e70b530955e271bbd0440fe4.zip
Disable GCC -Wformat-truncation when suported
Pass -Wno-format-truncation when this is supported by GCC so silence
warnings like this:

  conf.c: In function ‘Read_Config’:
  conf.c:985:60: warning: ‘snprintf’ output may be truncated before
                 the last format character [-Wformat-truncation=]
    985 |                         snprintf(file, sizeof(file), "%s/%s",
        |                                                            ^
  conf.c:985:25: note: ‘snprintf’ output 2 or more bytes (assuming 257)
                 into a destination of size 256
    985 |                         snprintf(file, sizeof(file), "%s/%s",
        |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    986 |                                  Conf_IncludeDir, entry->d_name);
        |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The warning is correct, but this is basically why we use snprintf() in
the first place.
Diffstat (limited to 'configure.ng')
-rw-r--r--configure.ng13
1 files changed, 13 insertions, 0 deletions
diff --git a/configure.ng b/configure.ng
index 195e4067..b2652c64 100644
--- a/configure.ng
+++ b/configure.ng
@@ -125,6 +125,18 @@ main(int argc, char **argv)
 	])
 ])
 
+AC_DEFUN([GCC_W_NO_FORMAT_TRUNC],[
+	result=yes
+	AC_MSG_CHECKING([whether ${CC} accepts -Wno-format-truncation])
+	old_cflags="$CFLAGS"
+	CFLAGS="$CFLAGS -Wno-format-truncation"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[result=no])
+	echo $result
+	if test "X$result" = "Xno"; then
+		CFLAGS="$old_cflags"
+	fi
+])
+
 # -- Hard coded system and compiler dependencies/features/options ... --
 
 if test "$GCC" = "yes"; then
@@ -132,6 +144,7 @@ if test "$GCC" = "yes"; then
 	CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
 
 	GCC_STACK_PROTECT_CC
+	GCC_W_NO_FORMAT_TRUNC
 fi
 
 case "$host_os" in