From 044536de92d4033b9470b34758b24c4d50a06cf1 Mon Sep 17 00:00:00 2001 From: Cosmin Truta Date: Fri, 21 Feb 2025 11:31:13 +0200 Subject: [PATCH] [libpng18] chore: Clean up remnants of the long-discontinued Win16 support Remove #ifdef sections and other workarounds for old Windows compilers that lacked proper support for Win32, including, especially, support for the Win32 stdio API. This is a cherry-pick of commit e936211760ddf0ed4a4711ea897b59395dfd206e from branch 'libpng18'. Reviewed-by: John Bowler Signed-off-by: Cosmin Truta --- png.c | 2 +- png.h | 2 +- pngconf.h | 33 +++++++++++++-------------------- pngrio.c | 4 ++-- pngtest.c | 12 ++++-------- pngwio.c | 8 ++++---- 6 files changed, 25 insertions(+), 36 deletions(-) diff --git a/png.c b/png.c index 71997bd64..43104e32a 100644 --- a/png.c +++ b/png.c @@ -700,7 +700,7 @@ png_get_io_ptr(png_const_structrp png_ptr) * function of your own because "FILE *" isn't necessarily available. */ void PNGAPI -png_init_io(png_structrp png_ptr, png_FILE_p fp) +png_init_io(png_structrp png_ptr, FILE *fp) { png_debug(1, "in png_init_io"); diff --git a/png.h b/png.h index ca15d6128..46f24feff 100644 --- a/png.h +++ b/png.h @@ -1570,7 +1570,7 @@ PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, #ifdef PNG_STDIO_SUPPORTED /* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, FILE *fp)); #endif /* Replace the (error and abort), and warning functions with user diff --git a/pngconf.h b/pngconf.h index 6eef769bd..314b6a3dd 100644 --- a/pngconf.h +++ b/pngconf.h @@ -222,22 +222,10 @@ # error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" # endif -# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ - (defined(__BORLANDC__) && __BORLANDC__ < 0x500) - /* older Borland and MSC - * compilers used '__export' and required this to be after - * the type. - */ -# ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP -# endif -# define PNG_DLL_EXPORT __export -# else /* newer compiler */ -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif -# endif /* compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif #else /* !Windows */ # if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) @@ -592,10 +580,6 @@ typedef const png_fixed_point * png_const_fixed_point_p; typedef size_t * png_size_tp; typedef const size_t * png_const_size_tp; -#ifdef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - #ifdef PNG_FLOATING_POINT_SUPPORTED typedef double * png_doublep; typedef const double * png_const_doublep; @@ -617,6 +601,15 @@ typedef double * * png_doublepp; /* Pointers to pointers to pointers; i.e., pointer to array */ typedef char * * * png_charppp; +#ifdef PNG_STDIO_SUPPORTED +/* With PNG_STDIO_SUPPORTED it was possible to use I/O streams that were + * not necessarily stdio FILE streams, to allow building Windows applications + * before Win32 and Windows CE applications before WinCE 3.0, but that kind + * of support has long been discontinued. + */ +typedef FILE * png_FILE_p; /* [Deprecated] */ +#endif + #endif /* PNG_BUILDING_SYMBOL_TABLE */ #endif /* PNGCONF_H */ diff --git a/pngrio.c b/pngrio.c index 3b137f275..b4a216161 100644 --- a/pngrio.c +++ b/pngrio.c @@ -1,6 +1,6 @@ /* pngrio.c - functions for data input * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -56,7 +56,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, size_t length) /* fread() returns 0 on error, so it is OK to store this in a size_t * instead of an int, which is what fread() actually returns. */ - check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr)); + check = fread(data, 1, length, png_voidcast(FILE *, png_ptr->io_ptr)); if (check != length) png_error(png_ptr, "Read Error"); diff --git a/pngtest.c b/pngtest.c index ba6d1b36b..94c91583f 100644 --- a/pngtest.c +++ b/pngtest.c @@ -103,10 +103,6 @@ typedef png_libpng_version_1_6_48_git Your_png_h_is_not_version_1_6_48_git; # define PNG_ZBUF_SIZE 8192 #endif -#ifndef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - #ifndef PNG_DEBUG # define PNG_DEBUG 0 #endif @@ -403,7 +399,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, size_t length) */ io_ptr = png_get_io_ptr(png_ptr); if (io_ptr != NULL) - check = fread(data, 1, length, (png_FILE_p)io_ptr); + check = fread(data, 1, length, (FILE *)io_ptr); if (check != length) png_error(png_ptr, "Read Error"); @@ -437,7 +433,7 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, size_t length) if (png_ptr == NULL) png_error(png_ptr, "pngtest_write_data: bad png_ptr"); - check = fwrite(data, 1, length, (png_FILE_p)png_get_io_ptr(png_ptr)); + check = fwrite(data, 1, length, (FILE *)png_get_io_ptr(png_ptr)); if (check != length) png_error(png_ptr, "Write Error"); @@ -858,8 +854,8 @@ pngtest_check_text_support(png_structp png_ptr, png_textp text_ptr, static int test_one_file(const char *inname, const char *outname) { - static png_FILE_p fpin; - static png_FILE_p fpout; /* "static" prevents setjmp corruption */ + static FILE *fpin; + static FILE *fpout; /* "static" prevents setjmp corruption */ pngtest_error_parameters error_parameters; png_structp read_ptr; png_infop read_info_ptr, end_info_ptr; diff --git a/pngwio.c b/pngwio.c index 38c9c006c..96a3187ff 100644 --- a/pngwio.c +++ b/pngwio.c @@ -1,6 +1,6 @@ /* pngwio.c - functions for data output * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -54,7 +54,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, size_t length) if (png_ptr == NULL) return; - check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); + check = fwrite(data, 1, length, (FILE *)png_ptr->io_ptr); if (check != length) png_error(png_ptr, "Write Error"); @@ -77,12 +77,12 @@ png_flush(png_structrp png_ptr) void PNGCBAPI png_default_flush(png_structp png_ptr) { - png_FILE_p io_ptr; + FILE *io_ptr; if (png_ptr == NULL) return; - io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); + io_ptr = png_voidcast(FILE *, png_ptr->io_ptr); fflush(io_ptr); } # endif