diff --git a/ghostscript-mkstemp64.patch b/ghostscript-mkstemp64.patch new file mode 100644 index 0000000..351a7b9 --- /dev/null +++ b/ghostscript-mkstemp64.patch @@ -0,0 +1,134 @@ +From: alexcher +Date: Sat, 8 Sep 2007 22:31:20 +0000 (+0000) +Subject: Declare Ghostscript as _LARGEFILE64_SOURCE program, i.e. request transitional +X-Git-Url: http://git.infradead.org/?p=ghostscript.git;a=commitdiff_plain;h=0513d1b9542d37e7134d36e49222b12ef469b722 + +Declare Ghostscript as _LARGEFILE64_SOURCE program, i.e. request transitional +interface to large file support. Check for mkstemp64() availability specially. + + +git-svn-id: http://svn.ghostscript.com/ghostscript/trunk/gs@8232 a1074d23-0009-0410-80fe-cf8c14f379e6 +--- + +diff --git a/src/Makefile.in b/src/Makefile.in +index c1e3c3b..5590f9a 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -120,8 +120,11 @@ GENOPT= + # + # -DHAVE_FILE64 + # use marked versions of the stdio FILE calls, fopen64() et al. ++# ++# -DHAVE_MKSTEMP64 ++# use non-standard function mkstemp64() + +-CAPOPT= @HAVE_MKSTEMP@ @HAVE_HYPOT@ @HAVE_FILE64@ @HAVE_FONTCONFIG@ ++CAPOPT= @HAVE_MKSTEMP@ @HAVE_HYPOT@ @HAVE_FILE64@ @HAVE_MKSTEMP64@ @HAVE_FONTCONFIG@ + + # Define the name of the executable file. + +diff --git a/src/configure.ac b/src/configure.ac +index 10658c5..ffde250 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -924,6 +924,9 @@ AC_SUBST(HAVE_HYPOT) + AC_CHECK_FUNCS([fopen64], [HAVE_FILE64=-DHAVE_FILE64]) + AC_SUBST(HAVE_FILE64) + ++AC_CHECK_FUNCS([mkstemp64], [HAVE_MKSTEMP64=-DHAVE_MKSTEMP64]) ++AC_SUBST(HAVE_MKSTEMP64) ++ + AC_PROG_GCC_TRADITIONAL + + dnl NB: We don't actually provide autoconf-switched fallbacks for any +diff --git a/src/gp_unifs.c b/src/gp_unifs.c +index 6b6a85c..ac555b5 100644 +--- a/src/gp_unifs.c ++++ b/src/gp_unifs.c +@@ -88,18 +88,22 @@ gp_open_scratch_file_generic(const char *prefix, char fname[gp_file_name_sizeof] + + /* save the old filename template in case mkstemp fails */ + memcpy(ofname, fname, gp_file_name_sizeof); +-#if defined(HAVE_FILE64) && !defined(_LARGEFILE64_SOURCE) +- if (b64) +- file = mkstemp64(fname); +- else ++#ifdef HAVE_MKSTEMP64 ++ file = (b64 ? mkstemp64 : mkstemp)(fname); ++#else ++ file = mkstemp(fname); + #endif +- file = mkstemp(fname); +- +- /* Fixme : what to do with b64 and 32-bit mkstemp? Unimplemented. */ + if (file < -1) { + eprintf1("**** Could not open temporary file %s\n", ofname); + return NULL; + } ++#if defined(O_LARGEFILE) && defined(__hpux) ++ if (b64) ++ fcntl(file, F_SETFD, fcntl(file, F_GETFD) | O_LARGEFILE); ++#else ++ /* Fixme : what to do with b64 and 32-bit mkstemp? Unimplemented. */ ++#endif ++ + fp = fdopen(file, mode); + if (fp == NULL) + close(file); +@@ -479,10 +483,10 @@ gp_enumerate_files_close(file_enum * pfen) + + FILE *gp_fopen_64(const char *filename, const char *mode) + { +-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64) +- return fopen(filename, mode); +-#else ++#if defined(HAVE_FILE64) + return fopen64(filename, mode); ++#else ++ return fopen(filename, mode); + #endif + } + +@@ -497,22 +501,22 @@ FILE *gp_open_scratch_file_64(const char *prefix, + + int64_t gp_ftell_64(FILE *strm) + { +-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64) +- return ftello(strm); +-#else ++#if defined(HAVE_FILE64) + return ftello64(strm); ++#else ++ return ftello(strm); + #endif + } + + int gp_fseek_64(FILE *strm, int64_t offset, int origin) + { +-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64) ++#if defined(HAVE_FILE64) ++ return fseeko64(strm, offset, origin); ++#else + off_t offset1 = (off_t)offset; + + if (offset != offset1) + return -1; + return fseeko(strm, offset1, origin); +-#else +- return fseeko64(strm, offset, origin); + #endif + } +diff --git a/src/stdpre.h b/src/stdpre.h +index acb61c1..c17cdbf 100644 +--- a/src/stdpre.h ++++ b/src/stdpre.h +@@ -17,6 +17,9 @@ + #ifndef stdpre_INCLUDED + # define stdpre_INCLUDED + ++/* Ghostscript uses transitional LFS functions. */ ++#define _LARGEFILE64_SOURCE 1 ++ + /* + * Here we deal with the vagaries of various C compilers. We assume that: + * ANSI-standard Unix compilers define __STDC__. diff --git a/ghostscript.spec b/ghostscript.spec index f05ece2..6d4454b 100644 --- a/ghostscript.spec +++ b/ghostscript.spec @@ -5,7 +5,7 @@ Summary: A PostScript(TM) interpreter and renderer. Name: ghostscript Version: %{gs_ver} -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2 URL: http://www.ghostscript.com/ @@ -20,6 +20,7 @@ Patch2: ghostscript-scripts.patch Patch3: ghostscript-noopt.patch Patch4: ghostscript-fPIC.patch Patch5: http://www.openprinting.org/download/printing/esp-gpl-ghostscript-merge/ghostscript-8.57-ijs-krgb.patch +Patch6: ghostscript-mkstemp64.patch Requires: urw-fonts >= 1.1, ghostscript-fonts BuildRequires: libjpeg-devel, libXt-devel @@ -88,6 +89,8 @@ A GTK-enabled version of Ghostscript, called 'gsx'. # IJS KRGB patch. %patch5 -p1 -b .ijs-krgb +%patch6 -p1 -b .mkstemp64 + # Convert manual pages to UTF-8 from8859_1() { iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_" @@ -265,6 +268,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libgs.so %changelog +* Thu Sep 27 2007 Tim Waugh 8.60-3 +- Back-ported mkstemp64 patch (bug #308211). + * Thu Aug 23 2007 Tim Waugh 8.60-2 - More specific license tag.