summaryrefslogtreecommitdiff
path: root/support/dktools/bmeps3.c
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/bmeps3.c
Initial commit
Diffstat (limited to 'support/dktools/bmeps3.c')
-rw-r--r--support/dktools/bmeps3.c1349
1 files changed, 1349 insertions, 0 deletions
diff --git a/support/dktools/bmeps3.c b/support/dktools/bmeps3.c
new file mode 100644
index 0000000000..52c7fd0632
--- /dev/null
+++ b/support/dktools/bmeps3.c
@@ -0,0 +1,1349 @@
+/*
+ WARNING: This file was generated by dkct.
+ Changes you make here will be lost if dkct is run again!
+ You should modify the original source and run dkct on it.
+ Original source: bmeps3.ctr
+*/
+
+/*
+Copyright (C) 2011-2017, Dirk Krause
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above opyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of the author nor the names of contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/** @file bmeps3.c The bmeps3 module.
+*/
+
+
+#line 12 "bmeps3.ctr"
+
+#include "dk3all.h"
+#if 0
+#include "dkt-version.h"
+#endif
+#include "dk4vers.h"
+#include "dk3bif.h"
+#include "dk3bmeo.h"
+#include "dk3bmeps.h"
+#include "dk3bm.h"
+
+
+
+
+
+#line 26 "bmeps3.ctr"
+
+
+
+/** Help text shown if no help file is found.
+*/
+static dkChar const * const bmeps3_default_help_text[] = {
+dkT(""),
+dkT("NAME"),
+dkT(""),
+dkT(" bmpp - Bitmap to PS/PDF converter"),
+dkT(""),
+dkT("SYNOPSIS"),
+dkT(""),
+dkT(" bmpp [-l<driver>[.<mode>][,<key>[=<value>]...]] [<options>] <file(s)>"),
+dkT(""),
+dkT("DESCRIPTION"),
+dkT(""),
+dkT("The program converts bitmap images from PNG, JPEG, or TIFF to PS/EPS and PDF."),
+dkT(""),
+dkT("Drivers:"),
+dkT("- ps"),
+dkT(" PostScript file, can be used to print."),
+dkT("- eps"),
+dkT(" Encapsulated PostScript (EPS), image for inclusion into documents."),
+dkT("- pdf"),
+dkT(" Portable document format (PDF)."),
+dkT("- bb"),
+dkT(" Bounding box information only, no image."),
+dkT(""),
+dkT("Output modes:"),
+dkT("- object"),
+dkT(" Object which can embedded into a text or drawing by a text processing"),
+dkT(" or drawing software."),
+dkT("- image"),
+dkT(" Image for stand-alone viewing."),
+dkT("- document"),
+dkT(" Fit the output to a given paper size for printing."),
+dkT(""),
+dkT("OPTIONS"),
+dkT(""),
+dkT("-h"),
+dkT("--help"),
+dkT("\tShow help text."),
+dkT(""),
+dkT("-v"),
+dkT("--version"),
+dkT("\tShow version number."),
+dkT(""),
+dkT("-L"),
+dkT("--license-terms"),
+dkT("\tShows license terms."),
+dkT(""),
+dkT("-t <type>"),
+dkT("\tInput image type, \"png\", \"jpeg\", or \"tiff\", must be specified when"),
+dkT("\tprocessing standard input or if the input file name suffix does"),
+dkT("\tnot indicate the type."),
+dkT(""),
+dkT("-m"),
+dkT("\tMake mode: Avoid unnecessary conversions if output file is up to date."),
+dkT("\tOnly used when processing a directory."),
+dkT(""),
+dkT("-s"),
+dkT("\tWrite to standard output, not to a file."),
+dkT(""),
+dkT("-o <key>[=<value>]"),
+dkT("\tDetailed conversion options."),
+dkT(""),
+dkT("NAME=VALUE PAIRS"),
+dkT(""),
+dkT("The key=value pairs set detailed conversion options. For boolean"),
+dkT("settings the value can be omitted, the presence of the name sets the option"),
+dkT("to active."),
+dkT("The following keys (and values) can be used:"),
+dkT(""),
+dkT("level=<pslevel>"),
+dkT("\tPS level, \"2\" or \"3\". Default: 3."),
+dkT(""),
+dkT("color[=<boolean>]"),
+dkT("\tColor output for PS/EPS output. For PDF output color is"),
+dkT("\talways enabled. This setting is ignored when passing DCT data from"),
+dkT("\tJPEG files to output directly."),
+dkT("\tDefault: On."),
+dkT(""),
+dkT("dsc[=<boolean>]"),
+dkT("\tDSC comments when producing PS/EPS output."),
+dkT("\tDefault: Off, except for ps.document."),
+dkT(""),
+dkT("draft[=<boolean>]"),
+dkT("\tDraft mode (small placeholder image only). Default: Off."),
+dkT(""),
+dkT("predictor=<predictor>"),
+dkT("\tPredictor for flate compressions, \"tiff\", \"sub\", \"up\","),
+dkT("\t\"average\", or \"paeth\". Default: none."),
+dkT(""),
+dkT("duplex[=<boolean>]"),
+dkT("\tDuplex mode when producing documents. Default: Off."),
+dkT(""),
+dkT("tumble[=<boolean>]"),
+dkT("\tTumble in addition to duplex mode. Default: Off."),
+dkT(""),
+dkT("dct[=<boolean>]"),
+dkT("\tDirect pass-through of DCT encoded data found in JPEG"),
+dkT("\tfiles. Default: On."),
+dkT(""),
+dkT("bg=<int>:<int>:<int>[:<boolean>]"),
+dkT("\tDefault background RGB color to be used if the input file"),
+dkT("\tdoes not contain a background color chunk. The optional boolean value"),
+dkT("\tat the end can be used to enforce this background over the background"),
+dkT("\tchunk. RGB values are in the range 0...255."),
+dkT("\tDefault: White, off."),
+dkT(""),
+dkT("interpolation[=<boolean>]"),
+dkT("\tImage interpolation. Default: On."),
+dkT(""),
+dkT("jpeg-interpolation[=<boolean>]"),
+dkT("\tImage interpolation if DCT data is passed through directly."),
+dkT("\tDefault: Off."),
+dkT(""),
+dkT("resolution=<resolution>"),
+dkT("\tResolution, either \"1:1\" (use a 1 point x 1 point square for"),
+dkT("\teach source pixel), \"chunk\" (use resolution data from image) or an"),
+dkT("\tinteger value for dpi."),
+dkT("\tDefault: 1:1 for objects, chunk for images,"),
+dkT("\tfit to paper size for documents."),
+dkT(""),
+dkT("paper=<paper>"),
+dkT("\tPaper size for documents. The paper size must be configured"),
+dkT("\tin a dk3paper.conf file. Only one from \"resolution\" or \"paper\" can be"),
+dkT("\tused."),
+dkT(""),
+dkT("make[=<boolean>]"),
+dkT("\tMake mode when processing directories."),
+dkT("\tDefault: Off."),
+dkT(""),
+dkT("bpc[=<boolean>]"),
+dkT("\tReduce the number of bits per component. Default: On."),
+dkT(""),
+dkT("EXIT STATUS"),
+dkT(""),
+dkT("0 on success, all other exit status codes indicate an error."),
+dkT(""),
+dkT("PREFERENCES"),
+dkT(""),
+dkT("/print/ps/level"),
+dkT("\tDefault PS level, 2 or 3."),
+dkT(""),
+dkT("EXAMPLES"),
+dkT(""),
+dkT("bmpp -lps.document,level=2,paper=A4,duplex,bpc myfax.tif"),
+dkT("\tconverts a fax TIFF file \"myfax.tif\" to \"myfax.ps\" for a PS 2 printer."),
+dkT(""),
+dkT("bmpp -l pdf.document,paper=A4,duplex fax.tif"),
+dkT("\tcreates a PDF file fax.pdf."),
+dkT(""),
+dkT("bmpp -l ps.object screenshot.png"),
+dkT("\tcreates a PS object file screenshot.ps for use with latex/dvips."),
+dkT(""),
+dkT("bmpp -l pdf.object screenshot.png"),
+dkT("\tcreates a PDF object file screenshot.pdf for use with pdflatex."),
+dkT(""),
+dkT("bmpp -l ps.image file.png"),
+dkT("\tcreates a PS image file.ps."),
+dkT(""),
+dkT("bmpp -l pdf.image file.png"),
+dkT("\tcreates a PDF image file.pdf."),
+dkT(""),
+dkT("FILES"),
+dkT(""),
+dkT("dk3paper.conf"),
+dkT("\tIf paper=... the named paper size must be configured in a"),
+dkT("\tdk3paper.conf file."),
+dkT(""),
+dkT("RESTRICTIONS"),
+dkT(""),
+dkT("The program uses the TIFFReadRGBAImage() function from the libtiff library to"),
+dkT("read TIFF images. The input file must meet the following conditions:"),
+dkT("- The file must be compliant to the \"TIFF baseline v6.0 standard\"."),
+dkT("- The number of bits of component must be 8 or less."),
+dkT("- The frames must not be too large, the system must be able to allocate the"),
+dkT(" 4*w*h bytes needed for image date in one piece."),
+dkT(""),
+dkT("TIFF refers to a group of different compression and encoding mechanisms."),
+dkT("A TIFF file is a sequence of data chunks, each data chunk contains a tag"),
+dkT("(chunk type identifier). A lot of tags is defined in standards, i.e. the"),
+dkT("\"TIFF baseline v6.0 standard\". Some software vendors add vendor-specific"),
+dkT("or non-standard tags when writing TIFF files."),
+dkT("So when processing TIFF files in bmpp, you should not be surprised to see"),
+dkT("warnings or error messages about unknown TIFF tags."),
+dkT("Neither bmpp nor the tifflib library are to blame for this, it's the"),
+dkT("responsibility of the people adding the non-standard tags."),
+dkT("Sometimes bmpp can read the image despite of the warnings/errors."),
+dkT(""),
+dkT("If you create bitmaps you want to process with bmpp, you should create PNG"),
+dkT("images instead of TIFF images if you have the choice."),
+dkT(""),
+dkT("AUTHOR"),
+dkT(""),
+dkT("Dirk Krause"),
+dkT(""),
+dkT("HISTORY"),
+dkT(""),
+dkT("The bmpp program replaces the bmeps program found in previous versions of"),
+dkT("dktools."),
+dkT(""),
+dkT("COPYRIGHT AND LICENSE"),
+dkT(""),
+dkT("Run"),
+dkT(" bmpp --license-terms"),
+dkT("to see the license conditions."),
+dkT(""),
+dkT("SEE ALSO"),
+dkT(""),
+dkT("http://dktools.sourceforge.net/bmpp.html"),
+dkT("\tThe DK tools and libraries homepage contains more information about"),
+dkT("\tbmpp and other programs."),
+dkT(""),
+dkT("http://gxhints.sourceforge.net"),
+dkT("\tThe Graphics Conversion Hints page recommends programs and shows"),
+dkT("\tprocedures for conversions between recent vector graphics formats."),
+dkT(""),
+dkT("http://netpbm.sourceforge.net (especially pnmtops)"),
+dkT("\tNetPBM is a toolkit for graphics images, including conversion of"),
+dkT("\timages between a variety of different formats."),
+dkT(""),
+NULL
+
+
+#line 252 "bmeps3.ctr"
+};
+
+
+
+/** Strings used to show version number.
+*/
+static dkChar const * const dk3bm_version_strings[] = {
+dkT("bmpp "),
+DKT_VERSION_DK
+};
+
+
+/** Options used by bmeps.
+*/
+static dk3_option_t const bmeps3_options[] = {
+ { dkT('l'), dkT("language"), 1 },
+ { dkT('m'), dkT("make"), 0 },
+ { dkT('s'), dkT("stdout"), 0 },
+ { dkT('t'), dkT("type"), 1 },
+ { dkT('h'), dkT("help"), 0 },
+ { dkT('v'), dkT("version"), 0 },
+ { dkT('L'), dkT("license-terms"), 0 },
+ { dkT('\0'),dkT("license"), 0 }
+};
+
+/** Number of options in @a bmeps3_options.
+*/
+static size_t const bmeps3_szoptions =
+sizeof(bmeps3_options)/sizeof(dk3_option_t);
+
+
+
+/** Names of supported input types.
+*/
+static dkChar const * const bmeps3_image_type_names[] = {
+/* 0 */
+dkT("png"),
+
+/* 1 */
+dkT("jpg"),
+
+/* 2 */
+dkT("jpeg"),
+
+/* 3 */
+dkT("tif"),
+
+/* 4 */
+dkT("tiff"),
+
+NULL
+
+
+#line 294 "bmeps3.ctr"
+};
+
+
+
+/** Suffixes for output files.
+*/
+static dkChar const * const bmeps3_output_suffixes[] = {
+dkT(".ps"),
+dkT(".eps"),
+dkT(".pdf"),
+dkT(".bb")
+};
+
+
+
+/** Strings, not localized.
+*/
+static dkChar const * const bmeps3_kw[] = {
+/* 0 */
+dkT("dktools"),
+
+/* 1 */
+dkT("bmeps3.str"),
+
+/* 2 */
+dkT("option"),
+
+NULL
+
+
+#line 326 "bmeps3.ctr"
+};
+
+
+
+/** Strings, replaced by localized version.
+*/
+static dkChar const * const bmeps3_message_texts[] = {
+/* 0 */
+dkT(""),
+
+NULL
+
+
+#line 336 "bmeps3.ctr"
+};
+
+
+
+/** License overview text.
+*/
+static dkChar const * const bmeps3_overview_license[] = {
+dkT(""),
+dkT("Overview"),
+dkT("========"),
+dkT("This software uses code from the following projects either directly"),
+dkT("or as a library:"),
+dkT(""),
+dkT("dktools\t\tDirk Krause's tools and libraries."),
+dkT("\t\tSee http://dktools.sourceforge.net for information."),
+#if DK3_HAVE_PNG_H
+dkT(""),
+dkT("libpng\t\tPNG reference library."),
+dkT("\t\tSee http://www.libpng.org/pub/png/libpng.html for information."),
+#endif
+#if DK3_HAVE_JPEGLIB_H
+dkT(""),
+dkT("jpeg\t\tIndependent JPEG groups free JPEG library."),
+dkT("\t\tSee http://www.ijg.org/ for information."),
+#endif
+#if DK3_HAVE_TIFF_H
+dkT(""),
+dkT("libtiff\t\tTIFF library."),
+dkT("\t\tSee http://www.remotesensing.org/libtiff/ for information."),
+#endif
+#if DK3_HAVE_ZLIB_H
+dkT(""),
+dkT("zlib\t\tCompression library."),
+dkT("\t\tSee http://www.zlib.net/ for information."),
+#endif
+dkT(""),
+dkT("Your use of the bmpp/wxmbpp program must be in compliance with the"),
+dkT("license conditions for the dktools project and the license conditions"),
+dkT("for all the libraries used by bmpp."),
+dkT(""),
+NULL
+};
+
+
+
+/** License terms for the dktools project itself.
+*/
+static dkChar const * const bmpp_dk_license[] = {
+dkT("License for the dktools project"),
+dkT("==============================="),
+dkT("Copyright (c) 2011-2016, Dirk Krause"),
+dkT("All rights reserved."),
+dkT(""),
+dkT("Redistribution and use in source and binary forms,"),
+dkT("with or without modification, are permitted provided"),
+dkT("that the following conditions are met:"),
+dkT(""),
+dkT("* Redistributions of source code must retain the above"),
+dkT(" copyright notice, this list of conditions and the"),
+dkT(" following disclaimer."),
+dkT("* Redistributions in binary form must reproduce the above "),
+dkT(" copyright notice, this list of conditions and the following"),
+dkT(" disclaimer in the documentation and/or other materials"),
+dkT(" provided with the distribution."),
+dkT("* Neither the name of the copyright holder(s) nor the names of"),
+dkT(" contributors may be used to endorse or promote"),
+dkT(" products derived from this software without specific"),
+dkT(" prior written permission."),
+dkT(""),
+dkT("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND"),
+dkT("CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,"),
+dkT("INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF"),
+dkT("MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE"),
+dkT("DISCLAIMED."),
+dkT("IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE"),
+dkT("LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,"),
+dkT("EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT"),
+dkT("LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;"),
+dkT("LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)"),
+dkT("HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN"),
+dkT("CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE"),
+dkT("OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS"),
+dkT("SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH"),
+dkT("DAMAGE."),
+dkT(""),
+NULL
+
+
+#line 423 "bmeps3.ctr"
+};
+
+#if DK3_HAVE_PNG_H
+static dkChar const * const bmpp_png_license[] = {
+dkT(""),
+dkT("libpng license"),
+dkT("=============="),
+dkT(""),
+dkT("This copy of the libpng notices is provided for your convenience. In case of"),
+dkT("any discrepancy between this copy and the notices in the file png.h that is"),
+dkT("included in the libpng distribution, the latter shall prevail."),
+dkT(""),
+dkT("COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:"),
+dkT(""),
+dkT("If you modify libpng you may insert additional notices immediately following"),
+dkT("this sentence."),
+dkT(""),
+dkT("This code is released under the libpng license."),
+dkT(""),
+dkT("libpng versions 1.2.6, August 15, 2004, through 1.2.46, July 9, 2011, are"),
+dkT("Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are"),
+dkT("distributed according to the same disclaimer and license as libpng-1.2.5"),
+dkT("with the following individual added to the list of Contributing Authors"),
+dkT(""),
+dkT(" Cosmin Truta"),
+dkT(""),
+dkT("libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are"),
+dkT("Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are"),
+dkT("distributed according to the same disclaimer and license as libpng-1.0.6"),
+dkT("with the following individuals added to the list of Contributing Authors"),
+dkT(""),
+dkT(" Simon-Pierre Cadieux"),
+dkT(" Eric S. Raymond"),
+dkT(" Gilles Vollant"),
+dkT(""),
+dkT("and with the following additions to the disclaimer:"),
+dkT(""),
+dkT(" There is no warranty against interference with your enjoyment of the"),
+dkT(" library or against infringement. There is no warranty that our"),
+dkT(" efforts or the library will fulfill any of your particular purposes"),
+dkT(" or needs. This library is provided with all faults, and the entire"),
+dkT(" risk of satisfactory quality, performance, accuracy, and effort is with"),
+dkT(" the user."),
+dkT(""),
+dkT("libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are"),
+dkT("Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are"),
+dkT("distributed according to the same disclaimer and license as libpng-0.96,"),
+dkT("with the following individuals added to the list of Contributing Authors:"),
+dkT(""),
+dkT(" Tom Lane"),
+dkT(" Glenn Randers-Pehrson"),
+dkT(" Willem van Schaik"),
+dkT(""),
+dkT("libpng versions 0.89, June 1996, through 0.96, May 1997, are"),
+dkT("Copyright (c) 1996, 1997 Andreas Dilger"),
+dkT("Distributed according to the same disclaimer and license as libpng-0.88,"),
+dkT("with the following individuals added to the list of Contributing Authors:"),
+dkT(""),
+dkT(" John Bowler"),
+dkT(" Kevin Bracey"),
+dkT(" Sam Bushell"),
+dkT(" Magnus Holmgren"),
+dkT(" Greg Roelofs"),
+dkT(" Tom Tanner"),
+dkT(""),
+dkT("libpng versions 0.5, May 1995, through 0.88, January 1996, are"),
+dkT("Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc."),
+dkT(""),
+dkT("For the purposes of this copyright and license, \"Contributing Authors\""),
+dkT("is defined as the following set of individuals:"),
+dkT(""),
+dkT(" Andreas Dilger"),
+dkT(" Dave Martindale"),
+dkT(" Guy Eric Schalnat"),
+dkT(" Paul Schmidt"),
+dkT(" Tim Wegner"),
+dkT(""),
+dkT("The PNG Reference Library is supplied \"AS IS\". The Contributing Authors"),
+dkT("and Group 42, Inc. disclaim all warranties, expressed or implied,"),
+dkT("including, without limitation, the warranties of merchantability and of"),
+dkT("fitness for any purpose. The Contributing Authors and Group 42, Inc."),
+dkT("assume no liability for direct, indirect, incidental, special, exemplary,"),
+dkT("or consequential damages, which may result from the use of the PNG"),
+dkT("Reference Library, even if advised of the possibility of such damage."),
+dkT(""),
+dkT("Permission is hereby granted to use, copy, modify, and distribute this"),
+dkT("source code, or portions hereof, for any purpose, without fee, subject"),
+dkT("to the following restrictions:"),
+dkT(""),
+dkT("1. The origin of this source code must not be misrepresented."),
+dkT(""),
+dkT("2. Altered versions must be plainly marked as such and must not"),
+dkT(" be misrepresented as being the original source."),
+dkT(""),
+dkT("3. This Copyright notice may not be removed or altered from any"),
+dkT(" source or altered source distribution."),
+dkT(""),
+dkT("The Contributing Authors and Group 42, Inc. specifically permit, without"),
+dkT("fee, and encourage the use of this source code as a component to"),
+dkT("supporting the PNG file format in commercial products. If you use this"),
+dkT("source code in a product, acknowledgment is not required but would be"),
+dkT("appreciated."),
+dkT(""),
+dkT(""),
+dkT("A \"png_get_copyright\" function is available, for convenient use in \"about\""),
+dkT("boxes and the like:"),
+dkT(""),
+dkT(" printf(\"%s\",png_get_copyright(NULL));"),
+dkT(""),
+dkT("Also, the PNG logo (in PNG format, of course) is supplied in the"),
+dkT("files \"pngbar.png\" and \"pngbar.jpg (88x31) and \"pngnow.png\" (98x31)."),
+dkT(""),
+dkT("Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a"),
+dkT("certification mark of the Open Source Initiative."),
+dkT(""),
+dkT("Glenn Randers-Pehrson"),
+dkT("glennrp at users.sourceforge.net"),
+dkT("July 9, 2011"),
+NULL
+
+
+#line 543 "bmeps3.ctr"
+};
+#endif
+#if DK3_HAVE_JPEGLIB_H
+static dkChar const * const bmpp_jpeg_license[] = {
+dkT(""),
+dkT("jpeglib license"),
+dkT("==============="),
+dkT(""),
+dkT("In plain English:"),
+dkT(""),
+dkT("1. We don't promise that this software works. (But if you find any bugs,"),
+dkT(" please let us know!)"),
+dkT("2. You can use this software for whatever you want. You don't have to pay us."),
+dkT("3. You may not pretend that you wrote this software. If you use it in a"),
+dkT(" program, you must acknowledge somewhere in your documentation that"),
+dkT(" you've used the IJG code."),
+dkT(""),
+dkT("In legalese:"),
+dkT(""),
+dkT("The authors make NO WARRANTY or representation, either express or implied,"),
+dkT("with respect to this software, its quality, accuracy, merchantability, or"),
+dkT("fitness for a particular purpose. This software is provided \"AS IS\", and you,"),
+dkT("its user, assume the entire risk as to its quality and accuracy."),
+dkT(""),
+dkT("This software is copyright (C) 1991-1998, Thomas G. Lane."),
+dkT("All Rights Reserved except as specified below."),
+dkT(""),
+dkT("Permission is hereby granted to use, copy, modify, and distribute this"),
+dkT("software (or portions thereof) for any purpose, without fee, subject to these"),
+dkT("conditions:"),
+dkT("(1) If any part of the source code for this software is distributed, then this"),
+dkT("README file must be included, with this copyright and no-warranty notice"),
+dkT("unaltered; and any additions, deletions, or changes to the original files"),
+dkT("must be clearly indicated in accompanying documentation."),
+dkT("(2) If only executable code is distributed, then the accompanying"),
+dkT("documentation must state that \"this software is based in part on the work of"),
+dkT("the Independent JPEG Group\"."),
+dkT("(3) Permission for use of this software is granted only if the user accepts"),
+dkT("full responsibility for any undesirable consequences; the authors accept"),
+dkT("NO LIABILITY for damages of any kind."),
+dkT(""),
+dkT("These conditions apply to any software derived from or based on the IJG code,"),
+dkT("not just to the unmodified library. If you use our work, you ought to"),
+dkT("acknowledge us."),
+dkT(""),
+dkT("Permission is NOT granted for the use of any IJG author's name or company name"),
+dkT("in advertising or publicity relating to this software or products derived from"),
+dkT("it. This software may be referred to only as \"the Independent JPEG Group's"),
+dkT("software\"."),
+dkT(""),
+dkT("We specifically permit and encourage the use of this software as the basis of"),
+dkT("commercial products, provided that all warranty or liability claims are"),
+dkT("assumed by the product vendor."),
+dkT(""),
+dkT(""),
+dkT("ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,"),
+dkT("sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA."),
+dkT("ansi2knr.c is NOT covered by the above copyright and conditions, but instead"),
+dkT("by the usual distribution terms of the Free Software Foundation; principally,"),
+dkT("that you must include source code if you redistribute it. (See the file"),
+dkT("ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part"),
+dkT("of any program generated from the IJG code, this does not limit you more than"),
+dkT("the foregoing paragraphs do."),
+dkT(""),
+dkT("The Unix configuration script \"configure\" was produced with GNU Autoconf."),
+dkT("It is copyright by the Free Software Foundation but is freely distributable."),
+dkT("The same holds for its supporting scripts (config.guess, config.sub,"),
+dkT("ltconfig, ltmain.sh). Another support script, install-sh, is copyright"),
+dkT("by M.I.T. but is also freely distributable."),
+dkT(""),
+dkT("It appears that the arithmetic coding option of the JPEG spec is covered by"),
+dkT("patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot"),
+dkT("legally be used without obtaining one or more licenses. For this reason,"),
+dkT("support for arithmetic coding has been removed from the free JPEG software."),
+dkT("(Since arithmetic coding provides only a marginal gain over the unpatented"),
+dkT("Huffman mode, it is unlikely that very many implementations will support it.)"),
+dkT("So far as we are aware, there are no patent restrictions on the remaining"),
+dkT("code."),
+dkT(""),
+dkT("The IJG distribution formerly included code to read and write GIF files."),
+dkT("To avoid entanglement with the Unisys LZW patent, GIF reading support has"),
+dkT("been removed altogether, and the GIF writer has been simplified to produce"),
+dkT("\"uncompressed GIFs\". This technique does not use the LZW algorithm; the"),
+dkT("resulting GIF files are larger than usual, but are readable by all standard"),
+dkT("GIF decoders."),
+dkT(""),
+dkT("We are required to state that"),
+dkT(" \"The Graphics Interchange Format(c) is the Copyright property of"),
+dkT(" CompuServe Incorporated. GIF(sm) is a Service Mark property of"),
+dkT(" CompuServe Incorporated.\""),
+dkT(""),
+NULL
+
+
+#line 636 "bmeps3.ctr"
+};
+#endif
+#if DK3_HAVE_TIFF_H
+static dkChar const * const bmpp_tiff_license[] = {
+dkT(""),
+dkT("libtiff license"),
+dkT("==============="),
+dkT(""),
+dkT("Copyright (c) 1988-1997 Sam Leffler"),
+dkT("Copyright (c) 1991-1997 Silicon Graphics, Inc."),
+dkT(""),
+dkT("Permission to use, copy, modify, distribute, and sell this software and "),
+dkT("its documentation for any purpose is hereby granted without fee, provided"),
+dkT("that (i) the above copyright notices and this permission notice appear in"),
+dkT("all copies of the software and related documentation, and (ii) the names of"),
+dkT("Sam Leffler and Silicon Graphics may not be used in any advertising or"),
+dkT("publicity relating to the software without the specific, prior written"),
+dkT("permission of Sam Leffler and Silicon Graphics."),
+dkT(""),
+dkT("THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, "),
+dkT("EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY "),
+dkT("WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. "),
+dkT(""),
+dkT("IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR"),
+dkT("ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,"),
+dkT("OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,"),
+dkT("WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF "),
+dkT("LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE "),
+dkT("OF THIS SOFTWARE."),
+dkT(""),
+NULL
+
+
+#line 668 "bmeps3.ctr"
+};
+#endif
+#if DK3_HAVE_ZLIB_H
+static dkChar const * const bmpp_zlib_license[] = {
+dkT(""),
+dkT("zlib license"),
+dkT("============"),
+dkT(""),
+dkT(" (C) 1995-2004 Jean-loup Gailly and Mark Adler"),
+dkT(""),
+dkT(" This software is provided 'as-is', without any express or implied"),
+dkT(" warranty. In no event will the authors be held liable for any damages"),
+dkT(" arising from the use of this software."),
+dkT(""),
+dkT(" Permission is granted to anyone to use this software for any purpose,"),
+dkT(" including commercial applications, and to alter it and redistribute it"),
+dkT(" freely, subject to the following restrictions:"),
+dkT(""),
+dkT(" 1. The origin of this software must not be misrepresented; you must not"),
+dkT(" claim that you wrote the original software. If you use this software"),
+dkT(" in a product, an acknowledgment in the product documentation would be"),
+dkT(" appreciated but is not required."),
+dkT(" 2. Altered source versions must be plainly marked as such, and must not be"),
+dkT(" misrepresented as being the original software."),
+dkT(" 3. This notice may not be removed or altered from any source distribution."),
+dkT(""),
+dkT(" Jean-loup Gailly Mark Adler"),
+dkT(" jloup@gzip.org madler@alumni.caltech.edu"),
+dkT(""),
+dkT("If you use the zlib library in a product, we would appreciate *not*"),
+dkT("receiving lengthy legal documents to sign. The sources are provided"),
+dkT("for free but without warranty of any kind. The library has been"),
+dkT("entirely written by Jean-loup Gailly and Mark Adler; it does not"),
+dkT("include third-party code."),
+dkT(""),
+dkT("If you redistribute modified sources, we would appreciate that you include"),
+dkT("in the file ChangeLog history information documenting your changes. Please"),
+dkT("read the FAQ for more information on the distribution of modified source"),
+dkT("versions."),
+dkT(""),
+NULL
+
+
+#line 710 "bmeps3.ctr"
+};
+#endif
+
+
+
+/** Show one section of text.
+ @param ltext Text to show.
+*/
+static
+void
+bmeps3_show_one_license(dkChar const * const *ltext)
+{
+ dkChar const * const * sptr;
+ sptr = ltext;
+ while(*sptr) {
+ dk3sf_fputs(*(sptr++), stdout);
+ dk3sf_fputc(dkT('\n'), stdout);
+ }
+}
+
+
+
+/** Show license for the program itself and for the used libraries.
+*/
+static
+void
+bmeps3_show_license(void)
+{
+ bmeps3_show_one_license(bmeps3_overview_license);
+ bmeps3_show_one_license(bmpp_dk_license);
+#if DK3_HAVE_PNG_H
+ bmeps3_show_one_license(bmpp_png_license);
+#endif
+#if DK3_HAVE_JPEGLIB_H
+ bmeps3_show_one_license(bmpp_jpeg_license);
+#endif
+#if DK3_HAVE_TIFF_H
+ bmeps3_show_one_license(bmpp_tiff_license);
+#endif
+#if DK3_HAVE_ZLIB_H
+ bmeps3_show_one_license(bmpp_zlib_license);
+#endif
+}
+
+
+
+/** Process a complete directory.
+ @param bmeo Conversion options.
+ @param fnb File name for directory.
+ @param app Application structure for diagnostics.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+bmeps3_process_directory(
+ dk3_bm_eps_options_t *bmeo,
+ dkChar const *fnb,
+ dk3_app_t *app
+)
+{
+ dkChar fni[DK3_MAX_PATH]; /* Input file name. */
+ dkChar fno[DK3_MAX_PATH]; /* output file name. */
+ dkChar const * const *msg; /* Localized message texts. */
+ dk3_dir_t *dir; /* Directory. */
+ dkChar const *en; /* Full file name. */
+ dkChar const *sn; /* Short file name. */
+ dkChar const *nsptr; /* Suffix output file. */
+ dkChar const *oldsourcefile; /* Old source file name. */
+ dkChar *sptr; /* Suffix input file. */
+ dk3_stat_t const *es; /* Stat info input file. */
+ dk3_stat_t stb; /* Stat buffer output file. */
+ int mustrun; /* Flag: Must convert file. */
+ int sit; /* Image type. */
+ int back = 0;
+
+
+#line 785 "bmeps3.ctr"
+ msg = dk3app_messages(
+ app,
+ dk3bmep_str_get_string_table_name(),
+ (dkChar const **)dk3bmep_str_get_message_texts()
+ );
+ if(!(msg)) {
+ msg = dk3bmep_str_get_message_texts();
+ }
+ oldsourcefile = dk3app_get_source_file(app);
+ dir = dk3dir_open_app(fnb, app);
+ if(dir) {
+
+#line 796 "bmeps3.ctr"
+ back = 1;
+
+#line 797 "bmeps3.ctr"
+ while(dk3dir_get_next_file(dir)) {
+
+#line 798 "bmeps3.ctr"
+ en = dk3dir_get_fullname(dir);
+
+#line 799 "bmeps3.ctr"
+ sn = dk3dir_get_shortname(dir);
+ es = dk3dir_get_stat(dir);
+ if((en) && (es)) {
+
+#line 802 "bmeps3.ctr"
+ if(dk3bif_type_supported(sit = dk3bif_check_file_name(en))) {
+
+#line 803 "bmeps3.ctr"
+ if(((es->ft) & (~(DK3_FT_SYMLINK))) == DK3_FT_REGULAR) {
+
+#line 804 "bmeps3.ctr"
+ mustrun = 1;
+ if(bmeo->make) {
+ if(dk3str_len(en) < DK3_SIZEOF(fni,dkChar)) {
+ dk3str_cpy_not_overlapped(fni, en);
+ dk3str_cpy_not_overlapped(fno, en);
+ sptr = dk3str_get_suffix(fno);
+ if(sptr) {
+ *sptr = dkT('\0');
+
+#line 812 "bmeps3.ctr"
+ if((bmeo->dr >= 0) && (bmeo->dr <= 3)) {
+ nsptr = bmeps3_output_suffixes[bmeo->dr];
+ if((dk3str_len(fno) + dk3str_len(nsptr))
+ < DK3_SIZEOF(fno,dkChar)
+ )
+ {
+ dk3str_cpy_not_overlapped(sptr, nsptr);
+
+#line 819 "bmeps3.ctr"
+ if(dk3sf_stat_app(&stb, fno, NULL)) {
+ if(stb.mod > es->mod) {
+ mustrun = 0;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if(mustrun) {
+
+#line 830 "bmeps3.ctr"
+ dk3app_log_3(app, DK3_LL_PROGRESS, msg, 41, 42, ((sn) ? sn : en));
+ dk3app_set_source_file(app, ((sn) ? sn : en));
+ if(!dk3bm_process_file_name(bmeo,en,sit,0,1000,NULL)) {
+ back = 0;
+ }
+ dk3app_set_source_file(app, oldsourcefile);
+ dk3app_log_3(app, DK3_LL_PROGRESS, msg, 43, 44, ((sn) ? sn : en));
+ } else {
+
+#line 838 "bmeps3.ctr"
+ dk3app_log_3(app, DK3_LL_PROGRESS, msg, 45, 46, ((sn) ? sn : en));
+ }
+ } else {
+
+#line 841 "bmeps3.ctr"
+ }
+ } else {
+
+#line 843 "bmeps3.ctr"
+ }
+ } else {
+
+#line 845 "bmeps3.ctr"
+ back = 0;
+ /* BUG: Should be handled by dk3dir. */
+ }
+ }
+ dk3dir_close(dir);
+ } else {
+
+#line 851 "bmeps3.ctr"
+ /* ERROR: Failed to open directory! */
+ }
+ dk3app_set_source_file(app, oldsourcefile);
+
+
+#line 855 "bmeps3.ctr"
+ return back;
+}
+
+
+
+
+/** Copy contents of one file to another.
+ @param fipoout Destination file.
+ @param fipoin Source file.
+ @param app Application structure for diagnostics.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+bmeps3_copy_files(FILE *fipoout, FILE *fipoin, dk3_app_t *app)
+{
+ char bu[4096]; /* Buffer for data. */
+ size_t rb; /* Number of bytes read. */
+ int cc; /* Flag: Can continue. */
+ int back = 1;
+ do {
+ cc = 0;
+ rb = dk3sf_fread_app(bu, 1, sizeof(bu), fipoin, app);
+ if(rb > 0) {
+ cc = 1;
+ if(!dk3sf_fwrite_app(bu, 1, rb, fipoout, app)) {
+ back = 0; cc = 0;
+ }
+ }
+ } while(cc);
+ return back;
+}
+
+
+
+
+/** Run with application structure and localized messages.
+ @param app Application structure.
+ @param msg Localized messages.
+ @param optset Option set.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+bmeps3_run_with_optset(
+ dk3_app_t *app,
+ dkChar const * const *msg,
+ dk3_option_set_t *optset
+)
+{
+ dkChar fnb[DK3_MAX_PATH]; /* File name. */
+ dk3_bm_eps_options_t bmeo; /* Conversion option set. */
+ dk3_stat_t stb; /* Stat buffer. */
+ dk3_dir_t *fne; /* File name expander. */
+ dk3_stat_t const *es; /* Entry (file) stat information. */
+ FILE *fipo; /* Temporary file. */
+ dkChar const *larg; /* Option argument. */
+ dkChar const *fo; /* Further opt currently processed. */
+ dkChar const *en; /* Entry (file) name. */
+ int fonum; /* Number of further options. */
+ int i; /* Traverse options and arguments. */
+ int sit; /* Standard input image type. */
+ int numargs; /* Number of command line args. */
+ int found; /* Flag: At least one file found. */
+#if DK3_ON_WINDOWS
+ int oldmode; /* Stdin mode before start. */
+#endif
+ int back = 0;
+
+
+#line 924 "bmeps3.ctr"
+ sit = DK3_BIF_IMAGE_TYPE_UNKNOWN;
+ dk3bmeo_init(&bmeo);
+ bmeo.app = app;
+
+#line 927 "bmeps3.ctr"
+ back = 1;
+
+#line 928 "bmeps3.ctr"
+ if(dk3opt_is_set(optset, dkT('l'))) {
+ larg = dk3opt_get_short_arg(optset, dkT('l'));
+ if(larg) {
+ if(!dk3bmeo_set_language(&bmeo, larg, app)) {
+ back = 0;
+ /* ERROR during option processing! */
+ }
+ bmeo.app = app;
+ } else {
+ /* BUG: Option -l set, but no argument. Should be handled by dk3opt. */
+ }
+ }
+
+#line 940 "bmeps3.ctr"
+ if(dk3opt_is_set(optset, dkT('m'))) {
+ bmeo.make = 1;
+ }
+ if(dk3opt_is_set(optset, dkT('s'))) {
+ bmeo.to_stdout = 1;
+ }
+ if(dk3opt_is_set(optset, dkT('t'))) {
+ larg = dk3opt_get_short_arg(optset, dkT('t'));
+ if(larg) {
+ switch(dk3str_array_index(bmeps3_image_type_names, larg, 0)) {
+ case 0: {
+ sit = DK3_BIF_IMAGE_TYPE_PNG;
+ } break;
+ case 1: case 2: {
+ sit = DK3_BIF_IMAGE_TYPE_JPEG;
+ } break;
+ case 3: case 4: {
+ sit = DK3_BIF_IMAGE_TYPE_TIFF;
+ } break;
+ default: {
+ /* ERROR: Unknown file type ... */
+ dk3app_log_3(app, DK3_LL_ERROR, msg, 63, 64, larg);
+ back = 0;
+ } break;
+ }
+ } else {
+ /* BUG: Option -t set, but no argument. Should be handled by dk3opt. */
+ }
+ }
+ if(back) {
+ if((fonum = dk3opt_get_num_fo(optset)) > 0) {
+ for(i = 0; i < fonum; i++) {
+ fo = dk3opt_get_fo(optset, i);
+ if(fo) {
+ if(!dk3bmeo_apply_option(&bmeo, fo, msg)) {
+ back = 0;
+ /* ERROR: Error while adding option! */
+ }
+ } else {
+ /* BUG: Option not available. Should be handled by dk3opt. */
+ }
+ }
+ }
+ }
+
+#line 984 "bmeps3.ctr"
+ if(back) {
+ if(dk3opt_is_set(optset, dkT('h'))
+ || dk3opt_is_set(optset, dkT('v'))
+ || dk3opt_is_set(optset, dkT('L'))
+ )
+ {
+ if(dk3opt_is_set(optset, dkT('v'))) {
+ /* Print version number */
+ dk3sf_initialize_stdout();
+ dk3sf_fputs(dk3bm_version_strings[0], stdout);
+ dk3sf_fputs(dk3bm_version_strings[1], stdout);
+ dk3sf_fputc(dkT('\n'), stdout);
+ }
+ if(dk3opt_is_set(optset, dkT('L'))) {
+ dk3sf_initialize_stdout();
+ bmeps3_show_license();
+ } else {
+ if(dk3opt_is_set_long(optset, dkT("license"))) {
+ dk3sf_initialize_stdout();
+ bmeps3_show_license();
+ }
+ }
+ if(dk3opt_is_set(optset, dkT('h'))) {
+ dk3sf_initialize_stdout();
+ dk3app_help(app, dkT("bmpp.txt"), bmeps3_default_help_text);
+ }
+ } else {
+ dk3bmeo_check(&bmeo, 0, app, NULL);
+
+#line 1012 "bmeps3.ctr"
+ numargs = dk3opt_get_num_args(optset);
+ if(numargs > 0) {
+
+#line 1014 "bmeps3.ctr"
+ for(i = 0; i < numargs; i++) {
+ larg = dk3opt_get_arg(optset, i);
+ if(larg) {
+ if(dk3str_len(larg) < DK3_SIZEOF(fnb,dkChar)) {
+ dk3str_cpy_not_overlapped(fnb, larg);
+ dk3str_correct_filename(fnb);
+ if(dk3sf_must_expand(fnb)) {
+
+#line 1021 "bmeps3.ctr"
+ found = 0;
+ fne = dk3dir_fne_open_app(fnb, app);
+ if(fne) {
+ while(dk3dir_get_next_file(fne)) {
+ en = dk3dir_get_fullname(fne);
+ es = dk3dir_get_stat(fne);
+ if((en) && (es)) {
+ if(((es->ft) & (~(DK3_FT_SYMLINK))) == DK3_FT_REGULAR) {
+ sit = DK3_BIF_IMAGE_TYPE_UNKNOWN;
+ if(!dk3bm_process_file_name(&bmeo,en,sit,0,1000,NULL))
+ {
+ back = 0;
+ }
+ } else {
+ /* ERROR: Not a regular file! */
+ dk3app_log_i3(app, DK3_LL_ERROR, 255, 256, fnb);
+ }
+ } else {
+ /* BUG: Should be handled by dk3dir. */
+ back = 0;
+ }
+ }
+ dk3dir_close(fne);
+ if(!(found)) {
+ back = 0;
+ /* ERROR: No such file! */
+ dk3app_log_i3(app, DK3_LL_ERROR, 215, 216, fnb);
+ }
+ } else {
+ /* ERROR: Failed to expand file name! */
+ back = 0;
+ }
+ } else {
+
+#line 1054 "bmeps3.ctr"
+ if(dk3sf_stat_app(&stb, fnb, app)) {
+ switch((stb.ft) & (~(DK3_FT_SYMLINK))) {
+ case DK3_FT_DIRECTORY: {
+ if(!bmeps3_process_directory(&bmeo, fnb, app)) {
+ back = 0;
+ }
+ } break;
+ case DK3_FT_REGULAR: {
+ if(!dk3bm_process_file_name(&bmeo,fnb,sit,0,1000,NULL)) {
+ back = 0;
+ }
+ } break;
+ default: {
+ /* ERROR: Illegal file type! */
+ back = 0;
+ dk3app_log_3(app, DK3_LL_ERROR, msg, 65, 66, fnb);
+ } break;
+ }
+ } else {
+ /* ERROR: No information about file! */
+ back = 0;
+ }
+ }
+ } else {
+ /* ERROR: File name too long! */
+ back = 0;
+ dk3app_log_i3(app, DK3_LL_ERROR, 65, 66, larg);
+ }
+ } else {
+
+#line 1083 "bmeps3.ctr"
+ /* BUG: Option not available, should be handled by dk3opt. */
+ }
+ }
+ } else {
+
+#line 1087 "bmeps3.ctr"
+ if(sit != DK3_BIF_IMAGE_TYPE_UNKNOWN) {
+ if(dk3app_get_temp_file_name(app, fnb, DK3_SIZEOF(fnb,dkChar))) {
+ fipo = dk3sf_fopen_app(fnb, dk3app_not_localized(53), app);
+ if(fipo) {
+#if DK3_ON_WINDOWS
+ oldmode = _setmode(_fileno(stdin), _O_BINARY);
+#endif
+ i = bmeps3_copy_files(fipo, stdin, app);
+#if DK3_ON_WINDOWS
+ _setmode(_fileno(stdin), oldmode);
+#endif
+#if VERSION_BEFORE_2012_04_19
+ fclose(fipo);
+#else
+ if(!dk3sf_fclose_fn_app(fipo, fnb, app)) {
+ i = 0;
+ }
+#endif
+ if(i) {
+ bmeo.to_stdout = 1;
+ back = dk3bm_process_file_name(&bmeo,fnb,sit,0,1000,NULL);
+ }
+ } else {
+ /* ERROR: Failed to open file for writing! */
+ back = 0;
+ }
+ } else {
+ back = 0;
+ /* ERROR: Failed to obtain temporary file name! */
+ }
+ } else {
+ /* ERROR: No file type specified for standard input! */
+ back = 0;
+ dk3app_log_1(app, DK3_LL_ERROR, msg, 67);
+ }
+ }
+ }
+ }
+
+
+#line 1126 "bmeps3.ctr"
+ return back;
+}
+
+
+
+/** Run with application structure and localized messages.
+ @param app Application structure.
+ @param msg Localized messages.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+bmeps3_run_with_app(dk3_app_t *app, dkChar const * const *msg)
+{
+ dk3_option_set_t *optset; /* Options provided on command line. */
+ int back = 0;
+
+
+#line 1143 "bmeps3.ctr"
+ optset = dk3opt_open_from_app(
+ bmeps3_options,
+ bmeps3_szoptions,
+ dkT('o'),
+ bmeps3_kw[2],
+ app
+ );
+ if(optset) {
+
+#line 1151 "bmeps3.ctr"
+ if(0 == dk3opt_get_error_code(optset)) {
+
+#line 1152 "bmeps3.ctr"
+ back = bmeps3_run_with_optset(app, msg, optset);
+ } else {
+
+#line 1154 "bmeps3.ctr"
+ /* ERROR: Error in options */
+ }
+ dk3opt_close(optset);
+ } else {
+
+#line 1158 "bmeps3.ctr"
+ }
+
+#line 1159 "bmeps3.ctr"
+ return back;
+}
+
+
+
+/** The main() function.
+ @param argc Number of command line arguments.
+ @param argv Command line arguments array.
+ @return 0 on success, any other value indicates an error.
+*/
+DK3_MAIN
+{
+ dk3_app_t *app; /* Application structure. */
+ dkChar const * const *msg; /* Localizd messages. */
+ int exval; /* Exit code. */
+
+
+
+#line 1176 "bmeps3.ctr"
+
+
+#line 1177 "bmeps3.ctr"
+ exval = 1;
+ app = dk3app_open_command(
+ argc, (dkChar const * const *)argv, bmeps3_kw[0]
+ );
+ if(app) {
+
+#line 1182 "bmeps3.ctr"
+ msg = dk3app_messages(
+ app,
+ dk3bmep_str_get_string_table_name(),
+ (dkChar const **)dk3bmep_str_get_message_texts()
+ );
+ if(msg) {
+
+#line 1188 "bmeps3.ctr"
+ if(bmeps3_run_with_app(app, msg)) {
+ exval = 0;
+ }
+ } else {
+
+#line 1192 "bmeps3.ctr"
+ /* BUG: Should not happen, as the fucntion returns the default array! */
+ }
+ dk3app_close(app);
+ } else {
+
+#line 1196 "bmeps3.ctr"
+ /* ERROR: Memory */
+ fputs("ERROR: Not enough memory (RAM/swap space)!\n", stderr);
+ fflush(stderr);
+ }
+
+
+#line 1201 "bmeps3.ctr"
+
+
+#line 1202 "bmeps3.ctr"
+ fflush(stdout);
+ exit(exval); return exval;
+}
+