include $(TOPDIR)/rules.mk
PKG_NAME:=vips
-PKG_VERSION:=7.26.1
+PKG_VERSION:=7.26.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.vips.ecs.soton.ac.uk/supported/7.26/
-PKG_MD5SUM:=518c5a2d4813afc097a17f3fca9f4532
+PKG_MD5SUM:=1fbf164ef0da8e835a036c56ff659e8e
PKG_FIXUP = libtool
include $(INCLUDE_DIR)/package.mk
$(call Package/vips/Default)
SECTION:=multimedia
CATEGORY:=Multimedia
- DEPENDS:=+libjpeg +glib2 +libxml2 +libfreetype $(INTL_DEPENDS)
+ DEPENDS:=+libjpeg +glib2 +libxml2 $(INTL_DEPENDS)
endef
define Package/vips/description
-diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
---- vips-7.26.1-vanilla/configure.in 2011-08-10 21:31:05.386968954 -0500
-+++ vips-7.26.1/configure.in 2011-08-10 21:31:50.747488580 -0500
+diff -u --recursive vips-7.26.3-vanilla/configure.in vips-7.26.3/configure.in
+--- vips-7.26.3-vanilla/configure.in 2011-10-07 20:43:26.474844552 -0500
++++ vips-7.26.3/configure.in 2011-10-07 21:00:33.633107256 -0500
@@ -142,7 +142,6 @@
AC_PROG_AWK
AC_PROG_CC
AC_C_CONST
AC_C_RESTRICT
AC_PROG_RANLIB
-@@ -604,7 +603,6 @@
+@@ -150,45 +149,6 @@
+ AC_PROG_LN_S
+ AM_WITH_DMALLOC
+
+-# vips_PROG_CXX_WORKS
+-# Check whether the C++ compiler works.
+-AC_DEFUN([vips_PROG_CXX_WORKS],
+- [AC_REQUIRE([AC_PROG_CXX])dnl
+- AC_CACHE_CHECK([whether the C++ compiler works],
+- [vips_cv_prog_cxx_works],
+- [AC_LANG_PUSH([C++])
+- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+- [vips_cv_prog_cxx_works=yes],
+- [vips_cv_prog_cxx_works=no])
+- AC_LANG_POP([C++])])
+-])
+-
+-# option to build without C++
+-# handy for some embedded applications
+-# also, including C++ source causes link problems on some
+-# platforms, so have an option to disable it
+-AC_ARG_ENABLE(cxx,
+- AS_HELP_STRING([--enable-cxx], [build C++ components (default: test)]))
+-
+-if test x"$enable_cxx" != x"no"; then
+- vips_PROG_CXX_WORKS
+- if test x"$vips_cv_prog_cxx_works" = x"yes"; then
+- AC_DEFINE(ENABLE_CXX,1,[build C++ components])
+- AM_CONDITIONAL(ENABLE_CXX, true)
+- # need -lstdc++ for (eg.) the C++ format loaders
+- # this gets added to vips-7.xx.pc to help mingw and friends link programs
+- # using libvips
+- VIPS_CXX_LIBS="-lstdc++"
+- enable_cxx=yes
+- fi
+-fi
+-
+-if test x"$enable_cxx" != x"yes"; then
+- AM_CONDITIONAL(ENABLE_CXX, false)
+- VIPS_CXX_LIBS=""
+- enable_cxx=no
+-fi
+-
+ # we need a fully expanded version of $libdir
+ # without this we get something like
+ # define VIPS_LIBDIR ${exec_prefix}/lib
+@@ -614,7 +574,6 @@
+ AC_SUBST(VIPS_CFLAGS)
+ AC_SUBST(VIPS_INCLUDES)
+ AC_SUBST(VIPS_LIBS)
+-AC_SUBST(VIPS_CXX_LIBS)
+ AC_SUBST(PACKAGES_USED)
+
+ # you'd think we could have
+@@ -622,7 +581,6 @@
# in AC_OUTPUT, but that seems to break for some combinations of sh/m4
AC_OUTPUT([
vips-7.26.pc
Makefile
libvips/include/vips/version.h
libvips/include/Makefile
-@@ -612,7 +610,6 @@
+@@ -630,7 +588,6 @@
libvips/Makefile
libvips/arithmetic/Makefile
libvips/boolean/Makefile
libvips/colour/Makefile
libvips/conversion/Makefile
libvips/convolution/Makefile
-@@ -629,9 +626,6 @@
+@@ -647,9 +604,6 @@
libvips/relational/Makefile
libvips/resample/Makefile
libvips/video/Makefile
tools/Makefile
tools/batch_crop
tools/batch_image_convert
-@@ -639,7 +633,6 @@
+@@ -657,7 +611,6 @@
tools/light_correct
tools/shrink_width
swig/Makefile
swig/python/setup.py
man/Makefile
doc/Makefile
-diff -u --recursive vips-7.26.1-vanilla/libvips/Makefile.am vips-7.26.1/libvips/Makefile.am
---- vips-7.26.1-vanilla/libvips/Makefile.am 2011-08-10 21:31:05.982949772 -0500
-+++ vips-7.26.1/libvips/Makefile.am 2011-08-10 21:32:37.969906173 -0500
+diff -u --recursive vips-7.26.3-vanilla/libvips/Makefile.am vips-7.26.3/libvips/Makefile.am
+--- vips-7.26.3-vanilla/libvips/Makefile.am 2011-10-07 20:43:26.909839013 -0500
++++ vips-7.26.3/libvips/Makefile.am 2011-10-07 20:45:25.074274823 -0500
@@ -1,14 +1,3 @@
-# only build in the cimg dir if C++ is enabled
-if ENABLE_CXX
format \
freq_filt \
histograms_lut \
-@@ -35,9 +23,6 @@
- lib_LTLIBRARIES = libvips.la
+@@ -37,14 +25,6 @@
+ # empty means default to C linking
+ libvips_la_SOURCES =
- libvips_la_SOURCES = dummy.c
+-# if we have C++ components enabled, make sure we link the top-level with c++
+-#
+-# sadly the if/enndif isn't enough to stop automake detecting a c++ link even
+-# when c++ is disabled ... comment out this line if you have linking problems
-if ENABLE_CXX
--libvips_la_SOURCES += dummy2.cc
+-nodist_EXTRA_libvips_la_SOURCES = cimg/dummy2.cxx
-endif
-
+-
# DLLs need dependant libs there too ... put @VIPS_LIBS@ at the end
libvips_la_LIBADD = \
-@@ -48,7 +33,6 @@
+ resample/libresample.la \
+@@ -54,7 +34,6 @@
conversion/libconversion.la \
convolution/libconvolution.la \
deprecated/libdeprecated.la \
format/libformat.la \
freq_filt/libfreq_filt.la \
histograms_lut/libhistograms_lut.la \
-@@ -62,13 +46,6 @@
+@@ -68,13 +47,6 @@
video/libvideo.la \
@VIPS_LIBS@
-
-EXTRA_DIST = \
- $(C_DIST_DIR)
-diff -u --recursive vips-7.26.1-vanilla/libvips/resample/Makefile.am vips-7.26.1/libvips/resample/Makefile.am
---- vips-7.26.1-vanilla/libvips/resample/Makefile.am 2011-08-10 21:31:06.658928005 -0500
-+++ vips-7.26.1/libvips/resample/Makefile.am 2011-08-10 21:32:59.648166658 -0500
+diff -u --recursive vips-7.26.3-vanilla/libvips/resample/Makefile.am vips-7.26.3/libvips/resample/Makefile.am
+--- vips-7.26.3-vanilla/libvips/resample/Makefile.am 2011-10-07 20:43:27.173835707 -0500
++++ vips-7.26.3/libvips/resample/Makefile.am 2011-10-07 20:45:49.360933471 -0500
@@ -2,22 +2,6 @@
# you'd think we could just define a couple of variables, but that seems to
# confuse libtool and make it link the library with g++
noinst_LTLIBRARIES = libresample.la
INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
+diff -u --recursive vips-7.26.3-vanilla/Makefile.am vips-7.26.3/Makefile.am
+--- vips-7.26.3-vanilla/Makefile.am 2011-10-07 20:43:26.476844503 -0500
++++ vips-7.26.3/Makefile.am 2011-10-07 22:31:54.034586656 -0500
+@@ -1,43 +1,17 @@
+-
+-# turn off libvipsCC if C++ is disabled
+-if ENABLE_CXX
+-C_COMPILE_DIR = libvipsCC
+-C_DIST_DIR =
+-C_PKGCONFIG = vipsCC-7.${VIPS_MINOR_VERSION}.pc
+-
+-# turn on Python if we can (requires C++)
+-if HAVE_PYTHON
+-P_COMPILE_DIR = swig
+-P_DIST_DIR =
+-endif
+-
+-else
+-C_COMPILE_DIR =
+-C_DIST_DIR = libvipsCC
+-C_PKGCONFIG =
+-P_COMPILE_DIR =
+-P_DIST_DIR = swig
+-endif
+-
+ SUBDIRS = \
+ libvips \
+ tools \
+ po \
+ man \
+- doc \
+- $(C_COMPILE_DIR) \
+- $(P_COMPILE_DIR)
++ doc
+
+ EXTRA_DIST = \
+ m4 \
+ benchmark \
+ bootstrap.sh \
+ vips-7.${VIPS_MINOR_VERSION}.pc.in \
+- vipsCC-7.${VIPS_MINOR_VERSION}.pc.in \
+ acinclude.m4 \
+- depcomp \
+- $(C_DIST_DIR) \
+- $(P_DIST_DIR)
++ depcomp
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = vips-7.${VIPS_MINOR_VERSION}.pc $(C_PKGCONFIG)
+diff -u --recursive vips-7.26.3-vanilla/Makefile.in vips-7.26.3/Makefile.in
+--- vips-7.26.3-vanilla/Makefile.in 2011-10-07 20:43:26.766840803 -0500
++++ vips-7.26.3/Makefile.in 2011-10-07 22:30:18.980820947 -0500
+@@ -37,7 +37,6 @@
+ subdir = .
+ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+- $(srcdir)/vips-7.26.pc.in $(srcdir)/vipsCC-7.26.pc.in \
+ $(top_srcdir)/configure $(top_srcdir)/swig/python/setup.py.in \
+ AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO \
+ config.guess config.sub depcomp install-sh ltmain.sh missing \
+@@ -51,7 +50,7 @@
+ configure.lineno config.status.lineno
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+ CONFIG_HEADER = config.h
+-CONFIG_CLEAN_FILES = vips-7.26.pc vipsCC-7.26.pc swig/python/setup.py
++CONFIG_CLEAN_FILES = vips-7.26.pc swig/python/setup.py
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+ DIST_SOURCES =
+@@ -92,7 +91,7 @@
+ distdir dist dist-all distcheck
+ ETAGS = etags
+ CTAGS = ctags
+-DIST_SUBDIRS = libvips tools po man doc libvipsCC swig
++DIST_SUBDIRS = libvips tools po man doc swig
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ distdir = $(PACKAGE)-$(VERSION)
+ top_distdir = $(distdir)
+@@ -146,10 +145,6 @@
+ CFLAGS = @CFLAGS@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
+-CXX = @CXX@
+-CXXCPP = @CXXCPP@
+-CXXDEPMODE = @CXXDEPMODE@
+-CXXFLAGS = @CXXFLAGS@
+ CYGPATH_W = @CYGPATH_W@
+ DATADIRNAME = @DATADIRNAME@
+ DEFS = @DEFS@
+@@ -262,7 +257,6 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ VIPS_CFLAGS = @VIPS_CFLAGS@
+-VIPS_CXX_LIBS = @VIPS_CXX_LIBS@
+ VIPS_EXEEXT = @VIPS_EXEEXT@
+ VIPS_INCLUDES = @VIPS_INCLUDES@
+ VIPS_LIBDIR = @VIPS_LIBDIR@
+@@ -285,7 +279,6 @@
+ abs_top_builddir = @abs_top_builddir@
+ abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+@@ -337,39 +330,21 @@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-@ENABLE_CXX_FALSE@C_COMPILE_DIR =
+
+-# turn off libvipsCC if C++ is disabled
+-@ENABLE_CXX_TRUE@C_COMPILE_DIR = libvipsCC
+-@ENABLE_CXX_FALSE@C_DIST_DIR = libvipsCC
+-@ENABLE_CXX_TRUE@C_DIST_DIR =
+-@ENABLE_CXX_FALSE@C_PKGCONFIG =
+-@ENABLE_CXX_TRUE@C_PKGCONFIG = vipsCC-7.${VIPS_MINOR_VERSION}.pc
+-@ENABLE_CXX_FALSE@P_COMPILE_DIR =
+-
+-# turn on Python if we can (requires C++)
+-@ENABLE_CXX_TRUE@@HAVE_PYTHON_TRUE@P_COMPILE_DIR = swig
+-@ENABLE_CXX_FALSE@P_DIST_DIR = swig
+-@ENABLE_CXX_TRUE@@HAVE_PYTHON_TRUE@P_DIST_DIR =
+ SUBDIRS = \
+ libvips \
+ tools \
+ po \
+ man \
+ doc \
+- $(C_COMPILE_DIR) \
+- $(P_COMPILE_DIR)
+
+ EXTRA_DIST = \
+ m4 \
+ benchmark \
+ bootstrap.sh \
+ vips-7.${VIPS_MINOR_VERSION}.pc.in \
+- vipsCC-7.${VIPS_MINOR_VERSION}.pc.in \
+ acinclude.m4 \
+ depcomp \
+- $(C_DIST_DIR) \
+- $(P_DIST_DIR)
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = vips-7.${VIPS_MINOR_VERSION}.pc $(C_PKGCONFIG)
+@@ -431,8 +406,6 @@
+ -rm -f config.h stamp-h1
+ vips-7.26.pc: $(top_builddir)/config.status $(srcdir)/vips-7.26.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+-vipsCC-7.26.pc: $(top_builddir)/config.status $(srcdir)/vipsCC-7.26.pc.in
+- cd $(top_builddir) && $(SHELL) ./config.status $@
+ swig/python/setup.py: $(top_builddir)/config.status $(top_srcdir)/swig/python/setup.py.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+diff -u --recursive vips-7.26.3-vanilla/tools/Makefile.am vips-7.26.3/tools/Makefile.am
+--- vips-7.26.3-vanilla/tools/Makefile.am 2011-10-07 20:43:26.495844193 -0500
++++ vips-7.26.3/tools/Makefile.am 2011-10-07 22:34:56.215304397 -0500
+@@ -16,9 +16,6 @@
+ INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@
+ AM_LDFLAGS = @LDFLAGS@
+ LDADD = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@
+-if ENABLE_CXX
+-LDADD += @VIPS_CXX_LIBS@
+-endif
+
+ bin_SCRIPTS = \
+ light_correct \
+diff -u --recursive vips-7.26.3-vanilla/vips-7.26.pc.in vips-7.26.3/vips-7.26.pc.in
+--- vips-7.26.3-vanilla/vips-7.26.pc.in 2011-10-07 20:43:26.769840766 -0500
++++ vips-7.26.3/vips-7.26.pc.in 2011-10-07 22:25:21.633810254 -0500
+@@ -7,5 +7,5 @@
+ Description: Image processing library
+ Version: @VERSION@
+ Requires: @PACKAGES_USED@
+-Libs: -L${libdir} -lvips @VIPS_LIBS@ @VIPS_CXX_LIBS@
++Libs: -L${libdir} -lvips @VIPS_LIBS@
+ Cflags: -I${includedir}
+++ /dev/null
-Index: libs/vips/patches/002-im_bufjpeg2vips.patch
-===================================================================
---- libs/vips/patches/002-im_bufjpeg2vips.patch (revision 0)
-+++ libs/vips/patches/002-im_bufjpeg2vips.patch (revision 0)
-@@ -0,0 +1,288 @@
-+diff -u --recursive vips-7.24.5-vanilla/libvips/format/im_jpeg2vips.c vips-7.24.5/libvips/format/im_jpeg2vips.c
-+--- vips-7.24.5-vanilla/libvips/format/im_jpeg2vips.c 2011-07-04 09:23:04.437730278 -0500
-++++ vips-7.24.5/libvips/format/im_jpeg2vips.c 2011-07-04 09:27:46.972274128 -0500
-+@@ -30,6 +30,8 @@
-+ * - gtkdoc
-+ * 4/12/10
-+ * - attach the jpeg thumbnail and multiscan fields (thanks Mike)
-++ * 20/4/2011
-++ * - added im_bufjpeg2vips()
-+ */
-+
-+ /*
-+@@ -683,7 +685,7 @@
-+ fail_on_warn = TRUE;
-+ }
-+
-+- /* Make jpeg compression object.
-++ /* Make jpeg dcompression object.
-+ */
-+ cinfo.err = jpeg_std_error( &eman.pub );
-+ eman.pub.error_exit = new_error_exit;
-+@@ -737,6 +739,227 @@
-+ return( result );
-+ }
-+
-++/* Just like the above, but we read from a memory buffer.
-++ */
-++typedef struct {
-++ /* Public jpeg fields.
-++ */
-++ struct jpeg_source_mgr pub;
-++
-++ /* Private stuff during read.
-++ */
-++ gboolean start_of_file; /* have we gotten any data yet? */
-++ JOCTET *buf;
-++ size_t len;
-++} InputBuffer;
-++
-++/*
-++ * Initialize source --- called by jpeg_read_header
-++ * before any data is actually read.
-++ */
-++
-++static void
-++init_source (j_decompress_ptr cinfo)
-++{
-++ InputBuffer *src = (InputBuffer *) cinfo->src;
-++
-++ /* We reset the empty-input-file flag for each image,
-++ * but we don't clear the input buffer.
-++ * This is correct behavior for reading a series of images from one source.
-++ */
-++ src->start_of_file = TRUE;
-++}
-++
-++/*
-++ * Fill the input buffer --- called whenever buffer is emptied.
-++ *
-++ * In typical applications, this should read fresh data into the buffer
-++ * (ignoring the current state of next_input_byte & bytes_in_buffer),
-++ * reset the pointer & count to the start of the buffer, and return TRUE
-++ * indicating that the buffer has been reloaded. It is not necessary to
-++ * fill the buffer entirely, only to obtain at least one more byte.
-++ *
-++ * There is no such thing as an EOF return. If the end of the file has been
-++ * reached, the routine has a choice of ERREXIT() or inserting fake data into
-++ * the buffer. In most cases, generating a warning message and inserting a
-++ * fake EOI marker is the best course of action --- this will allow the
-++ * decompressor to output however much of the image is there. However,
-++ * the resulting error message is misleading if the real problem is an empty
-++ * input file, so we handle that case specially.
-++ *
-++ * In applications that need to be able to suspend compression due to input
-++ * not being available yet, a FALSE return indicates that no more data can be
-++ * obtained right now, but more may be forthcoming later. In this situation,
-++ * the decompressor will return to its caller (with an indication of the
-++ * number of scanlines it has read, if any). The application should resume
-++ * decompression after it has loaded more data into the input buffer. Note
-++ * that there are substantial restrictions on the use of suspension --- see
-++ * the documentation.
-++ *
-++ * When suspending, the decompressor will back up to a convenient restart point
-++ * (typically the start of the current MCU). next_input_byte & bytes_in_buffer
-++ * indicate where the restart point will be if the current call returns FALSE.
-++ * Data beyond this point must be rescanned after resumption, so move it to
-++ * the front of the buffer rather than discarding it.
-++ */
-++
-++static boolean
-++fill_input_buffer (j_decompress_ptr cinfo)
-++{
-++ InputBuffer *src = (InputBuffer *) cinfo->src;
-++ size_t nbytes;
-++
-++ if (src->start_of_file) {
-++ nbytes = src->len;
-++ }
-++ else {
-++ WARNMS(cinfo, JWRN_JPEG_EOF);
-++ /* Insert a fake EOI marker */
-++ src->buf[0] = (JOCTET) 0xFF;
-++ src->buf[1] = (JOCTET) JPEG_EOI;
-++ nbytes = 2;
-++ }
-++
-++ src->pub.next_input_byte = src->buf;
-++ src->pub.bytes_in_buffer = nbytes;
-++ src->start_of_file = FALSE;
-++
-++ return TRUE;
-++}
-++
-++/*
-++ * Skip data --- used to skip over a potentially large amount of
-++ * uninteresting data (such as an APPn marker).
-++ *
-++ * Writers of suspendable-input applications must note that skip_input_data
-++ * is not granted the right to give a suspension return. If the skip extends
-++ * beyond the data currently in the buffer, the buffer can be marked empty so
-++ * that the next read will cause a fill_input_buffer call that can suspend.
-++ * Arranging for additional bytes to be discarded before reloading the input
-++ * buffer is the application writer's problem.
-++ */
-++
-++static void
-++skip_input_data (j_decompress_ptr cinfo, long num_bytes)
-++{
-++ InputBuffer *src = (InputBuffer *) cinfo->src;
-++
-++ /* Just skip fwd.
-++ */
-++ if (num_bytes > 0) {
-++ src->pub.next_input_byte += (size_t) num_bytes;
-++ src->pub.bytes_in_buffer -= (size_t) num_bytes;
-++ }
-++}
-++
-++/*
-++ * An additional method that can be provided by data source modules is the
-++ * resync_to_restart method for error recovery in the presence of RST markers.
-++ * For the moment, this source module just uses the default resync method
-++ * provided by the JPEG library. That method assumes that no backtracking
-++ * is possible.
-++ */
-++
-++/*
-++ * Terminate source --- called by jpeg_finish_decompress
-++ * after all data has been read. Often a no-op.
-++ *
-++ * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
-++ * application must deal with any cleanup that should happen even
-++ * for error exit.
-++ */
-++
-++static void
-++term_source (j_decompress_ptr cinfo)
-++{
-++ /* no work necessary here */
-++}
-++
-++/*
-++ * Prepare for input from a memory buffer. The caller needs to free the
-++ * buffer after decompress is done, we don't take ownership.
-++ */
-++
-++static void
-++buf_source (j_decompress_ptr cinfo, void *buf, size_t len)
-++{
-++ InputBuffer *src;
-++
-++ /* The source object and input buffer are made permanent so that a series
-++ * of JPEG images can be read from the same file by calling jpeg_stdio_src
-++ * only before the first one. (If we discarded the buffer at the end of
-++ * one image, we'd likely lose the start of the next one.)
-++ * This makes it unsafe to use this manager and a different source
-++ * manager serially with the same JPEG object. Caveat programmer.
-++ */
-++ if (cinfo->src == NULL) { /* first time for this JPEG object? */
-++ cinfo->src = (struct jpeg_source_mgr *)
-++ (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-++ sizeof(InputBuffer));
-++ src = (InputBuffer *) cinfo->src;
-++ src->buf = buf;
-++ src->len = len;
-++ }
-++
-++ src = (InputBuffer *) cinfo->src;
-++ src->pub.init_source = init_source;
-++ src->pub.fill_input_buffer = fill_input_buffer;
-++ src->pub.skip_input_data = skip_input_data;
-++ src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
-++ src->pub.term_source = term_source;
-++ src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
-++ src->pub.next_input_byte = NULL; /* until buffer loaded */
-++}
-++
-++/* Read a JPEG memory buffer into a VIPS image.
-++ */
-++static int
-++bufjpeg2vips( void *buf, size_t len, IMAGE *out )
-++{
-++ char *p, *q;
-++ struct jpeg_decompress_struct cinfo;
-++ ErrorManager eman;
-++ int result;
-++ gboolean invert_pels;
-++ gboolean header_only = FALSE;
-++
-++ /* Make jpeg dcompression object.
-++ */
-++ cinfo.err = jpeg_std_error( &eman.pub );
-++ eman.pub.error_exit = new_error_exit;
-++ eman.pub.output_message = new_output_message;
-++ eman.fp = NULL;
-++ if( setjmp( eman.jmp ) ) {
-++ /* Here for longjmp() from new_error_exit().
-++ */
-++ jpeg_destroy_decompress( &cinfo );
-++
-++ return( -1 );
-++ }
-++ jpeg_create_decompress( &cinfo );
-++
-++ /* Make input.
-++ */
-++ buf_source( &cinfo, buf, len );
-++
-++ /* Need to read in APP1 (EXIF metadata) and APP2 (ICC profile).
-++ */
-++ jpeg_save_markers( &cinfo, JPEG_APP0 + 1, 0xffff );
-++ jpeg_save_markers( &cinfo, JPEG_APP0 + 2, 0xffff );
-++
-++ /* Convert!
-++ */
-++ result = read_jpeg_header( &cinfo, out, &invert_pels, 1 );
-++ if( !header_only && !result )
-++ result = read_jpeg_image( &cinfo, out, invert_pels );
-++
-++ /* Close and tidy.
-++ */
-++ jpeg_destroy_decompress( &cinfo );
-++
-++ return( result );
-++}
-++
-+ /**
-+ * im_jpeg2vips:
-+ * @filename: file to load
-+@@ -803,6 +1026,27 @@
-+ return( jpeg2vips( filename, out, FALSE ) );
-+ }
-+
-++/**
-++ * im_bufjpeg2vips:
-++ * @buf: memory area to load
-++ * @len: size of memory area
-++ * @out: image to write
-++ *
-++ * Read a JPEG-formatted memory block into a VIPS image. It can read most
-++ * 8-bit JPEG images, including CMYK and YCbCr.
-++ *
-++ * This function is handy for processing JPEG image thumbnails.
-++ *
-++ * See also: #VipsFormat, im_jpeg2vips().
-++ *
-++ * Returns: 0 on success, -1 on error.
-++ */
-++int
-++im_bufjpeg2vips( void *buf, size_t len, IMAGE *out )
-++{
-++ return( bufjpeg2vips( buf, len, out ) );
-++}
-++
-+ static int
-+ isjpeg( const char *filename )
-+ {
-+diff -u --recursive vips-7.24.5-vanilla/libvips/include/vips/format.h vips-7.24.5/libvips/include/vips/format.h
-+--- vips-7.24.5-vanilla/libvips/include/vips/format.h 2011-07-04 09:23:04.643721945 -0500
-++++ vips-7.24.5/libvips/include/vips/format.h 2011-07-04 09:26:21.870724494 -0500
-+@@ -122,6 +122,7 @@
-+ /* Low-level read/write operations.
-+ */
-+ int im_jpeg2vips( const char *filename, IMAGE *out );
-++int im_bufjpeg2vips( void *buf, size_t len, IMAGE *out );
-+ int im_vips2jpeg( IMAGE *in, const char *filename );
-+ int im_vips2mimejpeg( IMAGE *in, int qfac );
-+ int im_vips2bufjpeg( IMAGE *in, IMAGE *out, int qfac, char **obuf, int *olen );
+++ /dev/null
-diff -u --recursive vips-7.26.1-vanilla/libvips/format/fits.c vips-7.26.1/libvips/format/fits.c
---- vips-7.26.1-vanilla/libvips/format/fits.c 2011-08-10 21:31:05.971950126 -0500
-+++ vips-7.26.1/libvips/format/fits.c 2011-08-10 22:12:08.478853668 -0500
-@@ -56,8 +56,6 @@
- #endif /*HAVE_CONFIG_H*/
- #include <vips/intl.h>
-
--#ifdef HAVE_CFITSIO
--
- #include <stdio.h>
- #include <assert.h>
- #include <stdlib.h>
-@@ -67,6 +65,18 @@
- #include <vips/internal.h>
- #include <vips/debug.h>
-
-+#ifndef HAVE_CFITSIO
-+
-+int
-+im_fits2vips( const char *filename, IMAGE *im )
-+{
-+ im_error( "im_fits2vips", "%s",
-+ _( "FITS support disabled" ) );
-+ return( -1 );
-+}
-+
-+#else /* HAVE_CFITSIO */
-+
- #include <fitsio.h>
-
- #ifdef WITH_DMALLOC