diff options
69 files changed, 1012 insertions, 1433 deletions
diff --git a/Build/source/libs/libpng/ANNOUNCE b/Build/source/libs/libpng/ANNOUNCE index c49c7b6bd61..afa31b92885 100644 --- a/Build/source/libs/libpng/ANNOUNCE +++ b/Build/source/libs/libpng/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.2.24 - December 14, 2007 +Libpng 1.2.25 - February 18, 2008 This is a public release of libpng, intended for use in production codes. @@ -8,51 +8,59 @@ Files available for download: Source files with LF line endings (for Unix/Linux) and with a "configure" script - libpng-1.2.24.tar.gz - libpng-1.2.24.tar.bz2 + libpng-1.2.25.tar.gz + libpng-1.2.25.tar.lzma + (Get the lzma codec from <http://tukaani.org/lzma>). + libpng-1.2.25.tar.bz2 Source files with LF line endings (for Unix/Linux) without the "configure" script - libpng-1.2.24-no-config.tar.gz - libpng-1.2.24-no-config.tar.bz2 + libpng-1.2.25-no-config.tar.gz + libpng-1.2.25-no-config.tar.lzma + libpng-1.2.25-no-config.tar.bz2 Source files with CRLF line endings (for Windows), without the "configure" script - lpng1224.zip - lpng1224.tar.bz2 + lpng1225.zip + lpng1225.7z + lpng1225.tar.bz2 Project files - libpng-1.2.24-project-netware.zip - libpng-1.2.24-project-wince.zip + libpng-1.2.25-project-netware.zip + libpng-1.2.25-project-wince.zip Other information: - libpng-1.2.24-README.txt - libpng-1.2.24-KNOWNBUGS.txt - libpng-1.2.24-LICENSE.txt - libpng-1.2.24-Y2K-compliance.txt - -Changes since the last public release (1.2.23): - -version 1.2.24 [December 14, 2007] - - Moved misplaced test for malloc failure in png_set_sPLT(). This bug was - introduced in libpng-1.2.20. - Ifdef out avg_row etc from png.h and pngwrite.c when PNG_NO_WRITE_FILTER - Do not use png_ptr->free_fn and png_ptr->mem_fn in png_destroy_read_struct() - when png_ptr is NULL (Marshall Clow). - Updated handling of symbol prefixes in Makefile.am and configure.ac (Mike - Frysinger). - Removed a useless test and fixed incorrect test in png_set_cHRM_fixed() - (David Hill). - Make sure not to redefine _BSD_SOURCE in pngconf.h - Revised gather.sh and makefile.std in contrib/pngminim to avoid compiling - unused files. - - + libpng-1.2.25-README.txt + libpng-1.2.25-KNOWNBUGS.txt + libpng-1.2.25-LICENSE.txt + libpng-1.2.25-Y2K-compliance.txt + libpng-1.2.25-1.2.24-diff.txt + +Changes since the last public release (1.2.24): + +version 1.2.25 [February 18, 2008] + + Fixed bug with unknown chunk handling, introduced in version 1.2.17 + Prevent gamma from being applied twice. + Fixed some continue-after-malloc-failure errors in pngset.c (David Hill) + Check for info_ptr == NULL in png_read_info() and png_process_data(). + Check for possible use of NULL user_png_ver[] in png_create_read_struct(). + Fix overflow of "msg" in png_decompres_chunk(). + Added libpng-1.2.25.tar.lzma to distribution. Get the lzma codec + from <http://tukaani.org/lzma>. + Added lpng1225.7z to distribution. Get the 7-zip decoder from + from <http://www.7-zip.org>. + Fixed some broken links in the README file. + Refactored png_read_push_finish_row() slightly, trying to satisfy Coverity. + Fixed potential NULL dereference of png_ptr in png_destroy_write_struct(); + clarified potential NULL dereference of png_ptr in png_destroy_read_struct(); + fixed potential NULL dereference of info_ptr in png_handle_bKGD(); + fixed potential NULL dereference of user_png_ver[] in + png_create_write_struct_2(). (Coverity) Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/Build/source/libs/libpng/CHANGES b/Build/source/libs/libpng/CHANGES index a6e5856aa04..7cee1a4607f 100644 --- a/Build/source/libs/libpng/CHANGES +++ b/Build/source/libs/libpng/CHANGES @@ -2032,6 +2032,50 @@ version 1.2.24 [December 14, 2007] Revised gather.sh and makefile.std in contrib/pngminim to avoid compiling unused files. +version 1.2.25beta01 [January 7, 2008] + Fixed bug with unknown chunk handling, introduced in version 1.2.17rc2 + +version 1.2.25beta02 [January 10, 2008] + Prevent gamma from being applied twice. + +version 1.2.25rc01 [January 17, 2008] + No changes. + +version 1.2.25beta03 [January 22, 2008] + Fixed some continue-after-malloc-failure errors in pngset.c (David Hill) + Check for info_ptr == NULL in png_read_info() and png_process_data(). + Check for possible use of NULL user_png_ver[] in png_create_read_struct(). + Change "if (swidth == NULL)" to "if (sheight == NULL)" in png_handle_sCAL + (bug introduced in libpng-1.2.4/1.0.13). + Return from png_destroy_read_struct() if png_ptr_ptr is NULL. + Fix overflow of "msg" in png_decompres_chunk(). + +version 1.2.25beta04 [January 26, 2008] + Work around Coverity bug report by slightly refactoring + png_read_push_finish_row() + +version 1.2.25beta05 [January 31, 2008] + Added libpng-1.2.25beta05.tar.lzma to distribution. Get the lzma codec + from <http://tukaani.org/lzma>. + Added lp1225b05.7z to distribution. Get the 7-zip decoder from + from <http://www.7-zip.org>. + Fixed some broken links in the README file. + +version 1.2.25beta06 [February 6, 2008] + Refactored png_read_push_finish_row() again, trying to satisfy Coverity. + Fixed potential NULL dereference of png_ptr in png_destroy_write_struct(); + clarified potential NULL dereference of png_ptr in png_destroy_read_struct(); + fixed potential NULL dereference of info_ptr in png_handle_bKGD(); + fixed potential NULL dereference of user_png_ver[] in + png_create_write_struct_2(). (Coverity) + +version 1.2.25rc02 [February 10, 2008] + Reset png_ptr->pass in png_read_push_finish_row() before break. + Changed "pass" from png_byte to int. + +version 1.2.25 and 1.0.31 [February 18, 2008] + No changes. + Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement diff --git a/Build/source/libs/libpng/INSTALL b/Build/source/libs/libpng/INSTALL index 78c9e02936f..3ab8f42f72f 100644 --- a/Build/source/libs/libpng/INSTALL +++ b/Build/source/libs/libpng/INSTALL @@ -1,5 +1,5 @@ -Installing libpng version 1.2.24 - December 14, 2007 +Installing libpng version 1.2.25 - February 18, 2008 On Unix/Linux and similar systems, you can simply type @@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that correspond to the version of zlib that's installed. You can rename the directories that you downloaded (they -might be called "libpng-1.2.24" or "lpng109" and "zlib-1.2.1" +might be called "libpng-1.2.25" or "lpng109" and "zlib-1.2.1" or "zlib121") so that you have directories called "zlib" and "libpng". Your directory structure should look like this: @@ -101,9 +101,9 @@ include CMakeLists.txt => "cmake" script makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.elf => Linux/ELF makefile symbol versioning, - gcc, creates libpng12.so.0.1.2.24) + gcc, creates libpng12.so.0.1.2.25) makefile.linux => Linux/ELF makefile - (gcc, creates libpng12.so.0.1.2.24) + (gcc, creates libpng12.so.0.1.2.25) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with ansi2knr (Requires ansi2knr.c from @@ -125,14 +125,14 @@ include makefile.openbsd => OpenBSD makefile makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) makefile.sggcc => Silicon Graphics (gcc, - creates libpng12.so.0.1.2.24) + creates libpng12.so.0.1.2.25) makefile.sunos => Sun makefile makefile.solaris => Solaris 2.X makefile (gcc, - creates libpng12.so.0.1.2.24) + creates libpng12.so.0.1.2.25) makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc, - creates libpng12.so.0.1.2.24) + creates libpng12.so.0.1.2.25) makefile.so9 => Solaris 9 makefile (gcc, - creates libpng12.so.0.1.2.24) + creates libpng12.so.0.1.2.25) makefile.32sunu => Sun Ultra 32-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc diff --git a/Build/source/libs/libpng/KNOWNBUG b/Build/source/libs/libpng/KNOWNBUG index d39dd1ec313..a2f8458ea8f 100644 --- a/Build/source/libs/libpng/KNOWNBUG +++ b/Build/source/libs/libpng/KNOWNBUG @@ -1,5 +1,5 @@ -Known bugs in libpng version 1.2.24 +Known bugs in libpng version 1.2.25 1. February 23, 2006: The custom makefiles don't build libpng with -lz. diff --git a/Build/source/libs/libpng/LICENSE b/Build/source/libs/libpng/LICENSE index 6b81b55a63c..7f5c259be2b 100644 --- a/Build/source/libs/libpng/LICENSE +++ b/Build/source/libs/libpng/LICENSE @@ -8,8 +8,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: If you modify libpng you may insert additional notices immediately following this sentence. -libpng versions 1.2.6, August 15, 2004, through 1.2.24, December 14, 2007, are -Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are +libpng versions 1.2.6, August 15, 2004, through 1.2.25, February 18, 2008, are +Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -106,4 +106,4 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -December 14, 2007 +February 18, 2008 diff --git a/Build/source/libs/libpng/README b/Build/source/libs/libpng/README index 6f84c69f0d8..eb072aa52e8 100644 --- a/Build/source/libs/libpng/README +++ b/Build/source/libs/libpng/README @@ -1,11 +1,12 @@ -README for libpng version 1.2.24 - December 14, 2007 (shared library 12.0) +README for libpng version 1.2.25 - February 18, 2008 (shared library 12.0) See the note about version numbers near the top of png.h See INSTALL for instructions on how to install libpng. -Libpng comes in several distribution formats. Get libpng-*.tar.gz -or libpng-*.tar.bz2 if you want UNIX-style line endings in the text -files, or lpng*.zip if you want DOS-style line endings. +Libpng comes in several distribution formats. Get libpng-*.tar.gz, +libpng-*.tar.lzma, or libpng-*.tar.bz2 if you want UNIX-style line +endings in the text files, or lpng*.7z lpng*.zip if you want DOS-style +line endings. Version 0.89 was the first official release of libpng. Don't let the fact that it's the first release fool you. The libpng library has been in @@ -77,12 +78,12 @@ compression library that is useful for more things than just PNG files. You can use zlib as a drop-in replacement for fread() and fwrite() if you are so inclined. -zlib should be available at the same place that libpng is, or at. -ftp://ftp.info-zip.org/pub/infozip/zlib +zlib should be available at the same place that libpng is, or at +ftp://ftp.simplesystems.org/pub/png/src/ You may also want a copy of the PNG specification. It is available as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find -these at http://www.libpng.org/pub/png/documents/ +these at http://www.libpng.org/pub/png/pngdocs.html This code is currently being archived at libpng.sf.net in the [DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT) @@ -190,11 +191,11 @@ Files in this distribution: descrip.mms => VMS makefile for MMS or MMK makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.elf => Linux/ELF makefile symbol versioning, - gcc, creates libpng12.so.0.1.2.24) + gcc, creates libpng12.so.0.1.2.25) makefile.linux => Linux/ELF makefile - (gcc, creates libpng12.so.0.1.2.24) + (gcc, creates libpng12.so.0.1.2.25) makefile.gcmmx => Linux/ELF makefile - (gcc, creates libpng12.so.0.1.2.24, + (gcc, creates libpng12.so.0.1.2.25, uses assembler code tuned for Intel MMX platform) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with @@ -216,12 +217,12 @@ Files in this distribution: makefile.openbsd => OpenBSD makefile makefile.sgi => Silicon Graphics IRIX (cc, creates static lib) makefile.sggcc => Silicon Graphics - (gcc, creates libpng12.so.0.1.2.24) + (gcc, creates libpng12.so.0.1.2.25) makefile.sunos => Sun makefile makefile.solaris => Solaris 2.X makefile - (gcc, creates libpng12.so.0.1.2.24) + (gcc, creates libpng12.so.0.1.2.25) makefile.so9 => Solaris 9 makefile - (gcc, creates libpng12.so.0.1.2.24) + (gcc, creates libpng12.so.0.1.2.25) makefile.32sunu => Sun Ultra 32-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc @@ -256,7 +257,7 @@ Good luck, and happy coding. -Andreas Eric Dilger (former maintainer, 1996-1997) Internet: adilger at enel.ucalgary.ca - Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/ + Web: http://members.shaw.ca/adilger/ -Guy Eric Schalnat (original author and former maintainer, 1995-1996) (formerly of Group 42, Inc) diff --git a/Build/source/libs/libpng/Y2KINFO b/Build/source/libs/libpng/Y2KINFO index 829b511e45c..075599c0d2c 100644 --- a/Build/source/libs/libpng/Y2KINFO +++ b/Build/source/libs/libpng/Y2KINFO @@ -1,13 +1,13 @@ Y2K compliance in libpng: ========================= - December 14, 2007 + February 18, 2008 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and - upward through 1.2.24 are Y2K compliant. It is my belief that earlier + upward through 1.2.25 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer diff --git a/Build/source/libs/libpng/libpng-1.2.24.txt b/Build/source/libs/libpng/libpng-1.2.25.txt index 5b8dc53b970..e922f24e467 100644 --- a/Build/source/libs/libpng/libpng-1.2.24.txt +++ b/Build/source/libs/libpng/libpng-1.2.25.txt @@ -1,9 +1,9 @@ libpng.txt - A description on how to use and modify libpng - libpng version 1.2.24 - December 14, 2007 + libpng version 1.2.25 - February 18, 2008 Updated and distributed by Glenn Randers-Pehrson <glennrp at users.sourceforge.net> - Copyright (c) 1998-2007 Glenn Randers-Pehrson + Copyright (c) 1998-2008 Glenn Randers-Pehrson For conditions of distribution and use, see copyright notice in png.h. @@ -2796,13 +2796,13 @@ application: IX. Y2K Compliance in libpng -December 14, 2007 +February 18, 2008 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.2.24 are Y2K compliant. It is my belief that earlier +upward through 1.2.25 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that diff --git a/Build/source/libs/libpng/libpng.3 b/Build/source/libs/libpng/libpng.3 index 060cdc1426f..ae397476e1d 100644 --- a/Build/source/libs/libpng/libpng.3 +++ b/Build/source/libs/libpng/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "December 14, 2007" +.TH LIBPNG 3 "February 18, 2008" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.24 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.25 .SH SYNOPSIS \fB #include <png.h>\fP @@ -410,10 +410,10 @@ Following is a copy of the libpng.txt file that accompanies libpng. .SH LIBPNG.TXT libpng.txt - A description on how to use and modify libpng - libpng version 1.2.24 - December 14, 2007 + libpng version 1.2.25 - February 18, 2008 Updated and distributed by Glenn Randers-Pehrson <glennrp at users.sourceforge.net> - Copyright (c) 1998-2007 Glenn Randers-Pehrson + Copyright (c) 1998-2008 Glenn Randers-Pehrson For conditions of distribution and use, see copyright notice in png.h. @@ -3206,13 +3206,13 @@ application: .SH IX. Y2K Compliance in libpng -December 14, 2007 +February 18, 2008 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.2.24 are Y2K compliant. It is my belief that earlier +upward through 1.2.25 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that @@ -3426,6 +3426,8 @@ the first widely used release: 1.2.24beta01-02 13 10224 12.so.0.24[.0] 1.2.24rc01 13 10224 12.so.0.24[.0] 1.2.24 13 10224 12.so.0.24[.0] + 1.2.25beta01-06 13 10225 12.so.0.25[.0] + 1.2.25rc01-02 13 10225 12.so.0.25[.0] Henceforth the source version will match the shared-library minor and patch numbers; the shared-library major version number will be @@ -3481,7 +3483,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.2.24 - December 14, 2007: +Libpng version 1.2.25 - February 18, 2008: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). @@ -3502,8 +3504,8 @@ included in the libpng distribution, the latter shall prevail.) If you modify libpng you may insert additional notices immediately following this sentence. -libpng versions 1.2.6, August 15, 2004, through 1.2.24, December 14, 2007, are -Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are +libpng versions 1.2.6, August 15, 2004, through 1.2.25, February 18, 2008, are +Copyright (c) 2004,2006-2008 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -3601,7 +3603,7 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -December 14, 2007 +February 18, 2008 .\" end of man page diff --git a/Build/source/libs/libpng/libpngpf.3 b/Build/source/libs/libpng/libpngpf.3 index 1e360de1295..a5b09b6e4eb 100644 --- a/Build/source/libs/libpng/libpngpf.3 +++ b/Build/source/libs/libpng/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "December 14, 2007" +.TH LIBPNGPF 3 "February 18, 2008" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.24 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.25 (private functions) .SH SYNOPSIS \fB#include <png.h>\fP diff --git a/Build/source/libs/libpng/png.5 b/Build/source/libs/libpng/png.5 index 9f33460582c..6b5aa3a03a5 100644 --- a/Build/source/libs/libpng/png.5 +++ b/Build/source/libs/libpng/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "December 14, 2007" +.TH PNG 5 "February 18, 2008" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/Build/source/libs/libpng/png.c b/Build/source/libs/libpng/png.c index 4d25559cf1d..cc31ae8d34c 100644 --- a/Build/source/libs/libpng/png.c +++ b/Build/source/libs/libpng/png.c @@ -13,7 +13,7 @@ #include "png.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef version_1_2_24 Your_png_h_is_not_version_1_2_24; +typedef version_1_2_25 Your_png_h_is_not_version_1_2_25; /* Version information for C files. This had better match the version * string defined in png.h. */ @@ -693,8 +693,8 @@ png_charp PNGAPI png_get_copyright(png_structp png_ptr) { png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */ - return ((png_charp) "\n libpng version 1.2.24 - December 14, 2007\n\ - Copyright (c) 1998-2007 Glenn Randers-Pehrson\n\ + return ((png_charp) "\n libpng version 1.2.25 - February 18, 2008\n\ + Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\ Copyright (c) 1996-1997 Andreas Dilger\n\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n"); } diff --git a/Build/source/libs/libpng/png.h b/Build/source/libs/libpng/png.h index 3ac393ea343..6e538552cb5 100644 --- a/Build/source/libs/libpng/png.h +++ b/Build/source/libs/libpng/png.h @@ -1,15 +1,15 @@ /* png.h - header file for PNG reference library * - * libpng version 1.2.24 - December 14, 2007 - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * libpng version 1.2.25 - February 18, 2008 + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * * Authors and maintainers: * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.2.24 - December 14, 2007: Glenn + * libpng versions 0.97, January 1998, through 1.2.25 - February 18, 2008: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -175,6 +175,8 @@ * 1.2.24beta01-02 13 10224 12.so.0.24[.0] * 1.2.24rc01 13 10224 12.so.0.24[.0] * 1.2.24 13 10224 12.so.0.24[.0] + * 1.2.25beta01-06 13 10225 12.so.0.25[.0] + * 1.2.25rc01-02 13 10225 12.so.0.25[.0] * * Henceforth the source version will match the shared-library major * and minor numbers; the shared-library major version number will be @@ -204,8 +206,8 @@ * If you modify libpng you may insert additional notices immediately following * this sentence. * - * libpng versions 1.2.6, August 15, 2004, through 1.2.24, December 14, 2007, are - * Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are + * libpng versions 1.2.6, August 15, 2004, through 1.2.25, February 18, 2008, are + * Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are * distributed according to the same disclaimer and license as libpng-1.2.5 * with the following individual added to the list of Contributing Authors: * @@ -316,13 +318,13 @@ * Y2K compliance in libpng: * ========================= * - * December 14, 2007 + * February 18, 2008 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. * * This is your unofficial assurance that libpng from version 0.71 and - * upward through 1.2.24 are Y2K compliant. It is my belief that earlier + * upward through 1.2.25 are Y2K compliant. It is my belief that earlier * versions were also Y2K compliant. * * Libpng only has three year fields. One is a 2-byte unsigned integer @@ -378,9 +380,9 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.2.24" +#define PNG_LIBPNG_VER_STRING "1.2.25" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.2.24 - December 14, 2007\n" + " libpng version 1.2.25 - February 18, 2008\n" #define PNG_LIBPNG_VER_SONUM 0 #define PNG_LIBPNG_VER_DLLNUM 13 @@ -388,7 +390,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 2 -#define PNG_LIBPNG_VER_RELEASE 24 +#define PNG_LIBPNG_VER_RELEASE 25 /* This should match the numeric part of the final component of * PNG_LIBPNG_VER_STRING, omitting any leading zero: */ @@ -416,7 +418,7 @@ * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only * version 1.0.0 was mis-numbered 100 instead of 10000). From * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */ -#define PNG_LIBPNG_VER 10224 /* 1.2.24 */ +#define PNG_LIBPNG_VER 10225 /* 1.2.25 */ #ifndef PNG_VERSION_INFO_ONLY /* include the compression library's header */ @@ -1430,7 +1432,7 @@ struct png_struct_def /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef png_structp version_1_2_24; +typedef png_structp version_1_2_25; typedef png_struct FAR * FAR * png_structpp; diff --git a/Build/source/libs/libpng/pngconf.h b/Build/source/libs/libpng/pngconf.h index c40507446fe..b8e6844c1c8 100644 --- a/Build/source/libs/libpng/pngconf.h +++ b/Build/source/libs/libpng/pngconf.h @@ -1,9 +1,9 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.2.24 - December 14, 2007 + * libpng version 1.2.25 - February 18, 2008 * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) */ diff --git a/Build/source/libs/libpng/pngpread.c b/Build/source/libs/libpng/pngpread.c index 8f4b7d1795c..a02cdfcb238 100644 --- a/Build/source/libs/libpng/pngpread.c +++ b/Build/source/libs/libpng/pngpread.c @@ -1,9 +1,9 @@ /* pngpread.c - read a png file in push mode * - * Last changed in libpng 1.2.23 [November 6, 2007] + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) */ @@ -28,7 +28,7 @@ void PNGAPI png_process_data(png_structp png_ptr, png_infop info_ptr, png_bytep buffer, png_size_t buffer_size) { - if(png_ptr == NULL) return; + if(png_ptr == NULL || info_ptr == NULL) return; png_push_restore_buffer(png_ptr, buffer, buffer_size); while (png_ptr->buffer_size) @@ -1018,32 +1018,37 @@ png_read_push_finish_row(png_structp png_ptr) png_ptr->rowbytes + 1); do { - png_ptr->pass++; - if ((png_ptr->pass == 1 && png_ptr->width < 5) || - (png_ptr->pass == 3 && png_ptr->width < 3) || - (png_ptr->pass == 5 && png_ptr->width < 2)) - png_ptr->pass++; - - if (png_ptr->pass > 7) - png_ptr->pass--; - if (png_ptr->pass >= 7) - break; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, - png_ptr->iwidth) + 1; - - if (png_ptr->transformations & PNG_INTERLACE) - break; - - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; + int pass; + pass = png_ptr->pass; + pass++; + if ((pass == 1 && png_ptr->width < 5) || + (pass == 3 && png_ptr->width < 3) || + (pass == 5 && png_ptr->width < 2)) + pass++; + + if (pass > 7) + pass--; + png_ptr->pass = (png_byte) pass; + if (pass < 7) + { + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[pass] - 1 - + png_pass_start[pass]) / + png_pass_inc[pass]; + + png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, + png_ptr->iwidth) + 1; + + if (png_ptr->transformations & PNG_INTERLACE) + break; + + png_ptr->num_rows = (png_ptr->height + + png_pass_yinc[pass] - 1 - + png_pass_ystart[pass]) / + png_pass_yinc[pass]; + } + else + break; } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); } @@ -1517,9 +1522,9 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 &png_ptr->unknown_chunk, 1); } } -#else - png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); + else #endif + png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); png_free(png_ptr, png_ptr->unknown_chunk.data); png_ptr->unknown_chunk.data = NULL; } diff --git a/Build/source/libs/libpng/pngread.c b/Build/source/libs/libpng/pngread.c index 5de5e563550..bd8bcd98abc 100644 --- a/Build/source/libs/libpng/pngread.c +++ b/Build/source/libs/libpng/pngread.c @@ -1,9 +1,9 @@ /* pngread.c - read a PNG file * - * Last changed in libpng 1.2.24 December 14, 2007 + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * @@ -89,12 +89,18 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr, png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); - i=0; - do + if(user_png_ver) { - if(user_png_ver[i] != png_libpng_ver[i]) + i=0; + do + { + if(user_png_ver[i] != png_libpng_ver[i]) + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; + } while (png_libpng_ver[i++]); + } + else png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; - } while (png_libpng_ver[i++]); + if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) { @@ -318,7 +324,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver, void PNGAPI png_read_info(png_structp png_ptr, png_infop info_ptr) { - if(png_ptr == NULL) return; + if(png_ptr == NULL || info_ptr == NULL) return; png_debug(1, "in png_read_info\n"); /* If we haven't checked all of the PNG signature bytes, do so now. */ if (png_ptr->sig_bytes < 8) @@ -1107,11 +1113,14 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, if (png_ptr_ptr != NULL) { png_ptr = *png_ptr_ptr; + } + if (png_ptr == NULL) + return; + #ifdef PNG_USER_MEM_SUPPORTED - free_fn = png_ptr->free_fn; - mem_ptr = png_ptr->mem_ptr; + free_fn = png_ptr->free_fn; + mem_ptr = png_ptr->mem_ptr; #endif - } if (info_ptr_ptr != NULL) info_ptr = *info_ptr_ptr; @@ -1150,16 +1159,13 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, *end_info_ptr_ptr = NULL; } - if (png_ptr != NULL) - { #ifdef PNG_USER_MEM_SUPPORTED - png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn, - (png_voidp)mem_ptr); + png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); #else - png_destroy_struct((png_voidp)png_ptr); + png_destroy_struct((png_voidp)png_ptr); #endif - *png_ptr_ptr = NULL; - } + *png_ptr_ptr = NULL; } /* free all memory used by the read (old method) */ diff --git a/Build/source/libs/libpng/pngrtran.c b/Build/source/libs/libpng/pngrtran.c index cda392154e5..c020b51b3d2 100644 --- a/Build/source/libs/libpng/pngrtran.c +++ b/Build/source/libs/libpng/pngrtran.c @@ -1,9 +1,9 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Last changed in libpng 1.2.22 [October 13, 2007] + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * @@ -964,6 +964,14 @@ png_init_read_transformations(png_structp png_ptr) palette[i].blue = png_ptr->gamma_table[palette[i].blue]; } } + /* Prevent the transformations being done again, and make sure + * that the now spurious alpha channel is stripped - the code + * has just reduced background composition and gamma correction + * to a simply alpha channel strip. + */ + png_ptr->transformations &= ~PNG_BACKGROUND; + png_ptr->transformations &= ~PNG_GAMMA; + png_ptr->transformations |= PNG_STRIP_ALPHA; } /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */ else @@ -1038,6 +1046,9 @@ png_init_read_transformations(png_structp png_ptr) palette[i].green = png_ptr->gamma_table[palette[i].green]; palette[i].blue = png_ptr->gamma_table[palette[i].blue]; } + + /* Done the gamma correction. */ + png_ptr->transformations &= ~PNG_GAMMA; } } #if defined(PNG_READ_BACKGROUND_SUPPORTED) @@ -1075,6 +1086,10 @@ png_init_read_transformations(png_structp png_ptr) png_ptr->trans[i], back.blue); } } + + /* Handled alpha, still need to strip the channel. */ + png_ptr->transformations &= ~PNG_BACKGROUND; + png_ptr->transformations |= PNG_STRIP_ALPHA; } #endif /* PNG_READ_BACKGROUND_SUPPORTED */ diff --git a/Build/source/libs/libpng/pngrutil.c b/Build/source/libs/libpng/pngrutil.c index 5e40aca481e..990e69802b1 100644 --- a/Build/source/libs/libpng/pngrutil.c +++ b/Build/source/libs/libpng/pngrutil.c @@ -1,9 +1,9 @@ /* pngrutil.c - utilities to read a PNG file * - * Last changed in libpng 1.2.23 [November 6, 2007] + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * @@ -230,7 +230,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type, text_size = (png_size_t)(chunklength - (text - chunkdata) - 1); text_size = png_sizeof(msg) > text_size ? text_size : png_sizeof(msg); - png_memcpy(text + prefix_size, msg, text_size + 1); + png_memcpy(text + prefix_size, msg, text_size); break; } if (!png_ptr->zstream.avail_out || ret == Z_STREAM_END) @@ -1393,7 +1393,7 @@ png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) { png_ptr->background.index = buf[0]; - if(info_ptr->num_palette) + if (info_ptr && info_ptr->num_palette) { if(buf[0] > info_ptr->num_palette) { @@ -1792,7 +1792,7 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) #else #ifdef PNG_FIXED_POINT_SUPPORTED sheight = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1); - if (swidth == NULL) + if (sheight == NULL) { png_warning(png_ptr, "Out of memory while processing sCAL chunk height"); return; @@ -2249,9 +2249,9 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) &png_ptr->unknown_chunk, 1); } } -#else - png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); + else #endif + png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); png_free(png_ptr, png_ptr->unknown_chunk.data); png_ptr->unknown_chunk.data = NULL; } diff --git a/Build/source/libs/libpng/pngset.c b/Build/source/libs/libpng/pngset.c index f8f9b7e3b3e..9301dd3274a 100644 --- a/Build/source/libs/libpng/pngset.c +++ b/Build/source/libs/libpng/pngset.c @@ -1,9 +1,9 @@ /* pngset.c - storage of image information into info struct * - * Last changed in libpng 1.2.24 [December 14, 2007] + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * @@ -488,6 +488,7 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr, { png_warning(png_ptr, "Memory allocation failed while processing sCAL."); + return; } png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length); @@ -499,9 +500,9 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr, png_free (png_ptr, info_ptr->scal_s_width); png_warning(png_ptr, "Memory allocation failed while processing sCAL."); + return; } png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length); - info_ptr->valid |= PNG_INFO_sCAL; #ifdef PNG_FREE_ME_SUPPORTED info_ptr->free_me |= PNG_FREE_SCAL; @@ -983,6 +984,7 @@ png_set_sPLT(png_structp png_ptr, { png_warning(png_ptr, "Out of memory while processing sPLT chunk"); + continue; } png_memcpy(to->name, from->name, length); to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr, @@ -993,6 +995,7 @@ png_set_sPLT(png_structp png_ptr, "Out of memory while processing sPLT chunk"); png_free(png_ptr,to->name); to->name = NULL; + continue; } png_memcpy(to->entries, from->entries, from->nentries * png_sizeof(png_sPLT_entry)); diff --git a/Build/source/libs/libpng/pngtest.c b/Build/source/libs/libpng/pngtest.c index dd2946bf46f..51073220e2d 100644 --- a/Build/source/libs/libpng/pngtest.c +++ b/Build/source/libs/libpng/pngtest.c @@ -1553,4 +1553,4 @@ main(int argc, char *argv[]) } /* Generate a compiler error if there is an old png.h in the search path. */ -typedef version_1_2_24 your_png_h_is_not_version_1_2_24; +typedef version_1_2_25 your_png_h_is_not_version_1_2_25; diff --git a/Build/source/libs/libpng/pngwrite.c b/Build/source/libs/libpng/pngwrite.c index b1f6a593aae..8b01025f540 100644 --- a/Build/source/libs/libpng/pngwrite.c +++ b/Build/source/libs/libpng/pngwrite.c @@ -1,9 +1,9 @@ /* pngwrite.c - general routines to write a PNG file * - * Last changed in libpng 1.2.24 December 14, 2007 + * Last changed in libpng 1.2.25 [February 18, 2008] * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2007 Glenn Randers-Pehrson + * Copyright (c) 1998-2008 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) */ @@ -482,12 +482,15 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr, #endif /* PNG_USER_MEM_SUPPORTED */ png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); - i=0; - do + if(user_png_ver) { - if(user_png_ver[i] != png_libpng_ver[i]) - png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; - } while (png_libpng_ver[i++]); + i=0; + do + { + if(user_png_ver[i] != png_libpng_ver[i]) + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; + } while (png_libpng_ver[i++]); + } if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) { @@ -1000,21 +1003,32 @@ png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr) #endif } +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr != NULL) + { + free_fn = png_ptr->free_fn; + mem_ptr = png_ptr->mem_ptr; + } +#endif + if (info_ptr_ptr != NULL) info_ptr = *info_ptr_ptr; if (info_ptr != NULL) { - png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); + if (png_ptr != NULL) + { + png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) - if (png_ptr->num_chunk_list) - { - png_free(png_ptr, png_ptr->chunk_list); - png_ptr->chunk_list=NULL; - png_ptr->num_chunk_list=0; - } + if (png_ptr->num_chunk_list) + { + png_free(png_ptr, png_ptr->chunk_list); + png_ptr->chunk_list=NULL; + png_ptr->num_chunk_list=0; + } #endif + } #ifdef PNG_USER_MEM_SUPPORTED png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn, diff --git a/Build/source/libs/obsdcompat/.cvsignore b/Build/source/libs/obsdcompat/.cvsignore deleted file mode 100644 index f3c7a7c5da6..00000000000 --- a/Build/source/libs/obsdcompat/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/Build/source/libs/obsdcompat/README b/Build/source/libs/obsdcompat/README index 9bc9a4ad2b8..0ed8c5191c7 100644 --- a/Build/source/libs/obsdcompat/README +++ b/Build/source/libs/obsdcompat/README @@ -1,6 +1,6 @@ OpenBSD-Compat for pdfTeX v0.2 ============================== -$Id: README 108 2007-05-20 20:03:54Z ms $ +$Id$ Herein is a (heavily butchered) version of the openbsd-compat "library" of openssh 4.6 for use with pdfTeX. All files have their respective copyrights and @@ -8,4 +8,4 @@ licenses (either BSD or public domain). Check them for license etc. Please send bug reports, offers of help, etc. to martin@pdftex.org -Martin Schröder, $Date: 2007-05-20 22:05:14 +0200 (So, 20 Mai 2007) $ +Martin Schröder, $Date$ diff --git a/Build/source/libs/xpdf/xpdf/Decrypt.h b/Build/source/libs/xpdf/xpdf/Decrypt.h index 56f34b77f26..f5674213f31 100644 --- a/Build/source/libs/xpdf/xpdf/Decrypt.h +++ b/Build/source/libs/xpdf/xpdf/Decrypt.h @@ -73,7 +73,7 @@ public: CryptAlgorithm algoA, int keyLength, int objNum, int objGen); virtual ~DecryptStream(); - virtual StreamKind getKind() { return strWeird; } + virtual StreamKind getKind() { return strCrypt; } virtual void reset(); virtual int getChar(); virtual int lookChar(); diff --git a/Build/source/libs/xpdf/xpdf/Makefile.in b/Build/source/libs/xpdf/xpdf/Makefile.in index 80d2fe8a421..a2becd12209 100644 --- a/Build/source/libs/xpdf/xpdf/Makefile.in +++ b/Build/source/libs/xpdf/xpdf/Makefile.in @@ -34,13 +34,13 @@ kpse_include ../../texk/make/library.mk #------------------------------------------------------------------------ PDFTOEPDF_OBJS = \ - Array.o BuiltinFont.o BuiltinFontTables.o CMap.o \ - Catalog.o CharCodeToUnicode.o Decrypt.o Dict.o Error.o \ - FontEncodingTables.o GfxFont.o GfxState.o\ - GlobalParams.o JArithmeticDecoder.o JBIG2Stream.o JPXStream.o Lexer.o Link.o \ - NameToCharCode.o Object.o OutputDev.o Outline.o PDFDoc.o Page.o \ - Parser.o PDFDocEncoding.o Stream.o UnicodeMap.o XRef.o Function.o \ - PSTokenizer.o SecurityHandler.o + Array.o BuiltinFont.o BuiltinFontTables.o Catalog.o \ + CharCodeToUnicode.o CMap.o Decrypt.o Dict.o Error.o \ + FontEncodingTables.o Function.o GfxFont.o GfxState.o\ + GlobalParams.o JArithmeticDecoder.o JBIG2Stream.o JPXStream.o \ + Lexer.o Link.o NameToCharCode.o Object.o Outline.o OutputDev.o \ + Page.o Parser.o PDFDocEncoding.o PDFDoc.o PSTokenizer.o \ + SecurityHandler.o Stream.o UnicodeMap.o XRef.o libxpdf.a: $(PDFTOEPDF_OBJS) rm -f $@ diff --git a/Build/source/libs/xpdf/xpdf/Stream.cc b/Build/source/libs/xpdf/xpdf/Stream.cc index f96b52488c0..812d00c39a3 100644 --- a/Build/source/libs/xpdf/xpdf/Stream.cc +++ b/Build/source/libs/xpdf/xpdf/Stream.cc @@ -1243,23 +1243,26 @@ CCITTFaxStream::CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA, columns = columnsA; if (columns < 1) { columns = 1; - } - if (columns + 4 <= 0) { - columns = INT_MAX - 4; + } else if (columns > INT_MAX - 2) { + columns = INT_MAX - 2; } rows = rowsA; endOfBlock = endOfBlockA; black = blackA; - refLine = (short *)gmallocn(columns + 3, sizeof(short)); - codingLine = (short *)gmallocn(columns + 2, sizeof(short)); + // 0 <= codingLine[0] < codingLine[1] < ... < codingLine[n] = columns + // ---> max codingLine size = columns + 1 + // refLine has one extra guard entry at the end + // ---> max refLine size = columns + 2 + codingLine = (int *)gmallocn(columns + 1, sizeof(int)); + refLine = (int *)gmallocn(columns + 2, sizeof(int)); eof = gFalse; row = 0; nextLine2D = encoding < 0; inputBits = 0; - codingLine[0] = 0; - codingLine[1] = refLine[2] = columns; - a0 = 1; + codingLine[0] = columns; + a0i = 0; + outputBits = 0; buf = EOF; } @@ -1278,9 +1281,9 @@ void CCITTFaxStream::reset() { row = 0; nextLine2D = encoding < 0; inputBits = 0; - codingLine[0] = 0; - codingLine[1] = columns; - a0 = 1; + codingLine[0] = columns; + a0i = 0; + outputBits = 0; buf = EOF; // skip any initial zero bits and end-of-line marker, and get the 2D @@ -1297,211 +1300,230 @@ void CCITTFaxStream::reset() { } } +inline void CCITTFaxStream::addPixels(int a1, int blackPixels) { + if (a1 > codingLine[a0i]) { + if (a1 > columns) { + error(getPos(), "CCITTFax row is wrong length (%d)", a1); + err = gTrue; + a1 = columns; + } + if ((a0i & 1) ^ blackPixels) { + ++a0i; + } + codingLine[a0i] = a1; + } +} + +inline void CCITTFaxStream::addPixelsNeg(int a1, int blackPixels) { + if (a1 > codingLine[a0i]) { + if (a1 > columns) { + error(getPos(), "CCITTFax row is wrong length (%d)", a1); + err = gTrue; + a1 = columns; + } + if ((a0i & 1) ^ blackPixels) { + ++a0i; + } + codingLine[a0i] = a1; + } else if (a1 < codingLine[a0i]) { + if (a1 < 0) { + error(getPos(), "Invalid CCITTFax code"); + err = gTrue; + a1 = 0; + } + while (a0i > 0 && a1 <= codingLine[a0i - 1]) { + --a0i; + } + codingLine[a0i] = a1; + } +} + int CCITTFaxStream::lookChar() { short code1, code2, code3; - int a0New; - GBool err, gotEOL; - int ret; - int bits, i; + int b1i, blackPixels, i, bits; + GBool gotEOL; - // if at eof just return EOF - if (eof && codingLine[a0] >= columns) { - return EOF; + if (buf != EOF) { + return buf; } // read the next row - err = gFalse; - if (codingLine[a0] >= columns) { + if (outputBits == 0) { + + // if at eof just return EOF + if (eof) { + return EOF; + } + + err = gFalse; // 2-D encoding if (nextLine2D) { - // state: - // a0New = current position in coding line (0 <= a0New <= columns) - // codingLine[a0] = last change in coding line - // (black-to-white if a0 is even, - // white-to-black if a0 is odd) - // refLine[b1] = next change in reference line of opposite color - // to a0 - // invariants: - // 0 <= codingLine[a0] <= a0New - // <= refLine[b1] <= refLine[b1+1] <= columns - // 0 <= a0 <= columns+1 - // refLine[0] = 0 - // refLine[n] = refLine[n+1] = columns - // -- for some 1 <= n <= columns+1 - // end condition: - // 0 = codingLine[0] <= codingLine[1] < codingLine[2] < ... - // < codingLine[n-1] < codingLine[n] = columns - // -- where 1 <= n <= columns+1 for (i = 0; codingLine[i] < columns; ++i) { refLine[i] = codingLine[i]; } - refLine[i] = refLine[i + 1] = columns; - b1 = 1; - a0New = codingLine[a0 = 0] = 0; - do { + refLine[i++] = columns; + refLine[i] = columns; + codingLine[0] = 0; + a0i = 0; + b1i = 0; + blackPixels = 0; + // invariant: + // refLine[b1i-1] <= codingLine[a0i] < refLine[b1i] < refLine[b1i+1] + // <= columns + // exception at left edge: + // codingLine[a0i = 0] = refLine[b1i = 0] = 0 is possible + // exception at right edge: + // refLine[b1i] = refLine[b1i+1] = columns is possible + while (codingLine[a0i] < columns) { code1 = getTwoDimCode(); switch (code1) { case twoDimPass: - if (refLine[b1] < columns) { - a0New = refLine[b1 + 1]; - b1 += 2; + addPixels(refLine[b1i + 1], blackPixels); + if (refLine[b1i + 1] < columns) { + b1i += 2; } break; case twoDimHoriz: - if ((a0 & 1) == 0) { - code1 = code2 = 0; + code1 = code2 = 0; + if (blackPixels) { do { - code1 += code3 = getWhiteCode(); + code1 += code3 = getBlackCode(); } while (code3 >= 64); do { - code2 += code3 = getBlackCode(); + code2 += code3 = getWhiteCode(); } while (code3 >= 64); } else { - code1 = code2 = 0; do { - code1 += code3 = getBlackCode(); + code1 += code3 = getWhiteCode(); } while (code3 >= 64); do { - code2 += code3 = getWhiteCode(); + code2 += code3 = getBlackCode(); } while (code3 >= 64); } - if (code1 > 0 || code2 > 0) { - if (a0New + code1 <= columns) { - codingLine[a0 + 1] = a0New + code1; - } else { - codingLine[a0 + 1] = columns; - } - ++a0; - if (codingLine[a0] + code2 <= columns) { - codingLine[a0 + 1] = codingLine[a0] + code2; - } else { - codingLine[a0 + 1] = columns; - } - ++a0; - a0New = codingLine[a0]; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + addPixels(codingLine[a0i] + code1, blackPixels); + if (codingLine[a0i] < columns) { + addPixels(codingLine[a0i] + code2, blackPixels ^ 1); + } + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; + } + break; + case twoDimVertR3: + addPixels(refLine[b1i] + 3, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + ++b1i; + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } } break; - case twoDimVert0: - if (refLine[b1] < columns) { - a0New = codingLine[++a0] = refLine[b1]; - ++b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + case twoDimVertR2: + addPixels(refLine[b1i] + 2, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + ++b1i; + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } - } else { - a0New = codingLine[++a0] = columns; } break; case twoDimVertR1: - if (refLine[b1] + 1 < columns) { - a0New = codingLine[++a0] = refLine[b1] + 1; - ++b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + addPixels(refLine[b1i] + 1, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + ++b1i; + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } - } else { - a0New = codingLine[++a0] = columns; } break; - case twoDimVertL1: - if (refLine[b1] - 1 > a0New || (a0 == 0 && refLine[b1] == 1)) { - a0New = codingLine[++a0] = refLine[b1] - 1; - --b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + case twoDimVert0: + addPixels(refLine[b1i], blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + ++b1i; + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } } break; - case twoDimVertR2: - if (refLine[b1] + 2 < columns) { - a0New = codingLine[++a0] = refLine[b1] + 2; - ++b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + case twoDimVertL3: + addPixelsNeg(refLine[b1i] - 3, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + if (b1i > 0) { + --b1i; + } else { + ++b1i; + } + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } - } else { - a0New = codingLine[++a0] = columns; } break; case twoDimVertL2: - if (refLine[b1] - 2 > a0New || (a0 == 0 && refLine[b1] == 2)) { - a0New = codingLine[++a0] = refLine[b1] - 2; - --b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + addPixelsNeg(refLine[b1i] - 2, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + if (b1i > 0) { + --b1i; + } else { + ++b1i; } - } - break; - case twoDimVertR3: - if (refLine[b1] + 3 < columns) { - a0New = codingLine[++a0] = refLine[b1] + 3; - ++b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } - } else { - a0New = codingLine[++a0] = columns; } break; - case twoDimVertL3: - if (refLine[b1] - 3 > a0New || (a0 == 0 && refLine[b1] == 3)) { - a0New = codingLine[++a0] = refLine[b1] - 3; - --b1; - while (refLine[b1] <= a0New && refLine[b1] < columns) { - b1 += 2; + case twoDimVertL1: + addPixelsNeg(refLine[b1i] - 1, blackPixels); + blackPixels ^= 1; + if (codingLine[a0i] < columns) { + if (b1i > 0) { + --b1i; + } else { + ++b1i; + } + while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) { + b1i += 2; } } break; case EOF: + addPixels(columns, 0); eof = gTrue; - codingLine[a0 = 0] = columns; - return EOF; + break; default: error(getPos(), "Bad 2D code %04x in CCITTFax stream", code1); + addPixels(columns, 0); err = gTrue; break; } - } while (codingLine[a0] < columns); + } // 1-D encoding } else { - codingLine[a0 = 0] = 0; - while (1) { + codingLine[0] = 0; + a0i = 0; + blackPixels = 0; + while (codingLine[a0i] < columns) { code1 = 0; - do { - code1 += code3 = getWhiteCode(); - } while (code3 >= 64); - codingLine[a0+1] = codingLine[a0] + code1; - ++a0; - if (codingLine[a0] >= columns) { - break; - } - code2 = 0; - do { - code2 += code3 = getBlackCode(); - } while (code3 >= 64); - codingLine[a0+1] = codingLine[a0] + code2; - ++a0; - if (codingLine[a0] >= columns) { - break; + if (blackPixels) { + do { + code1 += code3 = getBlackCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = getWhiteCode(); + } while (code3 >= 64); } + addPixels(codingLine[a0i] + code1, blackPixels); + blackPixels ^= 1; } } - if (codingLine[a0] != columns) { - error(getPos(), "CCITTFax row is wrong length (%d)", codingLine[a0]); - // force the row to be the correct length - while (codingLine[a0] > columns) { - --a0; - } - codingLine[++a0] = columns; - err = gTrue; - } - // byte-align the row if (byteAlign) { inputBits &= ~7; @@ -1560,14 +1582,17 @@ int CCITTFaxStream::lookChar() { // this if we know the stream contains end-of-line markers because // the "just plow on" technique tends to work better otherwise } else if (err && endOfLine) { - do { + while (1) { + code1 = lookBits(13); if (code1 == EOF) { eof = gTrue; return EOF; } + if ((code1 >> 1) == 0x001) { + break; + } eatBits(1); - code1 = lookBits(13); - } while ((code1 >> 1) != 0x001); + } eatBits(12); if (encoding > 0) { eatBits(1); @@ -1575,11 +1600,11 @@ int CCITTFaxStream::lookChar() { } } - a0 = 0; - outputBits = codingLine[1] - codingLine[0]; - if (outputBits == 0) { - a0 = 1; - outputBits = codingLine[2] - codingLine[1]; + // set up for output + if (codingLine[0] > 0) { + outputBits = codingLine[a0i = 0]; + } else { + outputBits = codingLine[a0i = 1]; } ++row; @@ -1587,39 +1612,43 @@ int CCITTFaxStream::lookChar() { // get a byte if (outputBits >= 8) { - ret = ((a0 & 1) == 0) ? 0xff : 0x00; - if ((outputBits -= 8) == 0) { - ++a0; - if (codingLine[a0] < columns) { - outputBits = codingLine[a0 + 1] - codingLine[a0]; - } + buf = (a0i & 1) ? 0x00 : 0xff; + outputBits -= 8; + if (outputBits == 0 && codingLine[a0i] < columns) { + ++a0i; + outputBits = codingLine[a0i] - codingLine[a0i - 1]; } } else { bits = 8; - ret = 0; + buf = 0; do { if (outputBits > bits) { - i = bits; - bits = 0; - if ((a0 & 1) == 0) { - ret |= 0xff >> (8 - i); + buf <<= bits; + if (!(a0i & 1)) { + buf |= 0xff >> (8 - bits); } - outputBits -= i; + outputBits -= bits; + bits = 0; } else { - i = outputBits; - bits -= outputBits; - if ((a0 & 1) == 0) { - ret |= (0xff >> (8 - i)) << bits; + buf <<= outputBits; + if (!(a0i & 1)) { + buf |= 0xff >> (8 - outputBits); } + bits -= outputBits; outputBits = 0; - ++a0; - if (codingLine[a0] < columns) { - outputBits = codingLine[a0 + 1] - codingLine[a0]; + if (codingLine[a0i] < columns) { + ++a0i; + outputBits = codingLine[a0i] - codingLine[a0i - 1]; + } else if (bits > 0) { + buf <<= bits; + bits = 0; } } - } while (bits > 0 && codingLine[a0] < columns); + } while (bits); + } + if (black) { + buf ^= 0xff; } - buf = black ? (ret ^ 0xff) : ret; return buf; } @@ -1661,6 +1690,9 @@ short CCITTFaxStream::getWhiteCode() { code = 0; // make gcc happy if (endOfBlock) { code = lookBits(12); + if (code == EOF) { + return 1; + } if ((code >> 5) == 0) { p = &whiteTab1[code]; } else { @@ -1673,6 +1705,9 @@ short CCITTFaxStream::getWhiteCode() { } else { for (n = 1; n <= 9; ++n) { code = lookBits(n); + if (code == EOF) { + return 1; + } if (n < 9) { code <<= 9 - n; } @@ -1684,6 +1719,9 @@ short CCITTFaxStream::getWhiteCode() { } for (n = 11; n <= 12; ++n) { code = lookBits(n); + if (code == EOF) { + return 1; + } if (n < 12) { code <<= 12 - n; } @@ -1709,9 +1747,12 @@ short CCITTFaxStream::getBlackCode() { code = 0; // make gcc happy if (endOfBlock) { code = lookBits(13); + if (code == EOF) { + return 1; + } if ((code >> 7) == 0) { p = &blackTab1[code]; - } else if ((code >> 9) == 0) { + } else if ((code >> 9) == 0 && (code >> 7) != 0) { p = &blackTab2[(code >> 1) - 64]; } else { p = &blackTab3[code >> 7]; @@ -1723,6 +1764,9 @@ short CCITTFaxStream::getBlackCode() { } else { for (n = 2; n <= 6; ++n) { code = lookBits(n); + if (code == EOF) { + return 1; + } if (n < 6) { code <<= 6 - n; } @@ -1734,6 +1778,9 @@ short CCITTFaxStream::getBlackCode() { } for (n = 7; n <= 12; ++n) { code = lookBits(n); + if (code == EOF) { + return 1; + } if (n < 12) { code <<= 12 - n; } @@ -1747,6 +1794,9 @@ short CCITTFaxStream::getBlackCode() { } for (n = 10; n <= 13; ++n) { code = lookBits(n); + if (code == EOF) { + return 1; + } if (n < 13) { code <<= 13 - n; } @@ -1961,6 +2011,12 @@ void DCTStream::reset() { // allocate a buffer for the whole image bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth; bufHeight = ((height + mcuHeight - 1) / mcuHeight) * mcuHeight; + if (bufWidth <= 0 || bufHeight <= 0 || + bufWidth > INT_MAX / bufWidth / (int)sizeof(int)) { + error(getPos(), "Invalid image size in DCT stream"); + y = height; + return; + } for (i = 0; i < numComps; ++i) { frameBuf[i] = (int *)gmallocn(bufWidth * bufHeight, sizeof(int)); memset(frameBuf[i], 0, bufWidth * bufHeight * sizeof(int)); @@ -3036,6 +3092,11 @@ GBool DCTStream::readScanInfo() { } scanInfo.firstCoeff = str->getChar(); scanInfo.lastCoeff = str->getChar(); + if (scanInfo.firstCoeff < 0 || scanInfo.lastCoeff > 63 || + scanInfo.firstCoeff > scanInfo.lastCoeff) { + error(getPos(), "Bad DCT coefficient numbers in scan info block"); + return gFalse; + } c = str->getChar(); scanInfo.ah = (c >> 4) & 0x0f; scanInfo.al = c & 0x0f; diff --git a/Build/source/libs/xpdf/xpdf/Stream.h b/Build/source/libs/xpdf/xpdf/Stream.h index 85a84691bd9..29c9dbbb313 100644 --- a/Build/source/libs/xpdf/xpdf/Stream.h +++ b/Build/source/libs/xpdf/xpdf/Stream.h @@ -34,6 +34,7 @@ enum StreamKind { strFlate, strJBIG2, strJPX, + strCrypt, strWeird // internal-use stream types }; @@ -528,13 +529,15 @@ private: int row; // current row int inputBuf; // input buffer int inputBits; // number of bits in input buffer - short *refLine; // reference line changing elements - int b1; // index into refLine - short *codingLine; // coding line changing elements - int a0; // index into codingLine + int *codingLine; // coding line changing elements + int *refLine; // reference line changing elements + int a0i; // index into codingLine + GBool err; // error on current line int outputBits; // remaining ouput bits int buf; // character buffer + void addPixels(int a1, int black); + void addPixelsNeg(int a1, int black); short getTwoDimCode(); short getWhiteCode(); short getBlackCode(); diff --git a/Build/source/libs/xpdf/xpdf/config.h b/Build/source/libs/xpdf/xpdf/config.h index 2ebb01da228..e4e2b91c7a7 100644 --- a/Build/source/libs/xpdf/xpdf/config.h +++ b/Build/source/libs/xpdf/xpdf/config.h @@ -14,7 +14,7 @@ //------------------------------------------------------------------------ // xpdf version -#define xpdfVersion "3.02pl1" +#define xpdfVersion "3.02pl2" #define xpdfVersionNum 3.02 #define xpdfMajorVersion 3 #define xpdfMinorVersion 2 diff --git a/Build/source/texk/web2c/pdftexdir/ChangeLog b/Build/source/texk/web2c/pdftexdir/ChangeLog index d8dcfd4afcb..d6004e43700 100644 --- a/Build/source/texk/web2c/pdftexdir/ChangeLog +++ b/Build/source/texk/web2c/pdftexdir/ChangeLog @@ -1,22 +1,3 @@ -2008-02-17 Peter Breitenlohner <peb@mppmu.mpg.de> - - * pdftex.web: Adapted to e-TeX changes (fixed a bug in hyph_code - handling and corrected a few typos in TeX text). - -2008-01-31 Peter Breitenlohner <peb@mppmu.mpg.de> - - * Makefile.in (depend): Substitute $(srcdir) in depend.mk. - * depend.mk: Regenerated. - -2008-01-29 Peter Breitenlohner <peb@mppmu.mpg.de> - - * Makefile.in: Add @configure_input@ line. - -2007-10-14 Karl Berry <karl@tug.org> - - * Makefile.in (depend): Run $(CXX) -MM directly, not through make. - * depend.mk: update. - 2004-08-21 Peter Breitenlohner <peb@mppmu.mpg.de> * pdfetex.ch2: Adapted to e-TeX version 2.2. diff --git a/Build/source/texk/web2c/pdftexdir/Makefile.in b/Build/source/texk/web2c/pdftexdir/Makefile.in index ad8d39f5b7e..3d43e87be0d 100644 --- a/Build/source/texk/web2c/pdftexdir/Makefile.in +++ b/Build/source/texk/web2c/pdftexdir/Makefile.in @@ -1,6 +1,5 @@ -# $Id: Makefile.in 152 2007-06-25 22:19:35Z ms $ -# @configure_input@ # Makefile for libpdf - te@dbs.uni-hannover.de +# $Id$ kpse_include ../make/common.mk kpse_include ../make/programs.mk @@ -9,7 +8,13 @@ kpse_include ../make/library.mk kpathsea_srcdir_parent = $(srcdir)/../.. kpathsea_dir_parent = ../.. -ALL_CXXFLAGS = @CXXFLAGS@ @DEFS@ $(XXCFLAGS) -I. -I$(srcdir) -I$(kpathsea_dir_parent) -I$(kpathsea_srcdir_parent) @LIBXPDFCPPFLAGS@ -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATFSRCDIR) -I$(LIBOBSDCOMPATFSRCDIR)/.. +ALL_CXXFLAGS = @CXXFLAGS@ @DEFS@ $(XXCFLAGS) \ + -I. -I$(srcdir) \ + -I$(kpathsea_dir_parent) -I$(kpathsea_srcdir_parent) \ + @LIBXPDFCPPFLAGS@ \ + -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. \ + -I$(LIBOBSDCOMPATSRCDIR) -I$(LIBOBSDCOMPATSRCDIR)/.. \ + -DPDF_PARSER_ONLY -DDISABLE_OUTLINE CXX = @CXX@ .SUFFIXES: .cc .o @@ -31,13 +36,13 @@ LIBMD5DIR=../../../libs/md5 LIBMD5SRCDIR=$(srcdir)/$(LIBMD5DIR) LIBOBSDCOMPATDIR=../../../libs/obsdcompat -LIBOBSDCOMPATFSRCDIR=$(srcdir)/$(LIBOBSDCOMPATDIR) +LIBOBSDCOMPATSRCDIR=$(srcdir)/$(LIBOBSDCOMPATDIR) XCPPFLAGS=-I.. -I$(srcdir)/.. -I../.. -I$(srcdir)/../.. -I$(LIBMD5DIR) \ -I$(LIBMD5SRCDIR) @LIBPNGCPPFLAGS@ @ZLIBCPPFLAGS@ \ -I$(LIBXPDFDIR) -I$(LIBXPDFDIR)/.. -I$(LIBXPDFSRCDIR) -I$(LIBXPDFSRCDIR)/.. \ - -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATFSRCDIR) \ - -I$(LIBOBSDCOMPATFSRCDIR)/.. -DpdfTeX + -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATSRCDIR) \ + -I$(LIBOBSDCOMPATSRCDIR)/.. -DpdfTeX OBJS = epdf.o mapfile.o utils.o vfpacket.o pkin.o \ writefont.o writet1.o writet3.o writezip.o writeenc.o writettf.o \ @@ -58,9 +63,9 @@ clean:: rm -f libpdf.a ttf2afm pdftosrc depend: - $(CXX) -MM $(ALL_CPPFLAGS) $(srcdir)/*.c \ - | sed -e 's, $(srcdir)/, $$(srcdir)/,g' \ - -e 's, $(top_srcdir)/, $$(top_srcdir)/,g' \ - | cat >$(srcdir)/depend.mk + rm -f $(OBJS) ttf2afm.o pdftosrc.o + XXCFLAGS=-MM XCFLAGS=-MM $(MAKE) -k $(OBJS) ttf2afm.o pdftosrc.o | \ + grep -v "^$(CC)\|$(CXX)\|$(AR)\|make\" | \ + sed 's: [^ ]*/\.\./libs/[^ ]*::g' > $(srcdir)/depend.mk kpse_include pdftexdir/depend.mk diff --git a/Build/source/texk/web2c/pdftexdir/NEWS b/Build/source/texk/web2c/pdftexdir/NEWS index bb960e200df..c601c93b90e 100644 --- a/Build/source/texk/web2c/pdftexdir/NEWS +++ b/Build/source/texk/web2c/pdftexdir/NEWS @@ -1,3 +1,38 @@ +-------------------------------------------------- +pdfTeX 3.1415926-1.40.8 was released on 2008-03-?? +-------------------------------------------------- +- Incorporated the new version of TeX: 3.1415926 +- Bugfix: + - Fonts from included PDFs for which maplines existed missed their /StemV + values +- pdfTeX uses libpng 1.2.25 + +------------------------------------------------- +pdfTeX 3.141592-1.40.7 was released on 2008-02-17 +------------------------------------------------- +- Bugfix: + - PDFs > 2GiB (LFS) were still broken on 32-bit systems + +------------------------------------------------- +pdfTeX 3.141592-1.40.6 was released on 2008-02-04 +------------------------------------------------- +- Bugfixes: + - inclusion of encrypted PDFs was broken (861) + - PDFs > 2GiB (LFS) would be broken, even on 64-bit systems. Now the basic + support for LFS is there, you only need to supply the right compiler flags + (this is not yet done automatically). See build.sh for hints on compiling. + - Page groups in pdfs (see the discussion in the notes vor v1.10a) are now + handled correctly (741) + - When including transparent PNGs pdftex now automatically adds a Page Group + (896) + - broken map files would lead to core dumps + - unusual TrueType fonts would lead to an assertion error (874) + - the null object in the object table was never initialized + - included PDFs with /PieceInfo lost their /LastModified date + - an empty colorstack crashed pdftex (897) +- pdfTeX uses libpng 1.2.24 +- pdfTeX uses xpdf 3.02pl2 + ------------------------------------------------- pdfTeX 3.141592-1.40.5 was released on 2007-07-31 ------------------------------------------------- @@ -24,6 +59,8 @@ pdfTeX 3.141592-1.40.4 was released on 2007-07-11 available, a broken PDF was produced. Now no PDF is generated and the error messages have been improved (721) - Problems with vf fonts (722) + - With pdf inclusion the font descriptor could get mixed up and miss some + required keys (810) - Font expansion led to wrong log output of \kerns (736) - \pdfprimitive was broken (see http://www.ntg.nl/pipermail/ntg-pdftex/2007-April/002860.html) @@ -571,5 +608,5 @@ pdfTeX 3.14159-1.00a-pretest-20010806 was released on 2001-08-06 pdfTeX 3.14159-1.00a-pretest-20010804 was released on 2001-08-04 ---------------------------------------------------------------- -$Id: NEWS 216 2007-07-31 16:49:57Z oneiros $ +$Id$ // vim: tw=79:ts=2:expandtab:autoindent diff --git a/Build/source/texk/web2c/pdftexdir/README b/Build/source/texk/web2c/pdftexdir/README index 6413755f033..c40803f4d24 100644 --- a/Build/source/texk/web2c/pdftexdir/README +++ b/Build/source/texk/web2c/pdftexdir/README @@ -1,10 +1,10 @@ pdfTeX ====== -README for version 3.14159-1.40.5 -================================= +README for version 3.1415926-1.40.8 +=================================== -This directory contains the version 1.40.5 of pdfTeX, an extended version +This directory contains the version 1.40.8 of pdfTeX, an extended version of eTeX that can create PDF directly from TeX source files and enhance the result of TeX typesetting with the help of PDF. When PDF output is not selected, pdfTeX produces normal DVI output, otherwise it produces PDF @@ -33,7 +33,7 @@ http://www.ntg.nl/mailman/listinfo/ntg-pdftex LEGAL ISSUES ============ -pdfTeX is copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +pdfTeX is copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> pdfTeX is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -72,8 +72,11 @@ Peter Breitenlohner, Ricardo Sanchez Carmenes, Otfried Cheong, Thomas Esser, Hans Hagen, Hartmut Henkel, Taco Hoekwater, Pawel Jackowski, Pavel Janik, Tom Kacvinsky, Akira Kakuto, Reinhard Kotucha, Derek B. Noonburg, Heiko Oberdiek, Jiri Osoba, Fabrice Popineau, Sebastian Rahtz, Bernd -Raichle, Tomas Rokicki, Martin Schröder, Petr Sojka, Ralf Utermann, Olaf -Weber, Jiri Zlatuska. +Raichle, Tomas Rokicki, Leonard Rosenthol, Martin Schröder, Petr Sojka, +Ralf Utermann, Olaf Weber, Jiri Zlatuska. + +Some companies have supported the developement of pdfTeX: Adobe Systems +Inc., ArtCom GmbH, Pragma ADE, QuinScape GmbH. pdfTeX is built on top of TeX, written by Donald Knuth cum suis (Liang and so), and eTeX, written by Peter Breitenlohner cum suis; part of the @@ -84,5 +87,5 @@ paragraph optimization is inspired by the work of Hermann Zapf. Please send bug reports, offers of help, etc. to martin@pdftex.org -$Id: README 216 2007-07-31 16:49:57Z oneiros $ +$Id$ // vim: tw=75 diff --git a/Build/source/texk/web2c/pdftexdir/avlstuff.c b/Build/source/texk/web2c/pdftexdir/avlstuff.c index 059ed047235..860e5f43d84 100644 --- a/Build/source/texk/web2c/pdftexdir/avlstuff.c +++ b/Build/source/texk/web2c/pdftexdir/avlstuff.c @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: avlstuff.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ diff --git a/Build/source/texk/web2c/pdftexdir/avlstuff.h b/Build/source/texk/web2c/pdftexdir/avlstuff.h index 9db70a13225..148b5362472 100644 --- a/Build/source/texk/web2c/pdftexdir/avlstuff.h +++ b/Build/source/texk/web2c/pdftexdir/avlstuff.h @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: avlstuff.h 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include "avl.h" diff --git a/Build/source/texk/web2c/pdftexdir/depend.mk b/Build/source/texk/web2c/pdftexdir/depend.mk index 73fd8574aa8..fa9f9dac2c4 100644 --- a/Build/source/texk/web2c/pdftexdir/depend.mk +++ b/Build/source/texk/web2c/pdftexdir/depend.mk @@ -1,813 +1,55 @@ -avl.o: $(srcdir)/avl.c \ - $(srcdir)/avl.h -avlstuff.o: $(srcdir)/avlstuff.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -epdf.o: $(srcdir)/epdf.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -macnames.o: $(srcdir)/macnames.c -mapfile.o: $(srcdir)/mapfile.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -pkin.o: $(srcdir)/pkin.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -subfont.o: $(srcdir)/subfont.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -tounicode.o: $(srcdir)/tounicode.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -ttf2afm.o: $(srcdir)/ttf2afm.c \ - $(srcdir)/../../kpathsea/kpathsea.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - $(srcdir)/../../kpathsea/absolute.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/c-dir.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/c-namemx.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-pathmx.h \ - $(srcdir)/../../kpathsea/c-stat.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/cnf.h \ - $(srcdir)/../../kpathsea/concatn.h \ - $(srcdir)/../../kpathsea/db.h \ - $(srcdir)/../../kpathsea/str-list.h \ - $(srcdir)/../../kpathsea/default.h \ - $(srcdir)/../../kpathsea/expand.h \ - $(srcdir)/../../kpathsea/fn.h \ - $(srcdir)/../../kpathsea/fontmap.h \ - $(srcdir)/../../kpathsea/hash.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/line.h \ - $(srcdir)/../../kpathsea/magstep.h \ - ../../kpathsea/paths.h \ - $(srcdir)/../../kpathsea/pathsearch.h \ - $(srcdir)/../../kpathsea/str-llist.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/readable.h \ - $(srcdir)/../../kpathsea/recorder.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/tex-glyph.h \ - $(srcdir)/../../kpathsea/tex-hush.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../../kpathsea/tilde.h \ - $(srcdir)/../../kpathsea/truncate.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../../kpathsea/xopendir.h \ - $(srcdir)/../../kpathsea/xstat.h \ - $(srcdir)/../pdftexdir/ptexmac.h \ - $(srcdir)/../pdftexdir/writettf.h \ - $(srcdir)/macnames.c -utils.o: $(srcdir)/utils.c \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/c-stat.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../../libs/md5/md5.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/libpng/png.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/libpng/pngconf.h \ - $(srcdir)/../../../libs/xpdf/xpdf/config.h -vfpacket.o: $(srcdir)/vfpacket.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -writeenc.o: $(srcdir)/writeenc.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -writefont.o: $(srcdir)/writefont.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -writeimg.o: $(srcdir)/writeimg.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/image.h \ - $(srcdir)/../../../libs/libpng/png.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h \ - $(srcdir)/../../../libs/libpng/pngconf.h -writejbig2.o: $(srcdir)/writejbig2.c \ - $(srcdir)/writejbig2.h \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/image.h \ - $(srcdir)/../../../libs/libpng/png.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h \ - $(srcdir)/../../../libs/libpng/pngconf.h -writejpg.o: $(srcdir)/writejpg.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/image.h \ - $(srcdir)/../../../libs/libpng/png.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h \ - $(srcdir)/../../../libs/libpng/pngconf.h -writepng.o: $(srcdir)/writepng.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/image.h \ - $(srcdir)/../../../libs/libpng/png.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h \ - $(srcdir)/../../../libs/libpng/pngconf.h -writet1.o: $(srcdir)/writet1.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h -writet3.o: $(srcdir)/writet3.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/../../kpathsea/tex-glyph.h \ - $(srcdir)/../../kpathsea/magstep.h -writettf.o: $(srcdir)/writettf.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/writettf.h \ - $(srcdir)/macnames.c -writezip.o: $(srcdir)/writezip.c \ - $(srcdir)/ptexlib.h ../pdftexd.h \ - $(srcdir)/../texmfmp.h \ - $(srcdir)/../cpascal.h \ - $(srcdir)/../config.h \ - $(srcdir)/../../kpathsea/config.h \ - ../../kpathsea/c-auto.h \ - $(srcdir)/../../kpathsea/c-std.h \ - $(srcdir)/../../kpathsea/c-unistd.h \ - $(srcdir)/../../kpathsea/systypes.h \ - $(srcdir)/../../kpathsea/c-memstr.h \ - $(srcdir)/../../kpathsea/c-errno.h \ - $(srcdir)/../../kpathsea/c-minmax.h \ - $(srcdir)/../../kpathsea/c-limits.h \ - $(srcdir)/../../kpathsea/c-proto.h \ - $(srcdir)/../../kpathsea/debug.h \ - $(srcdir)/../../kpathsea/types.h \ - $(srcdir)/../../kpathsea/lib.h \ - $(srcdir)/../../kpathsea/progname.h \ - ../../web2c/c-auto.h \ - $(srcdir)/../../kpathsea/c-vararg.h \ - $(srcdir)/../../kpathsea/c-fopen.h \ - $(srcdir)/../../kpathsea/getopt.h \ - $(srcdir)/../../kpathsea/proginit.h \ - $(srcdir)/../../kpathsea/tex-file.h \ - $(srcdir)/../../kpathsea/variable.h \ - $(srcdir)/../help.h \ - $(srcdir)/../../kpathsea/c-pathch.h \ - $(srcdir)/../../kpathsea/c-ctype.h \ - $(srcdir)/../../kpathsea/tex-make.h \ - $(srcdir)/../texmfmem.h ../pdftexcoerce.h \ - $(srcdir)/../pdftexdir/pdftex.h \ - $(srcdir)/../pdftexdir/ptexlib.h \ - $(srcdir)/ptexmac.h \ - $(srcdir)/avlstuff.h \ - $(srcdir)/avl.h \ - $(srcdir)/../../../libs/obsdcompat/openbsd-compat.h \ - $(srcdir)/../../../libs/obsdcompat/includes.h \ - ../../../libs/xpdf/../obsdcompat/config.h \ - $(srcdir)/../../../libs/obsdcompat/defines.h \ - $(srcdir)/../../../libs/zlib/zlib.h \ - $(srcdir)/../../../libs/zlib/zconf.h +epdf.o: epdf.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h +mapfile.o: mapfile.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h +papersiz.o: papersiz.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h +utils.o: utils.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h \ + ../../../libs/zlib/zlib.h ../../../libs/zlib/zconf.h \ + ../../../libs/md5/md5.h pdftexextra.h \ + ../../../libs/obsdcompat/openbsd-compat.h +vfpacket.o: vfpacket.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h +pkin.o: pkin.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h +writefont.o: writefont.c ../../../libs/xpdf/goo/gmem.h ptexlib.h \ + ../pdftexd.h ../texmfmp.h ../cpascal.h ../config.h ../help.h \ + ../texmfmem.h ../pdftexcoerce.h ptexmac.h +writet1.o: writet1.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h +writet3.o: writet3.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ + ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h +writezip.o: writezip.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h ../../../libs/zlib/zlib.h ../../../libs/zlib/zconf.h +writeenc.o: writeenc.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h +writettf.o: writettf.c ptexlib.h writettf.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h macnames.c +writejpg.o: writejpg.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h image.h +writepng.o: writepng.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h image.h +writeimg.o: writeimg.c ptexlib.h ../pdftexd.h ../texmfmp.h \ + ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ + ptexmac.h image.h +pdftoepdf.o: pdftoepdf.cc ../../../libs/xpdf/xpdf/Object.h \ + ../../../libs/xpdf/goo/gmem.h ../../../libs/xpdf/xpdf/Array.h \ + ../../../libs/xpdf/xpdf/Dict.h ../../../libs/xpdf/xpdf/Stream.h \ + ../../../libs/xpdf/xpdf/XRef.h ../../../libs/xpdf/xpdf/Catalog.h \ + ../../../libs/xpdf/xpdf/Page.h ../../../libs/xpdf/xpdf/GfxFont.h \ + ../../../libs/xpdf/xpdf/Error.h epdf.h +ttf2afm.o: ttf2afm.c writettf.h macnames.c +pdftosrc.o: pdftosrc.cc ../../../libs/xpdf/xpdf/Object.h \ + ../../../libs/xpdf/xpdf/Array.h ../../../libs/xpdf/xpdf/Dict.h \ + ../../../libs/xpdf/xpdf/Stream.h ../../../libs/xpdf/xpdf/XRef.h \ + ../../../libs/xpdf/xpdf/Catalog.h ../../../libs/xpdf/xpdf/Page.h \ + ../../../libs/xpdf/xpdf/PDFDoc.h ../../../libs/xpdf/xpdf/Link.h \ + ../../../libs/xpdf/xpdf/Error.h ../../../libs/xpdf/xpdf/config.h diff --git a/Build/source/texk/web2c/pdftexdir/epdf.c b/Build/source/texk/web2c/pdftexdir/epdf.c index 9f4387badc4..a7c164a6e4a 100644 --- a/Build/source/texk/web2c/pdftexdir/epdf.c +++ b/Build/source/texk/web2c/pdftexdir/epdf.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: epdf.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include "ptexlib.h" @@ -35,7 +35,7 @@ int is_subsetable(fm_entry * fm) return is_subsetted(fm); } -fd_entry *epdf_create_fontdescriptor(fm_entry * fm) +fd_entry *epdf_create_fontdescriptor(fm_entry * fm, int stemV) { fd_entry *fd; if ((fd = lookup_fd_entry(fm->ff_name, fm->slant, fm->extend)) == NULL) { @@ -46,7 +46,9 @@ fd_entry *epdf_create_fontdescriptor(fm_entry * fm) fd->fd_objnum = pdfnewobjnum(); assert(fm->ps_name != NULL); fd->fontname = xstrdup(fm->ps_name); /* just fallback */ - /* preset_fontmetrics (fo->fd, f); */ + // stemV must be copied + fd->font_dim[STEMV_CODE].val = stemV; + fd->font_dim[STEMV_CODE].set = true; fd->gl_tree = avl_create(comp_string_entry, NULL, &avl_xallocator); assert(fd->gl_tree != NULL); } diff --git a/Build/source/texk/web2c/pdftexdir/epdf.h b/Build/source/texk/web2c/pdftexdir/epdf.h index 4f4abab82f6..d470d7d835a 100644 --- a/Build/source/texk/web2c/pdftexdir/epdf.h +++ b/Build/source/texk/web2c/pdftexdir/epdf.h @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: epdf.h 181 2007-07-09 10:10:07Z oneiros $ +$Id$ */ extern "C" { @@ -57,6 +57,7 @@ extern "C" { extern integer epdf_page_box; extern void *epdf_doc; extern void *epdf_xref; + extern integer epdf_lastGroupObjectNum; extern integer pdfboxspecmedia; extern integer pdfboxspeccrop; @@ -101,6 +102,7 @@ extern "C" { __attribute__ ((format(printf, 1, 2))) extern void tex_printf(const char *, ...); extern void write_epdf(void); + extern void write_additional_epdf_objects(void); extern void zpdfbegindict(integer, bool); extern void zpdfbeginobj(integer, bool); extern void zpdfcreateobj(integer, integer); @@ -109,7 +111,7 @@ extern "C" { /* epdf.c */ extern void epdf_mark_glyphs(struct fd_entry *, char *); - extern struct fd_entry *epdf_create_fontdescriptor(struct fm_entry *); + extern struct fd_entry *epdf_create_fontdescriptor(struct fm_entry *, int); extern int get_fd_objnum(struct fd_entry *); extern int get_fn_objnum(struct fd_entry *); diff --git a/Build/source/texk/web2c/pdftexdir/image.h b/Build/source/texk/web2c/pdftexdir/image.h index 07361aa8a94..a0d6a8e9a67 100644 --- a/Build/source/texk/web2c/pdftexdir/image.h +++ b/Build/source/texk/web2c/pdftexdir/image.h @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: image.h 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include <png.h> @@ -63,6 +63,7 @@ typedef struct { integer y_res; integer num_pages; integer colorspace_ref; + integer group_ref; // if it's <=0, the page has no group union { pdf_image_struct *pdf; png_image_struct png; @@ -90,6 +91,7 @@ extern integer image_max; #define img_type(N) (img_ptr(N)->image_type) #define img_color(N) (img_ptr(N)->color_type) #define img_colorspace_ref(N) (img_ptr(N)->colorspace_ref) +#define img_group_ref(N) (img_ptr(N)->group_ref) #define img_pages(N) (img_ptr(N)->num_pages) #define img_width(N) (img_ptr(N)->width) #define img_height(N) (img_ptr(N)->height) @@ -105,9 +107,11 @@ extern integer image_max; extern integer read_pdf_info(char *, char *, integer, integer, integer, integer); extern void write_epdf(void); +extern void write_additional_epdf_objects(void); extern void epdf_delete(void); extern void read_png_info(integer); extern void write_png(integer); +extern void write_additional_png_objects(void); extern void read_jpg_info(integer); extern void write_jpg(integer); extern void read_jbig2_info(integer); diff --git a/Build/source/texk/web2c/pdftexdir/macnames.c b/Build/source/texk/web2c/pdftexdir/macnames.c index 1561f728bfa..c3ac053f0a4 100644 --- a/Build/source/texk/web2c/pdftexdir/macnames.c +++ b/Build/source/texk/web2c/pdftexdir/macnames.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: macnames.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ const char notdef[] = ".notdef"; diff --git a/Build/source/texk/web2c/pdftexdir/mapfile.c b/Build/source/texk/web2c/pdftexdir/mapfile.c index a51a77988a0..2a40209aa18 100644 --- a/Build/source/texk/web2c/pdftexdir/mapfile.c +++ b/Build/source/texk/web2c/pdftexdir/mapfile.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: mapfile.c 116 2007-05-25 18:11:08Z ms $ +$Id$ */ #include <math.h> @@ -528,7 +528,7 @@ static void fm_scan_line() done: if (fm->ps_name != NULL && (check_std_t1font(fm->ps_name) >= 0)) set_std_t1font(fm); - if (is_fontfile(fm)) { + if (is_fontfile(fm) && strlen(fm_fontfile(fm)) > 3) { if (strcasecmp(strend(fm_fontfile(fm)) - 4, ".ttf") == 0) set_truetype(fm); else if (strcasecmp(strend(fm_fontfile(fm)) - 4, ".otf") == 0) diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.ch b/Build/source/texk/web2c/pdftexdir/pdftex.ch index 5785d479f71..c5089fc0e68 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftex.ch +++ b/Build/source/texk/web2c/pdftexdir/pdftex.ch @@ -17,7 +17,7 @@ % pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin % Street, Fifth Floor, Boston, MA 02110-1301 USA. % -% $Id: pdftex.ch 330 2008-01-06 17:01:05Z oneiros $ +% $Id$ % @x [0.0] l.83 - WEAVE: we want the whole file \def\?##1]{\hbox{Changes to \hbox to 1em{\hfil##1}.\ }} @@ -34,24 +34,24 @@ % Public domain. @x [1] m.2 l.188 - Web2C: extensions imply we're not e-TeX -@d eTeX_banner=='This is e-TeX, Version 3.141592',eTeX_version_string +@d eTeX_banner=='This is e-TeX, Version 3.1415926',eTeX_version_string @y -@d eTeX_banner_k=='This is e-TeXk, Version 3.141592',eTeX_version_string -@d eTeX_banner=='This is e-TeX, Version 3.141592',eTeX_version_string +@d eTeX_banner_k=='This is e-TeXk, Version 3.1415926',eTeX_version_string +@d eTeX_banner=='This is e-TeX, Version 3.1415926',eTeX_version_string @z @x [1] m.2 l.188 - Web2C: extensions imply we're not pdfeTeX -@d pdfeTeX_banner=='This is pdfeTeX, Version 3.141592',pdftex_version_string,eTeX_version_string +@d pdfeTeX_banner=='This is pdfeTeX, Version 3.1415926',pdftex_version_string,eTeX_version_string @y -@d pdfeTeX_banner_k=='This is pdfeTeXk, Version 3.141592',pdftex_version_string,eTeX_version_string -@d pdfeTeX_banner=='This is pdfeTeX, Version 3.141592',pdftex_version_string,eTeX_version_string +@d pdfeTeX_banner_k=='This is pdfeTeXk, Version 3.1415926',pdftex_version_string,eTeX_version_string +@d pdfeTeX_banner=='This is pdfeTeX, Version 3.1415926',pdftex_version_string,eTeX_version_string @z @x [1] m.2 l.188 - Web2C: extensions imply we're not pdfTeX -@d pdfTeX_banner=='This is pdfTeX, Version 3.141592',pdftex_version_string +@d pdfTeX_banner=='This is pdfTeX, Version 3.1415926',pdftex_version_string @y -@d pdfTeX_banner_k=='This is pdfTeXk, Version 3.141592',pdftex_version_string -@d pdfTeX_banner=='This is pdfTeX, Version 3.141592',pdftex_version_string +@d pdfTeX_banner_k=='This is pdfTeXk, Version 3.1415926',pdftex_version_string +@d pdfTeX_banner=='This is pdfTeX, Version 3.1415926',pdftex_version_string @z @x [1] m.2 l.188 - banner diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.defines b/Build/source/texk/web2c/pdftexdir/pdftex.defines index 19b9bc758de..c0f26a3a155 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftex.defines +++ b/Build/source/texk/web2c/pdftexdir/pdftex.defines @@ -1,5 +1,5 @@ { -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pdftex.defines 170 2007-07-06 21:00:55Z oneiros $ +$Id$ } { pdftex.defines: additions for pdfTeX } @@ -113,10 +113,12 @@ $Id: pdftex.defines 170 2007-07-06 21:00:55Z oneiros $ @define function imageheight(); @define function imagepages(); @define function imagecolordepth(); +@define function imagegroupref(); @define function imagewidth(); @define function imagexres(); @define function imageyres(); @define function ispdfimage(); +@define function ispngimage(); @define function readimage(); @define procedure deleteimage(); @define procedure updateimageprocset(); diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.h b/Build/source/texk/web2c/pdftexdir/pdftex.h index e34f6b979da..5f6f9002caf 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftex.h +++ b/Build/source/texk/web2c/pdftexdir/pdftex.h @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pdftex.h 114 2007-05-23 18:23:49Z ms $ +$Id$ */ /* Additions to texmfmp.h for pdfTeX */ diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.mk b/Build/source/texk/web2c/pdftexdir/pdftex.mk index 59f6a197bb2..bd855f9c76f 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftex.mk +++ b/Build/source/texk/web2c/pdftexdir/pdftex.mk @@ -1,15 +1,15 @@ # Makefile fragment for pdfeTeX and web2c. --infovore@xs4all.nl. Public domain. # This fragment contains the parts of the makefile that are most likely to # differ between releases of pdfeTeX. -# $Id: pdftex.mk 215 2007-07-31 16:32:04Z oneiros $ +# $Id$ # We build pdftex pdftex = @PETEX@ pdftex pdftexdir = pdftexdir LIBOBSDCOMPATDIR=../../libs/obsdcompat -LIBOBSDCOMPATFSRCDIR=$(srcdir)/$(LIBOBSDCOMPATDIR) -XCPPFLAGS=-I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATFSRCDIR) -I$(LIBOBSDCOMPATFSRCDIR)/.. +LIBOBSDCOMPATSRCDIR=$(srcdir)/$(LIBOBSDCOMPATDIR) +XCPPFLAGS=-I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATSRCDIR) -I$(LIBOBSDCOMPATSRCDIR)/.. Makefile: $(srcdir)/$(pdftexdir)/pdftex.mk @@ -69,7 +69,7 @@ pdftex-all.web: $(TIE) $(srcdir)/$(pdftexdir)/pdftex.web pdftex.ch $(TIE) -m $@ $(srcdir)/$(pdftexdir)/pdftex.web pdftex.ch pdftex-all.tex: pdftex-all.web $(WEAVE) pdftex-all.web - echo -e '1s/ webmac/ pdfwebmac/\nw\nq' | ed $@ >/dev/null 2>&1 + { echo '1s/ webmac/ pdfwebmac/'; echo w; echo q;} | ed $@ >/dev/null 2>&1 pdftex-all.pdf: pdftex-all.tex $(pdftex) pdftex-all.tex diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.web b/Build/source/texk/web2c/pdftexdir/pdftex.web index ef4392aee57..7397beb961f 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftex.web +++ b/Build/source/texk/web2c/pdftexdir/pdftex.web @@ -1,4 +1,4 @@ -% Copyright (c) 1996-2007 Han Th\^e\llap{\raise 0.5ex\hbox{\'{}}} Th\`anh, <thanh@@pdftex.org> +% Copyright (c) 1996-2008 Han Th\^e\llap{\raise 0.5ex\hbox{\'{}}} Th\`anh, <thanh@@pdftex.org> % This file is part of pdfTeX. @@ -15,11 +15,12 @@ % pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin % Street, Fifth Floor, Boston, MA 02110-1301 USA. -% e-TeX is copyright (C) 1999-2008 by P. Breitenlohner (1994,98 by the NTS -% team); all rights are reserved. Copying of this file is authorized only if -% (1) you are P. Breitenlohner, or if (2) you make absolutely no changes to -% your copy. (Programs such as TIE allow the application of several change -% files to tex.web; the master files tex.web and etex.ch should stay intact.) +% e-TeX is copyright (C) 1994,98 by Peter Breitenlohner; all rights are +% reserved. Copying of this file is authorized only if (1) you are Peter +% Breitenlohner, or if (2) you make absolutely no changes to your copy. +% (Programs such as PATCHWEB, TIE, or WEBMERGE allow the application of +% several change files to tex.web; the master files tex.web and etex.ch +% should stay intact.) % See etex_gen.tex for hints on how to install this program. % And see etripman.tex for details about how to validate it. @@ -68,6 +69,7 @@ % Version 3.1415 preserved nonexplicit kerns, tidied up (February 1993). % Version 3.14159 allowed fontmemsize to change; bulletproofing (March 1995). % Version 3.141592 fixed \xleaders, glueset, weird alignments (December 2002). +% Version 3.1415926 was a general cleanup with minor fixes (February 2008). % A preliminary version of TeX--XeT was released in April 1992. % TeX--XeT version 1.0 was released in June 1992, @@ -99,9 +101,6 @@ % direction typesetting; % fixed a bug in the revised glue rounding code, detected by % Tigran Aivazian <tigran@@aivazian.fsnet.co.uk>, Oct 2004. -% Version 2.3 development was started in Feb 2008; released in Mon Year. -% fixed a bug in hyph_code handling (\savinghyphcodes) -% reported by Vladimir Volovich <vvv@@vsu.ru>, Feb 2008. % Although considerable effort has been expended to make the e-TeX program % correct and reliable, no warranty is implied; the author disclaims any @@ -232,6 +231,7 @@ complete version of \TeX\ was designed and coded by the author in late {\mc SAIL} language, for which an excellent debugging system was available. Preliminary plans to convert the {\mc SAIL} code into a form somewhat like the present ``web'' were developed by Luis Trabb~Pardo and +@^Trabb Pardo, Luis Isidoro@> the author at the beginning of 1979, and a complete implementation was created by Ignacio~A. Zabala in 1979 and 1980. The \TeX82 program, which @^Zabala Salelles, Ignacio Andr\'es@> @@ -284,20 +284,20 @@ known as `\eTeX'. @d eTeX_revision==".2" { \.{\\eTeXrevision} } @d eTeX_version_string=='-2.2' {current \eTeX\ version} @# -@d eTeX_banner=='This is e-TeX, Version 3.141592',eTeX_version_string +@d eTeX_banner=='This is e-TeX, Version 3.1415926',eTeX_version_string {printed when \eTeX\ starts} @# @d pdftex_version==140 { \.{\\pdftexversion} } -@d pdftex_revision=="4" { \.{\\pdftexrevision} } -@d pdftex_version_string=='-1.40.5' {current \pdfTeX\ version} +@d pdftex_revision=="8" { \.{\\pdftexrevision} } +@d pdftex_version_string=='-1.40.8-alpha-20080323' {current \pdfTeX\ version} @# -@d pdfeTeX_banner=='This is pdfeTeX, Version 3.141592',pdftex_version_string,eTeX_version_string +@d pdfeTeX_banner=='This is pdfeTeX, Version 3.1415926',pdftex_version_string,eTeX_version_string {printed when \pdfeTeX\ starts} @# -@d pdfTeX_banner=='This is pdfTeX, Version 3.141592',pdftex_version_string +@d pdfTeX_banner=='This is pdfTeX, Version 3.1415926',pdftex_version_string {printed when \pdfTeX\ starts} @# -@d TeX_banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts} +@d TeX_banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts} @# @d banner==pdfeTeX_banner @# @@ -360,6 +360,7 @@ portions of the program heading. Actually the heading shown here is not quite normal: The |program| line does not mention any |output| file, because \ph\ would ask the \TeX\ user to specify a file name if |output| were specified here. +@:PASCAL H}{\ph@> @^system dependencies@> @d mtype==t@&y@&p@&e {this is a \.{WEB} coding trick:} @@ -452,8 +453,9 @@ directives shown below specify full checking and inclusion of the \PASCAL\ debugger when \TeX\ is being debugged, but they cause range checking and other redundant code to be eliminated when the production system is being generated. Arithmetic overflow will be detected in all cases. +@:PASCAL H}{\ph@> @^system dependencies@> -@^Overflow in arithmetic@> +@^overflow in arithmetic@> @<Compiler directives@>= @{@&$C-,A+,D-@} {no range check, catch arithmetic overflow, no debug overhead} @@ -487,6 +489,7 @@ if the compiler wants one. (Of course, if no default mechanism is available, the |case| statements of \TeX\ will have to be laboriously extended by listing all remaining cases. People who are stuck with such \PASCAL s have, in fact, done this, successfully but not happily!) +@:PASCAL H}{\ph@> @d othercases == others: {default for cases not listed explicitly} @d endcases == @+end {follows the default case in an extended |case| statement} @@ -979,6 +982,7 @@ begin rewrite(f,name_of_file,'/O'); w_open_out:=rewrite_OK(f); end; @ Files can be closed with the \ph\ routine `|close(f)|', which +@:PASCAL H}{\ph@> @^system dependencies@> should be used when all input or output with respect to |f| has been completed. This makes |f| available to be opened again, if desired; and if |f| was used for @@ -1094,6 +1098,7 @@ is considered an output file the file variable is |term_out|. @ Here is how to open the terminal files in \ph. The `\.{/I}' switch suppresses the first |get|. +@:PASCAL H}{\ph@> @^system dependencies@> @d t_open_in==reset(term_in,'TTY:','/O/I') {open the terminal for text input} @@ -1111,6 +1116,7 @@ issue an unexpected error message). The third, |wake_up_terminal|, is supposed to revive the terminal if the user has disabled it by some instruction to the operating system. The following macros show how these operations can be specified in \ph: +@:PASCAL H}{\ph@> @^system dependencies@> @d update_terminal == break(term_out) {empty the terminal output buffer} @@ -1249,6 +1255,7 @@ not to those generated dynamically by the user.) Some \PASCAL\ compilers won't pack integers into a single byte unless the integers lie in the range |-128..127|. To accommodate such systems we access the string pool only via macros that can easily be redefined. +@^system dependencies@> @d si(#) == # {convert from |ASCII_code| to |packed_ASCII_code|} @d so(#) == # {convert from |packed_ASCII_code| to |ASCII_code|} @@ -1417,8 +1424,8 @@ extended character set recommended in {\sl The \TeX book\/} would, for example, be `|k in [0,@'10..@'12,@'14,@'15,@'33,@'177..@'377]|'. If character |k| cannot be printed, and |k<@'200|, then character |k+@'100| or |k-@'100| must be printable; moreover, ASCII codes |[@'41..@'46, -@'60..@'71, @'141..@'146, @'160..@'171]| must be printable. -Thus, at least 80 printable characters are needed. +@'60..@'71, @'136, @'141..@'146, @'160..@'171]| must be printable. +Thus, at least 81 printable characters are needed. @:TeXbook}{\sl The \TeX book@> @^character set dependencies@> @^system dependencies@> @@ -1730,9 +1737,9 @@ to negative arguments, since such operations are not implemented consistently by all \PASCAL\ compilers. @<Basic print...@>= -procedure print_int(@!n:integer); {prints an integer in decimal form} +procedure print_int(@!n:longinteger); {prints an integer in decimal form} var k:0..23; {index to current digit; we assume that $|n|<10^{23}$} -@!m:integer; {used to negate |n| in possibly dangerous cases} +@!m:longinteger; {used to negate |n| in possibly dangerous cases} begin k:=0; if n<0 then begin print_char("-"); @@ -2343,7 +2350,7 @@ meters); two such quantities can be added without overflow on a 32-bit computer. The present implementation of \TeX\ does not check for overflow when -@^Overflow in arithmetic@> +@^overflow in arithmetic@> dimensions are added or subtracted. This could be done by inserting a few dozen tests of the form `\ignorespaces|if x>=@'10000000000 then @t\\{report\_overflow}@>|', but the chance of overflow is so remote that @@ -3702,7 +3709,7 @@ leader_ptr(p):=null; glue_ptr(p):=q; incr(glue_ref_count(q)); new_glue:=p; end; -@ Still another subroutine is needed: this one is sort of a combination +@ Still another subroutine is needed: This one is sort of a combination of |new_param_glue| and |new_glue|. It creates a glue node for one of the current glue parameters, but it makes a fresh copy of the glue specification, since that specification will probably be subject to change, @@ -6860,7 +6867,7 @@ the values of |sa_chain| and |sa_level| respectively. @d save_level(#)==save_stack[#].hh.b1 {saved level for regions 5 and 6, or group code} @d save_index(#)==save_stack[#].hh.rh - {|eqtb| location or |save_stack| location} + {|eqtb| location or token or |save_stack| location} @d restore_old_value=0 {|save_type| when a value should be restored later} @d restore_zero=1 {|save_type| when an undefined entry should be restored} @d insert_token=2 {|save_type| when a token is being saved for later use} @@ -6889,7 +6896,7 @@ one that starts with \.{\\begingroup} should end with \.{\\endgroup}. @d align_group=6 {code for `\.{\\halign}\grp', `\.{\\valign}\grp'} @d no_align_group=7 {code for `\.{\\noalign}\grp'} @d output_group=8 {code for output routine} -@d math_group=9 {code for, e.g, `\.{\char'136}\grp'} +@d math_group=9 {code for, e.g., `\.{\char'136}\grp'} @d disc_group=10 {code for `\.{\\discretionary}\grp\grp\grp'} @d insert_group=11 {code for `\.{\\insert}\grp', `\.{\\vadjust}\grp'} @d vcenter_group=12 {code for `\.{\\vcenter}\grp'} @@ -8233,7 +8240,7 @@ when detecting a blank line. @!par_token:halfword; {token representing `\.{\\par}'} @ @<Put each...@>= -primitive("par",par_end,256); {cf. |scan_file_name|} +primitive("par",par_end,256); {cf.\ |scan_file_name|} @!@:par_}{\.{\\par} primitive@> par_loc:=cur_val; par_token:=cs_token_flag+par_loc; @@ -8341,7 +8348,7 @@ label restart, {go here to get the next input token} exit; {go here when the next input token has been got} var k:0..buf_size; {an index into |buffer|} @!t:halfword; {a token} -@!cat:0..15; {|cat_code(cur_chr)|, usually} +@!cat:0..max_char_code; {|cat_code(cur_chr)|, usually} @!c,@!cc:ASCII_code; {constituents of a possible expanded code} @!d:2..3; {number of excess characters in an expanded code} begin restart: cur_cs:=0; @@ -8738,9 +8745,7 @@ or the evaluation of the conditional. |get_next| has already been called. \yskip\noindent -In fact, these three procedures account for {\sl all\/} uses of |get_next|, -except for two places in the ``inner loop'' when |cur_tok| need not be set, -and except when the arguments to \.{\\ifx} are being scanned. +In fact, these three procedures account for almost every use of |get_next|. @ No new control sequences will be defined except during a call of |get_token|, or when \.{\\csname} compresses a token list, because @@ -9258,6 +9263,7 @@ help6("I've run across a `}' that doesn't seem to match anything.")@/ ("argument that might be the root of the problem. But if")@/ ("your `}' was spurious, just type `2' and it will go away."); incr(align_state); long_state:=call; cur_tok:=par_token; ins_error; +goto continue; end {a white lie; the \.{\\par} won't always trigger a runaway} @ If |long_state=outer_call|, a runaway argument has already been reported. @@ -9737,11 +9743,8 @@ if abs(mode)<>m then if level<>tok_val then scanned_result(0)(dimen_val) else scanned_result(0)(int_val); end -else if m=vmode then - begin cur_val:=prev_depth; cur_val_level:=dimen_val; - end -else begin cur_val:=space_factor; cur_val_level:=int_val; - end +else if m=vmode then scanned_result(prev_depth)(dimen_val) +else scanned_result(space_factor)(int_val) @ @<Fetch the |dead_cycles| or the |insert_penalties|@>= begin if m=0 then cur_val:=dead_cycles @@ -10037,7 +10040,7 @@ comes into action before any of the basic scanning routines has assigned them a value. @<Set init...@>= -cur_val:=0; cur_val_level:=int_val; radix:=0; cur_order:=0; +cur_val:=0; cur_val_level:=int_val; radix:=0; cur_order:=normal; @ The |scan_int| routine is used also to scan the integer part of a fraction; for example, the `\.3' in `\.{3.14159}' will be found by @@ -10350,7 +10353,7 @@ if mag<>1000 then end @ The necessary conversion factors can all be specified exactly as -fractions whose numerator and denominator add to 32768 or less. +fractions whose numerator and denominator sum to 32768 or less. According to the definitions here, $\rm2660\,dd\approx1000.33297\,mm$; this agrees well with the value $\rm1000.333\,mm$ cited by Bosshard @^Bosshard, Hans Rudolf@> @@ -11893,7 +11896,7 @@ of three system-dependent procedures called |begin_name|, |more_name|, and |end_name|. In essence, if the user-specified characters of the file name are $c_1\ldots c_n$, the system-independent driver program does the operations -$$|begin_name|;\,|more_name|(c_1);\,\ldots\,;|more_name|(c_n); +$$|begin_name|;\,|more_name|(c_1);\,\ldots\,;\,|more_name|(c_n); \,|end_name|.$$ These three procedures communicate with each other via global variables. Afterwards the file name will appear in the string pool as three strings @@ -12956,6 +12959,7 @@ fget; read_sixteen(nk); fget; read_sixteen(ne); fget; read_sixteen(np); if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort; +if (nw=0)or(nh=0)or(nd=0)or(ni=0) then abort; end @ The preliminary settings of the index-offset variables |char_base|, @@ -14801,7 +14805,8 @@ if width(p)+h_offset>max_h then max_h:=width(p)+h_offset @ At the end of the program, we must finish things off by writing the post\-amble. If |total_pages=0|, the \.{DVI} file was never opened. -If |total_pages>=65536|, the \.{DVI} file will lie. +If |total_pages>=65536|, the \.{DVI} file will lie. And if +|max_push>=65536|, the user deserves whatever chaos might ensue. An integer variable |k| will be declared for use by this routine. @@ -15091,7 +15096,7 @@ end @!pdf_file: byte_file; {the PDF output file} @!pdf_buf: ^eight_bits; {pointer to the PDF output buffer or PDF object stream buffer} @!pdf_buf_size: integer; {end of PDF output buffer or PDF object stream buffer} -@!pdf_ptr: integer; {pointer to the first unused byte in the PDF buffer or object stream buffer} +@!pdf_ptr: longinteger; {pointer to the first unused byte in the PDF buffer or object stream buffer} @!pdf_op_buf: ^eight_bits; {the PDF output buffer} @!pdf_os_buf: ^eight_bits; {the PDF object stream buffer} @!pdf_os_buf_size: integer; {current size of the PDF object stream buffer, grows dynamically} @@ -15104,8 +15109,8 @@ end @!pdf_os_mode: boolean; {true if producing object stream} @!pdf_os_enable: boolean; {true if object streams are globally enabled} @!pdf_os_cur_objnum: integer; {number of current object stream object} -@!pdf_gone: integer; {number of bytes that were flushed to output} -@!pdf_save_offset: integer; {to save |pdf_offset|} +@!pdf_gone: longinteger; {number of bytes that were flushed to output} +@!pdf_save_offset: longinteger; {to save |pdf_offset|} @!zip_write_state: integer; {which state of compression we are in} @!fixed_pdf_minor_version: integer; {fixed minor part of the PDF version} @!fixed_pdf_objcompresslevel: integer; {fixed level for activating PDF object streams} @@ -15120,6 +15125,7 @@ end @!microseconds: integer; @!fixed_pdf_draftmode: integer; {fixed \\pdfdraftmode} @!fixed_pdf_draftmode_set: boolean; {|fixed_pdf_draftmode| has been set?} +@!pdf_page_group_val: integer; @ @<Set init...@>= pdf_gone := 0; @@ -15137,6 +15143,8 @@ zip_write_state := no_zip; pdf_minor_version_written := false; fixed_pdfoutput_set := false; fixed_pdf_draftmode_set := false; +pdf_page_group_val := -1; + @ @p function fix_int(val, min, max: integer): integer; @@ -15221,8 +15229,10 @@ neccesary. We call |pdf_begin_stream| to begin a stream and |pdf_end_stream| to finish it. The stream contents will be compressed if compression is turn on. @p procedure pdf_flush; {flush out the |pdf_buf|} +var saved_pdf_gone : longinteger; begin if not pdf_os_mode then begin + saved_pdf_gone := pdf_gone; case zip_write_state of no_zip: if pdf_ptr > 0 then begin if fixed_pdf_draftmode = 0 then write_pdf(0, pdf_ptr - 1); @@ -15237,6 +15247,8 @@ begin end; end; pdf_ptr := 0; + if saved_pdf_gone > pdf_gone then + pdf_error("file size", "File size exceeds architectural limits (pdf_gone wraps around)"); end; end; @@ -15421,9 +15433,9 @@ begin str_in_str := true; end; -procedure pdf_print_int(n:integer); {print out a integer to PDF buffer} +procedure pdf_print_int(n:longinteger); {print out a integer to PDF buffer} var k:integer; {index to current digit ($0\le k\le23$); we assume that $|n|<10^{23}$} -m:integer; {used to negate |n| in possibly dangerous cases} +m:longinteger; {used to negate |n| in possibly dangerous cases} begin k:=0; if n<0 then @@ -16022,7 +16034,9 @@ the same type. @<Types...@>= @!obj_entry = record@;@/ - int0, int1, int2, int3, int4: integer; + int0, int1: integer; + int2: longinteger; + int3, int4: integer; end; @ The first field contains information representing identifier of this object. @@ -16282,8 +16296,8 @@ so we can use this field for both} @!pdf_last_pages: integer; {pointer to most recently generated pages object} @!pdf_last_page: integer; {pointer to most recently generated page object} @!pdf_last_stream: integer; {pointer to most recently generated stream} -@!pdf_stream_length: integer; {length of most recently generated stream} -@!pdf_stream_length_offset: integer; {file offset of the last stream length} +@!pdf_stream_length: longinteger; {length of most recently generated stream} +@!pdf_stream_length_offset: longinteger; {file offset of the last stream length} @!pdf_seek_write_length: boolean; {flag whether to seek back and write \.{/Length}} @!pdf_last_byte: integer; {byte most recently written to PDF file; for \.{endstream} in new line} @!pdf_append_list_arg: integer; {for use with |pdf_append_list|} @@ -16597,7 +16611,7 @@ end; ((# >= 'A') and (# <= 'F')) or ((# >= 'a') and (# <= 'f'))) -@p procedure pdf_print_fw_int(n, w: integer); {print out an integer with +@p procedure pdf_print_fw_int(n: longinteger; w: integer); {print out an integer with fixed width; used for outputting cross-reference table} var k: integer; {$0\le k\le23$} begin @@ -16611,10 +16625,10 @@ begin end; end; -procedure pdf_out_bytes(n, w: integer); {print out an integer as +procedure pdf_out_bytes(n: longinteger; w: integer); {print out an integer as a number of bytes; used for outputting \.{/XRef} cross-reference stream} var k: integer; -byte: array[0..3] of integer; {digits in a number being output} +byte: array[0..7] of integer; {digits in a number being output} begin k := 0; repeat byte[k] := n mod 256; n := n div 256; incr(k); @@ -18841,6 +18855,12 @@ pdf_print_ln("]"); if pdf_page_attr <> null then pdf_print_toks_ln(pdf_page_attr); @<Generate parent pages object@>; +if pdf_page_group_val > 0 then begin + pdf_print("/Group "); + pdf_print_int(pdf_page_group_val); + pdf_print_ln(" 0 R"); + pdf_page_group_val := -1; +end; @<Generate array of annotations or beads in page@>; pdf_end_dict @@ -19464,8 +19484,8 @@ write_fontstuff @ We will generate in each single step the parents of all Pages/Page objects in the previous level. These new generated Pages object will create a new level of -Pages tree. We will repeat this until search only one Pages object. This one -will be the Root object. +the Pages tree. We will repeat this until we have only one Pages object. This +one will be the Root object. @<Output pages tree@>= a := sys_obj_ptr + 1; {all Pages objects whose children are not Page objects @@ -19741,14 +19761,18 @@ print_mod_date; @ @<Glob...@>= @!pdftex_banner: str_number; {the complete banner} -@ @<Output the |obj_tab|@>= +@ @<Build a linked list of free objects@>= l := 0; +set_obj_fresh(l); {null object at begin of list of free objects} for k := 1 to sys_obj_ptr do if not is_obj_written(k) then begin obj_link(l) := k; l := k; end; -obj_link(l) := 0; +obj_link(l) := 0 + +@ @<Output the |obj_tab|@>= +@<Build a linked list of free objects@>; pdf_save_offset := pdf_offset; pdf_print_ln("xref"); pdf_print("0 "); pdf_print_int_ln(obj_ptr + 1); @@ -19767,7 +19791,13 @@ end @ @<Output the cross-reference stream dictionary@>= pdf_new_dict(obj_type_others, 0, 0); -if obj_offset(sys_obj_ptr) > 16777215 then +if (obj_offset(sys_obj_ptr) > 16777215) + and (obj_offset(sys_obj_ptr) > ((16777216 * 256) - 1)) then + {this obviously works only on platforms with more than 32 bits; the +expression is not a constant because otherwise tangle would scream number too +large} + xref_offset_width := 5 +else if obj_offset(sys_obj_ptr) > 16777215 then xref_offset_width := 4 else if obj_offset(sys_obj_ptr) > 65535 then xref_offset_width := 3 @@ -19775,13 +19805,7 @@ else if obj_offset(sys_obj_ptr) > 255 then xref_offset_width := 2 else xref_offset_width := 1; -l := 0; -for k := 1 to sys_obj_ptr do - if not is_obj_written(k) then begin - obj_link(l) := k; - l := k; - end; -obj_link(l) := 0; +@<Build a linked list of free objects@>; pdf_print_ln("/Type /XRef"); pdf_print("/Index [0 "); pdf_print_int(obj_ptr); @@ -20769,7 +20793,7 @@ baselineskip calculation is handled by the |append_to_vlist| routine. @p procedure append_to_vlist(@!b:pointer); var d:scaled; {deficiency of space between baselines} -@!p:pointer; {a new glue specification} +@!p:pointer; {a new glue node} begin if prev_depth>pdf_ignored_dimen then begin d:=width(baseline_skip)-prev_depth-height(b); if d<line_skip_limit then p:=new_param_glue(line_skip_code) @@ -21173,11 +21197,11 @@ radical_noad: begin print_esc("radical"); print_delimiter(left_delimiter(p)); end; accent_noad: begin print_esc("accent"); print_fam_and_char(accent_chr(p)); end; -left_noad: begin print_esc("left"); print_delimiter(nucleus(p)); +left_noad: begin print_esc("left"); print_delimiter(delimiter(p)); end; right_noad: begin if subtype(p)=normal then print_esc("right") else print_esc("middle"); - print_delimiter(nucleus(p)); + print_delimiter(delimiter(p)) end; end; if type(p)<left_noad then @@ -21257,7 +21281,7 @@ larger as the type gets smaller.) @<Basic printing procedures@>= procedure print_size(@!s:integer); -begin if s=0 then print_esc("textfont") +begin if s=text_size then print_esc("textfont") else if s=script_size then print_esc("scriptfont") else print_esc("scriptscriptfont"); end; @@ -21869,8 +21893,8 @@ if subtype(q)=mu_glue then else if (cur_size<>text_size)and(subtype(q)=cond_math_glue) then begin p:=link(q); if p<>null then if (type(p)=glue_node)or(type(p)=kern_node) then - begin link(q):=link(p); link(p):=null; flush_node_list(p); - end; + begin link(q):=link(p); link(p):=null; flush_node_list(p); + end; end @ @<Cases for noads that can follow a |bin_noad|@>= @@ -23245,7 +23269,7 @@ widths. Let $w_{ij}$ be the maximum of the natural widths of all entries that span columns $i$ through $j$, inclusive. The alignrecord for column~$i$ contains $w_{ii}$ in its |width| field, and there is also a linked list of the nonzero $w_{ij}$ for increasing $j$, accessible via the |info| field; -these span nodes contain the value $j-i-1+|min_quarterword|$ in their +these span nodes contain the value $j-i+|min_quarterword|$ in their |link| fields. The values of $w_{ii}$ were initialized to |null_flag|, which we regard as $-\infty$. @@ -23460,8 +23484,8 @@ it. (In case the enclosing mode is |mmode|, for displayed formulas, we will need to insert glue before and after the display; that part of the program will be deferred until we're more familiar with such operations.) -In horizontal mode, the |clang| part of |aux| is undefined; an over-cautious -\PASCAL\ runtime system may complain about this. +In restricted horizontal mode, the |clang| part of |aux| is undefined; +an over-cautious \PASCAL\ runtime system may complain about this. @^dirty \PASCAL@> @<Insert the \(c)current list into its environment@>= @@ -23493,7 +23517,7 @@ line-breaking problem can be regarded as a special case of the problem of computing the shortest path in an acyclic network. The cited paper includes numerous examples and describes the history of line breaking as it has been practiced by printers through the ages. The present implementation adds two -new ideas to the algorithm of 1980: memory space requirements are considerably +new ideas to the algorithm of 1980: Memory space requirements are considerably reduced by using smaller records for inactive nodes than for active ones, and arithmetic overflow is avoided by using ``delta distances'' instead of keeping track of the total distance from the beginning of the paragraph to the @@ -23717,7 +23741,7 @@ macro makes such six-tuples convenient. @d save_active_width(#) == prev_active_width[#] := active_width[#] @d restore_active_width(#) == active_width[#] := prev_active_width[#] -@<Glo...@>= +@<Glob...@>= @!active_width:array[1..8] of scaled; {distance from first active node to~|cur_p|} @!cur_active_width:array[1..8] of scaled; {distance from current active node} @@ -23836,7 +23860,7 @@ for breakpoints. This variable is global, since it is used both by |line_break| and by its subprocedure |try_break|. Another global variable called |threshold| is used to determine the feasibility -of individual lines: breakpoints are feasible if there is a way to reach +of individual lines: Breakpoints are feasible if there is a way to reach them without creating lines whose badness exceeds |threshold|. (The badness is compared to |threshold| before penalties are added, so that penalty values do not affect the feasibility of breakpoints, except that @@ -26158,7 +26182,7 @@ $c_{k+1}$. @ @<Glob...@>= @!hyph_word:array[hyph_pointer] of str_number; {exception words} -@!hyph_list:array[hyph_pointer] of pointer; {list of hyphen positions} +@!hyph_list:array[hyph_pointer] of pointer; {lists of hyphen positions} @!hyph_count:hyph_pointer; {the number of words in the exception dictionary} @ @<Local variables for init...@>= @@ -27309,7 +27333,9 @@ if page_head<>page_tail then while r<>page_ins_head do begin print_ln; print_esc("insert"); t:=qo(subtype(r)); print_int(t); print(" adds "); - t:=x_over_n(height(r),1000)*count(t); print_scaled(t); + if count(t)=1000 then t:=height(r) + else t:=x_over_n(height(r),1000)*count(t); + print_scaled(t); if type(r)=split_up then begin q:=page_head; t:=0; repeat q:=link(q); @@ -28195,11 +28221,9 @@ main_lig_loop:@<If there's a ligature/kern command relevant to |cur_l| and main_loop_move_lig:@<Move the cursor past a pseudo-ligature, then |goto main_loop_lookahead| or |main_lig_loop|@> -@ If the current horizontal list is empty, the reference to |character(tail)| -here is not strictly legal, since |tail| will be a node freshly returned by -|get_avail|. But this should cause no problem on most implementations, and we -do want the inner loop to be fast. -@^dirty \PASCAL@> +@ If |link(cur_q)| is nonnull when |wrapup| is invoked, |cur_q| points to +the list of characters that were consumed while building the ligature +character~|cur_l|. A discretionary break is not inserted for an explicit hyphen when we are in restricted horizontal mode. In particular, this avoids putting discretionary @@ -28229,8 +28253,8 @@ nodes inside of other discretionaries. end @d wrapup(#)==if cur_l<non_char then - begin if character(tail)=qi(hyphen_char[main_f]) then if link(cur_q)>null then - ins_disc:=true; + begin if link(cur_q)>null then + if character(tail)=qi(hyphen_char[main_f]) then ins_disc:=true; if ligature_present then pack_lig(#); if ins_disc then begin ins_disc:=false; @@ -28252,14 +28276,14 @@ main_i:=char_info(main_f)(cur_l); if not char_exists(main_i) then begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch; end; -tail_append(lig_stack) {|main_loop_lookahead| is next} +link(tail):=lig_stack; tail:=lig_stack {|main_loop_lookahead| is next} @ Here we are at |main_loop_move_lig|. When we begin this code we have |cur_q=tail| and |cur_l=character(lig_stack)|. @<Move the cursor past a pseudo-ligature...@>= main_p:=lig_ptr(lig_stack); -if main_p>null then tail_append(main_p); +if main_p>null then tail_append(main_p); {append a single character} temp_ptr:=lig_stack; lig_stack:=link(temp_ptr); free_node(temp_ptr,small_node_size); main_i:=char_info(main_f)(cur_l); ligature_present:=true; @@ -28305,6 +28329,7 @@ At the beginning of this code we have |main_i=char_info(main_f)(cur_l)|. tmp_k1 := get_auto_kern(main_f, cur_l, cur_r); @<If |tmp_k1| is not null then append that kern@>; if char_tag(main_i)<>lig_tag then goto main_loop_wrapup; +if cur_r=non_char then goto main_loop_wrapup; main_k:=lig_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq; if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2; main_k:=lig_kern_restart(main_f)(main_j); @@ -28852,7 +28877,7 @@ constructions like `\.{\\setbox3=}' can be followed by a variety of different kinds of boxes, and we would like to encode such things in an efficient way. -In other words, there are two problems: To represent the context of a box, +In other words, there are two problems: to represent the context of a box, and to represent its type. The first problem is solved by putting a ``context code'' on the |save_stack|, @@ -28944,7 +28969,7 @@ vmode+hmove,hmode+vmove,mmode+vmove: begin t:=cur_chr; any_mode(leader_ship): scan_box(leader_flag-a_leaders+cur_chr); any_mode(make_box): begin_box(0); -@ The global variable |cur_box| will point to a newly-made box. If the box +@ The global variable |cur_box| will point to a newly made box. If the box is void, we will have |cur_box=null|. Otherwise we will have |type(cur_box)=hlist_node| or |vlist_node| or |rule_node|; the |rule_node| case can occur only with leaders. @@ -29013,8 +29038,7 @@ end @ @<Append a new leader node ...@>= begin @<Get the next non-blank non-relax...@>; if ((cur_cmd=hskip)and(abs(mode)<>vmode))or@| - ((cur_cmd=vskip)and(abs(mode)=vmode))or@| - ((cur_cmd=mskip)and(abs(mode)=mmode)) then + ((cur_cmd=vskip)and(abs(mode)=vmode)) then begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders); leader_ptr(tail):=cur_box; end @@ -31126,6 +31150,7 @@ shorthand_def: begin n:=cur_chr; get_r_token; p:=cur_cs; define(p,relax,256); @ @<Assignments@>= read_to_cs: begin j:=cur_chr; scan_int; n:=cur_val; if not scan_keyword("to") then +@.to@> begin print_err("Missing `to' inserted"); @.Missing `to'...@> help2("You should have said `\read<number> to \cs'.")@/ @@ -31301,6 +31326,7 @@ e:=false; {just in case, will be set |true| for sparse array elements} @<Compute the register location |l| and its type |p|; but |return| if invalid@>; if q=register then scan_optional_equals else if scan_keyword("by") then do_nothing; {optional `\.{by}'} +@.by@> arith_error:=false; if q<multiply then @<Compute result of |register| or |advance|, put it in |cur_val|@> @@ -31310,6 +31336,7 @@ if arith_error then @.Arithmetic overflow@> help2("I can't carry out that multiplication or division,")@/ ("since the result is out of range."); + if p>=glue_val then delete_glue_ref(cur_val); error; return; end; if p<glue_val then sa_word_define(l,cur_val) @@ -31317,7 +31344,7 @@ else begin trap_zero_glue; sa_define(l,cur_val)(l,glue_ref,cur_val); end; exit: end; -@ Here we use the fact that the consecutive codes |int_val...mu_val| and +@ Here we use the fact that the consecutive codes |int_val..mu_val| and |assign_int..assign_mu_glue| correspond to each other nicely. @<Compute the register location |l| and its type |p|...@>= @@ -32038,7 +32065,7 @@ so that the inverse relation between them is clear. The global variable |format_ident| is a string that is printed right after the |banner| line when \TeX\ is ready to start. For \.{INITEX} this string says simply `\.{(INITEX)}'; for other versions of \TeX\ it says, -for example, `\.{(preloaded format=plain 82.11.19)}', showing the year, +for example, `\.{(preloaded format=plain 1982.11.19)}', showing the year, month, and day that the format file was created. We have |format_ident=0| before \TeX's tables are loaded. @@ -32830,6 +32857,7 @@ if c=1 then if sa_mark<>null then if do_marks(destroy_marks,0,sa_mark) then sa_mark:=null; for c:=last_box_code to vsplit_code do flush_node_list(disc_ptr[c]); + if last_glue<>max_halfword then delete_glue_ref(last_glue); store_fmt_file; return;@+tini@/ print_nl("(\dump is performed only by INITEX)"); return; @:dump_}{\.{\\dump...only by INITEX}@> @@ -35059,9 +35087,7 @@ else d := 0 @ @d adv_past(#)==@+if subtype(#)=language_node then - begin cur_lang:=what_lang(#); l_hyf:=what_lhm(#); r_hyf:=what_rhm(#); - set_hyph_index; - end + begin cur_lang:=what_lang(#); l_hyf:=what_lhm(#); r_hyf:=what_rhm(#);@+end @<Advance \(p)past a whatsit node in the \(l)|line_break| loop@>=@+ begin @@ -35071,7 +35097,10 @@ if (subtype(cur_p) = pdf_refxform_node) or (subtype(cur_p) = pdf_refximage_node) end @ @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>=@+ -adv_past(s) +if subtype(s)=language_node then + begin cur_lang:=what_lang(s); l_hyf:=what_lhm(s); r_hyf:=what_rhm(s); + set_hyph_index; + end @ @<Prepare to move whatsit |p| to the current page, then |goto contribute|@>= begin @@ -35782,14 +35811,19 @@ begin end; procedure out_image(p: pointer); -var image: integer; +var image, groupref: integer; begin image := obj_ximage_data(pdf_ximage_objnum(p)); pdf_end_text; pdf_print_ln("q"); - if pdf_lookup_list(pdf_ximage_list, pdf_ximage_objnum(p)) = null then + if pdf_lookup_list(pdf_ximage_list, pdf_ximage_objnum(p)) = null then pdf_append_list(pdf_ximage_objnum(p))(pdf_ximage_list); if not is_pdf_image(image) then begin + if is_png_image(image) then begin + groupref := image_group_ref (image); + if (groupref>0) and (pdf_page_group_val<1) then + pdf_page_group_val := groupref; + end; pdf_print_real(ext_xn_over_d(pdf_width(p), ten_pow[6], one_hundred_bp), 4); pdf_print(" 0 0 "); @@ -35800,6 +35834,7 @@ begin pdf_print_bp(pdf_y(cur_v)); end else begin + if pdf_page_group_val<1 then pdf_page_group_val := image_group_ref (image); pdf_print_real(ext_xn_over_d(pdf_width(p), ten_pow[6], image_width(image)), 6); pdf_print(" 0 0 "); @@ -39040,7 +39075,7 @@ fields in the active nodes. @!best_pl_glue:array[very_loose_fit..tight_fit] of scaled; {corresponding glue stretch or shrink} -@ The new algorithm for the last line requires that the stretchability of +@ The new algorithm for the last line requires that the stretchability |par_fill_skip| is infinite and the stretchability of |left_skip| plus |right_skip| is finite. @@ -39091,10 +39126,10 @@ if arith_error then if active_short(r)>0 then g:=max_dimen@+else g:=-max_dimen; if g>0 then @<Set the value of |b| to the badness of the last line for stretching, - compute the corresponding |fit_class|, and |goto found|@> + compute the corresponding |fit_class, and |goto found||@> else if g<0 then @<Set the value of |b| to the badness of the last line for shrinking, - compute the corresponding |fit_class|, and |goto found|@>; + compute the corresponding |fit_class, and |goto found||@>; not_found:end @ These badness computations are rather similar to those of the standard diff --git a/Build/source/texk/web2c/pdftexdir/pdftexextra.in b/Build/source/texk/web2c/pdftexdir/pdftexextra.in index 6d7e9e67972..4b5a5bd66fe 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftexextra.in +++ b/Build/source/texk/web2c/pdftexdir/pdftexextra.in @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pdftexextra.in 114 2007-05-23 18:23:49Z ms $ +$Id$ */ /* pdftexextra.in: banner etc. for pdfTeX. @@ -26,7 +26,7 @@ $Id: pdftexextra.in 114 2007-05-23 18:23:49Z ms $ (generated from ../lib/texmfmp.c). */ -#define BANNER "This is pdfTeX, Version 3.141592-PDFTEX-VERSION-ETEX-VERSION" +#define BANNER "This is pdfTeX, Version 3.1415926-PDFTEX-VERSION-ETEX-VERSION" #define COPYRIGHT_HOLDER "Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX)" #define AUTHOR NULL #define PROGRAM_HELP PDFTEXHELP diff --git a/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc b/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc index 0addc85e425..f4d66cb5464 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc +++ b/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pdftoepdf.cc 181 2007-07-09 10:10:07Z oneiros $ +$Id$ */ #include <stdlib.h> @@ -50,19 +50,6 @@ $Id: pdftoepdf.cc 181 2007-07-09 10:10:07Z oneiros $ // This file is mostly C and not very much C++; it's just used to interface // the functions of xpdf, which happens to be written in C++. -// Used flags below: -// PDFTEX_COPY_PAGEGROUP -// If pdfTeX should copy a page group (a new feature in PDF 1.4 for -// transparency) of an included file. The current support for this is -// most likely broken. pdfTeX will at least give a warning if this flag -// is not set. Surprisingly Acrobat and Jaws display files without a -// page group correctly, so it might be safe to not set the flag. -// See also PDFTEX_COPY_PAGEGROUP_NOFAIL. -// PDFTEX_COPY_PAGEGROUP_NOFAIL -// If set to false, pdfTeX will treat a page group in an included file -// as an error and abort gracefully. This is only evaluated if -// PDFTEX_COPY_PAGEGROUP is set. - // The prefix "PTEX" for the PDF keys is special to pdfTeX; // this has been registered with Adobe by Hans Hagen. @@ -124,6 +111,8 @@ struct UsedEncoding { static InObj *inObjList; static UsedEncoding *encodingList; static GBool isInit = gFalse; +static bool groupIsIndirect; +static PdfObject lastGroup; // -------------------------------------------------------------------- // Maintain list of open embedded PDF files @@ -274,6 +263,21 @@ static int addInObj(InObjType type, Ref ref, fd_entry * fd, integer e) return n->num; } +static int getNewObjectNumber(Ref ref) +{ + InObj *p; + if (inObjList == 0) { + pdftex_fail("No objects copied yet"); + } else { + for (p = inObjList; p != 0; p = p->next) { + if (p->ref.num == ref.num && p->ref.gen == ref.gen) { + return p->num; + } + } + pdftex_fail("Object not yet copied: %i %i", ref.num, ref.gen); + } +} + static void copyObject(Object *); static void copyName(char *s) @@ -365,7 +369,7 @@ static void copyProcSet(Object * obj) static void copyFont(char *tag, Object * fontRef) { PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset, - fontfile, ffsubtype; + fontfile, ffsubtype, stemV; GfxFont *gfont; fd_entry *fd; fm_entry *fontmap; @@ -394,7 +398,9 @@ static void copyFont(char *tag, Object * fontRef) &ffsubtype)->isName() && !strcmp(ffsubtype->getName(), "Type1C"))) && (fontmap = lookup_fontmap(basefont->getName())) != NULL) { - fd = epdf_create_fontdescriptor(fontmap); + // copy the value of /StemV + fontdesc->dictLookup("StemV", &stemV); + fd = epdf_create_fontdescriptor(fontmap, stemV->getInt()); if (fontdesc->dictLookup("CharSet", &charset) && charset->isString() && is_subsetable(fontmap)) epdf_mark_glyphs(fd, charset->getString()->getCString()); @@ -568,7 +574,7 @@ static void copyObject(Object * obj) copyDict(&obj1); pdf_puts(">>\n"); pdf_puts("stream\n"); - copyStream(obj->getStream()->getBaseStream()); + copyStream(obj->getStream()->getUndecodedStream()); if (pdflastbyte != '\n') pdf_puts("\n"); pdf_puts("endstream"); // can't simply write pdfendstream() @@ -763,6 +769,29 @@ read_pdf_info(char *image_name, char *page_name, integer page_num, } } } + // get the group and make sure it's indirect + if (page->getGroup() != NULL) { + initDictFromDict(lastGroup, page->getGroup()); + if (lastGroup->dictGetLength() > 0) { + groupIsIndirect = lastGroup->isRef(); + if (groupIsIndirect) { + // FIXME: Here we already copy the object. It would be + // better to do this only after write_epdf, otherwise we + // may copy ununsed /Group objects + copyObject(&lastGroup); + epdf_lastGroupObjectNum = + getNewObjectNumber(lastGroup->getRef()); + } else { + // make the group an indirect object; copying is done later + // by write_additional_epdf_objects after write_epdf + epdf_lastGroupObjectNum = pdfnewobjnum(); + } + pdf_puts("\n"); + } + } else { + epdf_lastGroupObjectNum = 0; + } + pdf_doc->xref = pdf_doc->doc->getXRef(); return page_num; } @@ -775,7 +804,7 @@ void write_epdf(void) { Page *page; PdfObject contents, obj1, obj2; - PdfObject group, metadata, pieceinfo, separationInfo; + PdfObject metadata, pieceinfo, separationInfo; Object info; char *key; char s[256]; @@ -860,26 +889,14 @@ void write_epdf(void) pdf_puts(stripzeros(s)); // write the page Group if it's there - if (page->getGroup() != NULL) { -#if PDFTEX_COPY_PAGEGROUP -# if PDFTEX_COPY_PAGEGROUP_NOFAIL - // FIXME: This will most likely produce incorrect PDFs :-( - initDictFromDict(group, page->getGroup()); - if (group->dictGetLength() > 0) { + if (epdf_lastGroupObjectNum > 0) { + initDictFromDict(lastGroup, page->getGroup()); + if (lastGroup->dictGetLength() > 0) { pdf_puts("/Group "); - copyObject(&group); + groupIsIndirect = lastGroup->isRef(); + pdf_printf("%d 0 R", epdf_lastGroupObjectNum); pdf_puts("\n"); } -# else - // FIXME: currently we don't know how to handle Page Groups so we abort gracefully :-( - pdftex_fail - ("PDF inclusion: Page Group detected which pdfTeX can't handle. Sorry."); -# endif -#else - // FIXME: currently we don't know how to handle Page Groups so we at least give a warning :-( - pdftex_warn - ("PDF inclusion: Page Group detected which pdfTeX can't handle. Ignoring it."); -#endif } // write the page Metadata if it's there if (page->getMetadata() != NULL) { @@ -897,6 +914,11 @@ void write_epdf(void) pdf_puts("\n"); } } + // copy LastModified (needed when PieceInfo is there) + if (page->getLastModified() != NULL) { + pdf_printf("/LastModified (%s)\n", + page->getLastModified()->getCString()); + } // write the page SeparationInfo if it's there if (page->getSeparationInfo() != NULL) { initDictFromDict(separationInfo, page->getSeparationInfo()); @@ -909,13 +931,10 @@ void write_epdf(void) // write the Resources dictionary if (page->getResourceDict() == NULL) { // Resources can be missing (files without them have been spotted - // in the wild). This violates the PDF Ref., which claims they are - // required, but all RIPs accept them. - // We "replace" them with empty /Resources, although in form xobjects - // /Resources are not required. + // in the wild); in which case the /Resouces of the /Page will be used. + // "This practice is not recommended". pdftex_warn - ("PDF inclusion: no /Resources detected. Replacing with empty /Resources."); - pdf_puts("/Resources <<>>\n"); + ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)"); } else { initDictFromDict(obj1, page->getResourceDict()); page->getResourceDict()->incRef(); @@ -942,7 +961,7 @@ void write_epdf(void) contents->streamGetDict()->incRef(); copyDict(&obj1); pdf_puts(">>\nstream\n"); - copyStream(contents->getStream()->getBaseStream()); + copyStream(contents->getStream()->getUndecodedStream()); pdfendstream(); } else if (contents->isArray()) { pdfbeginstream(); @@ -965,6 +984,17 @@ void write_epdf(void) pdf_doc->xref = xref; } +// Called after the xobject generated by write_epdf has been finished; used to +// write out objects that have been made indirect +void write_additional_epdf_objects(void) +{ + if ((epdf_lastGroupObjectNum > 0) && !groupIsIndirect) { + zpdfbeginobj(epdf_lastGroupObjectNum, 2); + copyObject(&lastGroup); + pdfendobj(); + } +} + // Called when an image has been written and it's resources in image_tab are // freed and it's not referenced anymore. diff --git a/Build/source/texk/web2c/pdftexdir/pdftosrc.cc b/Build/source/texk/web2c/pdftexdir/pdftosrc.cc index 8e78fcf14cf..3fcf4a6852e 100644 --- a/Build/source/texk/web2c/pdftexdir/pdftosrc.cc +++ b/Build/source/texk/web2c/pdftexdir/pdftosrc.cc @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pdftosrc.cc 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include <stdlib.h> diff --git a/Build/source/texk/web2c/pdftexdir/pkin.c b/Build/source/texk/web2c/pdftexdir/pkin.c index 2d387c9d78c..738931c317e 100644 --- a/Build/source/texk/web2c/pdftexdir/pkin.c +++ b/Build/source/texk/web2c/pdftexdir/pkin.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: pkin.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ /* diff --git a/Build/source/texk/web2c/pdftexdir/ptexlib.h b/Build/source/texk/web2c/pdftexdir/ptexlib.h index 47978a1003a..7ec2bd9b738 100644 --- a/Build/source/texk/web2c/pdftexdir/ptexlib.h +++ b/Build/source/texk/web2c/pdftexdir/ptexlib.h @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: ptexlib.h 185 2007-07-09 10:43:44Z oneiros $ +$Id$ */ #ifndef PDFTEXLIB @@ -228,7 +228,7 @@ extern void pdftex_warn(const char *, ...); extern void setjobid(int, int, int, int); __attribute__ ((format(printf, 1, 2))) extern void tex_printf(const char *, ...); -extern void writestreamlength(integer, integer); +extern void writestreamlength(integer, longinteger); extern char *convertStringToPDFString(const char *in, int len); extern void printID(strnumber); extern void printcreationdate(); @@ -300,6 +300,7 @@ extern boolean checkimageb(integer); extern boolean checkimagec(integer); extern boolean checkimagei(integer); extern boolean ispdfimage(integer); +extern boolean ispngimage(integer); extern integer epdforigx(integer); extern integer epdforigy(integer); extern integer imageheight(integer); @@ -307,13 +308,14 @@ extern integer imagepages(integer); extern integer imagewidth(integer); extern integer imagexres(integer); extern integer imageyres(integer); +extern integer imagecolordepth(integer); +extern integer imagegroupref(integer); extern integer readimage(strnumber, integer, strnumber, integer, integer, integer, integer); extern void deleteimage(integer); extern void img_free(void); extern void updateimageprocset(integer); extern void writeimage(integer); -extern integer imagecolordepth(integer img); extern void dumpimagemeta(); extern void undumpimagemeta(integer, integer); diff --git a/Build/source/texk/web2c/pdftexdir/ptexmac.h b/Build/source/texk/web2c/pdftexdir/ptexmac.h index ff34c0cff90..dcd3c0aeb8d 100644 --- a/Build/source/texk/web2c/pdftexdir/ptexmac.h +++ b/Build/source/texk/web2c/pdftexdir/ptexmac.h @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: ptexmac.h 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #ifndef PDFTEXMAC diff --git a/Build/source/texk/web2c/pdftexdir/subfont.c b/Build/source/texk/web2c/pdftexdir/subfont.c index 0aab3abd92f..aaf20f8132a 100644 --- a/Build/source/texk/web2c/pdftexdir/subfont.c +++ b/Build/source/texk/web2c/pdftexdir/subfont.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: subfont.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/tex.ch0 b/Build/source/texk/web2c/pdftexdir/tex.ch0 index 696fe8ec21e..56a083ea19e 100644 --- a/Build/source/texk/web2c/pdftexdir/tex.ch0 +++ b/Build/source/texk/web2c/pdftexdir/tex.ch0 @@ -1,5 +1,5 @@ % -% Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +% Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> % % This file is part of pdfTeX. % @@ -17,18 +17,18 @@ % pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin % Street, Fifth Floor, Boston, MA 02110-1301 USA. % -% $Id: tex.ch0 114 2007-05-23 18:23:49Z ms $ +% $Id$ % % Change file to assist in creating the web2c-specific change file. % This one comes first, resolves inconsistencies between the generated % pdfetex.web and tex.ch @x [1.2] l.188 -@d TeX_banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts} +@d TeX_banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts} @# @d banner==pdfeTeX_banner @y -@d banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts} +@d banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts} @z @x [17.236] l.4960 - first web2c, then pdfTeX, then e-TeX additional integer parameters diff --git a/Build/source/texk/web2c/pdftexdir/tounicode.c b/Build/source/texk/web2c/pdftexdir/tounicode.c index 52903f73cc9..e4db308a298 100644 --- a/Build/source/texk/web2c/pdftexdir/tounicode.c +++ b/Build/source/texk/web2c/pdftexdir/tounicode.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: tounicode.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/ttf2afm.c b/Build/source/texk/web2c/pdftexdir/ttf2afm.c index 8fce9368ca0..609fc6ca7f5 100644 --- a/Build/source/texk/web2c/pdftexdir/ttf2afm.c +++ b/Build/source/texk/web2c/pdftexdir/ttf2afm.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: ttf2afm.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ /* diff --git a/Build/source/texk/web2c/pdftexdir/utils.c b/Build/source/texk/web2c/pdftexdir/utils.c index 636e4fe74d4..8d50fb9a9f8 100644 --- a/Build/source/texk/web2c/pdftexdir/utils.c +++ b/Build/source/texk/web2c/pdftexdir/utils.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: utils.c 168 2007-07-06 20:38:42Z oneiros $ +$Id$ */ #include "openbsd-compat.h" @@ -381,7 +381,7 @@ size_t xfwrite(void *ptr, size_t size, size_t nmemb, FILE * stream) int xfflush(FILE * stream) { if (fflush(stream) != 0) - pdftex_fail("fflush() failed"); + pdftex_fail("fflush() failed (%s)", strerror(errno)); return 0; } @@ -389,7 +389,7 @@ int xgetc(FILE * stream) { int c = getc(stream); if (c < 0 && c != EOF) - pdftex_fail("getc() failed"); + pdftex_fail("getc() failed (%s)", strerror(errno)); return c; } @@ -397,18 +397,18 @@ int xputc(int c, FILE * stream) { int i = putc(c, stream); if (i < 0) - pdftex_fail("putc() failed"); + pdftex_fail("putc() failed (%s)", strerror(errno)); return i; } -void writestreamlength(integer length, integer offset) +void writestreamlength(integer length, longinteger offset) { if (jobname_cstr == NULL) jobname_cstr = xstrdup(makecstring(jobname)); if (fixedpdfdraftmode == 0) { - xfseek(pdffile, offset, SEEK_SET, jobname_cstr); + xfseek(pdffile, (off_t)offset, SEEK_SET, jobname_cstr); fprintf(pdffile, "%li", (long int) length); - xfseek(pdffile, pdfoffset(), SEEK_SET, jobname_cstr); + xfseek(pdffile, (off_t)pdfoffset(), SEEK_SET, jobname_cstr); } } @@ -758,7 +758,7 @@ void printID(strnumber filename) md5_append(&state, (const md5_byte_t *) time_str, size); /* get the file name */ if (getcwd(pwd, sizeof(pwd)) == NULL) - pdftex_fail("getcwd() failed (path too long?)"); + pdftex_fail("getcwd() failed (%s), path too long?", strerror(errno)); file_name = makecstring(filename); md5_append(&state, (const md5_byte_t *) pwd, strlen(pwd)); md5_append(&state, (const md5_byte_t *) "/", 1); @@ -1060,7 +1060,7 @@ void getfiledump(strnumber s, int offset, int length) return; } recorder_record_input(file_name); - if (fseek(f, (long) offset, SEEK_SET) != 0) { + if (fseek(f, (off_t) offset, SEEK_SET) != 0) { xfree(file_name); return; } @@ -1543,6 +1543,9 @@ integer colorstackskippagestart(int colstack_no) if (!colstack->page_start) { return 1; } + if (colstack->page_current == NULL) { + return 0; + } if (strcmp(COLOR_DEFAULT, colstack->page_current) == 0) { return 2; } diff --git a/Build/source/texk/web2c/pdftexdir/vfpacket.c b/Build/source/texk/web2c/pdftexdir/vfpacket.c index 7b2e630d7b4..5cf36e5ce2f 100644 --- a/Build/source/texk/web2c/pdftexdir/vfpacket.c +++ b/Build/source/texk/web2c/pdftexdir/vfpacket.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: vfpacket.c 136 2007-06-24 21:30:09Z ms $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writeenc.c b/Build/source/texk/web2c/pdftexdir/writeenc.c index e38cd8ef9de..74a42e5f112 100644 --- a/Build/source/texk/web2c/pdftexdir/writeenc.c +++ b/Build/source/texk/web2c/pdftexdir/writeenc.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writeenc.c 152 2007-06-25 22:19:35Z ms $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writefont.c b/Build/source/texk/web2c/pdftexdir/writefont.c index d03ece7c1a7..9ab6f113b63 100644 --- a/Build/source/texk/web2c/pdftexdir/writefont.c +++ b/Build/source/texk/web2c/pdftexdir/writefont.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writefont.c 165 2007-07-06 18:54:49Z oneiros $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writeimg.c b/Build/source/texk/web2c/pdftexdir/writeimg.c index 982eca48a40..080ab3a37a6 100644 --- a/Build/source/texk/web2c/pdftexdir/writeimg.c +++ b/Build/source/texk/web2c/pdftexdir/writeimg.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writeimg.c 170 2007-07-06 21:00:55Z oneiros $ +$Id$ */ #include "ptexlib.h" @@ -38,6 +38,7 @@ integer epdf_selected_page; integer epdf_num_pages; integer epdf_page_box; void *epdf_doc; +integer epdf_lastGroupObjectNum; static integer new_image_entry(void) { @@ -50,6 +51,7 @@ static integer new_image_entry(void) image_ptr->width = 0; image_ptr->height = 0; image_ptr->colorspace_ref = 0; + image_ptr->group_ref = 0; return image_ptr++ - image_array; } @@ -83,6 +85,11 @@ boolean ispdfimage(integer img) return img_type(img) == IMAGE_TYPE_PDF; } +boolean ispngimage(integer img) +{ + return img_type(img) == IMAGE_TYPE_PNG; +} + boolean checkimageb(integer procset) { return procset & IMAGE_COLOR_B; @@ -135,6 +142,11 @@ integer imagecolordepth(integer img) } } +integer imagegroupref(integer img) +{ + return img_group_ref(img); +} + /* Patch ImageTypeDetection 2003/02/08 by Heiko Oberdiek. @@ -301,6 +313,7 @@ integer readimage(strnumber s, integer page_num, strnumber page_name, pdf_ptr(img)->orig_y = bp2int(epdf_orig_y); pdf_ptr(img)->selected_page = page_num; pdf_ptr(img)->doc = epdf_doc; + img_group_ref(img) = epdf_lastGroupObjectNum; break; case IMAGE_TYPE_PNG: img_pages(img) = 1; @@ -348,12 +361,20 @@ void writeimage(integer img) epdf_doc = pdf_ptr(img)->doc; epdf_selected_page = pdf_ptr(img)->selected_page; epdf_page_box = pdf_ptr(img)->page_box; + epdf_lastGroupObjectNum = img_group_ref(img); write_epdf(); break; default: pdftex_fail("unknown type of image"); } tex_printf(">"); + if (img_type(img) == IMAGE_TYPE_PDF) { + write_additional_epdf_objects(); + } else { + if (img_type(img) == IMAGE_TYPE_PNG) { + write_additional_png_objects(); + } + } cur_file_name = NULL; } @@ -462,6 +483,7 @@ void dumpimagemeta() dumpinteger(img_yres(img)); dumpinteger(img_pages(img)); dumpinteger(img_colorspace_ref(img)); + dumpinteger(img_group_ref(img)); /* the image_struct is not dumped at all, except for a few variables that are needed to restore the contents */ @@ -496,6 +518,7 @@ void undumpimagemeta(integer pdfversion, integer pdfinclusionerrorlevel) undumpinteger(img_yres(img)); undumpinteger(img_pages(img)); undumpinteger(img_colorspace_ref(img)); + undumpinteger(img_group_ref(img)); /* if img_name(img)==NULL -- which it shouldn't be -- the next line will trigger an assertion failure. */ diff --git a/Build/source/texk/web2c/pdftexdir/writejbig2.c b/Build/source/texk/web2c/pdftexdir/writejbig2.c index 1103f8280e2..9fc6ffaf2a6 100644 --- a/Build/source/texk/web2c/pdftexdir/writejbig2.c +++ b/Build/source/texk/web2c/pdftexdir/writejbig2.c @@ -75,7 +75,7 @@ object exists, reference it. Else create fresh one. 09 Dec. 2002: JBIG2 seg. page numbers > 0 are now set to 1, see PDF Ref. -$Id: writejbig2.c 114 2007-05-23 18:23:49Z ms $ +$Id$ ***********************************************************************/ #include "writejbig2.h" diff --git a/Build/source/texk/web2c/pdftexdir/writejbig2.h b/Build/source/texk/web2c/pdftexdir/writejbig2.h index 9b9ab78e373..bb32cc1a93d 100644 --- a/Build/source/texk/web2c/pdftexdir/writejbig2.h +++ b/Build/source/texk/web2c/pdftexdir/writejbig2.h @@ -20,7 +20,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. This is experimental JBIG2 image support to pdfTeX. JBIG2 image decoding is part of Adobe PDF-1.4, and requires Acroread 5.0 or later. -$Id: writejbig2.h 114 2007-05-23 18:23:49Z ms $ +$Id$ ***********************************************************************/ #include <stdlib.h> diff --git a/Build/source/texk/web2c/pdftexdir/writejpg.c b/Build/source/texk/web2c/pdftexdir/writejpg.c index 7a2e5248723..3f5534d6c4e 100644 --- a/Build/source/texk/web2c/pdftexdir/writejpg.c +++ b/Build/source/texk/web2c/pdftexdir/writejpg.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writejpg.c 114 2007-05-23 18:23:49Z ms $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writepng.c b/Build/source/texk/web2c/pdftexdir/writepng.c index c8f9eb6fb9e..0b4ec4c1609 100644 --- a/Build/source/texk/web2c/pdftexdir/writepng.c +++ b/Build/source/texk/web2c/pdftexdir/writepng.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,12 +17,14 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writepng.c 152 2007-06-25 22:19:35Z ms $ +$Id$ */ #include "ptexlib.h" #include "image.h" +static int transparent_page_group = -1; + void read_png_info(integer img) { double gamma; @@ -87,6 +89,20 @@ void read_png_info(integer img) pdftex_fail("unsupported type of color_type <%i>", png_info(img)->color_type); } + if (fixedpdfminorversion >= 4 + && (png_info(img)->color_type == PNG_COLOR_TYPE_GRAY_ALPHA + || png_info(img)->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) { + /* png with alpha channel in device colours; we have to add a Page + * Group to make Adobe happy, so we have to create a dummy group object + */ + if (transparent_page_group < 1) { + transparent_page_group = pdfnewobjnum(); + } + if (pdfpagegroupval < 1) { + pdfpagegroupval = transparent_page_group; + } + img_group_ref(img) = pdfpagegroupval; + } } @@ -471,12 +487,15 @@ void copy_png(integer img) } while (endflag == false); } +static boolean last_png_needs_page_group; + void write_png(integer img) { double gamma, checked_gamma; int i; integer palette_objnum = 0; + last_png_needs_page_group = false; if (fixedpdfminorversion < 5) fixedimagehicolor = 0; @@ -495,9 +514,13 @@ void write_png(integer img) } /* the switching between |png_info| and |png_ptr| queries has been trial and error. */ - if (fixedpdfminorversion > 1 && png_info(img)->interlace_type == PNG_INTERLACE_NONE && (png_ptr(img)->transformations == 0 || png_ptr(img)->transformations == 0x2000) /* gamma */ - &&!(png_ptr(img)->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || - png_ptr(img)->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + if (fixedpdfminorversion > 1 + && png_info(img)->interlace_type == PNG_INTERLACE_NONE + && (png_ptr(img)->transformations == PNG_TRANSFORM_IDENTITY + || png_ptr(img)->transformations == 0x2000) + /* gamma */ + && !(png_ptr(img)->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || + png_ptr(img)->color_type == PNG_COLOR_TYPE_RGB_ALPHA) && (fixedimagehicolor || (png_ptr(img)->bit_depth <= 8)) && (checked_gamma <= 1.01 && checked_gamma > 0.99) ) { @@ -562,18 +585,20 @@ void write_png(integer img) write_png_gray(img); break; case PNG_COLOR_TYPE_GRAY_ALPHA: - if (fixedpdfminorversion >= 4) + if (fixedpdfminorversion >= 4) { write_png_gray_alpha(img); - else + last_png_needs_page_group = true; + } else write_png_gray(img); break; case PNG_COLOR_TYPE_RGB: write_png_rgb(img); break; case PNG_COLOR_TYPE_RGB_ALPHA: - if (fixedpdfminorversion >= 4) + if (fixedpdfminorversion >= 4) { write_png_rgb_alpha(img); - else + last_png_needs_page_group = true; + } else write_png_rgb(img); break; default: @@ -583,3 +608,23 @@ void write_png(integer img) } pdfflush(); } + +static boolean transparent_page_group_was_written = false; + +/* Called after the xobject generated by write_png has been finished; used to + * write out additional objects */ +void write_additional_png_objects(void) +{ + if (last_png_needs_page_group) { + if (!transparent_page_group_was_written && transparent_page_group > 1) { + // create new group object + transparent_page_group_was_written = true; + pdfbeginobj(transparent_page_group, 2); + if (getpdfcompresslevel() == 0) { + pdf_puts("%PTEX Group needed for transparent pngs\n"); + } + pdf_puts("<</Type/Group /S/Transparency /CS/DeviceRGB /I true>>\n"); + pdfendobj(); + } + } +} diff --git a/Build/source/texk/web2c/pdftexdir/writet1.c b/Build/source/texk/web2c/pdftexdir/writet1.c index 879ba183d36..bd6939a82c8 100644 --- a/Build/source/texk/web2c/pdftexdir/writet1.c +++ b/Build/source/texk/web2c/pdftexdir/writet1.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writet1.c 164 2007-07-06 18:31:11Z oneiros $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writet3.c b/Build/source/texk/web2c/pdftexdir/writet3.c index 13e2a380fda..719fd52beea 100644 --- a/Build/source/texk/web2c/pdftexdir/writet3.c +++ b/Build/source/texk/web2c/pdftexdir/writet3.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writet3.c 164 2007-07-06 18:31:11Z oneiros $ +$Id$ */ #include "ptexlib.h" diff --git a/Build/source/texk/web2c/pdftexdir/writettf.c b/Build/source/texk/web2c/pdftexdir/writettf.c index 824da2888af..c8a22a6739d 100644 --- a/Build/source/texk/web2c/pdftexdir/writettf.c +++ b/Build/source/texk/web2c/pdftexdir/writettf.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writettf.c 134 2007-06-24 21:18:47Z ms $ +$Id$ */ #include "ptexlib.h" @@ -847,7 +847,7 @@ static int prepend_subset_tags(int index, char *p) { const boolean is_unicode = (name_tab[index].platform_id == 3); int i; - assert(index > 0 && index < name_record_num && fd_cur->subset_tag != NULL); + assert(index >= 0 && index < name_record_num && fd_cur->subset_tag != NULL); if (is_unicode) { for (i = 0; i < 6; ++i) { *p++ = 0; diff --git a/Build/source/texk/web2c/pdftexdir/writettf.h b/Build/source/texk/web2c/pdftexdir/writettf.h index 63358b09b23..32906211fdd 100644 --- a/Build/source/texk/web2c/pdftexdir/writettf.h +++ b/Build/source/texk/web2c/pdftexdir/writettf.h @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writettf.h 114 2007-05-23 18:23:49Z ms $ +$Id$ */ typedef signed char TTF_CHAR; diff --git a/Build/source/texk/web2c/pdftexdir/writezip.c b/Build/source/texk/web2c/pdftexdir/writezip.c index ec98bc03649..1cd16ec8ffb 100644 --- a/Build/source/texk/web2c/pdftexdir/writezip.c +++ b/Build/source/texk/web2c/pdftexdir/writezip.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writezip.c 168 2007-07-06 20:38:42Z oneiros $ +$Id$ */ #include "ptexlib.h" |