HomeFreeBSD

graphics/sane-backends: fix build with clang 15

Description

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
<libgen.h>. 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

Details

Provenance
dimAuthored on Jan 5 2023, 5:04 PM
Parents
R11:42ff1e6c6693: graphics/krita: update to 5.1.5 release (+)
Branches
Unknown
Tags
Unknown