[package] vips: update to 7.26.3

git-svn-id: svn://svn.openwrt.org/openwrt/packages@28533 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
flyn 2011-10-23 07:18:53 +00:00
parent c0a6ff6b47
commit 4fe2418d0e
4 changed files with 259 additions and 347 deletions

View File

@ -8,12 +8,12 @@
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
@ -30,7 +30,7 @@ define Package/vips
$(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

View File

@ -1,6 +1,6 @@
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
@ -9,7 +9,61 @@ diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
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
@ -17,7 +71,7 @@ diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
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
@ -25,7 +79,7 @@ diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
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
@ -35,7 +89,7 @@ diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
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
@ -43,9 +97,9 @@ diff -u --recursive vips-7.26.1-vanilla/configure.in vips-7.26.1/configure.in
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
@ -69,17 +123,22 @@ diff -u --recursive vips-7.26.1-vanilla/libvips/Makefile.am vips-7.26.1/libvips/
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 \
@ -87,7 +146,7 @@ diff -u --recursive vips-7.26.1-vanilla/libvips/Makefile.am vips-7.26.1/libvips/
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@
@ -101,9 +160,9 @@ diff -u --recursive vips-7.26.1-vanilla/libvips/Makefile.am vips-7.26.1/libvips/
-
-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++
@ -143,3 +202,180 @@ diff -u --recursive vips-7.26.1-vanilla/libvips/resample/Makefile.am vips-7.26.1
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}

View File

@ -1,293 +0,0 @@
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 );

View File

@ -1,31 +0,0 @@
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