jmcnamara / libxlsxwriter

A C library for creating Excel XLSX files.
https://libxlsxwriter.github.io
Other
1.49k stars 332 forks source link

Compile warnings in minizip #381

Closed jeroen closed 1 year ago

jeroen commented 1 year ago

We see these warnings when compiling with -Wstrict-prototypes

minizip/ioapi.c:234:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
minizip/zip.c:189:60: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
jmcnamara commented 1 year ago

Thanks for the report. What OS and compiler version are you using?

jmcnamara commented 1 year ago

I can't reproduce this on macOS:

/tmp$ git clone git@github.com:jmcnamara/libxlsxwriter.git
Cloning into 'libxlsxwriter'...

/tmp$ cd libxlsxwriter/

/tmp/libxlsxwriter$ CFLAGS=-Wstrict-prototypes make V=1 third_party
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C third_party/minizip
cc         -c -Wstrict-prototypes -O3 -DNOCRYPT -DNOUNCRYPT  ioapi.c
cc         -c -Wstrict-prototypes -O3 -DNOCRYPT -DNOUNCRYPT  zip.c
cc -fPIC -c -Wstrict-prototypes -O3 -DNOCRYPT -DNOUNCRYPT  ioapi.c -o ioapi.so
cc -fPIC -c -Wstrict-prototypes -O3 -DNOCRYPT -DNOUNCRYPT  zip.c -o zip.so
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C third_party/tmpfileplus
cc         -c -Wstrict-prototypes  tmpfileplus.c
cc -fPIC -c -Wstrict-prototypes  tmpfileplus.c -o tmpfileplus.so
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C third_party/md5
cc         -c -Wstrict-prototypes  md5.c
cc -fPIC -c -Wstrict-prototypes  md5.c -o md5.so

/tmp/libxlsxwriter (main)$ clang --version
Apple clang version 11.0.0 (clang-1100.0.33.17)

I'll try with some Linux variants.

By the way, the minizip code is third party code from the zlib examples. It may not be warning free with recent compilers. It is probably best not to compile it with additional constraints. It is also possible to link against libminizip so that you don't have to compile it: https://libxlsxwriter.github.io/getting_started.html#gsg_minizip

The libxlsxwriter code itself should be warning clean with -Wstrict-prototypes.

jeroen commented 1 year ago

This happens with clang 15 and gcc 12 (tested on both debian and fedora).

jmcnamara commented 1 year ago

I'll look into it, but since it is third party code it may not be fixed externally in which case it won't be fixable.

Could you disable, or not add that check for that part of the compilation? It is a pretty harmless warning and libxlsxwriter should be warning free.

jeroen commented 1 year ago

This is enforced downstream in the CRAN repository in prep for C23, I cannot disable this unfortunately: https://cran.r-project.org/web/checks/check_results_writexl.html

But I can fix it in my copy of the vendored writexl code, the solution is trivial.

jmcnamara commented 1 year ago

The writexl fix for reference: https://github.com/ropensci/writexl/commit/75c70296260b70b2c08aa412117b4f96c495bfbf

jmcnamara commented 1 year ago

Fixed on main. Thanks for the report.