diff --git a/configure.ac b/configure.ac index 4ecc5cf4..918a50c1 100644 --- a/configure.ac +++ b/configure.ac @@ -141,69 +141,35 @@ AM_CONDITIONAL(ENABLE_DEPRECATED, [test x"$enable_deprecated" = x"yes"]) # this gets pasted into version.h as a #define AC_SUBST(VIPS_ENABLE_DEPRECATED) -AC_MSG_CHECKING([for native Win32]) -case "$host" in - *-*-mingw*) - vips_os_win32=yes - ;; - *) - vips_os_win32=no - ;; -esac -AC_MSG_RESULT([$vips_os_win32]) - -if test x"$vips_os_win32" = x"yes"; then - AC_DEFINE(OS_WIN32,1,[native win32]) - - # makes gcc use win native alignment - VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS" -fi - -# CImg needs flags changed on win32 -AM_CONDITIONAL(OS_WIN32, [test x"$vips_os_win32" = x"yes"]) - -# Cygwin/mingw need binary open to avoid CR/LF madness -# ... should be a better way to test for this -AC_MSG_CHECKING([for binary open needed]) +AC_MSG_CHECKING([for -mms-bitfields support]) case "$host_os" in - cygwin* | mingw*) - vips_binary_open=yes + mingw*) + # makes gcc use win native alignment + # GCC >= 4.7 and Clang >= 11 does this automatically, see: + # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1510#note_841637 + VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS" + AC_MSG_RESULT([yes]) ;; *) - vips_binary_open=no + AC_MSG_RESULT([no]) ;; esac -AC_MSG_RESULT([$vips_binary_open]) -if test x"$vips_binary_open" = x"yes"; then - AC_DEFINE(BINARY_OPEN,1,[define to open non-text files in binary mode]) -fi - -AC_MSG_CHECKING([for Mac OS X]) -case "$host" in - *-*-darwin*) - vips_os_darwin=yes - ;; - *) - vips_os_darwin=no - ;; -esac -AC_MSG_RESULT([$vips_os_darwin]) - -if test x"$vips_os_darwin" = x"yes"; then - AC_DEFINE(VIPS_OS_DARWIN,1,[native Mac OS X]) -fi # set the default directory for ICC profiles -if test x"$vips_os_darwin" = x"yes"; then - profile_dir="/Library/ColorSync/Profiles" -elif test x"$vips_os_win32" = x"yes"; then - # need double escapes since this will get pasted into a #define in a C - # header ... the C:\Windows is usually overrwritten with the result of - # GetWindowsDirectoryW() - profile_dir="C:\\\\Windows\\\\System32\\\\spool\\\\drivers\\\\color" -else - profile_dir="/usr/share/color/icc" -fi +case "$host_os" in + darwin*) + profile_dir="/Library/ColorSync/Profiles" + ;; + mingw*) + # need double escapes since this will get pasted into a #define in a C + # header ... the C:\Windows is usually overwritten with the result of + # GetWindowsDirectoryW() + profile_dir="C:\\\\Windows\\\\System32\\\\spool\\\\drivers\\\\color" + ;; + *) + profile_dir="/usr/share/color/icc" + ;; +esac AC_DEFINE_UNQUOTED(VIPS_ICC_DIR,"$profile_dir",[default directory for ICC profiles]) # we want largefile support, if possible @@ -447,8 +413,8 @@ PKG_CHECK_MODULES(DATE_TIME_FORMAT_ISO8601, glib-2.0 >= 2.62, # thread by default save_pthread_LIBS="$LIBS" save_pthread_CFLAGS="$CFLAGS" -LIBS="$LIBS $GTHREAD_LIBS" -CFLAGS="$CFLAGS $GTHREAD_CFLAGS" +LIBS="$LIBS $REQUIRED_LIBS" +CFLAGS="$CFLAGS $REQUIRED_CFLAGS" AC_CHECK_FUNC(pthread_setattr_default_np, [AC_DEFINE(HAVE_PTHREAD_DEFAULT_NP,1,[have pthread_setattr_default_np().]) ] @@ -456,11 +422,6 @@ AC_CHECK_FUNC(pthread_setattr_default_np, LIBS="$save_pthread_LIBS" CFLAGS="$save_pthread_CFLAGS" -if test x"$vips_os_win32" = x"yes"; then - AC_DEFINE(HAVE_G_WIN32_GET_COMMAND_LINE,1,[define if your glib has g_win32_get_command_line().]) - have_g_win32_get_command_line=yes -fi - # from 2.48 we have g_uint_checked_mul() etc. PKG_CHECK_MODULES(HAVE_CHECKED_MUL, glib-2.0 >= 2.48, [AC_DEFINE(HAVE_CHECKED_MUL,1,[define if your glib has checked multiply.]) @@ -1231,13 +1192,13 @@ if test x"$LIB_FUZZING_ENGINE" = x; then fi # Gather all up for VIPS_CFLAGS, VIPS_INCLUDES, VIPS_LIBS -VIPS_CFLAGS="$VIPS_CFLAGS $GTHREAD_CFLAGS $GIO_CFLAGS $REQUIRED_CFLAGS $EXPAT_CFLAGS $ZLIB_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $JPEG_CFLAGS $SPNG_CFLAGS $PNG_CFLAGS $IMAGEQUANT_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $LIBWEBPMUX_CFLAGS $GIFLIB_INCLUDES $RSVG_CFLAGS $PDFIUM_CFLAGS $POPPLER_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS $HEIF_CFLAGS" VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS" +VIPS_CFLAGS="$VIPS_CFLAGS $GIO_CFLAGS $REQUIRED_CFLAGS $EXPAT_CFLAGS $ZLIB_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $JPEG_CFLAGS $SPNG_CFLAGS $PNG_CFLAGS $IMAGEQUANT_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $GIFLIB_INCLUDES $RSVG_CFLAGS $PDFIUM_CFLAGS $POPPLER_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS $HEIF_CFLAGS" VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS" VIPS_INCLUDES="$ZLIB_INCLUDES $PNG_INCLUDES $TIFF_INCLUDES $JPEG_INCLUDES $NIFTI_INCLUDES" -VIPS_LIBS="$ZLIB_LIBS $HEIF_LIBS $MAGICK_LIBS $SPNG_LIBS $PNG_LIBS $IMAGEQUANT_LIBS $TIFF_LIBS $JPEG_LIBS $GTHREAD_LIBS $GIO_LIBS $REQUIRED_LIBS $EXPAT_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $GIFLIB_LIBS $RSVG_LIBS $NIFTI_LIBS $PDFIUM_LIBS $POPPLER_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $LIBWEBPMUX_LIBS $MATIO_LIBS $EXIF_LIBS -lm" +VIPS_LIBS="$ZLIB_LIBS $HEIF_LIBS $MAGICK_LIBS $SPNG_LIBS $PNG_LIBS $IMAGEQUANT_LIBS $TIFF_LIBS $JPEG_LIBS $GIO_LIBS $REQUIRED_LIBS $EXPAT_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $GIFLIB_LIBS $RSVG_LIBS $NIFTI_LIBS $PDFIUM_LIBS $POPPLER_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $MATIO_LIBS $EXIF_LIBS -lm" # autoconf hates multi-line AC_SUBST so we have to have another copy of this # thing -VIPS_CONFIG="native win32: $vips_os_win32, native OS X: $vips_os_darwin, open files in binary mode: $vips_binary_open, enable debug: $enable_debug, enable deprecated library components: $enable_deprecated, enable docs with gtkdoc: $enable_gtk_doc, gobject introspection: $found_introspection, enable radiance support: $with_radiance, enable analyze support: $with_analyze, enable PPM support: $with_ppm, generate C++ docs: $with_doxygen, use fftw3 for FFT: $with_fftw, Magick package: $with_magickpackage, Magick API version: $magick_version, load with libMagick: $enable_magickload, save with libMagick: $enable_magicksave, accelerate loops with orc: $with_orc, ICC profile support with lcms: $with_lcms, file import with niftiio: $with_nifti, file import with libheif: $with_heif, file import with OpenEXR: $with_OpenEXR, file import with OpenSlide: $with_openslide, file import with matio: $with_matio, PDF import with PDFium: $with_pdfium, PDF import with poppler-glib: $with_poppler, SVG import with librsvg-2.0: $with_rsvg, zlib: $with_zlib, file import with cfitsio: $with_cfitsio, file import/export with libwebp: $with_libwebp, text rendering with pangoft2: $with_pangoft2, file import/export with libspng: $with_libspng, file import/export with libpng: $with_png, support 8bpp PNG quantisation: $with_imagequant, file import/export with libtiff: $with_tiff, file import/export with giflib: $with_giflib, file import/export with libjpeg: $with_jpeg, image pyramid export: $with_gsf, use libexif to load/save JPEG metadata: $with_libexif" +VIPS_CONFIG="enable debug: $enable_debug, enable deprecated library components: $enable_deprecated, enable docs with gtkdoc: $enable_gtk_doc, gobject introspection: $found_introspection, enable radiance support: $with_radiance, enable analyze support: $with_analyze, enable PPM support: $with_ppm, generate C++ docs: $with_doxygen, use fftw3 for FFT: $with_fftw, Magick package: $with_magickpackage, Magick API version: $magick_version, load with libMagick: $enable_magickload, save with libMagick: $enable_magicksave, accelerate loops with orc: $with_orc, ICC profile support with lcms: $with_lcms, file import with niftiio: $with_nifti, file import with libheif: $with_heif, file import with OpenEXR: $with_OpenEXR, file import with OpenSlide: $with_openslide, file import with matio: $with_matio, PDF import with PDFium: $with_pdfium, PDF import with poppler-glib: $with_poppler, SVG import with librsvg-2.0: $with_rsvg, zlib: $with_zlib, file import with cfitsio: $with_cfitsio, file import/export with libwebp: $with_libwebp, text rendering with pangoft2: $with_pangoft2, file import/export with libspng: $with_libspng, file import/export with libpng: $with_png, support 8bpp PNG quantisation: $with_imagequant, file import/export with libtiff: $with_tiff, file import/export with giflib: $with_giflib, file import/export with libjpeg: $with_jpeg, image pyramid export: $with_gsf, use libexif to load/save JPEG metadata: $with_libexif" AC_SUBST(VIPS_LIBDIR) @@ -1301,9 +1262,6 @@ AC_OUTPUT # also add any new items to VIPS_CONFIG above AC_MSG_RESULT([dnl * build options -native win32: $vips_os_win32 -native OS X: $vips_os_darwin -open files in binary mode: $vips_binary_open enable debug: $enable_debug enable deprecated library components: $enable_deprecated enable docs with gtkdoc: $enable_gtk_doc @@ -1351,11 +1309,3 @@ image pyramid export: $with_gsf (requires libgsf-1 1.14.26 or later) use libexif to load/save JPEG metadata: $with_libexif ]) - -if test x"$vips_os_win32" = x"yes"; then - if test x"$have_g_win32_get_command_line" != x"yes"; then - AC_MSG_RESULT([dnl -Your glib is too old, vips will not support unicode command-line arguments. - ]) - fi -fi diff --git a/libvips/foreign/tiff.c b/libvips/foreign/tiff.c index 82fc78d9..744ac6d3 100644 --- a/libvips/foreign/tiff.c +++ b/libvips/foreign/tiff.c @@ -104,7 +104,7 @@ vips__tiff_openout( const char *path, gboolean bigtiff ) /* Need the utf-16 version on Windows. */ -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { GError *error = NULL; wchar_t *path16; @@ -119,9 +119,9 @@ vips__tiff_openout( const char *path, gboolean bigtiff ) g_free( path16 ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ tif = TIFFOpen( path, mode ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ if( !tif ) { vips_error( "tiff", diff --git a/libvips/include/vips/object.h b/libvips/include/vips/object.h index 5cda33d3..14369e86 100644 --- a/libvips/include/vips/object.h +++ b/libvips/include/vips/object.h @@ -365,7 +365,6 @@ int vips_object_get_argument_priority( VipsObject *object, const char *name ); VIPS_ARGUMENT_COLLECT_END */ -#if GLIB_CHECK_VERSION( 2, 24, 0 ) #define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ GValue value = { 0, }; \ @@ -383,25 +382,6 @@ int vips_object_get_argument_priority( VipsObject *object, const char *name ); VIPS_DEBUG_MSG( "VIPS_OBJECT_COLLECT_SET: err\n" ); \ g_free( error ); \ } -#else -#define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ - if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ - GValue value = { 0, }; \ - gchar *error = NULL; \ - \ - /* Input args are given inline, eg. ("factor", 12.0) \ - * and must be collected. \ - */ \ - g_value_init( &value, G_PARAM_SPEC_VALUE_TYPE( PSPEC ) ); \ - G_VALUE_COLLECT( &value, AP, 0, &error ); \ - \ - /* Don't bother with the error message. \ - */ \ - if( error ) { \ - VIPS_DEBUG_MSG( "VIPS_OBJECT_COLLECT_SET: err\n" ); \ - g_free( error ); \ - } -#endif #define VIPS_ARGUMENT_COLLECT_GET( PSPEC, ARG_CLASS, AP ) \ g_value_unset( &value ); \ diff --git a/libvips/iofuncs/error.c b/libvips/iofuncs/error.c index cbb44162..7125396a 100644 --- a/libvips/iofuncs/error.c +++ b/libvips/iofuncs/error.c @@ -65,10 +65,10 @@ #include #include -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 #include #include -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ /** * SECTION: errors @@ -294,7 +294,7 @@ vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ) { vips_verror( domain, fmt, ap ); -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { char *buf; @@ -310,7 +310,7 @@ vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ) LocalFree( buf ); } } -#else /*OS_WIN32*/ +#else /*!G_OS_WIN32*/ { char *buf; @@ -318,7 +318,7 @@ vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ) vips_error( _( "unix error" ), "%s", buf ); g_free( buf ); } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ } /** diff --git a/libvips/iofuncs/image.c b/libvips/iofuncs/image.c index ce2303e8..db2c6595 100644 --- a/libvips/iofuncs/image.c +++ b/libvips/iofuncs/image.c @@ -1676,14 +1676,7 @@ vips_image_temp_name( char *name, int size ) { static int global_serial = 0; - /* Old glibs named this differently. - */ - int serial = -#if GLIB_CHECK_VERSION( 2, 30, 0 ) - g_atomic_int_add( &global_serial, 1 ); -#else - g_atomic_int_exchange_and_add( &global_serial, 1 ); -#endif + int serial = g_atomic_int_add( &global_serial, 1 ); vips_snprintf( name, size, "temp-%d", serial ); } diff --git a/libvips/iofuncs/init.c b/libvips/iofuncs/init.c index 8cc41a06..07836b15 100644 --- a/libvips/iofuncs/init.c +++ b/libvips/iofuncs/init.c @@ -290,24 +290,6 @@ empty_log_handler( const gchar *log_domain, GLogLevelFlags log_level, { } -#if !GLIB_CHECK_VERSION( 2, 31, 0 ) -static void -default_log_handler( const gchar *log_domain, GLogLevelFlags log_level, - const gchar *message, gpointer user_data ) -{ - if( log_level & (G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_INFO) ) { - const char *domains = g_getenv( "G_MESSAGES_DEBUG" ); - - if( !domains || - (!g_str_equal( domains, "all" ) && - !g_strrstr( domains, log_domain )) ) - return; - } - - g_log_default_handler( log_domain, log_level, message, user_data ); -} -#endif /*!GLIB_CHECK_VERSION( 2, 31, 0 )*/ - /* Attempt to set a minimum stacksize. This can be important on systems with a * very low default, like musl. */ @@ -407,7 +389,7 @@ vips_init( const char *argv0 ) return( 0 ); started = TRUE; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 /* Windows has a limit of 512 files open at once for the fopen() family * of functions, and 2048 for the _open() family. This raises the limit * of fopen() to the same level as _open(). @@ -415,7 +397,7 @@ vips_init( const char *argv0 ) * It will not go any higher than this, unfortunately. */ (void) _setmaxstdio( 2048 ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ vips__threadpool_init(); vips__buffer_init(); @@ -595,18 +577,6 @@ vips_init( const char *argv0 ) g_log_set_handler( G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, empty_log_handler, NULL ); -#if !GLIB_CHECK_VERSION( 2, 31, 0 ) - /* Older glibs can sometimes show G_LOG_LEVEL_{INFO,DEBUG} messages. - * Block them ourselves. We test the env var inside the handler since - * vips_verbose() can be toggled at runtime. - * - * Again, we should not call g_log_set_handler(), but this is the only - * convenient way to fix this behaviour. - */ - g_log_set_handler( G_LOG_DOMAIN, G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, - default_log_handler, NULL ); -#endif /*!GLIB_CHECK_VERSION( 2, 31, 0 )*/ - /* Set a minimum stacksize, if we can. */ if( (vips_min_stack_size = g_getenv( "VIPS_MIN_STACK_SIZE" )) ) @@ -1057,7 +1027,7 @@ find_file( const char *name ) printf( "vips_guess_prefix: g_getenv( \"PATH\" ) == \"%s\"\n", path ); #endif /*DEBUG*/ -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { char *dir; @@ -1068,9 +1038,9 @@ find_file( const char *name ) "%s" G_SEARCHPATH_SEPARATOR_S "%s", dir, path ); g_free( dir ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ vips_strncpy( full_path, path, VIPS_PATH_MAX ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ if( (prefix = scan_path( full_path, name )) ) return( prefix ); @@ -1177,9 +1147,9 @@ vips_guess_prefix( const char *argv0, const char *env_name ) return( prefix ); } -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 prefix = vips__windows_prefix(); -#else +#else /*!G_OS_WIN32*/ { char *basename; @@ -1187,7 +1157,7 @@ vips_guess_prefix( const char *argv0, const char *env_name ) prefix = guess_prefix( argv0, basename ); g_free( basename ); } -#endif +#endif /*G_OS_WIN32*/ g_setenv( env_name, prefix, TRUE ); diff --git a/libvips/iofuncs/mapfile.c b/libvips/iofuncs/mapfile.c index 8dda21e6..3c16c0b7 100644 --- a/libvips/iofuncs/mapfile.c +++ b/libvips/iofuncs/mapfile.c @@ -77,18 +77,16 @@ #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ -#ifdef OS_WIN32 -#ifndef S_ISREG -#define S_ISREG(m) (!!(m & _S_IFREG)) -#endif -#endif /*OS_WIN32*/ #include -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 +#ifndef S_ISREG +#define S_ISREG(m) (!!(m & _S_IFREG)) +#endif #include #include -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ /* Does this fd support mmap. Pipes won't, for example. */ @@ -99,7 +97,7 @@ vips__mmap_supported( int fd ) size_t length = 4096; off_t offset = 0; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); @@ -128,7 +126,7 @@ vips__mmap_supported( int fd ) CloseHandle( hMMFile ); UnmapViewOfFile( baseaddr ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ { int prot = PROT_READ; int flags = MAP_SHARED; @@ -138,7 +136,7 @@ vips__mmap_supported( int fd ) return( FALSE ); munmap( baseaddr, length ); } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( TRUE ); } @@ -153,7 +151,7 @@ vips__mmap( int fd, int writeable, size_t length, gint64 offset ) length, offset ); #endif /*DEBUG*/ -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); @@ -203,7 +201,7 @@ vips__mmap( int fd, int writeable, size_t length, gint64 offset ) */ CloseHandle( hMMFile ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ { int prot; int flags; @@ -237,7 +235,7 @@ vips__mmap( int fd, int writeable, size_t length, gint64 offset ) return( NULL ); } } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( baseaddr ); } @@ -245,19 +243,19 @@ vips__mmap( int fd, int writeable, size_t length, gint64 offset ) int vips__munmap( const void *start, size_t length ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 if( !UnmapViewOfFile( (void *) start ) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to UnmapViewOfFile" ) ); return( -1 ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ if( munmap( (void *) start, length ) < 0 ) { vips_error_system( errno, "vips_mapfile", "%s", _( "unable to munmap file" ) ); return( -1 ); } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( 0 ); } @@ -345,7 +343,7 @@ vips_remapfilerw( VipsImage *image ) printf( "vips_remapfilerw:\n" ); #endif /*DEBUG*/ -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( image->fd ); HANDLE hMMFile; @@ -377,7 +375,7 @@ vips_remapfilerw( VipsImage *image ) */ CloseHandle( hMMFile ); } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ { assert( image->dtype == VIPS_IMAGE_MMAPIN ); @@ -390,7 +388,7 @@ vips_remapfilerw( VipsImage *image ) return( -1 ); } } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ image->dtype = VIPS_IMAGE_MMAPINRW; diff --git a/libvips/iofuncs/source.c b/libvips/iofuncs/source.c index cc8f551b..d5020ca5 100644 --- a/libvips/iofuncs/source.c +++ b/libvips/iofuncs/source.c @@ -65,23 +65,24 @@ #include #include #include -#ifdef OS_WIN32 -#include -#endif /*OS_WIN32*/ #include #include #include +#ifdef G_OS_WIN32 +#include +#endif /*G_OS_WIN32*/ + /* Try to make an O_BINARY ... sometimes need the leading '_'. */ -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ /* If we have O_BINARY, add it to a mode flags set. */ @@ -307,12 +308,12 @@ vips_source_build( VipsObject *object ) connection->descriptor = dup( connection->descriptor ); connection->close_descriptor = connection->descriptor; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 /* Windows will create eg. stdin and stdout in text mode. * We always read in binary mode. */ _setmode( connection->descriptor, _O_BINARY ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ } if( vips_object_argument_isset( object, "blob" ) ) { diff --git a/libvips/iofuncs/target.c b/libvips/iofuncs/target.c index 01b3339c..667edff1 100644 --- a/libvips/iofuncs/target.c +++ b/libvips/iofuncs/target.c @@ -55,23 +55,24 @@ #include #include #include -#ifdef OS_WIN32 -#include -#endif /*OS_WIN32*/ #include #include #include +#ifdef G_OS_WIN32 +#include +#endif /*G_OS_WIN32*/ + /* Try to make an O_BINARY ... sometimes need the leading '_'. */ -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ /* If we have O_BINARY, add it to a mode flags set. */ @@ -143,12 +144,12 @@ vips_target_build( VipsObject *object ) connection->descriptor = dup( connection->descriptor ); connection->close_descriptor = connection->descriptor; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 /* Windows will create eg. stdin and stdout in text mode. * We always write in binary mode. */ _setmode( connection->descriptor, _O_BINARY ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ } else if( target->memory ) target->memory_buffer = g_byte_array_new(); diff --git a/libvips/iofuncs/threadpool.c b/libvips/iofuncs/threadpool.c index 14774587..2b4fc779 100644 --- a/libvips/iofuncs/threadpool.c +++ b/libvips/iofuncs/threadpool.c @@ -75,9 +75,9 @@ #include #include -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 #include -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ /** * SECTION: threadpool @@ -338,7 +338,7 @@ get_num_processors( void ) #endif /*G_OS_UNIX*/ -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { /* Count the CPUs currently available to this process. */ @@ -365,7 +365,7 @@ get_num_processors( void ) nproc = af_count; } } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( nproc ); #endif /*!GLIB_CHECK_VERSION( 2, 48, 1 )*/ diff --git a/libvips/iofuncs/util.c b/libvips/iofuncs/util.c index c3658893..ae697097 100644 --- a/libvips/iofuncs/util.c +++ b/libvips/iofuncs/util.c @@ -53,27 +53,27 @@ #endif /*HAVE_IO_H*/ #include -#ifdef OS_WIN32 -#include -#endif /*OS_WIN32*/ - #include #include #include +#ifdef G_OS_WIN32 +#include +#endif /*G_OS_WIN32*/ + /* Temp buffer for snprintf() layer on old systems. */ #define MAX_BUF (100000) /* Try to make an O_BINARY ... sometimes need the leading '_'. */ -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ /* If we have O_BINARY, add it to a mode flags set. */ @@ -562,15 +562,15 @@ vips_filename_suffix_match( const char *path, const char *suffixes[] ) gint64 vips_file_length( int fd ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 struct _stati64 st; if( _fstati64( fd, &st ) == -1 ) { -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ struct stat st; if( fstat( fd, &st ) == -1 ) { -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ vips_error_system( errno, "vips_file_length", "%s", _( "unable to get file stats" ) ); return( -1 ); @@ -600,7 +600,7 @@ vips__write( int fd, const void *buf, size_t count ) return( 0 ); } -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 /* Set the create date on a file. On Windows, the create date may be copied * over from an existing file of the same name, unless you reset it. * @@ -619,7 +619,7 @@ vips__set_create_time( int fd ) SystemTimeToFileTime( &st, &ft ); SetFileTime( handle, &ft, &ft, &ft ); } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ /* open() with a utf8 filename, setting errno. */ @@ -638,10 +638,10 @@ vips__open( const char *filename, int flags, int mode ) fd = g_open( filename, flags, mode ); -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 if( mode & O_CREAT ) vips__set_create_time( fd ); -#endif +#endif /*G_OS_WIN32*/ return( fd ); } @@ -661,10 +661,10 @@ vips__fopen( const char *filename, const char *mode ) fp = g_fopen( filename, mode ); -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 if( mode[0] == 'w' ) vips__set_create_time( _fileno( fp ) ); -#endif +#endif /*G_OS_WIN32*/ return( fp ); } @@ -698,14 +698,14 @@ vips__file_open_read( const char *filename, const char *fallback_dir, char *mode; FILE *fp; -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 if( text_mode ) mode = "r"; else mode = "rb"; -#else /*BINARY_OPEN*/ +#else /*!G_PLATFORM_WIN32*/ mode = "r"; -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ if( (fp = vips__fopen( filename, mode )) ) return( fp ); @@ -734,14 +734,14 @@ vips__file_open_write( const char *filename, gboolean text_mode ) char *mode; FILE *fp; -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 if( text_mode ) mode = "w"; else mode = "wb"; -#else /*BINARY_OPEN*/ +#else /*!G_PLATFORM_WIN32*/ mode = "w"; -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ if( !(fp = vips__fopen( filename, mode )) ) { vips_error_system( errno, "vips__file_open_write", @@ -1089,15 +1089,15 @@ vips__seek_no_error( int fd, gint64 pos, int whence ) { gint64 new_pos; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 new_pos = _lseeki64( fd, pos, whence ); -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ /* On error, eg. opening a directory and seeking to the end, lseek() * on linux seems to return 9223372036854775807 ((1 << 63) - 1) * rather than (off_t) -1 for reasons I don't understand. */ new_pos = lseek( fd, pos, whence ); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( new_pos ); } @@ -1128,7 +1128,7 @@ vips__seek( int fd, gint64 pos, int whence ) int vips__ftruncate( int fd, gint64 pos ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); @@ -1140,13 +1140,13 @@ vips__ftruncate( int fd, gint64 pos ) return( -1 ); } } -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ if( ftruncate( fd, pos ) ) { vips_error_system( errno, "vips__ftruncate", "%s", _( "unable to truncate" ) ); return( -1 ); } -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ return( 0 ); } @@ -1620,7 +1620,7 @@ vips__temp_dir( void ) const char *tmpd; if( !(tmpd = g_getenv( "TMPDIR" )) ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 static gboolean done = FALSE; static char buf[256]; @@ -1629,9 +1629,9 @@ vips__temp_dir( void ) strcpy( buf, "C:\\temp" ); } tmpd = buf; -#else /*!OS_WIN32*/ +#else /*!G_OS_WIN32*/ tmpd = "/tmp"; -#endif /*!OS_WIN32*/ +#endif /*!G_OS_WIN32*/ } return( tmpd ); @@ -1651,14 +1651,7 @@ vips__temp_name( const char *format ) char file2[FILENAME_MAX]; char *name; - /* Old glibs named this differently. - */ - int serial = -#if GLIB_CHECK_VERSION( 2, 30, 0 ) - g_atomic_int_add( &global_serial, 1 ); -#else - g_atomic_int_exchange_and_add( &global_serial, 1 ); -#endif + int serial = g_atomic_int_add( &global_serial, 1 ); vips_snprintf( file, FILENAME_MAX, "vips-%d-%u", serial, g_random_int() ); @@ -1961,7 +1954,7 @@ vips__random_add( guint32 seed, int value ) static void * vips_icc_dir_once( void *null ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 /* From glib get_windows_directory_root() */ wchar_t wwindowsdir[MAX_PATH]; @@ -1983,7 +1976,7 @@ vips_icc_dir_once( void *null ) return( (void *) full_path ); } } -#endif +#endif /*G_OS_WIN32*/ return( (void *) VIPS_ICC_DIR ); } @@ -1997,7 +1990,7 @@ vips__icc_dir( void ) vips_icc_dir_once, NULL ) ); } -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 static HMODULE vips__dll = NULL; #ifdef DLL_EXPORT BOOL WINAPI @@ -2009,19 +2002,19 @@ DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) return( TRUE ); } #endif -#endif +#endif /*G_OS_WIN32*/ static void * vips__windows_prefix_once( void *null ) { char *prefix; -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 prefix = g_win32_get_package_installation_directory_of_module( vips__dll ); -#else +#else /*!G_OS_WIN32*/ prefix = (char *) g_getenv( "VIPSHOME" ); -#endif +#endif /*G_OS_WIN32*/ return( (void *) prefix ); } diff --git a/libvips/iofuncs/vips.c b/libvips/iofuncs/vips.c index 81530277..74362084 100644 --- a/libvips/iofuncs/vips.c +++ b/libvips/iofuncs/vips.c @@ -115,13 +115,13 @@ /* Try to make an O_BINARY ... sometimes need the leading '_'. */ -#ifdef BINARY_OPEN +#ifdef G_PLATFORM_WIN32 #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ -#endif /*BINARY_OPEN*/ +#endif /*G_PLATFORM_WIN32*/ /* If we have O_BINARY, add it to a mode flags set. */ diff --git a/libvips/iofuncs/window.c b/libvips/iofuncs/window.c index 875c895e..72b7a7ad 100644 --- a/libvips/iofuncs/window.c +++ b/libvips/iofuncs/window.c @@ -58,9 +58,9 @@ #include #include -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 #include -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ /* Sanity checking ... write to this during read tests to make sure we don't * get optimized out. @@ -189,15 +189,15 @@ vips_getpagesize( void ) static int pagesize = 0; if( !pagesize ) { -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 SYSTEM_INFO si; GetSystemInfo( &si ); pagesize = si.dwAllocationGranularity; -#else /*OS_WIN32*/ +#else /*!G_OS_WIN32*/ pagesize = getpagesize(); -#endif /*OS_WIN32*/ +#endif /*G_OS_WIN32*/ #ifdef DEBUG_TOTAL printf( "vips_getpagesize: 0x%x\n", pagesize ); diff --git a/libvips/mosaicing/lrmerge.c b/libvips/mosaicing/lrmerge.c index ff481c4c..73863123 100644 --- a/libvips/mosaicing/lrmerge.c +++ b/libvips/mosaicing/lrmerge.c @@ -1123,16 +1123,9 @@ vips__add_mosaic_name( VipsImage *image ) { static int global_serial = 0; - /* Old glibs named this differently. - * - * TODO(kleisauke): Could we call vips_image_temp_name instead? + /* TODO(kleisauke): Could we call vips_image_temp_name instead? */ - int serial = -#if GLIB_CHECK_VERSION( 2, 30, 0 ) - g_atomic_int_add( &global_serial, 1 ); -#else - g_atomic_int_exchange_and_add( &global_serial, 1 ); -#endif + int serial = g_atomic_int_add( &global_serial, 1 ); char name[256]; diff --git a/tools/vips.c b/tools/vips.c index 38f0e787..35552352 100644 --- a/tools/vips.c +++ b/tools/vips.c @@ -101,9 +101,9 @@ #include #endif -#ifdef OS_WIN32 +#ifdef G_OS_WIN32 #define strcasecmp(a,b) _stricmp(a,b) -#endif +#endif /*G_OS_WIN32*/ static char *main_option_plugin = NULL; static gboolean main_option_version; @@ -458,11 +458,11 @@ parse_options( GOptionContext *context, int *argc, char **argv ) "OPER", _( "execute vips operation OPER" ) ); g_option_context_set_summary( context, vips_buf_all( &buf ) ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 if( !g_option_context_parse_strv( context, &argv, &error ) ) -#else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ +#else /*!G_OS_WIN32*/ if( !g_option_context_parse( context, argc, &argv, &error ) ) -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); @@ -531,9 +531,9 @@ main( int argc, char **argv ) /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 argv = g_win32_get_command_line(); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ #ifdef DEBUG_FATAL /* Set masks for debugging ... stop on any problem. @@ -582,11 +582,11 @@ main( int argc, char **argv ) */ g_option_context_set_help_enabled( context, FALSE ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 if( !g_option_context_parse_strv( context, &argv, &error ) ) -#else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ +#else /*!G_OS_WIN32*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); @@ -753,9 +753,9 @@ main( int argc, char **argv ) g_option_context_free( context ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 g_strfreev( argv ); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ vips_shutdown(); diff --git a/tools/vipsedit.c b/tools/vipsedit.c index 93c07a0c..218e8dd7 100644 --- a/tools/vipsedit.c +++ b/tools/vipsedit.c @@ -141,9 +141,9 @@ main( int argc, char **argv ) /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 argv = g_win32_get_command_line(); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ context = g_option_context_new( _( "vipsedit - edit vips file header" ) ); @@ -153,11 +153,11 @@ main( int argc, char **argv ) g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 if( !g_option_context_parse_strv( context, &argv, &error ) ) -#else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ +#else /*!G_OS_WIN32*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ { vips_g_error( &error ); @@ -272,9 +272,9 @@ main( int argc, char **argv ) g_option_context_free( context ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 g_strfreev( argv ); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ vips_shutdown(); diff --git a/tools/vipsheader.c b/tools/vipsheader.c index a984079a..e634ccef 100644 --- a/tools/vipsheader.c +++ b/tools/vipsheader.c @@ -180,9 +180,9 @@ main( int argc, char *argv[] ) /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 argv = g_win32_get_command_line(); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ context = g_option_context_new( _( "- print image header" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); @@ -191,11 +191,11 @@ main( int argc, char *argv[] ) g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 if( !g_option_context_parse_strv( context, &argv, &error ) ) -#else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ +#else /*!G_OS_WIN32*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); @@ -247,9 +247,9 @@ main( int argc, char *argv[] ) /* We don't free this on error exit, sadly. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 g_strfreev( argv ); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ vips_shutdown(); diff --git a/tools/vipsthumbnail.c b/tools/vipsthumbnail.c index e7cc223d..ef23fc5a 100644 --- a/tools/vipsthumbnail.c +++ b/tools/vipsthumbnail.c @@ -500,9 +500,9 @@ main( int argc, char **argv ) /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 argv = g_win32_get_command_line(); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ context = g_option_context_new( _( "- thumbnail generator" ) ); @@ -512,11 +512,11 @@ main( int argc, char **argv ) g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 if( !g_option_context_parse_strv( context, &argv, &error ) ) -#else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ +#else /*!G_OS_WIN32*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); @@ -563,9 +563,9 @@ main( int argc, char **argv ) /* We don't free this on error exit, sadly. */ -#ifdef HAVE_G_WIN32_GET_COMMAND_LINE +#ifdef G_OS_WIN32 g_strfreev( argv ); -#endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ +#endif /*G_OS_WIN32*/ vips_shutdown();