From 9fbb5958d12c843b3ae52c74a6ecfe5a76623302 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Thu, 5 Jan 2023 18:04:52 +0100 Subject: [PATCH] graphics/sane-backends: fix build with clang 15 During an exp-run for llvm 15 (see bug 265425), it turned out that graphics/sane-backends failed to build with clang 15: jpegtopdf.c:204:5: error: incompatible pointer to integer conversion assigning to 'long' from 'char *(int, int)' [-Wint-conversion] tz = timezone; ^ ~~~~~~~~ scanimage.c:1248:42: warning: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] png_set_iCCP(*png_ptr, *info_ptr, basename(icc_profile), PNG_COMPRESSION_TYPE_BASE, icc_buffer, icc_size); ^ scanimage.c:1248:42: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'png_const_charp' (aka 'const char *') [-Wint-conversion] png_set_iCCP(*png_ptr, *info_ptr, basename(icc_profile), PNG_COMPRESSION_TYPE_BASE, icc_buffer, icc_size); ^~~~~~~~~~~~~~~~~~~~~ The jpegtopdf error is because 'timezone' as a global external variable does not exist on FreeBSD: it is a glibc-ism. Use struct tm's tm_gmtoff field instead, which also has its sign reversed from the glibc global. The scanimage error is because basename(3) is used without including . With glibc, basename() is declared in both string.h and libgen.h, where the former gives you the GNU specific variant, and the latter the POSIX variant. PR: 268771 Approved by: vvd@unislabs.com (maintainer) MFH: 2023Q1 --- .../sane-backends/files/patch-frontend_jpegtopdf.c | 14 ++++++++++++++ .../sane-backends/files/patch-frontend_scanimage.c | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 graphics/sane-backends/files/patch-frontend_jpegtopdf.c create mode 100644 graphics/sane-backends/files/patch-frontend_scanimage.c diff --git a/graphics/sane-backends/files/patch-frontend_jpegtopdf.c b/graphics/sane-backends/files/patch-frontend_jpegtopdf.c new file mode 100644 index 000000000000..f6e4be53ca79 --- /dev/null +++ b/graphics/sane-backends/files/patch-frontend_jpegtopdf.c @@ -0,0 +1,14 @@ +--- frontend/jpegtopdf.c.orig 2022-01-19 16:38:00 UTC ++++ frontend/jpegtopdf.c +@@ -201,7 +201,11 @@ static SANE_Int _get_current_time( struct tm *pt, SANE + goto EXIT; + } + /* get time difference ( OHH'mm' ) */ ++#ifdef __FreeBSD__ ++ tz = -pt->tm_gmtoff; ++#else + tz = timezone; ++#endif + if ( tz > 0 ) { + *sign_c = '-'; + } diff --git a/graphics/sane-backends/files/patch-frontend_scanimage.c b/graphics/sane-backends/files/patch-frontend_scanimage.c new file mode 100644 index 000000000000..cd7a92a0be01 --- /dev/null +++ b/graphics/sane-backends/files/patch-frontend_scanimage.c @@ -0,0 +1,12 @@ +--- frontend/scanimage.c.orig 2022-01-19 16:38:00 UTC ++++ frontend/scanimage.c +@@ -39,6 +39,9 @@ + #include + #include + #include ++#ifdef __FreeBSD__ ++#include ++#endif + + #include + #include