From 33d9167f4032ca9197a46e69d131c5b6e1b0c352 Mon Sep 17 00:00:00 2001 From: Jim Hester Date: Thu, 19 Apr 2018 13:21:32 -0400 Subject: [PATCH] Use a pragma to silence the C99 extensions warnings (#459) * Use a pragma to silence the C99 extensions warnings This also reverts changing the flexible array members to single element arrays. * Avoid NOTEs on R-devel * Fix pragmas for GCC * Only use const char** for iconv on Solaris * Extend Solaris iconv solution to Windows --- src/ColSpec.h | 3 +++ src/XlsWorkBook.cpp | 4 ++++ src/XlsWorkSheet.cpp | 2 +- src/XlsxWorkSheet.cpp | 2 +- src/libxls/xlsstruct.h | 16 ++++++++++++---- src/xls.c | 12 ++++++------ src/xlstool.c | 24 +++++++++++++++--------- 7 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/ColSpec.h b/src/ColSpec.h index a0bfbe44..122d47c0 100644 --- a/src/ColSpec.h +++ b/src/ColSpec.h @@ -1,6 +1,9 @@ #ifndef READXL_COLSPEC_ #define READXL_COLSPEC_ +# pragma GCC diagnostic ignored "-Wpedantic" +# pragma clang diagnostic ignored "-Wc99-extensions" + #include #include #include "StringSet.h" diff --git a/src/XlsWorkBook.cpp b/src/XlsWorkBook.cpp index dd60b603..0f6e6956 100644 --- a/src/XlsWorkBook.cpp +++ b/src/XlsWorkBook.cpp @@ -1,4 +1,8 @@ #include + +# pragma GCC diagnostic ignored "-Wpedantic" +# pragma clang diagnostic ignored "-Wc99-extensions" + #include "XlsWorkBook.h" using namespace Rcpp; diff --git a/src/XlsWorkSheet.cpp b/src/XlsWorkSheet.cpp index 45e05a25..dad586de 100644 --- a/src/XlsWorkSheet.cpp +++ b/src/XlsWorkSheet.cpp @@ -1,7 +1,7 @@ #include -#include "XlsWorkSheet.h" #include "ColSpec.h" +#include "XlsWorkSheet.h" #include using namespace Rcpp; diff --git a/src/XlsxWorkSheet.cpp b/src/XlsxWorkSheet.cpp index 9ddb99d1..ba5de2cd 100644 --- a/src/XlsxWorkSheet.cpp +++ b/src/XlsxWorkSheet.cpp @@ -1,6 +1,6 @@ #include -#include "XlsxWorkSheet.h" #include "ColSpec.h" +#include "XlsxWorkSheet.h" #include "utils.h" using namespace Rcpp; diff --git a/src/libxls/xlsstruct.h b/src/libxls/xlsstruct.h index fe03cb31..01dfd497 100644 --- a/src/libxls/xlsstruct.h +++ b/src/libxls/xlsstruct.h @@ -33,6 +33,10 @@ #ifndef XLS_STRUCT_INC #define XLS_STRUCT_INC +#ifdef __cplusplus +extern "C" { +#endif + #include "libxls/ole.h" #define XLS_RECORD_EOF 0x000A @@ -194,7 +198,7 @@ typedef struct MULRK struct { WORD xf; DWORD_UA value; - } rk[1]; // readxl + } rk[]; //WORD last_col; } MULRK; @@ -203,7 +207,7 @@ typedef struct MULBLANK { WORD row; WORD col; - WORD xf[1]; // readxl + WORD xf[]; //WORD last_col; } MULBLANK; @@ -240,7 +244,7 @@ typedef struct SST { DWORD num; DWORD numofstr; - BYTE strings[0]; + BYTE strings[]; } SST; @@ -312,7 +316,7 @@ typedef struct FONT BYTE family; BYTE charset; BYTE notused; - char name[1]; // readxl + char name[]; } FONT; @@ -530,4 +534,8 @@ xlsSummaryInfo; typedef void (*xls_formula_handler)(WORD bof, WORD len, BYTE *formula); +#ifdef __cplusplus +} // extern c block +#endif + #endif diff --git a/src/xls.c b/src/xls.c index bd7d38ce..b534946d 100644 --- a/src/xls.c +++ b/src/xls.c @@ -90,7 +90,7 @@ typedef struct { uint32_t os; uint32_t format[4]; uint32_t count; - sectionList secList[1]; // readxl + sectionList secList[]; } header; typedef struct { @@ -101,12 +101,12 @@ typedef struct { typedef struct { uint32_t length; uint32_t numProperties; - propertyList properties[1]; // readxl + propertyList properties[]; } sectionHeader; typedef struct { uint32_t propertyID; - uint32_t data[1]; // readxl + uint32_t data[]; } property; #pragma pack(pop) @@ -785,7 +785,7 @@ xls_error_t xls_parseWorkBook(xlsWorkBook* pWB) if(xls_debug > 10) { printf("READ WORKBOOK filePos=%ld\n", (long)pWB->filepos); printf(" OLE: start=%d pos=%zd size=%zd fatPos=%zu\n", - pWB->olestr->start, pWB->olestr->pos, pWB->olestr->size, pWB->olestr->fatpos); + pWB->olestr->start, pWB->olestr->pos, pWB->olestr->size, pWB->olestr->fatpos); } if (ole2_read(&bof1, 1, 4, pWB->olestr) != 4) { @@ -1018,7 +1018,7 @@ xls_error_t xls_parseWorkBook(xlsWorkBook* pWB) printf(" mode: 0x%x\n", pWB->is1904); } break; - + case XLS_RECORD_DEFINEDNAME: if(xls_debug) { int i; @@ -1027,7 +1027,7 @@ xls_error_t xls_parseWorkBook(xlsWorkBook* pWB) printf("\n"); } break; - + default: if(xls_debug) { diff --git a/src/xlstool.c b/src/xlstool.c index 2577233d..c061ec2c 100644 --- a/src/xlstool.c +++ b/src/xlstool.c @@ -138,13 +138,13 @@ char *utf8_decode(const char *str, DWORD len, char *encoding) int utf8_chars = 0; char *ret = NULL; DWORD i; - + for(i=0; i len) { @@ -361,9 +367,9 @@ char *get_string(const char *s, size_t len, BYTE is2, BYTE is5ver, char *charset printf("ofs=%d ret[0]=%d\n", ofs, *ret); { unsigned char *ptr; - + ptr = ret; - + printf("%x %x %x %x %x %x %x %x\n", ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7] ); printf("%s\n", ret); } @@ -544,7 +550,7 @@ void xls_showFormat(struct st_format_data* frmt) void xls_showXF(XF8* xf) { static int idx; - + printf(" Index: %u\n",idx++); printf(" Font: %u\n",xf->font); printf(" Format: %u\n",xf->format);