diff options
author | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
---|---|---|
committer | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
commit | c6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch) | |
tree | 1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/psutils/psutils-src | |
parent | 07ee7222e389b0777456b427a55c22d0e6ffd267 (diff) |
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/psutils/psutils-src')
30 files changed, 0 insertions, 6420 deletions
diff --git a/Build/source/texk/psutils/psutils-src/ChangeLog b/Build/source/texk/psutils/psutils-src/ChangeLog deleted file mode 100644 index 2f9d0d39a7a..00000000000 --- a/Build/source/texk/psutils/psutils-src/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -See git log.
\ No newline at end of file diff --git a/Build/source/texk/psutils/psutils-src/LICENSE b/Build/source/texk/psutils/psutils-src/LICENSE deleted file mode 100644 index cf532202464..00000000000 --- a/Build/source/texk/psutils/psutils-src/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ - PS Utilities Package - -PSUtils is copyright (C) 1991-1997 Angus J. C. Duggan, and (c) 2012-2013 -Reuben Thomas <rrt@sc3d.org> - -It may be copied and used for any purpose (including distribution as part of -a for-profit product), provided: - -1) The original attribution of the programs is clearly displayed in the product - and/or documentation, even if the programs are modified and/or renamed as - part of the product. - -2) The original source code of the programs is provided free of charge (except - for reasonable distribution costs). For a definition of reasonable - distribution costs, see the Gnu General Public License or Larry Wall's - Artistic License (provided with the Perl 4 kit). The GPL and Artistic - License in NO WAY affect this license; they are merely used as examples of - the spirit in which it is intended. - -3) These programs are provided "as-is". No warranty or guarantee of their - fitness for any particular task is provided. Use of these programs is - completely at your own risk. - -Basically, I don't mind how you use the programs so long as you acknowledge -the author, and give people the originals if they want them. - - AJCD 4/4/95 diff --git a/Build/source/texk/psutils/psutils-src/Makefile.am b/Build/source/texk/psutils/psutils-src/Makefile.am deleted file mode 100644 index f0bde09a33e..00000000000 --- a/Build/source/texk/psutils/psutils-src/Makefile.am +++ /dev/null @@ -1,44 +0,0 @@ -# Makefile for PS utilities -# -# Copyright (C) Reuben Thomas 2012 -# See LICENSE for license - -SUBDIRS = lib - -ACLOCAL_AMFLAGS = -I m4 - -AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) -AM_CPPFLAGS = $(ISYSTEM)$(top_builddir)/lib $(ISYSTEM)$(top_srcdir)/lib -DPAPER='"$(PAPER)"' -LDADD = libpsutils.a $(top_builddir)/lib/libgnu.a - -noinst_LIBRARIES = libpsutils.a -libpsutils_a_SOURCES = psutil.c psspec.c -libpsutils_a_LIBADD = $(LIBPAPER) - -bin_PROGRAMS = psbook psselect pstops epsffit psnup psresize - -bin_SCRIPTS = psjoin extractres - -man_MANS = psutils.1 \ - psbook.1 psselect.1 pstops.1 epsffit.1 psnup.1 psresize.1 \ - psjoin.1 extractres.1 includeres.1 - -EXTRA_DIST = m4/gnulib-cache.m4 \ - LICENSE \ - psutil.h psspec.h \ - $(bin_SCRIPTS) \ - $(man_MANS) - -all: includeres - -includeres: extractres - $(RM) $@ && $(LN_S) $(srcdir)/extractres $@ - -install-exec-hook: - cd $(DESTDIR)$(bindir); $(RM) includeres; $(LN_S) extractres includeres - -uninstall-hook: - $(RM) $(DESTDIR)$(bindir)/includeres - -clean-local: - $(RM) includeres diff --git a/Build/source/texk/psutils/psutils-src/README b/Build/source/texk/psutils/psutils-src/README deleted file mode 100644 index 44bd8f192de..00000000000 --- a/Build/source/texk/psutils/psutils-src/README +++ /dev/null @@ -1,96 +0,0 @@ -PostScript Utilities - -Web site: https://github.com/rrthomas/psutils -Maintainer: Reuben Thomas <rrt@sc3d.org> - -PSUtils is a suite of utilities for manipulating PostScript documents -produced according to the Document Structuring Conventions (some older -software may need to be configured to produce DSC-conformant -PostScript; if PSUtils doesn't work, check your documentation). It is -possible to select and rearrange pages, including arrangement into -signatures for booklet printing, and page merging for n-up printing. - -PSUtils should work in any POSIX environment with libpaper (support on -non-POSIX systems may be provided by gnulib). - -libpaper: http://packages.qa.debian.org/libp/libpaper.html -Ghostscript: http://www.ghostscript.com/ - - -PROGRAMS - -psbook rearrange pages into signatures -psselect select pages and page ranges -pstops perform general page rearrangement and selection -psnup put multiple pages on to one page -psresize alter document paper size -epsffit fit an EPSF file to a given bounding box -extractres filter to extract resources from PostScript files -includeres filter to include resources into PostScript files -psjoin concatenate multiple PostScript files - -psselect in modeled on Chris Torek's dviselect, as is psbook, via -Angus Duggan's dvibook; pstops is modeled on Tom Rokicki's dvidvi. - - -INSTALLATION - -To build, you need the following programs installed, as well as a -standard POSIX environment and C compiler: - - automake, autoconf, git, perl - -Then run: - -./bootstrap && ./configure && make && [sudo] make install - -For installation options, see ./configure --help - - -BUGS - -The utilities don't check for PS-Adobe-?.? conformance; they assume documents -conform. - -Please send bug reports, patches and suggestions to the bug tracker or -maintainer (see the top of this file). - - -ACKNOWLEDGEMENTS - -PSUtils was written by Angus Duggan, who maintained it up to release 1 -patchlevel 17. - -Bug fixes and suggestions for improvements to PSUtils have come from many -people, including: - - Brian Colfer brianc@labmed.ucsf.edu - Charles A. Finnell finnell@org.mitre.lear - Conrad Kimball cek@com.boeing.sdc - J. W. Hawtin - Jochen Schwarze schwarze@de.isa - Ken Carpenter khc@edu.ksu.eece - Kristian Jorg etxkrjg@se.ericsson.solsta - Larry Weissman larryw@nsr.bioeng.washington.edu - Michael L. Brown brown@wi.extrel.com - Hunter Goatley goathunter@wkuvx1.bitnet - John Interrante interran@uluru.Stanford.edu - Maurizio Cremonesi MAUCREM@imiclvx.earn - Matthew Stier Matthew.Stier@East.Sun.com - Gerry Pratt cca13@seq1.kl.ac.uk - Robert Joop rj@rainbow.in-berlin.de - Johan Vromans jv@mh.nl - Bryan Faubion bryanf@tc.fluke.com - Chris Ritson C.R.Ritson@ncl.ac.uk - Michele Marziani MARZIANI@VAXFE.INFN.IT - Michael I. Schwartz mschwart@diana.cair.du.edu - Chris Ritson C.R.Ritson@newcastle.ac.uk - Joerg Eisenreich - Andreas Borchert borchert@mathematik.uni-ulm.de - Mike Coleman - Dale Scheetz dwarf@polaris.net - Yves Arrouye arrouye@marin.fdn.fr - Stanislav Brabec utx@penguin.cz - Reuben Thomas rrt@sc3d.org - -(Apologies to anyone left out; it was not intentional.) diff --git a/Build/source/texk/psutils/psutils-src/bootstrap b/Build/source/texk/psutils/psutils-src/bootstrap deleted file mode 100755 index 92f6bc212ea..00000000000 --- a/Build/source/texk/psutils/psutils-src/bootstrap +++ /dev/null @@ -1,3107 +0,0 @@ -#! /bin/sh -# Print a version string. -scriptversion=2011-08-19.18; # UTC - -# Bootstrap this package from checked-out sources. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program 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 Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Originally written by Paul Eggert. The canonical version of this -# script is maintained as build-aux/bootstrap in gnulib, however, to -# be useful to your project, you should place a copy of it under -# version control in the top-level directory of your project. The -# intent is that all customization can be done with a bootstrap.conf -# file also maintained in your version control; gnulib comes with a -# template build-aux/bootstrap.conf to get you started. - -# Please report bugs or propose patches to bug-gnulib@gnu.org. - - -## ================================================================== ## -## ## -## DO NOT EDIT THIS FILE, CUSTOMIZE IT USING A BOOTSTRAP.CONF ## -## ## -## ================================================================== ## - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase denotes values stored in the environment. These -# variables should generally be overridden by the user - however, we do -# set them to `true' in some parts of this script to prevent them being -# called at the wrong time by other tools that we call (`autoreconf', -# for example). -# -# We also allow `LIBTOOLIZE' and `M4' to be overridden, and export the -# result for child processes, but they are handled by the function -# `func_find_tool' and not defaulted in this section. - -: "${ACLOCAL=aclocal}" -: "${AUTOCONF=autoconf}" -: "${AUTOHEADER=autoheader}" -: "${AUTOM4TE=autom4te}" -: "${AUTOHEADER=autoheader}" -: "${AUTOMAKE=automake}" -: "${AUTOPOINT=autopoint}" -: "${AUTORECONF=autoreconf}" -: "${CMP=cmp}" -: "${CONFIG_SHELL=/bin/sh}" -: "${DIFF=diff}" -: "${EGREP=egrep}" -: "${FGREP=fgrep}" -: "${GIT=git}" -: "${GREP=grep}" -: "${LN_S=ln -s}" -: "${RM=rm}" -: "${SED=sed}" - -export ACLOCAL -export AUTOCONF -export AUTOHEADER -export AUTOM4TE -export AUTOHEADER -export AUTOMAKE -export AUTOPOINT -export AUTORECONF - - -## -------------- ## -## Configuration. ## -## -------------- ## - -# Short help message in response to `-h'. Add to this in `bootstrap.conf' -# if you accept any additional options. -usage_message="Bootstrap this package from the checked-out sources. - -Common Bootstrap Options: - -c, --copy copy files instead of creating symbolic links. - --debug enable verbose shell tracing - -n, --dry-run print commands rather than running them - -f, --force attempt to bootstrap even if the sources seem not to have - been checked out. - --gnulib-srcdir=DIRNAME - specify a local directory where gnulib sources reside. - Use this if you already have the gnulib sources on your - machine, and don't want to waste your bandwidth - downloading them again. Defaults to \$GNULIB_SRCDIR. - --skip-git do not fetch files from remote repositories - --skip-po do not download po files. - -v, --verbose verbosely report processing - --version print version information and exit - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -h, --help print short or long help message and exit -" - -# Warning categories used by `bootstrap', append others if you use them -# in your `bootstrap.conf'. -warning_categories="recommend settings upgrade" - -# Additional text appended to `usage_message' in response to `--help'. -long_help_message=" -Warning categories include: - \`all' show all warnings - \`none' turn off all the warnings - \`error' warnings are treated as fatal errors - \`recommend' show warnings about missing recommended packages - \`settings' show warnings about missing \`bootstrap.conf' settings - \`upgrade' show warnings about out-dated files - -If the file $progpath.conf exists in the same directory as this script, its -contents are read as shell variables to configure the bootstrap. - -For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR -are honored. - -Running without arguments will suffice in most cases. -" - -# A newline delimited list of triples of programs (that respond to -# --version), the minimum version numbers required (or just `-' in the -# version field if any version will be sufficient) and homepage URLs -# to help locate missing packages. -buildreq= - -# Name of a file containing instructions on installing missing packages -# required in `buildreq'. -buildreq_readme=README-hacking - -# These are extracted from AC_INIT in configure.ac, though you can -# override those values in `bootstrap.conf' if you prefer. -build_aux= -macro_dir= -package= -package_name= -package_version= -package_bugreport= - -# These are extracted from `gnulib-cache.m4', or else fall-back -# automatically on the gnulib defaults; unless you set the values -# manually in `bootstrap.conf'. -doc_base= -gnulib_mk= -gnulib_name= -local_gl_dir= -source_base= -tests_base= - -# The list of gnulib modules required at `gnulib-tool' time. If you -# check `gnulib-cache.m4' into your repository, then this list will be -# extracted automatically. -gnulib_modules= - -# Extra gnulib files that are not in modules, which override files of -# the same name installed by other bootstrap tools. -gnulib_non_module_files=" - build-aux/compile - build-aux/install-sh - build-aux/missing - build-aux/mdate-sh - build-aux/texinfo.tex - build-aux/depcomp - build-aux/config.guess - build-aux/config.sub - doc/INSTALL -" - -# Relative path to the local gnulib submodule, and url to the upstream -# git repository. If you have a gnulib entry in your .gitmodules file, -# these values are ignored. -gnulib_path= -gnulib_url= - -# Additional gnulib-tool options to use. -gnulib_tool_options=" - --no-changelog -" - -# bootstrap removes any macro-files that are not included by aclocal.m4, -# except for files listed in this variable which are always kept. -gnulib_precious=" - gnulib-tool.m4 -" - -# When truncating long commands for display, always allow at least this -# many characters before truncating. -min_cmd_len=160 - -# The command to download all .po files for a specified domain into -# a specified directory. Fill in the first %s is the domain name, and -# the second with the destination directory. Use rsync's -L and -r -# options because the latest/%s directory and the .po files within are -# all symlinks. -po_download_command_format=\ -"rsync --delete --exclude '*.s1' -Lrtvz \ -'translationproject.org::tp/latest/%s/' '%s'" - -# Other locale categories that need message catalogs. -extra_locale_categories= - -# Additional xgettext options to use. Gnulib might provide you with an -# extensive list of additional options to append to this, but gettext -# 0.16.1 and newer appends them automaticaly, so you can safely ignore -# the complaints from `gnulib-tool' if your $configure_ac states: -# -# AM_GNU_GETTEXT_VERSION([0.16.1]) -xgettext_options=" - --flag=_:1:pass-c-format - --flag=N_:1:pass-c-format -" - -# Package copyright holder for gettext files. Defaults to FSF if unset. -copyright_holder= - -# File that should exist in the top directory of a checked out hierarchy, -# but not in a distribution tarball. -checkout_only_file= - -# Whether to use copies instead of symlinks by default (if set to true, -# the --copy option has no effect). -copy=false - -# Set this to ".cvsignore .gitignore" in `bootstrap.conf' if you want -# those files to be generated in directories like `lib/', `m4/', and `po/', -# or set it to "auto" to make this script select which to use based -# on which version control system (if any) is used in the source directory. -# Or set it to "none" to ignore VCS ignore files entirely. Default is -# "auto". -vc_ignore= - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# NLS nuisances. -LANGUAGE=C -export LANGUAGE - -# Ensure file names are sorted consistently across platforms. -LC_ALL=C -export LC_ALL - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. -if (eval 'x=a; x+=" b"; test "x$x" = "xa b"') 2>/dev/null -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# `func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_funcs " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a coll to `func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_funcs " in - *" $1 "*) ;; - *) func_fatal_error "Error: \`$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`echo "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_funcs " in - *" $1 "*) ;; - *) func_fatal_error "Error: \`$1' does not support hook funcions.n" ;; - esac - - eval hook_funcs="\$$1_hooks" - - # shift away the first argument (FUNC_NAME) - shift - func_run_hooks_result=${1+"$@"} - - for hook_func in $hook_funcs; do - eval $hook_func '"$@"' - - # store returned options list back into positional - # parameters for next `cmd' execution. - eval set dummy "$func_run_hooks_result"; shift - done -} - - -## ------------------- ## -## Hookable functions. ## -## ------------------- ## - -# After `bootstrap.conf' has been sourced, execution proceeds by calling -# `func_bootstrap'. Where a function is decorated with `func_hookable -# func_name', you will find a matching `func_run_hooks func_name' which -# executes all functions added with `func_add_hook func_name my_func'. -# -# You might notice that many of these functions begin with a series of -# `$require_foo' lines. See the docu-comments at the start of the -# `Resource management' section for a description of what these are. - - -# func_bootstrap [ARG]... -# ----------------------- -# All the functions called inside func_bootstrap are hookable. See the -# the individual implementations for details. -func_bootstrap () -{ - $debug_cmd - - # Save the current positional parameters to prevent them being - # corrupted by calls to `set' in `func_init'. - func_quote_for_eval ${1+"$@"} - my_saved_positional_parameters="$func_quote_for_eval_result" - - # initialisation - func_init - - # option processing - eval func_options "$my_saved_positional_parameters" - - # post-option preparation - func_prep - - # reconfigure the package - func_reconfigure - - # finalisation - func_fini -} - - -# func_init -# --------- -# Any early initialisations can be hooked to this function. Consider -# whether you can hook onto `func_prep' instead, because if you hook -# any slow to execute code in here, it will also add to the time before -# `./bootstrap --version' can respond. -func_hookable func_init -func_init () -{ - $debug_cmd - - func_run_hooks func_init -} - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result="$func_run_hooks_result" -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in `func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - warning_func=func_error - - # Option defaults: - opt_copy=${copy-false} - opt_dry_run=false - opt_force=false - opt_gnulib_srcdir="$GNULIB_SRCDIR" - opt_skip_git=false - opt_skip_po=false - opt_warning= - opt_verbose=false - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result="$func_run_hooks_result" -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -# -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in `func_run_hooks_result', escaped suitably for `eval'. Like -# this: -# -# my_silent_option () -# { -# $debug_cmd -# -# case $1 in -# --silent|-s) opt_silent=:; shift ;; -# esac -# -# func_quote_for_eval ${1+"$@"} -# func_run_hooks_result="$func_quote_for_eval_result" -# } -# func_add_hook func_parse_options my_silent_option -# -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - opt="$1" - shift - case $opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: ;; - --copy|-c) opt_copy=: ;; - --force|-f) opt_force=: ;; - - --gnulib-srcdir) - test $# = 0 && func_missing_arg $opt && break - opt_gnulib_srcdir="$1" - shift - ;; - - --skip-git) opt_skip_git=: ;; - --skip-po) opt_skip_po=: ;; - --verbose|-v) opt_verbose=: ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $opt && break - case " $1 " in - " all ") - opt_warning=" $warning_categories" - ;; - " none ") - opt_warning=" none" - warning_func=: - ;; - " error ") - warning_func=func_fatal_error - ;; - *" $warning_categories "*) - func_append_u opt_warning " $1" - ;; - *) - func_fatal_error \ - "Error: unsupported warning category: \`$1'" - ;; - esac - shift - ;; - - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options: - --*=*) - func_split_equals "$opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-c*|-f*|-n*|-v*|-x*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) set dummy "$opt"; shift; break ;; - -*) func_fatal_help "unrecognised option: \`$opt'" ;; - *) set dummy "$opt"; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result="$func_quote_for_eval_result" -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # display all warnings if -W was not given - test -n "$opt_warning" || opt_warning="$warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Validate options. - test $# -gt 0 \ - && func_fatal_help "too many arguments" - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_validate_options_result="$func_quote_for_eval_result" -} - - -# func_prep -# --------- -# Function to perform preparation for remaining bootstrap process. If -# your hooked code relies on the outcome of `func_options' hook it here -# rather than to `func_init'. -# -# All the functions called inside func_prep are hookable. See the -# individual implementations for details. -func_hookable func_prep -func_prep () -{ - $debug_cmd - - $require_bootstrap_uptodate - $require_buildtools_uptodate - $require_checkout_only_file - - $require_gnulib_merge_changelog - - # fetch update files from the translation project - func_update_translations - - func_run_hooks func_prep -} - - -# func_update_translations -# ------------------------ -# Update package po files and translations. -func_hookable func_update_translations -func_update_translations () -{ - $debug_cmd - - $opt_skip_po || { - test -d po && { - $require_package - - func_update_po_files po $package || exit $? - } - - func_run_hooks func_update_translations - } -} - - -# func_reconfigure -# ---------------- -# Reconfigure the current package by running the appropriate autotools in a -# suitable order. -func_hookable func_reconfigure -func_reconfigure () -{ - $debug_cmd - - # Released `autopoint' has the tendency to install macros that have - # been obsoleted in current `gnulib., so run this before `gnulib-tool'. - func_autopoint - - # Autoreconf runs `aclocal' before `libtoolize', which causes spurious - # warnings if the initial `aclocal' is confused by the libtoolized - # (or worse: out-of-date) macro directory. - func_libtoolize - - # If you need to do anything after `gnulib-tool' is done, but before - # `autoreconf' runs, you don't need to override this whole function, - # because `func_gnulib_tool' is hookable. - func_gnulib_tool - - func_autoreconf - - func_run_hooks func_reconfigure -} - - -# func_gnulib_tool -# ---------------- -# Run `gnulib-tool' to fetch gnulib modules into the current package. -# -# It's assumed that since you are using gnulib's `bootstrap' script, -# you're also using gnulib elsewhere in your package. If not, then -# you can replace this function in `bootstrap.conf' with: -# -# func_gnulib_tool () { :; } -# -# (although the function returns immediately if $gnulib_tool is set to -# true in any case). -func_hookable func_gnulib_tool -func_gnulib_tool () -{ - $debug_cmd - - $require_gnulib_tool - $require_libtoolize - - test true = "$gnulib_tool" || { - if test -n "$gnulib_modules"; then - $require_gnulib_cache - $require_build_aux - $require_macro_dir - - # Try not to pick up any stale values from `gnulib-cache.m4'. - rm -f "$gnulib_cache" - - gnulib_mode="--import" - - # `gnulib_modules' and others are maintained in `bootstrap.conf`: - # Use `gnulib --import` to fetch gnulib modules. - test -n "$build_aux" \ - && func_append_u gnulib_tool_options " --aux-dir=$build_aux" - test -n "$macro_dir" \ - && func_append_u gnulib_tool_options " --m4-base=$macro_dir" - test -n "$doc_base" \ - && func_append_u gnulib_tool_options " --doc-base=$doc_base" - test -n "$gnulib_name" \ - && func_append_u gnulib_tool_options " --lib=$gnulib_name" - test -n "$local_gl_dir" \ - && func_append_u gnulib_tool_options " --local-dir=$local_gl_dir" - test -n "$source_base" \ - && func_append_u gnulib_tool_options " --source-base=$source_base" - test -n "$gnulib_mk" \ - && func_append_u gnulib_tool_options " --makefile-name=$gnulib_mk" - test -n "$tests_base" && { - func_append_u gnulib_tool_options " --tests-base=$tests_base" - func_append_u gnulib_tool_options " --with-tests" - } - else - - # `gnulib_modules' and others are cached in `gnulib-cache.m4': - # Use `gnulib --update' to fetch gnulib modules. - gnulib_mode="--update" - fi - - # Add a sensible default libtool option to gnulib_tool_options. - case " $gnulib_tool_options " in - *" --no-libtool "*|*" --libtool "*) ;; - *) if test true = "$LIBTOOLIZE"; then - func_append_u gnulib_tool_options " --no-libtool" - else - func_append_u gnulib_tool_options " --libtool" - fi - ;; - esac - - $opt_copy || func_append_u gnulib_tool_options " --symbolic" - - func_append_u gnulib_tool_options " $gnulib_mode" - func_append gnulib_tool_options " $gnulib_modules" - - # The embedded echo is to squash whitespace before display. - gnulib_cmd=`echo $gnulib_tool $gnulib_tool_options` - - func_show_eval "$gnulib_cmd" 'exit $?' - } - - func_run_hooks func_gnulib_tool -} - - -# func_fini -# --------- -# Function to perform all finalisation for the bootstrap process. -func_hookable func_fini -func_fini () -{ - $debug_cmd - - func_install_gnulib_non_module_files - func_gettext_configuration - func_clean_dangling_symlinks - func_clean_unused_macros - func_skip_po_recommendation - - func_run_hooks func_fini - - func_echo "Done. Now you can run './configure'." -} - - -# func_gettext_configuration -# -------------------------- -# Edit configuration values into po/Makevars. -func_hookable func_gettext_configuration -func_gettext_configuration () -{ - $debug_cmd - - $require_autopoint - - test true = "$AUTOPOINT" || { - $require_copyright_holder - $require_extra_locale_categories - $require_package_bugreport - - # Escape xgettext options for sed Makevars generation below. - # We have to delete blank lines in a separate script so that we don't - # append \\\ to the penultimate line, and then delete the last empty - # line, which messes up the variable substitution later in this - # function. Note that adding a literal \\\ requires double escaping - # here, once for the execution subshell, and again for the assignment, - # which is why there are actually 12 (!!) backslashes in the script. - my_xgettext_options=`echo "$xgettext_options$nl" |$SED '/^$/d' |$SED ' - $b - s|$| \\\\\\\\\\\\|'` - - # Create gettext configuration. - func_echo "Creating po/Makevars from po/Makevars.template ..." - $RM -f po/Makevars - $SED ' - /^EXTRA_LOCALE_CATEGORIES *=/s|=.*|= '"$extra_locale_categories"'| - /^COPYRIGHT_HOLDER *=/s|=.*|= '"$copyright_holder"'| - /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$package_bugreport"'| - /^XGETTEXT_OPTIONS *=/{ - s|$| \\| - a\ - '"$my_xgettext_options"' \\\ - $${end_of_xgettext_options+} - } - ' po/Makevars.template >po/Makevars || exit 1 - } - - func_run_hooks func_gettext_configuration -} - - - -## --------------- ## -## Core functions. ## -## --------------- ## - -# This section contains the main functions called from the `Hookable -# functions' (shown above), and are the ones you're most likely -# to want to replace with your own implementations in `bootstrap.conf'. - - -# func_autopoint -# -------------- -# If this package uses gettext, then run `autopoint'. -func_autopoint () -{ - $debug_cmd - - $require_autopoint - - test true = "$AUTOPOINT" \ - || func_show_eval "$AUTOPOINT --force" 'exit $?' -} - - -# func_libtoolize -# --------------- -# If this package uses libtool, then run `libtoolize'. -func_libtoolize () -{ - $debug_cmd - - $require_libtoolize - - test true = "$LIBTOOLIZE" || { - my_libtoolize_options= - $opt_copy && func_append my_libtoolize_options " --copy" - $opt_force && func_append my_libtoolize_options " --force" - $opt_verbose || func_append my_libtoolize_options " --quiet" - func_show_eval "$LIBTOOLIZE$my_libtoolize_options" 'exit $?' - } -} - - -# func_autoreconf -# --------------- -# Being careful not to re-run `autopoint' or `libtoolize', and not to -# try to run `autopoint', `libtoolize' or `autoheader' on packages that -# don't use them, defer to `autoreconf' for execution of the remaining -# autotools to bootstrap this package. -func_autoreconf () -{ - $debug_cmd - - $require_autoheader - $require_build_aux # automake and others put files in here - $require_macro_dir # aclocal and others put files in here - - # We ran these manually already, and autoreconf won't exec `:' - save_AUTOPOINT="$AUTOPOINT"; AUTOPOINT=true - save_LIBTOOLIZE="$LIBTOOLIZE"; LIBTOOLIZE=true - - my_autoreconf_options= - $opt_copy || func_append my_autoreconf_options " --symlink" - $opt_force && func_append my_autoreconf_options " --force" - $opt_verbose && func_append my_autoreconf_options " --verbose" - func_show_eval "$AUTORECONF$my_autoreconf_options --install" 'exit $?' - - AUTOPOINT="$save_AUTOPOINT" - LIBTOOLIZE="$save_LIBTOOLIZE" -} - - -# func_install_gnulib_non_module_files -# ------------------------------------ -# Get additional non-module files from gnulib, overriding existing files. -func_install_gnulib_non_module_files () -{ - $debug_cmd - - $require_build_aux - $require_gnulib_path - - test -n "$gnulib_non_module_files" && { - if test -n "$gnulib_path"; then - maybe_exit_cmd=: - - for file in $gnulib_non_module_files; do - case $file in - */COPYING*) dest=COPYING;; - */INSTALL) dest=INSTALL;; - build-aux/*) dest=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;; - *) dest=$file;; - esac - - # Be sure to show all copying errors before bailing out - if test -f "$gnulib_path/$file"; then - func_symlink_to_dir "$gnulib_path" $file $dest - else - func_error "Error: \`$gnulib_path/$file' does not exist" - maybe_exit_cmd="exit $EXIT_FAILURE" - fi - done - - $maybe_exit_cmd - else - func_warning recommend "\ -Unable to link \`\$gnulib_non_module_files', please provide the -location of a complete \`gnulib' tree by setting \`gnulib_path' in -your \`bootstrap.conf' or with the \`--gnulib-srcdir' option - or -else specify the location of your \`git' binary by setting \`GIT' -in the environment so that a fresh \`gnulib' submodule can be cloned." - fi - } -} - - -# func_check_configuration VARNAME [CONFIGURE_MACRO] -# -------------------------------------------------- -func_check_configuration () -{ - $debug_cmd - - $require_configure_ac - - eval 'test -n "$'$1'"' || { - my_error_msg="Error: please set \`$1' in \`bootstrap.conf'" - test -n "$2" \ - && func_append my_error_msg " - or add the following (or similar) to your \`$configure_ac': - $2" - - func_fatal_error "$my_error_msg" - } -} - - -# func_clean_dangling_symlinks -# ---------------------------- -# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some -# gnulib-populated directories. Such .m4 files would cause aclocal to -# fail. The following requires GNU find 4.2.3 or newer. Considering -# the usual portability constraints of this script, that may seem a very -# demanding requirement, but it should be ok. Ignore any failure, -# which is fine, since this is only a convenience to help developers -# avoid the relatively unusual case in which a symlinked-to .m4 file is -# git-removed from gnulib between successive runs of this script. -func_clean_dangling_symlinks () -{ - $debug_cmd - - $require_macro_dir - $require_source_base - - func_verbose "cleaning dangling symlinks" - - find "$macro_dir" "$source_base" \ - -depth \( -name '*.m4' -o -name '*.[ch]' \) \ - -type l -xtype l -delete > /dev/null 2>&1 -} - - -# func_clean_unused_macros -# ------------------------ -# Autopoint can result in over-zealously adding macros into $macro_dir -# even though they are not actually used, for example tests to help -# build the `intl' directory even though you have specified -# `AM_GNU_GETTEXT([external])' in your configure.ac. This function -# looks removes any macro files that can be found in gnulib, but -# are not `m4_include'd by `aclocal.m4'. -func_clean_unused_macros () -{ - $debug_cmd - - $require_gnulib_path - $require_macro_dir - - test -n "$gnulib_path" && test -f aclocal.m4 && { - aclocal_m4s=`find . -name aclocal.m4 -print` - - # We use `ls|grep' instead of `ls *.m4' to avoid exceeding - # command line length limits in some shells. - for file in `cd $macro_dir && ls -1 |grep '\.m4$'`; do - - # Remove a macro file when aclocal.m4 does not m4_include it... - func_grep_q 'm4_include([[]'$macro_dir/$file'])' $aclocal_m4s \ - || test ! -f $gnulib_path/m4/$file || { - - # ...and there is an identical file in gnulib... - if func_cmp_s $gnulib_path/m4/$file $macro_dir/$file; then - - # ...and it's not in the precious list (`echo' is needed - # here to squash whitespace for the match expression). - case " "`echo $gnulib_precious`" " in - *" $file "*) ;; - *) rm -f $macro_dir/$file - func_verbose \ - "removing unused gnulib file \`$macro_dir/$file'" - esac - fi - } - done - } -} - - -# func_skip_po_recommendation -# --------------------------- -# If there is a po directory, and `--skip-po' wasn't passed, let the -# user know that they can use `--skip-po' on subsequent invocations. -func_skip_po_recommendation () -{ - test ! -d po \ - || $opt_skip_po \ - || func_warning recommend "\ -If your pofiles are up-to-date, you can rerun bootstrap -as \`$progname --skip-po' to avoid redownloading." -} - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Where a variable already has a non- -# empty value (as set by the package's `bootstrap.conf'), that value is -# used in preference to deriving the default. Call them using their -# associated `require_*' variable to ensure that they are executed, at -# most, once. - - -# require_checkout_only_file -# -------------------------- -# Bail out if this package only bootstraps properly from a repository -# checkout. -require_checkout_only_file=func_require_checkout_only_file -func_require_checkout_only_file () -{ - $debug_cmd - - test -n "$checkout_only_file" && test ! -f "$checkout_only_file" \ - && func_fatal_error "\ -Error: Bootstrapping from a non-checked-out distribution is risky." - - require_checkout_only_file=: -} - - -# require_aclocal_amflags -# ----------------------- -# Ensure `$aclocal_amflags' has a sensible default, extracted from -# `Makefile.am' if necessary. -require_aclocal_amflags=func_require_aclocal_amflags -func_require_aclocal_amflags () -{ - $debug_cmd - - $require_makefile_am - - my_sed_extract_aclocal_amflags='s|#.*$|| - /^[ ]*ACLOCAL_AMFLAGS[ ]*=/ { - s|^.*=[ ]*\(.*\)|aclocal_amflags="\1"| - p - }' - - my_aclocal_flags_cmd=`$SED -n "$my_sed_extract_aclocal_amflags" \ - "$makefile_am"` - eval "$my_aclocal_flags_cmd" - - func_verbose "ACLOCAL_AMFLAGS='$aclocal_amflags'" - - require_aclocal_amflags=: -} - - -# require_autobuild_buildreq -# -------------------------- -# Try to find whether the bootstrap requires autobuild. -require_autobuild_buildreq=func_require_autobuild_buildreq -func_require_autobuild_buildreq () -{ - $debug_cmd - - printf "$buildreq"| func_grep_q '^[ ]*autobuild' || { - $require_configure_ac - - func_extract_trace AB_INIT - test -n "$func_extract_trace_result" && { - func_append buildreq 'autobuild - http://josefsson.org/autobuild/ -' - func_verbose "auto-adding \`autobuild' to build requirements" - } - } - - require_autobuild_buildreq=: -} - - -# require_autoconf_buildreq -# require_gettext_buildreq -# require_libtoolize_buildreq -# --------------------------- -# Try to find the minimum compatible version of autoconf/libtool -# required to bootstrap successfully, and add it to `$buildreq'. -for tool in autoconf libtoolize gettext; do - b=$tool - v=require_${tool}_buildreq - f=func_$v - case $tool in - autoconf) m=AC_PREREQ ;; - libtoolize) m=LT_PREREQ; b=libtool ;; - gettext) m=AM_GNU_GETTEXT_VERSION ;; - esac - - eval $v'='$f' - '$f' () - { - $debug_cmd - - # The following is ignored if undefined, but might be necessary - # in order for `func_find_tool` to run. - ${require_'$tool'-:} - - printf "$buildreq" | func_grep_q '\''^[ ]*'$tool\'' || { - $require_configure_ac - - func_extract_trace '$m' - my_version="$func_extract_trace_result" - test -n "$my_version" && { - func_append buildreq "\ - '$tool' $my_version http://www.gnu.org/s/'$b' -" - func_verbose \ - "auto-adding \`'$tool'-$my_version'\'' to build requirements" - } - } - - '$v'=: - } -' -done - - -# require_autoheader -# ------------------ -# Skip autoheader if it's not needed. -require_autoheader=func_require_autoheader -func_require_autoheader () -{ - $debug_cmd - - test true = "$AUTOHEADER" || { - func_extract_trace AC_CONFIG_HEADERS - test -n "$func_extract_trace_result" \ - || func_extract_trace AC_CONFIG_HEADER - - test -n "$func_extract_trace_result" || { - AUTOHEADER=true - - func_verbose "export AUTOHEADER='$AUTOHEADER'" - - # Make sure the search result is visible to subshells - export AUTOHEADER - } - } - - require_autoheader=: -} - - -# require_automake_buildreq -# ------------------------- -# Try to find the minimum compatible version of automake required to -# bootstrap successfully, and add it to `$buildreq'. -require_automake_buildreq=func_require_automake_buildreq -func_require_automake_buildreq () -{ - $debug_cmd - - # if automake is not already listed in $buildreq... - printf "$buildreq"| func_grep_q automake || { - func_extract_trace AM_INIT_AUTOMAKE - - # ...and AM_INIT_AUTOMAKE is declared... - test -n "$func_extract_trace_result" && { - automake_version=`echo "$func_extract_trace_result" \ - |$SED 's|[^0-9]*||; s| .*$||'` - test -n "$automake_version" || automake_version="-" - - func_append buildreq "\ - automake $automake_version http://www.gnu.org/s/automake -" - func_verbose \ - "auto-adding \`automake-$automake_version' to build requirements" - } - } - - require_automake_buildreq=: -} - - -# require_autopoint -# ----------------- -# Skip autopoint if it's not needed. -require_autopoint=func_require_autopoint -func_require_autopoint () -{ - $debug_cmd - - test true = "$AUTOPOINT" || { - func_extract_trace AM_GNU_GETTEXT_VERSION - - test -n "$func_extract_trace_result" || { - AUTOPOINT=true - - func_verbose "export AUTOPOINT='$AUTOPOINT'" - - # Make sure the search result is visible to subshells - export AUTOPOINT - } - } - - require_autopoint=: -} - - -# func_require_bootstrap_uptodate -# ------------------------------- -# Complain if the version of bootstrap in the gnulib directory differs -# from the one we are running. -require_bootstrap_uptodate=func_require_bootstrap_uptodate -func_require_bootstrap_uptodate () -{ - $debug_cmd - - $require_gnulib_path - - test x = x"$gnulib_path" \ - || func_cmp_s $progpath $gnulib_path/build-aux/bootstrap \ - || func_warning upgrade "\ -\`$progpath' differs from \`./$gnulib_path/build-aux/bootstrap', -please consider adopting the canonical version from gnulib." - - require_bootstrap_uptodate=: -} - - -# require_build_aux -# ----------------- -# Ensure that `$build_aux' is set, and if it doesn't already point to an -# existing directory, create one. -require_build_aux=func_require_build_aux -func_require_build_aux () -{ - $debug_cmd - - test -n "$build_aux" || { - $require_configure_ac - - func_extract_trace AC_CONFIG_AUX_DIR - build_aux="$func_extract_trace_result" - func_check_configuration build_aux \ - "AC_CONFIG_AUX_DIR([name of a directory for build scripts])" - - func_verbose "build_aux='$build_aux'" - } - - $require_vc_ignore_files - - # If the build_aux directory doesn't exist, create it now, and mark it - # as ignored for the VCS. - if test ! -d "$build_aux"; then - func_show_eval "mkdir '$build_aux'" - - test -n "$vc_ignore_files" \ - || func_insert_sorted_if_absent "$build_aux" $vc_ignore_files - fi - - require_build_aux=: -} - - -# func_require_buildtools_uptodate -# -------------------------------- -# Ensure all the packages listed in BUILDREQS are available on the build -# machine at the minimum versions or better. -require_buildtools_uptodate=func_require_buildtools_uptodate -func_require_buildtools_uptodate () -{ - $debug_cmd - - $require_autobuild_buildreq - $require_autoconf_buildreq - $require_automake_buildreq - $require_libtoolize_buildreq - $require_gettext_buildreq - - test -n "$buildreq" && { - func_check_versions $buildreq - $func_check_versions_result || { - test -n "$buildreq_readme" \ - && test -f "$buildreq_readme" \ - && func_error "\ -Error: $buildreq_readme explains how to obtain these prerequisite programs: -" - func_strtable 7 11 12 36 \ - "Program" "Min_version" "Homepage" $buildreq - func_fatal_error "$func_strtable_result" - } - } - - require_buildtools_uptodate=: -} - - -# require_configure_ac -# -------------------- -# Ensure that there is a `configure.ac' or `configure.in' file in the -# current directory, and that `$configure_ac' contains its name. -require_configure_ac=func_require_configure_ac -func_require_configure_ac () -{ - $debug_cmd - - test -n "$configure_ac" || { - for configure_ac in configure.ac configure.in; do - test -f $configure_ac && break - done - - <$configure_ac - } - - func_verbose "found \`$configure_ac'" - - require_configure_ac=: -} - - -# require_copyright_holder -# ------------------------ -# Ensure there is a sensible non-empty default value in `$copyright_holder'. -require_copyright_holder=func_require_copyright_holder -func_require_copyright_holder () -{ - $debug_cmd - - test -n "$copyright_holder" || { - copyright_holder='Free Software Foundation, Inc.' - func_warning settings "\ -Please set copyright_holder explicitly in \`bootstrap.conf'; -defaulting to \`$copyright_holder'." - } - - require_copyright_holder=: -} - - -# require_dotgitmodules -# --------------------- -# Ensure we have a `.gitmodules' file, with appropriate `gnulib' settings. -require_dotgitmodules=func_require_dotgitmodules -func_require_dotgitmodules () -{ - $debug_cmd - - $require_git - - test true = "$GIT" || { - # A gnulib entry in .gitmodules always takes precedence. - my_path="`$GIT config --file .gitmodules submodule.gnulib.path 2>/dev/null`" - - test -n "$my_path" || { - $require_vc_ignore_files - - func_verbose "creating \`.gitmodules'" - - # If the .gitmodules file doesn't exist, create it now, and mark - # it as ignored for the VCS. - test -n "$gnulib_path" || gnulib_path=gnulib - test -n "$gnulib_url" || gnulib_url=git://git.sv.gnu.org/gnulib - - { - echo '[submodule "gnulib"]' - echo " path = $gnulib_path" - echo " url = $gnulib_url" - } >> .gitmodules - - test -n "$vc_ignore_files" \ - || func_insert_sorted_if_absent ".gitmodules" $vc_ignore_files - } - } - - require_dotgitmodules=: -} - - -# require_extra_locale_categories -# ------------------------------- -# Ensure there is a default value in `$extra_locale_categories' -require_extra_locale_categories=func_require_extra_locale_categories -func_require_extra_locale_categories () -{ - $debug_cmd - - # Defaults to empty, so run with whatever value may have been set in - # `bootstrap.conf'. - require_extra_locale_categories=: -} - - -# require_git -# ----------- -# Ignore git if it's not available, or we're not in a git checkout tree. -require_git=func_require_git -func_require_git () -{ - $debug_cmd - - $opt_skip_git && GIT=true - - test true = "$GIT" || { - if test -f .gitignore && ($GIT --version) >/dev/null 2>&1; then :; else - GIT=true - fi - } - - func_verbose "GIT='$GIT'" - - require_git=: -} - - -# require_gnu_m4 -# -------------- -# Search for GNU M4, and export it in $M4. -require_gnu_m4=func_require_gnu_m4 -func_require_gnu_m4 () -{ - $debug_cmd - - test -n "$M4" || { - # Find the first m4 binary that responds to --version. - func_find_tool M4 gm4 gnum4 m4 - } - - test -n "$M4" || func_fatal_error "\ -Error: Please install GNU M4, or \`export M4=/path/to/gnu/m4'." - - func_verbose "export M4='$M4'" - - # Make sure the search result is visible to subshells - export M4 - - require_gnu_m4=: -} - - -# require_gnulib_cache -# -------------------- -# Ensure there is a non-empty default for `$gnulib_cache', and that it -# names an existing file. -require_gnulib_cache=func_require_gnulib_cache -func_require_gnulib_cache () -{ - $debug_cmd - - $require_macro_dir - - test -n "$gnulib_cache" \ - || gnulib_cache="$macro_dir/gnulib-cache.m4" - - func_verbose "found \`$gnulib_cache'" - - require_gnulib_cache=: -} - - -# require_gnulib_files_already_present -# ------------------------------------ -# If we have no means to update imported gnulib files, then try to -# ensure at least that this tree already has files from a previous -# `gnulib-tool' run. -require_gnulib_files_already_present=func_require_gnulib_files_already_present -func_require_gnulib_files_already_present () -{ - $debug_cmd - - $require_build_aux - $require_macro_dir - $require_gnulib_mk - $require_source_base - - # As a heuristic, only bail out if any of the following - # are missing. - my_gnulib_files_already_present=" - $build_aux/install-sh - $macro_dir/00gnulib.m4 - $source_base/${gnulib_mk:-Makefile.am} - " - - $opt_dry_run || { - for my_file in $my_gnulib_files_already_present; do - test -f "$my_file" || func_fatal_error "\ -Error: Can't find, copy or download required gnulib files, - please provide the location of a complete \`gnulib' tree - by setting \`gnulib_path' in your \`bootstrap.conf' or - with the \`--gnulib-srcdir' option - or else specify the - location of your \`git' binary by setting \`GIT' in the - environment so that a fresh \`gnulib' submodule can be - cloned." - done - } - - require_gnulib_files_already_present=: -} - - -# require_gnulib_merge_changelog -# ------------------------------ -# See if we can use gnulib's git-merge-changelog merge driver. -require_gnulib_merge_changelog=func_require_gnulib_merge_changelog -func_require_gnulib_merge_changelog () -{ - $debug_cmd - - test -f ChangeLog && { - $require_git - - test true = "$GIT" || { - if $GIT config merge.merge-changelog.driver >/dev/null ; then - : - elif (git-merge-changelog --version) >/dev/null 2>&1 ; then - func_echo "initializing git-merge-changelog driver" - $GIT config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' - $GIT config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' - else - func_warning recommend \ - "Consider installing git-merge-changelog from gnulib." - fi - } - } - - require_gnulib_merge_changelog=: -} - - -# require_gnulib_mk -# ----------------- -# Ensure gnulib_mk has a sensible value, extracted from `gnulib-cache.m4' -# if possible, otherwise letting `gnulib-tool' pick a default. -require_gnulib_mk=func_require_gnulib_mk -func_require_gnulib_mk () -{ - $debug_cmd - - test -n "$gnulib_mk" || { - $require_gnulib_cache - $require_macro_dir - - func_extract_trace "gl_MAKEFILE_NAME" "$gnulib_cache" - gnulib_mk="$func_extract_trace_result" - - test -n "$gnulib_mk" && func_verbose "gnulib_mk='$gnulib_mk'" - } - - require_gnulib_mk=: -} - - -# require_gnulib_path -# require_gnulib_url -# ------------------- -# Ensure `gnulib_path' and `gnulib_url' are set. -require_gnulib_path=func_require_dotgitmodules_parameters -require_gnulib_url=func_require_dotgitmodules_parameters -func_require_dotgitmodules_parameters () -{ - $debug_cmd - - $require_git - - if test true = "$GIT"; then - # If we can't find git (or if the user specified `--skip-git'), - # then use an existing gnulib directory specified with - # `--gnulib-srcdir' if possible. - test -n "$gnulib_path" \ - || test ! -x "$opt_gnulib_srcdir/gnulib-tool" \ - || gnulib_path="$opt_gnulib_srcdir" - fi - - $require_dotgitmodules - - # Extract the parameters with sed, since git may be missing - test -n "$gnulib_path" \ - || gnulib_path=`sed -e '/^.submodule "gnulib".$/,${ - /[ ]*path *= */{ - s,[ ]*,,g;s,^[^=]*=,,;p - } - };d' .gitmodules | sed 1q` - test -n "$gnulib_url" \ - || gnulib_url=`sed -e '/^.submodule "gnulib".$/,${ - /[ ]*url *= */{ - s,[ ]*,,g;s,^[^=]*=,,;p - } - };d' .gitmodules | sed 1q` - - func_verbose "gnulib_path='$gnulib_path'" - func_verbose "gnulib_url='$gnulib_url'" - - require_gnulib_path=: - require_gnulib_url=: -} - - -# require_gnulib_submodule -# ------------------------ -# Ensure that there is a current gnulib submodule at `$gnulib_path'. -require_gnulib_submodule=func_require_gnulib_submodule -func_require_gnulib_submodule () -{ - $debug_cmd - - $require_git - - if test true = "$GIT"; then - func_warning recommend \ - "No \`git' found; imported gnulib modules may be outdated." - else - $require_gnulib_path - $require_gnulib_url - - if test -f .gitmodules && test -f "$gnulib_path/gnulib-tool"; then - func_show_eval "$GIT submodule update" \ - 'func_fatal_error "Error: Unable to update gnulib submodule."' - - elif test -n "$opt_gnulib_srcdir"; then - # Older git can't clone into an empty directory. - rmdir "$gnulib_path" 2>/dev/null - func_show_eval "$GIT clone --reference '$opt_gnulib_srcdir' \ - '$gnulib_url' '$gnulib_path'" \ - && func_show_eval "$GIT submodule init" \ - && func_show_eval "$GIT submodule update" \ - || func_fatal_error "Error: Unable to fetch gnulib submodule." - - # Without --gnulib-srcdir, and no existing checked out submodule, we - # create a new shallow clone of the remote gnulib repository. - else - trap func_cleanup_gnulib 1 2 13 15 - - shallow= - $GIT clone -h 2>&1 |func_grep_q -- --depth \ - && shallow='--depth 2' - - func_show_eval "$GIT clone $shallow '$gnulib_url' '$gnulib_path'" \ - func_cleanup_gnulib - - trap - 1 2 13 15 - fi - fi - - require_gnulib_submodule=: -} - - -# require_gnulib_tool -# ------------------- -# Ensure that `$gnulib_tool' is set, and points to an executable file, -# or else fall back to using the binary `true' if the main gnulib -# files appear to have been imported already. -require_gnulib_tool=func_require_gnulib_tool -func_require_gnulib_tool () -{ - $debug_cmd - - $require_gnulib_submodule - - test true = "$gnulib_tool" || { - $require_gnulib_path - - test -n "$gnulib_tool" \ - || gnulib_tool="$gnulib_path/gnulib-tool" - - test -x "$gnulib_tool" || { - $require_gnulib_files_already_present - - gnulib_tool=true - func_warning recommend \ - "No \`gnulib-tool' found; gnulib modules may be missing." - } - - test true = "$gnulib_tool" \ - || func_verbose "found \`$gnulib_tool'" - } - - require_gnulib_tool=: -} - - -# require_libtoolize -# ------------------ -# Skip libtoolize if it's not needed. -require_libtoolize=func_require_libtoolize -func_require_libtoolize () -{ - $debug_cmd - - # Unless we're not searching for libtool use by this package, set - # LIBTOOLIZE to true if none of `LT_INIT', `AC_PROG_LIBTOOL' and - # `AM_PROG_LIBTOOL' are used in configure. - test true = "$LIBTOOLIZE" || { - func_extract_trace LT_INIT - test -n "$func_extract_trace_result"||func_extract_trace AC_PROG_LIBTOOL - test -n "$func_extract_trace_result"||func_extract_trace AM_PROG_LIBTOOL - test -n "$func_extract_trace_result"||LIBTOOLIZE=true - } - - test -n "$LIBTOOLIZE" || { - # Find libtoolize, named glibtoolize in Mac Ports, but prefer - # user-installed libtoolize to ancient glibtoolize shipped by - # Apple with Mac OS X when Mac Ports is not installed. - func_find_tool LIBTOOLIZE libtoolize glibtoolize - } - - func_verbose "export LIBTOOLIZE='$LIBTOOLIZE'" - - # Make sure the search result is visible to subshells - export LIBTOOLIZE - - require_libtoolize=: -} - - -# require_macro_dir -# ----------------- -# Ensure that `$macro_dir' is set, and if it doesn't already point to an -# existing directory, create one. -require_macro_dir=func_require_macro_dir -func_require_macro_dir () -{ - $debug_cmd - - # Sometimes this is stored in `configure.ac'. - test -n "$macro_dir" || { - func_extract_trace AC_CONFIG_MACRO_DIR - macro_dir="$func_extract_trace_result" - } - - # Otherwise we might find it in `Makefile.am'. - test -n "$macro_dir" || { - $require_aclocal_amflags - - my_sed_scan='s|^.*-I[ ]*\([^ ]*\) .*|\1|' - - # Trailing space in echo is required by the sed script. - macro_dir=`echo "$aclocal_amflags " |$SED "$my_sed_scan"` - } - - func_verbose "macro_dir='$macro_dir'" - - func_check_configuration macro_dir \ - "AC_CONFIG_MACRO_DIR([name of a directory for configure m4 files])" - - $require_vc_ignore_files - - # If the macro_dir directory doesn't exist, create it now, and mark it - # as ignored for the VCS. - if test ! -d "$macro_dir"; then - mkdir "$macro_dir" || func_permissions_error "$macro_dir" - - test -n "$vc_ignore_files" \ - || func_insert_sorted_if_absent "$macro_dir" $vc_ignore_files - fi - - require_macro_dir=: -} - - -# require_makefile_am -# ------------------- -# Ensure there is a `Makefile.am' in the current directory. -# names an existing file. -require_makefile_am=func_require_makefile_am -func_require_makefile_am () -{ - $debug_cmd - - test -n "$makefile_am" \ - || makefile_am="Makefile.am" - - <"$makefile_am" - - func_verbose "found \`$makefile_am'" - - require_makefile_am=: -} - - -# require_package -# --------------- -# Ensure that `$package' contains a sensible default value. -require_package=func_require_package -func_require_package () -{ - $debug_cmd - - test -n "$package" || { - $require_package_name - - package=`echo "$package_name" \ - |$SED 's/GNU //;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - } - - func_verbose "package='$package'" - - require_package=: -} - - -# require_package_bugreport -# ------------------------- -# Ensure that this has a sensible value, extracted from `configure.ac' -# if appropriate (and possible!). -require_package_bugreport=func_require_package_bugreport -func_require_package_bugreport () -{ - $debug_cmd - - func_extract_trace AC_INIT - - save_ifs="$IFS" - IFS=: - set dummy $func_extract_trace_result - IFS="$save_ifs" - shift - - test -n "$package_bugreport" || package_bugreport="$3" - func_check_configuration package_bugreport \ - "AC_INIT([$package_name], [$package_version], [bug-$package@gnu.org])" - func_verbose "package_bugreport='$package_bugreport'" - - require_package_bugreport=: -} - - -# require_package_name -# -------------------- -# Ensure that this has a sensible value, extracted from `configure.ac' -# if appropriate (and possible!). -require_package_name=func_require_package_name -func_require_package_name () -{ - $debug_cmd - - func_extract_trace AC_INIT - - save_ifs="$IFS" - IFS=: - set dummy $func_extract_trace_result - IFS="$save_ifs" - shift - - test -n "$package_name" || package_name="$1" - func_check_configuration package_name \ - "AC_INIT([name of your package], [package version number])" - func_verbose "package_name='$package_name'" - - require_package_name=: -} - - -# require_package_version -# ----------------------- -# Ensure that this has a sensible value, extracted from `configure.ac' -# if appropriate (and possible!). While we might have set all the -# parameters extracted from AC_INIT at once, `package_version' in -# particular is not necessarily available as early as the others, since -# `git-version-gen' is often involved, and until then we can't rely on -# getting a correct version number from an AC_INIT extraction. -require_package_version=func_require_package_version -func_require_package_version () -{ - $debug_cmd - - func_extract_trace AC_INIT - - save_ifs="$IFS" - IFS=: - set dummy $func_extract_trace_result - IFS="$save_ifs" - shift - - test -n "$package_version" || package_version="$2" - func_check_configuration package_version \ - "AC_INIT([$package_name], [package version number])" - func_verbose "package_version='$package_version'" - - require_package_version=: -} - - -# require_source_base -# ------------------- -# Ensure that source_base has a sensible value, extracted from -# `gnulib-cache.m4' if possible. -require_source_base=func_require_source_base -func_require_source_base () - { - $debug_cmd - - $require_gnulib_cache - - test -f "$gnulib_cache" && test x = "x$source_base" && { - $require_macro_dir - - func_extract_trace "gl_SOURCE_BASE" "$gnulib_cache" - - source_base="$func_extract_trace_result" - - func_verbose "source_base='$source_base'" - } - - # Only prevent repeated calls if we found something... - # gnulib-cache.m4 might arrive before the next call. - test -n "$source_base" && require_source_base=: -} - - -# require_vc_ignore_files -# ----------------------- -# Ensure that `$vc_ignore' has been processed to list VCS ignore files -# in `$vc_ignore_files' -require_vc_ignore_files=func_require_vc_ignore_files -func_require_vc_ignore_files () -{ - $debug_cmd - - test -n "$vc_ignore" || vc_ignore=auto - - if test auto = "$vc_ignore" && test x = x"$vc_ignore_files"; then - vc_ignore_files= - test -d .git && vc_ignore_files=.gitignore - test -d CVS && vc_ignore_files="$vc_ignore_files .cvsignore" - else - vc_ignore_files="$vc_ignore" - fi - - func_verbose "vc_ignore_files='$vc_ignore_files'" - - require_vc_ignore_files=: -} - - -## ------------------## -## Helper functions. ## -## ------------------## - -# This section contains the helper functions used by the rest of `bootstrap'. - -# func_len STRING -# --------------- -# STRING may not start with a hyphen. -if (eval 'x=123; test x${#x} = "x3"') 2>/dev/null -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo 0` - } -fi - - -# func_unset VAR -# -------------- -# Portably unset VAR. -func_unset () -{ - { eval $1=; unset $1; } -} -unset=func_unset - - -# func_cmp_s FILE1 FILE2 -# ---------------------- -# Return non-zero exit status unless FILE1 and FILE2 are identical, without -# output. -func_cmp_s () -{ - $debug_cmd - - # This function relies on non-zero exit status, which will cause the - # program to exit when running in `set -e' mode. - $CMP "$@" >/dev/null 2>&1 -} - - -# func_grep_q EXPRESSION [FILENAME..]. -# ------------------------------------ -# Check whether EXPRESSION matches any line of any listed FILENAME, -# without output. -func_grep_q () -{ - $debug_cmd - - # This function relies on non-zero exit status, which will cause the - # program to exit when running in `set -e' mode. - $GREP "$@" >/dev/null 2>&1 -} - - -# func_append_u VAR VALUE -# ----------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_u options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_u () -{ - $debug_cmd - - eval my_current_value='`echo $'$1'`' - my_delim=`expr "$2" : '\(.\)'` - - case $my_delim$my_current_value$my_delim in - *"$2$my_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_strpad STR WIDTH CHAR -# -------------------------- -# Trim STR, or pad with CHAR to force a total length of WIDTH. -func_strpad () -{ - $debug_cmd - - my_width=`expr "$2" - 1` - func_strpad_result=`echo "$1" |$SED ' - :a - s|^.\{0,'"$my_width"'\}$|&'"$3"'| - ta - '` -} - - -# func_strrpad STR WIDTH CHAR -# --------------------------- -# Trim STR, or right-justify-pad with CHAR to force a total length of -# WIDTH. -func_strrpad () -{ - $debug_cmd - - my_width=`expr "$2" - 1` - func_strrpad_result=`echo "$1" |$SED ' - :a - s|^.\{0,'"$my_width"'\}$|'"$3"'&| - ta - '` -} - - -# func_strrow INDENT FIELD WIDTH [FIELDn WIDTHn]... -# ------------------------------------------------- -# Return a string containing each FIELD left justified to WIDTH, with -# the whole thing indented by INDENT spaces. This function is used to -# render one row of aligned columns for a table by func_strtable(). -func_strrow () -{ - $debug_cmd - - func_strrow_linelen="$1"; shift - - my_row= - while test $# -gt 0; do - func_strrow_linelen=`expr $func_strrow_linelen + $2` - func_strpad "$1" $2 " " - func_append my_row "$func_strpad_result" - shift; shift - done - - func_strrpad "$my_row" $func_strrow_linelen " " - func_strrow_result="$func_strrpad_result" -} - - -# func_strtable INDENT WIDTH1...WIDTHn HEADER1...HEADERn FIELD1...FIELDn -# ---------------------------------------------------------------------- -# Generate a string of newline-separated rows arranged in lined-up -# columns of the given WIDTHs, with the entire table indented by INDENT -# spaces. The number of columns is determined by the number of integer -# valued WIDTH arguments following INDENT. The next set (i.e. a number -# of arguments equal to the number of WIDTH arguments) of fields are -# treated as the table's column HEADERs, and are separated from the -# remainder of the table by an indented row of `-' characters. Remaining -# arguments are each aligned below the next available header, wrapping -# to a new row as necessary. Finally another row of `-' characters is -# added to mark the end of the table. -# -# For example an unindented 3 column table with 2 rows of data would be -# generated by this call: -# -# func_strtable 3 20 10 25 \ -# Header1 Header2 Header3 \ -# Row1Col1 Row1Col2 Row1Col3 \ -# Row2Col1 Row2Col2 Row2Col3 -# -# returning the following string: -# -# " Header1 Header2 Header3 -# ------------------------------------------------------- -# Row1Col1 Row1Col2 Row1Col3 -# Row2Col1 Row2Col2 Row2Col3 -# -------------------------------------------------------" -func_strtable () -{ - $debug_cmd - - # Save the indent value, we'll need it for each row we render. - my_indent="$1"; shift - - # Collect remaining numeric args into a list for reuse between - # members of each row when we call func_strrow later. - my_widths="$1"; shift - while test 0 -lt `expr "$1" : '[1-9][0-9]*$'`; do - func_append my_widths " $1"; shift - done - - # Extract the same number of positional parameters as there are - # width elements - we'll do the header rows separately so that - # we can insert a divider line. - my_header="$my_indent" - for my_width in $my_widths; do - func_append my_header " $1 $my_width"; shift - done - func_strrow $my_header - - # Strip off the indent, and make a divider with `-' chars, then - # reindent. - my_divider=`echo "$func_strrow_result" \ - |$SED 's|[^ ]|-|g - :a - s|- |--|g - ta - '` - - # Append the header and divider to the running result. - func_append func_strtable_result "\ -$func_strrow_result -$my_divider -" - - # The remaining rows are zipped between the width values we - # unwound earlier just like the header row above. - while test $# -gt 0; do - my_row="$my_indent" - for my_width in $my_widths; do - func_append my_row " $1 $my_width"; shift - done - func_strrow $my_row - func_append func_strtable_result "\ -$func_strrow_result -" - done - - # Mark the end of the table with a final divider line. - func_append func_strtable_result "$my_divider" -} - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message, taking newlines into account. -func_echo () -{ - my_message="$*" - - save_IFS="$IFS" - IFS="$nl" - for my_line in $my_message; do - IFS="$save_IFS" - echo "$progname: $my_line" - done - IFS="$save_IFS" -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - my_message="$*" - - save_IFS="$IFS" - IFS="$nl" - for my_line in $my_message; do - IFS="$save_IFS" - echo "$progname: $bold_on$my_line$bold_off" 1>&2 - done - IFS="$save_IFS" -} - -# Allow display of bold text on terminals that support it -bold_on= -bold_off= -if test -t 1; then - if test -n "`tput bold 2>/dev/null`" \ - && test -n "`tput sgr0 2>/dev/null`" - then - bold_on=`tput bold` - bold_off=`tput sgr0` - fi -fi - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_internal_error ARG... -# -------------------------- -# Echo program name prefixed message to standard error, and exit. -func_internal_error () -{ - func_fatal_error "INTERNAL ERROR: " ${1+"$@"} " - Please report this bug to \`bug-gnulib@gnu.org' - in as much detail as possible." -} - - -# func_permissions_error FILE-OR-DIRECTORY -# ---------------------------------------- -# Echo program name prefixed permissions error message to standard -# error, and exit. -func_permissions_error () -{ - $debug_cmd - - func_fatal_error "Error: Failed to create \`$1', check permissions." -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY. -func_warning () -{ - $debug_cmd - - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category \`$1'" ;; - esac - - my_category="$1" - shift - - case " $opt_warning " in - *" $my_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - func_error ${1+"$@"} - func_fatal_error "$fatal_help" -} -fatal_help="Try \`$progname --help' for more information." ## default - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - cat <<EOF -$progname $scriptversion -EOF - $SED -n '/(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - }' < "$progpath" - - exit $? -} - - -# func_usage [NOEXIT] -# ------------------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - echo "$progpath [OPTION]..." - echo "" - echo "$usage_message" - - my_ret=$? - test -n "$1" || { - echo "Run \`$progname --help | more' for full usage" - exit $my_ret - } -} - - -# func_help [NOEXIT] -# ------------------ -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $debug_cmd - - func_usage noexit - echo "$long_help_message" - - my_ret=$? - test -n "$1" || exit $my_ret -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Error: Missing argument for \`$1'." - exit_cmd=exit -} - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if (eval 'x=-abc; y=${x#??}; z=${x%$y}; test x$y$z = xbc-a') 2>/dev/null -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the `=' sign. -if (eval 'x='--ab=cd'; y=${x#*=}; z=${x%%=*}; test x$y$z = xcd--ab') 2>/dev/null -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs="" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*)'` - func_split_equals_rhs="" - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_result= - - while test $# -gt 0; do - case $1 in - *[\\\`\"\$]*) - my_unquoted_arg=`printf "$1" | $SED "$sed_quote_subst"` ;; - *) - my_unquoted_arg="$1" ;; - esac - - case $my_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_quoted_arg="\"$my_unquoted_arg\"" - ;; - *) - my_quoted_arg="$my_unquoted_arg" ;; - esac - test -n "$func_quote_for_eval_result" \ - && func_append func_quote_for_eval_result " " - func_append func_quote_for_eval_result "$my_quoted_arg" - shift - done -} - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_eval $my_cmd - eval func_truncate_cmd $func_quote_for_eval_result - func_echo "running: $func_truncate_cmd_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_truncate_cmd CMD [ARG]... -# ------------------------------ -# For unreasonably long commands (such as a gnulib-tool invocation with -# the full module list for import), truncate CMD after the second non- -# option ARG. -func_truncate_cmd () -{ - $debug_cmd - - my_last_arg_opt_p=false - func_truncate_cmd_result= - - set dummy "$@"; shift - - while test $# -gt 0; do - my_opt="$1"; shift - - test -n "$func_truncate_cmd_result" \ - && func_append func_truncate_cmd_result ' ' - func_append func_truncate_cmd_result "$my_opt" - - func_len "x$func_truncate_cmd_result" - - case $my_opt in - -*) my_last_arg_opt_p=: ;; - *) $my_last_arg_opt_p \ - || test $min_cmd_len -gt $func_len_result \ - || break - my_last_arg_opt_p=false - ;; - esac - done - - test $# -gt 0 && func_append func_truncate_cmd_result "..." -} - - -# func_extract_trace MACRO_NAME [FILENAME]... -# ------------------------------------------- -# set `$func_extract_trace_result' to a colon delimited list of -# arguments to MACRO_NAME in FILENAME. If no FILENAME is not given, -# then `configure.ac' is assumed. -func_extract_trace () -{ - $debug_cmd - - $require_configure_ac - $require_gnu_m4 - - my_macro="$1"; shift - test $# -gt 0 || { - set dummy $configure_ac - shift - } - - # Generate an error if the first file is missing - <"$1" - - # Sadly, we can't use `autom4te' tracing to extract macro - # arguments, because it complains about things we want to - # ignore at bootstrap time - like missing m4_include files; - # AC_PREREQ being newer than the installed autoconf; and - # returns nothing when tracing `AM_INIT_AUTOMAKE' when - # aclocal hasn't been generated yet. - # - # The following tries to emulate a less persnickety version - # of (and due to not having to wait for Perl startup on - # every invocation, it's probably faster too): - # - # autom4te --language=Autoconf --trace=$my_macro:\$% "$@" - # - # First we give a minimal set of macro declarations to M4 - # to prime it for reading Autoconf macros, while still - # providing some of the functionality generally used at - # m4-time to supply dynamic arguments to Autocof functions, - # but without following `m4_s?include' files. - # - # We discard M4's stdout, but the M4 trace output from reading - # our "autoconf.mini" followed by any other files passed to - # this function is then scanned by sed to transform it into - # a colon delimited argument list assigned to a shell variable. - # - # Finally, we `eval' the sed generated assignment to get - # the result back into this script for further use by callers - # of this function. - - func_extract_trace_result= - eval `echo ' - # Initialisation. - m4_changequote([,]) - m4_define([m4_copy], [m4_define([$2], m4_defn([$1]))]) - m4_define([m4_rename], [m4_copy([$1], [$2])m4_undefine([$1])]) - - # Disable these macros. - m4_undefine([m4_dnl]) - m4_undefine([m4_include]) - m4_undefine([m4_m4exit]) - m4_undefine([m4_m4wrap]) - m4_undefine([m4_maketemp]) - - # Copy and rename macros not handled by "m4 --prefix". - m4_define([dnl], [m4_builtin([dnl])]) - m4_copy([m4_define], [m4_defun]) - m4_rename([m4_ifelse], [m4_if]) - m4_ifdef([m4_mkstemp], [m4_undefine([m4_mkstemp])]) - m4_rename([m4_patsubst], [m4_bpatsubst]) - m4_rename([m4_regexp], [m4_bregexp]) - - # "m4sugar.mini" - useful m4-time macros for dynamic arguments. - # If we discover packages that need more m4 macros defined in - # order to bootstrap correctly, add them here: - m4_define([m4_bmatch], - [m4_if([$#], 0, [], [$#], 1, [], [$#], 2, [$2], - [m4_if(m4_bregexp([$1], [$2]), -1, - [$0([$1], m4_shift3($@))], [$3])])]) - m4_define([m4_ifndef], [m4_ifdef([$1], [$3], [$2])]) - m4_define([m4_ifset], - [m4_ifdef([$1], [m4_ifval(m4_defn([$1]), [$2], [$3])], [$3])]) - m4_define([m4_require], [$1]) - m4_define([m4_shift3], [m4_shift(m4shift(m4shift($@)))]) - - # "autoconf.mini" - things from autoconf macros we care about. - m4_copy([m4_defun], [AC_DEFUN]) - - # Dummy definition for the macro we want to trace. - # AM_INIT_AUTOMAKE at least produces no trace without this. - AC_DEFUN(['"$my_macro"'])' \ - |$M4 -daq --prefix --trace="$my_macro" - "$@" 2>&1 1>/dev/null \ - |$SED -n 's|#.*$|| - /^m4trace: -1- '"$my_macro"'/ { - s|^m4trace: -1- '"$my_macro"'[([]*|func_extract_trace_result='\''| - s|], [[]|:|g - s|[])]*$|:'\''| - s|[^'\'']$|\&'\''| - p - }'` - - # Leave the ':' sentinel in place for successfully traced macros - # without arguments, otherwise remove it so that the results of - # single-argument macros can be used without additional parsing. - test : = "$func_extract_trace_result" \ - || func_extract_trace_result=`echo "$func_extract_trace_result" |$SED 's|:$||'` -} - - -# func_insert_sorted_if_absent STR FILE... -# ---------------------------------------- -# If $STR is not already on a line by itself in $FILE, insert it, -# sorting the new contents of the file and replacing $FILE with the result. -func_insert_sorted_if_absent () -{ - $debug_cmd - - str=$1 - shift - - for file - do - test -f $file || touch $file - - func_grep_q "$str" "$file" \ - && func_verbose "inserting \`$str' into \`$file'" - - echo "$str" | sort -u - $file | func_cmp_s - $file \ - || echo "$str" | sort -u - $file -o $file \ - || func_permissions_error "$file" - done -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () # sort -V is not generally available -{ - $debug_cmd - - ver1="$1" - ver2="$2" - - # split on '.' and compare each component - i=1 - while : ; do - p1=`echo "$ver1" | cut -d. -f$i` - p2=`echo "$ver2" | cut -d. -f$i` - if test ! "$p1"; then - echo "$1 $2" - break - elif test ! "$p2"; then - echo "$2 $1" - break - elif test ! "$p1" = "$p2"; then - if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison - echo "$2 $1" - elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison - echo "$1 $2" - else # numeric, then lexicographic comparison - lp=`printf "$p1\n$p2\n" | sort -n | tail -n1` - if test "$lp" = "$p2"; then - echo "$1 $2" - else - echo "$2 $1" - fi - fi - break - fi - i=`expr $i + 1` - done -} - - -# func_get_version APP -# -------------------- -# echo the version number (if any) of APP, which is looked up along your -# PATH. -func_get_version () -{ - $debug_cmd - - app=$1 - - { $app --version || $app --version </dev/null; } >/dev/null 2>&1 \ - || return 1 - - $app --version 2>&1 | - $SED -n '# extract version within line - s|.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*|\1| - t done - - # extract version at start of line - s|^\([0-9]\{1,\}\.[.a-z0-9-]*\).*|\1| - t done - - d - - :done - #the following essentially does s|5.005|5.5| - s|\.0*\([1-9]\)|.\1|g - p - q' -} - - -# func_check_versions APP1 VER1 URL1 ...[APPN VERN URLN] -# ------------------------------------------------------ -func_check_versions () -{ - $debug_cmd - - func_check_versions_result=: - - while test $# -gt 0; do - my_app="$1"; shift - my_reqver="$1"; shift - my_url="$1"; shift - - # Honor $APP variables ($TAR, $AUTOCONF, etc.) - my_appvar=`echo $my_app | tr '[a-z]' '[A-Z]'` - test "$my_appvar" = TAR && my_appvar=AMTAR - eval "my_app=\${$my_appvar-$my_app}" - my_instver=`func_get_version $my_app` - - test ! "$my_instver" \ - || func_verbose "found \`$my_app' version $my_instver" - - # Fail if --version didn't work. - if test ! "$my_instver"; then - func_error "Error: \`$my_app' not found" - func_check_versions_result=false - - # Fail if a new version than what we have is required. - elif test ! "$my_reqver" = "-"; then - my_newer=`func_sort_ver $my_reqver $my_instver | cut -d' ' -f2` - test ! "$my_newer" = "$my_instver" && { - func_error "\ -Error: \`$my_app' version == $my_instver is too old - \`$my_app' version >= $my_reqver is required" - func_check_versions_result=false - } - fi - done -} - - -# func_cleanup_gnulib -# ------------------- -# Recursively delete everything below the path in the global variable -# GNULIB_PATH. -func_cleanup_gnulib () -{ - $debug_cmd - - status=$? - $RM -fr "$gnulib_path" - exit $status -} - - -# func_symlink_to_dir SRCDIR FILENAME [DEST_FILENAME] -# --------------------------------------------------- -# Make a symlink from FILENAME in SRCDIR to the current directory, -# optionally calling the symlink DEST_FILENAME. -func_symlink_to_dir () -{ - $debug_cmd - - $require_vc_ignore_files - - src=$1/$2 - dst=${3-$2} - - test -f "$src" && { - - # If the destination directory doesn't exist, create it. - # This is required at least for "lib/uniwidth/cjk.h". - dst_dir=`dirname "$dst"` - if ! test -d "$dst_dir"; then - mkdir -p "$dst_dir" - - # If we've just created a directory like lib/uniwidth, - # tell version control system(s) it's ignorable. - # FIXME: for now, this does only one level - parent=`dirname "$dst_dir"` - for dot_ig in x $vc_ignore_files; do - test $dot_ig = x && continue - ig=$parent/$dot_ig - func_insert_sorted_if_absent `echo "$dst_dir" |$SED 's|.*/||'` $ig - done - fi - - if $opt_copy; then - { - test ! -h "$dst" \ - || func_show_eval "$RM -f '$dst'" - } \ - && test -f "$dst" \ - && func_cmp_s "$src" "$dst" \ - && func_echo "copying file \`$src'" \ - && cp -fp "$src" "$dst" - else - test -h "$dst" \ - && src_ls=`ls -diL "$src" 2>/dev/null` \ - && set $src_ls && src_i=$1 \ - && dst_ls=`ls -diL "$dst" 2>/dev/null` \ - && set $dst_ls && dst_i=$1 \ - && test "$src_i" = "$dst_i" \ - || { - dot_dots= - case $src in - /*) ;; - *) - case /$dst/ in - *//* | */../* | */./* | /*/*/*/*/*/) - func_fatal_error "\ -Error: Invalid symlink calculation: $src -> $dst" - ;; - /*/*/*/*/) dot_dots=../../../;; - /*/*/*/) dot_dots=../../;; - /*/*/) dot_dots=../;; - esac - ;; - esac - - func_echo "linking file \`$src'" - ln -fs "$dot_dots$src" "$dst" - } - fi - } -} - - -# func_download_po_files SUBDIR DOMAIN -# ------------------------------------ -func_download_po_files () -{ - $debug_cmd - - func_echo "getting translations into $1 for $2..." - cmd=`printf "$po_download_command_format" "$2" "$1"` - eval "$cmd" -} - - -# func_find_tool ENVVAR NAMES... -# ------------------------------ -# Search for a required program. Use the value of ENVVAR, if set, -# otherwise find the first of the NAMES that can be run (i.e., -# supports --version). If found, set ENVVAR to the program name, -# die otherwise. -func_find_tool () -{ - $debug_cmd - - find_tool_envvar=$1 - shift - find_tool_names=$@ - eval "find_tool_res=\$$find_tool_envvar" - if test x"$find_tool_res" = x; then - for i - do - if ($i --version </dev/null) >/dev/null 2>&1; then - find_tool_res=$i - break - fi - done - else - find_tool_error_prefix="\$$find_tool_envvar: " - fi - test x"$find_tool_res" = x && func_fatal_error "\ -Error: One of these is required: - $find_tool_names" - - ($find_tool_res --version </dev/null) >/dev/null 2>&1 \ - || func_fatal_error "\ -Error: ${find_tool_error_prefix}Cannot run \`$find_tool_res --version'" - - eval "$find_tool_envvar=\$find_tool_res" - eval "export $find_tool_envvar" -} - - -# func_update_po_files PO_DIR DOMAIN -# ---------------------------------- -# Mirror .po files to $po_dir/.reference and copy only the new -# or modified ones into $po_dir. Also update $po_dir/LINGUAS. -# Note po files that exist locally only are left in $po_dir but will -# not be included in LINGUAS and hence will not be distributed. -func_update_po_files () -{ - $debug_cmd - - # Directory containing primary .po files. - # Overwrite them only when we're sure a .po file is new. - po_dir=$1 - domain=$2 - - # Mirror *.po files into this dir. - # Usually contains *.s1 checksum files. - ref_po_dir="$po_dir/.reference" - - test -d $ref_po_dir || mkdir $ref_po_dir || return - func_download_po_files $ref_po_dir $domain \ - && ls "$ref_po_dir"/*.po 2>/dev/null | - $SED 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return - - # Find sha1sum, named gsha1sum on MacPorts, and shasum on MacOS 10.6. - func_find_tool SHA1SUM sha1sum gsha1sum shasum - - langs=`cd $ref_po_dir && echo *.po|$SED 's|\.po||g'` - test "$langs" = '*' && langs=x - for po in $langs; do - case $po in x) continue;; esac - new_po="$ref_po_dir/$po.po" - cksum_file="$ref_po_dir/$po.s1" - if ! test -f "$cksum_file" || - ! test -f "$po_dir/$po.po" || - ! $SHA1SUM -c --status "$cksum_file" \ - < "$new_po" > /dev/null; then - echo "updated $po_dir/$po.po..." - cp "$new_po" "$po_dir/$po.po" \ - && $SHA1SUM < "$new_po" > "$cksum_file" - fi - done -} - - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Allow overriding, eg to get a function call trace: -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash bootstrap -debug_cmd="${debug_cmd-:}" -exit_cmd=: - -dirname='s|/[^/]*$||' -basename='s|^.*/||' - -nl=' -' - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -progname=`echo "$progpath" |$SED "$basename"` - -## -------------------------------------------------- ## -## Source package customisations in `bootstrap.conf'. ## -## -------------------------------------------------- ## - -# Override the default configuration, if necessary. -# Make sure that bootstrap.conf is sourced from the current directory -# if we were invoked as "sh bootstrap". -case "$0" in - */*) test -r "$0.conf" && . "$0.conf" ;; - *) test -r "$0.conf" && . ./"$0.conf" ;; -esac - - -## ------------------------------- ## -## Actually perform the bootstrap. ## -## ------------------------------- ## - -func_bootstrap ${1+"$@"} - -# The End. -exit $exit_status - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/Build/source/texk/psutils/psutils-src/bootstrap.conf b/Build/source/texk/psutils/psutils-src/bootstrap.conf deleted file mode 100644 index f00efadf76d..00000000000 --- a/Build/source/texk/psutils/psutils-src/bootstrap.conf +++ /dev/null @@ -1,86 +0,0 @@ -# bootstrap.conf (psutils) -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010 Gary V. Vaughan. - -# This file is part of psutils. -# See LICENSE for license. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# Additional gnulib-tool options to use. -gnulib_tool_options=' -' - -# gnulib modules used by this package. -# FIXME: progname should not be needed -gnulib_modules=' - warnings - manywarnings - binary-io - fseeko - fstat - ftello - getopt-gnu - getline - progname - unistd - verror - xvasprintf -' - -# Extra gnulib files that are not in modules, which override files of -# the same name installed by other bootstrap tools. -gnulib_non_module_files=' - build-aux/config.guess - build-aux/config.sub - build-aux/install-sh -' - -# The not-synced with gnulib warning is bogus until upstream adopts -# the saner bootstrap script. -require_bootstrap_uptodate=: - -## --------------- ## -## Hook functions. ## -## --------------- ## - -# psutils_ignore_gnulib_ignore -# ---------------------------- -# gnulib-tool updates m4/.gitignore and lib/.gitignore, and keeping -# generated files under version control does not make sense. Since -# lib is entirely ignored, we only need to prepopulate the m4 ignore -# files with generated files not tracked by gnulib-tool. -psutils_ignore_gnulib_ignore () -{ - $debug_cmd - - $require_macro_dir - - if test -f "$macro_dir/.gitignore" ; then - : - else - func_verbose "creating initial \`$macro_dir/.gitignore'" - cat > $macro_dir/.gitignore <<\EOF -# files created by bootstrap, but that gnulib doesn't track -*~ -/.gitignore -/gnulib-cache.m4 -/gnulib-comp.m4 -/libtool.m4 -/ltoptions.m4 -/ltsugar.m4 -/ltversion.m4 -/lt~obsolete.m4 -EOF - fi -} -func_add_hook func_prep psutils_ignore_gnulib_ignore - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# End: diff --git a/Build/source/texk/psutils/psutils-src/configure.ac b/Build/source/texk/psutils/psutils-src/configure.ac deleted file mode 100644 index 0b63a76a582..00000000000 --- a/Build/source/texk/psutils/psutils-src/configure.ac +++ /dev/null @@ -1,86 +0,0 @@ -dnl Process this file with autoconf to produce a configure script - -AC_INIT(psutils, 1.23, rrt@sc3d.org) -AC_CONFIG_AUX_DIR([build-aux]) -AM_INIT_AUTOMAKE([-Wall -Werror foreign]) - -dnl Check for programs -AC_PROG_CC -gl_EARLY -AC_PROG_LN_S -AM_PROG_AR - -AC_USE_SYSTEM_EXTENSIONS -AC_ARG_ENABLE([gcc-warnings], - [AS_HELP_STRING([--enable-gcc-warnings], - [turn on lots of GCC warnings (for developers)])], - [case $enableval in - yes|no) ;; - *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; - esac - gl_gcc_warnings=$enableval], - [gl_gcc_warnings=no] -) - -if test "$gl_gcc_warnings" = yes; then - gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) - - # Set up the list of undesired warnings. - nw= - nw="$nw -Wundef" # All compiler preprocessors support #if UNDEF - nw="$nw -Wtraditional" # All compilers nowadays support ANSI C - nw="$nw -Wstrict-overflow" # Use a lower level (see below). - nw="$nw -Wconversion" # These warnings usually don’t point to mistakes. - nw="$nw -Wsign-conversion" # Likewise. - nw="$nw -Wtraditional-conversion" # Don't care. - nw="$nw -Wpadded" # Don't care. - nw="$nw -Wc++-compat" # Don't care. - nw="$nw -Woverlength-strings" # Don't care. - nw="$nw -Wmissing-format-attribute" # Don't care. - nw="$nw -Wshadow" # Don't care. - nw="$nw -Wunreachable-code" # Seems buggy. - nw="$nw -Wsystem-headers" # glibc headers fail as of glibc 2.17, gcc 4.8 - nw="$nw -Wsuggest-attribute=format" # glibc headers fail as of glibc 2.17, gcc 4.8 - nw="$nw -Wall" - nw="$nw -Wunused-macros" # those macros might come in handy later - - gl_MANYWARN_ALL_GCC([warnings]) - - # Enable all GCC warnings not in this list. - gl_MANYWARN_COMPLEMENT([warnings], [$warnings], [$nw]) - for w in $warnings; do - gl_WARN_ADD([$w]) - done - - # Add an extra warning - gl_WARN_ADD([-Wstrict-overflow=1]) - # Add some more safety measures - gl_WARN_ADD([-D_FORTIFY_SOURCE=2]) - gl_WARN_ADD([-fmudflap]) - - # When compiling with GCC, prefer -isystem to -I when including system - # include files, to avoid generating useless diagnostics for the files. - ISYSTEM='-isystem ' -else - ISYSTEM='-I' -fi -AC_SUBST([ISYSTEM]) - -gl_INIT - -dnl Check for header files -AC_HEADER_STDC - -dnl Check for programs -dnl Don't use AX_WITH_PROG, as we want by default to be relocatable, -dnl hence not use a full path -AC_ARG_VAR([PAPER], [Absolute path to paper executable]) -if test -z "$PAPER"; then - PAPER=paper -fi - -dnl Generate output files -AC_CONFIG_MACRO_DIR(m4) -AC_CONFIG_HEADER(config.h) -AC_CONFIG_FILES(Makefile lib/Makefile) -AC_OUTPUT diff --git a/Build/source/texk/psutils/psutils-src/dummy.c b/Build/source/texk/psutils/psutils-src/dummy.c deleted file mode 100644 index 061a78c34b2..00000000000 --- a/Build/source/texk/psutils/psutils-src/dummy.c +++ /dev/null @@ -1,30 +0,0 @@ -/* A dummy file, to prevent empty libraries from breaking builds. - - This file is in the public domain. -- Bruno Haible */ - -/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create - libraries without any object files. You might get an error like: - - > ar cru .libs/libgl.a - > ar: no archive members specified - - Compiling this file, and adding its object file to the library, will - prevent the library from being empty. */ - -/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries - that don't export any symbol. You might get an error like: - - > cc ... libgnu.a - > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a - - Compiling this file, and adding its object file to the library, will - prevent the library from exporting no symbols. */ - -#ifdef __sun -/* This declaration ensures that the library will export at least 1 symbol. */ -int gl_dummy_symbol; -#else -/* This declaration is solely to ensure that after preprocessing - this file is never empty. */ -typedef int dummy; -#endif diff --git a/Build/source/texk/psutils/psutils-src/epsffit.1 b/Build/source/texk/psutils/psutils-src/epsffit.1 deleted file mode 100644 index 3f15b3784a9..00000000000 --- a/Build/source/texk/psutils/psutils-src/epsffit.1 +++ /dev/null @@ -1,45 +0,0 @@ -.TH EPSFFIT 1 "PSUtils" -.SH NAME -epsffit \- fit encapsulated PostScript file (EPSF) into constrained size -.SH SYNOPSIS -.B epsffit -.RB [ \-c ] -.RB [ \-r ] -.RB [ \-a ] -.RB [ \-m ] -.RB [ \-s ] -.I llx lly urx ury -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.B Epsffit -fits an EPSF file (encapsulated PostScript) to a given bounding box. -The coordinates of the box are given by -.RI ( llx , lly ) -for the lower left, and -.RI ( urx , ury ) -for the upper right, in PostScript units (points). -.PP -If no input or output files are specified, -.B epsffit -reads from the standard input and writes to the standard output. -.SH OPTIONS -.IP \fB\-c\fP 1i -Center the image in the given bounding box. -.IP \fB\-r\fP 1i -Rotate the image by 90 degrees counter-clockwise. -.IP \fB\-a\fP 1i -Adjust the aspect ratio to fit the bounding box. The default is to preserve -the aspect ratio. -.IP \fB\-m\fP 1i -Rotates the image to maximise the size if it would fit the specified bounding -box better. -.IP \fB\-s\fP 1i -Add a \fBshowpage\fP at the end of the file to force the image to print. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. diff --git a/Build/source/texk/psutils/psutils-src/epsffit.c b/Build/source/texk/psutils/psutils-src/epsffit.c deleted file mode 100644 index df7e81eb2ae..00000000000 --- a/Build/source/texk/psutils/psutils-src/epsffit.c +++ /dev/null @@ -1,173 +0,0 @@ -/* epsffit.c - * Fit EPSF file into constrained size - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - * - * Added filename spec (from Larry Weissman) 5 Feb 93 - * Accepts double %%BoundingBox input, outputs proper BB, 4 Jun 93. (I don't - * like this; developers should read the Big Red Book before writing code which - * outputs PostScript. - */ - -#include "config.h" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <unistd.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" - -const char *syntax = "[-c] [-r] [-a] [-m] [-s] LLX LLY URX URY [INFILE [OUTFILE]]\n"; - -const char *argerr_message = ""; - -int -main(int argc, char **argv) -{ - int bbfound = 0; /* %%BoundingBox: found */ - int urx = 0, ury = 0, llx = 0, lly = 0; - int furx, fury, fllx, flly; - int showpage = 0, centre = 0, rotate = 0, aspect = 0, maximise = 0; - char buf[BUFSIZ]; - FILE *input = stdin; - FILE *output = stdout; - int opt; - - set_program_name(argv[0]); - - while((opt = getopt(argc, argv, "csramv")) != EOF) { - switch(opt) { - case 'c': centre = 1; break; - case 's': showpage = 1; break; - case 'r': rotate = 1; break; - case 'a': aspect = 1; break; - case 'm': maximise = 1; break; - case 'v': - default: - usage(); - break; - } - } - - if ((argc - optind) < 4 || (argc - optind) > 6) usage(); - - fllx = atoi(argv[optind++]); - flly = atoi(argv[optind++]); - furx = atoi(argv[optind++]); - fury = atoi(argv[optind++]); - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if ((argc - optind) > 0) { - if(!(input = fopen(argv[optind], "rb"))) - die("can't open input file %s", argv[optind]); - optind++; - } else if (set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - - if ((argc - optind) > 0) { - if(!(output = fopen(argv[optind], "wb"))) - die("can't open output file %s", argv[optind]); - optind++; - } else if (set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - while (fgets(buf, BUFSIZ, input)) { - if (buf[0] == '%' && (buf[1] == '%' || buf[1] == '!')) { - /* still in comment section */ - if (!strncmp(buf, "%%BoundingBox:", 14)) { - double illx, illy, iurx, iury; /* input bbox parameters */ - if (sscanf(buf, "%%%%BoundingBox:%lf %lf %lf %lf\n", - &illx, &illy, &iurx, &iury) == 4) { - bbfound = 1; - llx = (int)illx; /* accept doubles, but convert to int */ - lly = (int)illy; - urx = (int)(iurx+0.5); - ury = (int)(iury+0.5); - } - } else if (!strncmp(buf, "%%EndComments", 13)) { - strcpy(buf, "\n"); /* don't repeat %%EndComments */ - break; - } else fputs(buf, output); - } else break; - } - - if (bbfound) { /* put BB, followed by scale&translate */ - int fwidth, fheight; - double xscale, yscale; - double xoffset = fllx, yoffset = flly; - double width = urx-llx, height = ury-lly; - - if (maximise) - if ((width > height && fury-flly > furx-fllx) || - (width < height && fury-flly < furx-fllx)) - rotate = 1; - - if (rotate) { - fwidth = fury - flly; - fheight = furx - fllx; - } else { - fwidth = furx - fllx; - fheight = fury - flly; - } - - xscale = fwidth/width; - yscale = fheight/height; - - if (!aspect) { /* preserve aspect ratio ? */ - xscale = yscale = MIN(xscale,yscale); - } - width *= xscale; /* actual width and height after scaling */ - height *= yscale; - if (centre) { - if (rotate) { - xoffset += (fheight - height)/2; - yoffset += (fwidth - width)/2; - } else { - xoffset += (fwidth - width)/2; - yoffset += (fheight - height)/2; - } - } - fprintf(output, - "%%%%BoundingBox: %d %d %d %d\n", (int)xoffset, (int)yoffset, - (int)(xoffset+(rotate ? height : width)), - (int)(yoffset+(rotate ? width : height))); - if (rotate) { /* compensate for original image shift */ - xoffset += height + lly * yscale; /* displacement for rotation */ - yoffset -= llx * xscale; - } else { - xoffset -= llx * xscale; - yoffset -= lly * yscale; - } - fputs("%%EndComments\n", output); - if (showpage) - fputs("save /showpage{}def /copypage{}def /erasepage{}def\n", output); - else - fputs("%%BeginProcSet: epsffit 1 0\n", output); - fputs("gsave\n", output); - fprintf(output, "%.3f %.3f translate\n", xoffset, yoffset); - if (rotate) - fputs("90 rotate\n", output); - fprintf(output, "%.3f %.3f scale\n", xscale, yscale); - if (!showpage) - fputs("%%EndProcSet\n", output); - } - do { - fputs(buf, output); - } while (fgets(buf, BUFSIZ, input)); - if (bbfound) { - fputs("grestore\n", output); - if (showpage) - fputs("restore showpage\n", output); /* just in case */ - } else - die("no %%%%BoundingBox:"); - - return 0; -} diff --git a/Build/source/texk/psutils/psutils-src/extractres b/Build/source/texk/psutils/psutils-src/extractres deleted file mode 100755 index 87f8377b34d..00000000000 --- a/Build/source/texk/psutils/psutils-src/extractres +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env perl -# extractres: extract resources from PostScript file -# includeres: add resources to a PostScript file -# -# (c) Reuben Thomas 2012 -# (c) Angus J. C. Duggan 1991-1997 -# See file LICENSE for details. - -use strict; -use warnings; - -use File::Basename; -use Getopt::Long; - -my $prog = basename($0); - -# Resource extensions -my %extn = ("font" => ".pfa", "file" => ".ps", "procset" => ".ps", - "pattern" => ".pat", "form" => ".frm", "encoding" => ".enc"); -# Resource types -my %type = ("%%BeginFile:" => "file", "%%BeginProcSet:" => "procset", - "%%BeginFont:" => "font"); - -sub filename { # make filename for resource in @_ - my $name; - foreach (@_) { # sanitise name - s/[!()\$\#*&\\\|\`\'\"\~\{\}\[\]\<\>\?]//g; - $name .= $_; - } - $name =~ s@.*/@@; # drop directories - die "$prog: filename not found for resource ", join(" ", @_), "\n" - if $name =~ /^$/; - return $name; -} - -sub extract { - my %resources = (); # list of resources included - my %merge = (); # list of resources extracted this time - - my $merge; - unless (GetOptions('merge' => \$merge)) { - print STDERR "Usage: $prog [-merge] [FILE]\n"; - exit 1; - } - - my $prolog = ""; - my $body = ""; - my $resource = ""; - my $output = \$prolog; - my $saveout; - while (<>) { - if (/^%%BeginResource:/ || /^%%BeginFont:/ || /^%%BeginProcSet:/) { - my ($comment, @res) = split(/\s+/); # look at resource type - my $type = defined($type{$comment}) ? $type{$comment} : shift(@res); - my $name = filename(@res, $extn{$type}); # make file name - $saveout = $output; - if (!defined($resources{$name})) { - $prolog .= "%%IncludeResource: $type " . join(" ", @res) . "\n"; - if (!-e $name) { - open RES, ">$name" || die "$prog: can't write file `$name'\n"; - $resources{$name} = ""; - $merge{$name} = $merge; - $output = \$resources{$name}; - } else { # resource already exists - close(RES); - undef $output; - } - } elsif ($merge{$name}) { - open RES, ">>$name" || die "$prog: can't append to file `$name'\n"; - $resources{$name} = ""; - $output = \$resources{$name}; - } else { # resource already included - undef $output; - } - } elsif (/^%%EndResource/ || /^%%EndFont/ || /^%%EndProcSet/) { - if (defined $output) { - $$output .= $_; - print RES $$output; - } - $output = $saveout; - next; - } elsif ((/^%%EndProlog/ || /^%%BeginSetup/ || /^%%Page:/)) { - $output = \$body; - } - $$output .= $_ if defined $output; - } - - print $prolog . $body; -} - -sub include { - while (<>) { - if (/^%%IncludeResource:/ || /^%%IncludeFont:/ || /^%%IncludeProcSet:/) { - my ($comment, @res) = split(/\s+/); - my $type = defined($type{$comment}) ? $type{$comment} : shift(@res); - my $name = filename(@res); - if (open(RES, $name) || open(RES, "$name$extn{$type}")) { - print do { local $/; <RES> }; - close(RES); - } else { - print "%%IncludeResource: ", join(" ", $type, @res), "\n"; - print STDERR "$prog: resource `$name' not found\n"; - } - } else { - print $_; - } - } -} - -# Perform function according to name -if ($prog eq "extractres") { - extract(); -} elsif ($prog eq "includeres") { - include(); -} else { - die "$prog: I need to be called `extractres' or `includeres'\n"; -} diff --git a/Build/source/texk/psutils/psutils-src/extractres.1 b/Build/source/texk/psutils/psutils-src/extractres.1 deleted file mode 100644 index 0e7db1a1ab2..00000000000 --- a/Build/source/texk/psutils/psutils-src/extractres.1 +++ /dev/null @@ -1,44 +0,0 @@ -.TH EXTRACTRES 1 "PSUtils" -.SH NAME -extractres \- filter to extract resources from a PostScript document -.SH SYNOPSIS -.B extractres -.RB [ \-m ] -.RI < document.ps -.RI > output.ps -.SH DESCRIPTION -.B Extractres -extracts resources (fonts, procsets, patterns, files, etc) appearing in a -PostScript document, and puts appropriate -.B %%IncludeResource -comments in the document prologue. The extracted resources are written to -files with the same name as the resource, and an appropriate extension. The -pipeline -.sp -.ce -extractres file.ps | includeres >out.ps -.sp -will move all resources appearing in a document to the document prologue, -removing redundant copies. The output file can then be put through page -re-arrangement filters such as -.B psnup -or -.B pstops -safely. -.PP -The -.B \-m -option combines the resources of the same name into one file; this must be -used for some programs which download fonts a bit at a time. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B extractres -does not alter the -.B %%DocumentSuppliedResources -comments. diff --git a/Build/source/texk/psutils/psutils-src/includeres.1 b/Build/source/texk/psutils/psutils-src/includeres.1 deleted file mode 100644 index 4e56ad842f2..00000000000 --- a/Build/source/texk/psutils/psutils-src/includeres.1 +++ /dev/null @@ -1,37 +0,0 @@ -.TH INCLUDERES 1 "PSUtils" -.SH NAME -includeres \- filter to include resources in a PostScript document -.SH SYNOPSIS -.B includeres -.RI < document.ps -.RI > output.ps -.SH DESCRIPTION -.B Includeres -includes resources (fonts, procsets, patterns, files, etc.) in place of -.B %%IncludeResource -comments in a PostScript document. The resources are searched for -under the resource name, and with an appropriate extension. -The pipeline -.sp -.ce -extractres file.ps | includeres >out.ps -.sp -will move all resources appearing in a document to the document prologue, -removing redundant copies. The output file can then be put through page -re-arrangement filters such as -.B psnup -or -.B pstops -safely. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B includeres -does not alter the -.B %%DocumentNeededResources -comments. diff --git a/Build/source/texk/psutils/psutils-src/psbook.1 b/Build/source/texk/psutils/psutils-src/psbook.1 deleted file mode 100644 index 3b2bff9b84c..00000000000 --- a/Build/source/texk/psutils/psutils-src/psbook.1 +++ /dev/null @@ -1,38 +0,0 @@ -.TH PSBOOK 1 "PSUtils" -.SH NAME -psbook \- rearrange pages in PostScript file into signatures -.SH SYNOPSIS -.B psbook -.RB [ \-q ] -.RB [ \-s\fIsignature\fR ] -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.B Psbook -rearranges pages from a PostScript document into ``signatures'' for -printing books or booklets, creating a new PostScript file. The -input PostScript file should follow the Adobe Document Structuring -Conventions. -.PP -The -.B \-s -option selects the size of signature which will be used. The signature size is -the number of sides which will be folded and bound together; the number given -should be a multiple of four. The default is to use one signature for the -whole file. Extra blank sides will be added if the file does not contain a -multiple of four pages. -.PP -.B Psbook -normally prints the page numbers of the pages rearranged; the -.B \-q -option suppresses this. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B Psbook -does not accept all DSC comments. diff --git a/Build/source/texk/psutils/psutils-src/psbook.c b/Build/source/texk/psutils/psutils-src/psbook.c deleted file mode 100644 index 8bb0b6b6ace..00000000000 --- a/Build/source/texk/psutils/psutils-src/psbook.c +++ /dev/null @@ -1,111 +0,0 @@ -/* psbook.c - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - * - * rearrange pages in conforming PS file for printing in signatures - */ - -#include "config.h" - -#include <unistd.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" - -const char *syntax = "[-q] [-sSIGNATURE] [INFILE [OUTFILE]]\n SIGNATURE must be positive and divisible by 4\n"; - -const char *argerr_message = ""; - -int -main(int argc, char *argv[]) -{ - int signature = 0; - int currentpg, maxpage; - int opt; - - set_program_name (argv[0]); - - verbose = 1; - - while((opt = getopt(argc, argv, "vqs:")) != EOF) { - switch(opt) { - case 's': /* signature size */ - signature = atoi(optarg); - if (signature < 1 || signature % 4) usage(); - break; - case 'q': /* quiet */ - verbose = 0; - break; - case 'v': /* version */ - default: - usage(); - break; - } - } - - infile = stdin; - outfile = stdout; - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if (optind != argc) { - /* User specified an input file */ - if ((infile = fopen(argv[optind], "rb")) == NULL) - die("can't open input file %s", argv[optind]); - optind++; - } - - if (optind != argc) { - /* User specified an output file */ - if ((outfile = fopen(argv[optind], "wb")) == NULL) - die("can't open output file %s", argv[optind]); - optind++; - } - - if(optind != argc) usage(); - - if (infile == stdin && set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - if (outfile == stdout && set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - if ((infile=seekable(infile))==NULL) - die("can't seek input"); - - scanpages(NULL); - - if (!signature) - signature = maxpage = pages+(4-pages%4)%4; - else - maxpage = pages+(signature-pages%signature)%signature; - - /* rearrange pages */ - writeheader(maxpage, NULL); - writeprolog(); - writesetup(); - for (currentpg = 0; currentpg < maxpage; currentpg++) { - int actualpg = currentpg - currentpg%signature; - switch(currentpg%4) { - case 0: - case 3: - actualpg += signature-1-(currentpg%signature)/2; - break; - case 1: - case 2: - actualpg += (currentpg%signature)/2; - break; - default: /* Avoid a compiler warning */ - break; - } - if (actualpg < pages) - writepage(actualpg); - else - writeemptypage(); - } - writetrailer(); - - return 0; -} diff --git a/Build/source/texk/psutils/psutils-src/psjoin b/Build/source/texk/psutils/psutils-src/psjoin deleted file mode 100755 index 21dfaffeef3..00000000000 --- a/Build/source/texk/psutils/psutils-src/psjoin +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/env perl -# -# psjoin - concatenate PostScript files -# -# version 0.2, 2002-07-18 -# version 0.3, 2003-11-30 -# version 0.31, 2013-10-20 -# -# versions up to 0.3 by Tom Sato <VEF00200@nifty.ne.jp>, http://homepage3.nifty.com/tsato/ -# versions from 0.31 by Reuben Thomas <rrt@sc3d.org> - -use strict; -use warnings; - -use Getopt::Long; - -my $version = 0.31; - -sub usage { - my ($exit_code) = @_; - print STDERR <<END; -Usage: psjoin [OPTION...] FILENAME... -Concatenate PostScript files - - --even, -a force each file to take an even number of pages - --save, -s try to close unclosed save operators - --strip, -p do not strip prolog or trailer from input files - --help, -h print this help, then exit - --version,-V print version information and exit -END - exit $exit_code; -} - -my $force_even = 0; -my $force_save = 0; -my $dont_strip = 0; -my $save = "save %psjoin\n"; -my $restore = "restore %psjoin\n"; -my ($help_flag, $version_flag); - -GetOptions( - "even|a" => \$force_even, - "save|s" => \$force_save, - "strip|p" => \$dont_strip, - "help|h" => \$help_flag, - "version|V" => \$version_flag, - ) or usage(1); - -if ($help_flag) { - usage(0); -} elsif ($version_flag) { - print "psjoin (version $version)\n"; - print "(c) Tom Sato <VEF00200\@nifty.ne.jp> and Reuben Thomas <rrt\@sc3d.org>\n"; - exit 0; -} - -if ($force_save) { - $save = "/#psjoin-save# save def %psjoin\n"; - $restore = "#psjoin-save# restore %psjoin\n"; -} -my (@prolog, $prolog_inx, @trailer, @comments, @pages); -if ($dont_strip) { - $prolog_inx = 9999; - $prolog[$prolog_inx] = "% [ psjoin: don't strip ]\n"; - $trailer[$prolog_inx] = "% [ psjoin: don't strip ]\n"; -} else { - for (my $i = 0; $i <= $#ARGV; $i++) { - open(IN, $ARGV[$i]) || die "$0: can't open \"$ARGV[$i]\" ($!)"; - - my $in_comment = 1; - my $in_prolog = 1; - my $in_trailer = 0; - $comments[$i] = ""; - $prolog[$i] = ""; - $trailer[$i] = ""; - $pages[$i] = 0; - while (<IN>) { - next if /^%%BeginDocument/ .. /^%%EndDocument/; - - if ($in_comment) { - next if /^%!PS-Adobe-/; - next if /^%%Title/; - next if /^%%Pages/; - next if /^%%Creator/; - $in_comment = 0 if /^%%EndComments/; - $comments[$i] .= $_; - next; - } elsif ($in_prolog) { - if (/^%%Page:/) { - $in_prolog = 0; - } else { - $prolog[$i] .= $_; - next; - } - } - - $in_trailer = 1 if /^%%Trailer/; - if ($in_trailer) { - $trailer[$i] .= $_; - next; - } - - $pages[$i]++ if /^%%Page:/; - } - close(IN); - - if ($prolog[$i]) { - for (my $j = 0; $j < $i; $j++) { - if ($prolog[$j] eq $prolog[$i]) { - $pages[$j] += $pages[$i]; - last; - } - } - } - } - - my $largest = 0; - $prolog_inx = 0; - for (my $i = 0; $i <= $#ARGV; $i++) { - my $size = length($prolog[$i]) * $pages[$i]; - if ($largest < $size) { - $largest = $size; - $prolog_inx = $i; - } - } -} - -print <<END; -%!PS-Adobe-3.0 -%%Title: @ARGV -%%Creator: psjoin $version -%%Pages: (atend) -END -print $comments[$prolog_inx]; - -print "\n$prolog[$prolog_inx]"; -for (my $i = 0; $i <= $#ARGV; $i++) { - $prolog[$i] =~ s/^%%/% %%/; - $prolog[$i] =~ s/\n%%/\n% %%/g; - $trailer[$i] =~ s/^%%/% %%/; - $trailer[$i] =~ s/\n%%/\n% %%/g; -} - -my $total_pages = 0; -for (my $i = 0; $i <= $#ARGV; $i++) { - print "\n% [ psjoin: file = $ARGV[$i] ]\n"; - if ($prolog[$i] ne $prolog[$prolog_inx]) { - print "% [ psjoin: Prolog/Trailer will be inserted in each page ]\n"; - } else { - print "% [ psjoin: common Prolog/Trailer will be used ]\n"; - } - - my $in_comment = 1 if !$dont_strip; - my $in_prolog = 1 if !$dont_strip; - my $in_trailer = 0; - my $saved = 0; - my $pages = 0; - - open(IN, $ARGV[$i]) || die "$0: can't open \"$ARGV[$i]\" ($!)"; - while (<IN>) { - if (/^%%BeginDocument/ .. /^%%EndDocument/) { - # s/^(%[%!])/% \1/; - print $_; - } else { - if ($in_comment) { - $in_comment = 0 if /^%%EndComments/; - } elsif ($in_prolog) { - if (/^%%Page:/) { - $in_prolog = 0; - } else { - next; - } - } - $in_trailer = 1 if !$dont_strip && /^%%Trailer/; - next if $in_trailer; - - if (/^%%Page:/) { - if ($saved) { - print $trailer[$i]; - print $restore; - $saved = 0; - } - - $pages++; - $total_pages++; - print "\n"; - print "%%Page: ($i-$pages) $total_pages\n"; - if ($prolog[$i] ne $prolog[$prolog_inx]) { - print $save; - print $prolog[$i]; - $saved = 1; - } elsif ($force_save) { - print $save; - } - } else { - s/^(%[%!])/% $1/; - print $_; - } - } - } - close(IN); - - if ($force_even && $pages % 2 != 0) { - $pages++; - $total_pages++; - print <<END; - -%%Page: ($i-E) $total_pages -% [ psjoin: empty page inserted to force even pages ] -showpage -END - } - - print $trailer[$i] if $saved; - print $restore if $saved || $force_save; -} - -print "\n%%Trailer\n"; -print $trailer[$prolog_inx]; -print "\n%%Pages: $total_pages\n%%EOF"; diff --git a/Build/source/texk/psutils/psutils-src/psjoin.1 b/Build/source/texk/psutils/psutils-src/psjoin.1 deleted file mode 100644 index db4bdeb9170..00000000000 --- a/Build/source/texk/psutils/psutils-src/psjoin.1 +++ /dev/null @@ -1,20 +0,0 @@ -.TH PSJOIN "1" "November 2003" "psjoin 0.3" "User Commands" -.SH NAME -psjoin \- psjoin -.SH SYNOPSIS -.B psjoin -.RI [ option ...] -.IR filename ... -.SH DESCRIPTION -.B psjoin -\- concatenate PostScript files (version 0.3) -by Tom Sato <VEF00200@nifty.ne.jp>, http://member.nifty.ne.jp/tsato/ -.SS "Option:" -.HP -\fB\-a\fR: align first page of each documents to odd page -.HP -\fB\-s\fR: try to close unclosed save operators -.HP -\fB\-p\fR: not strip prolog/trailer of the input files -.HP -\fB\-h\fR: display help diff --git a/Build/source/texk/psutils/psutils-src/psnup.1 b/Build/source/texk/psutils/psutils-src/psnup.1 deleted file mode 100644 index 8b6e8a0e4d8..00000000000 --- a/Build/source/texk/psutils/psutils-src/psnup.1 +++ /dev/null @@ -1,135 +0,0 @@ -.TH PSNUP 1 "PSUtils" -.SH NAME -psnup \- multiple pages per sheet -.SH SYNOPSIS -.B psnup -.RB [ \-w\fIwidth\fR ] -.RB [ \-h\fIheight\fR ] -.RB [ \-p\fIpaper\fR ] -.RB [ \-W\fIwidth\fR ] -.RB [ \-H\fIheight\fR ] -.RB [ \-P\fIpaper\fR ] -.RB [ \-l | \-r | \-f ] -.RB [ \-c ] -.RB [ \-m\fImargin\fR ] -.RB [ \-b\fIborder\fR ] -.RB [ \-d [ \fIlwidth\fR ]] -.RB [ \-s\fIscale\fR ] -.RB [ \-\fInup\fR ] -.RB [ \-q ] -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.B Psnup -puts multiple logical pages onto each physical sheet of paper. -The input PostScript file should follow the Adobe Document Structuring -Conventions. -.PP -The -.B \-w -option gives the paper width, and the -.B \-h -option gives the paper height, specified in -.BR pt , -.BR mm , -.BR cm , -or -.BR in . -The -.B \-p -option can be used instead, to set the paper size; otherwise a default value is used. -See -.BR paper (1). -The -.BR \-W , -.BR \-H , -and -.B \-P -options set the input paper size, if it is different from the output -size. This makes it easy to impose pages of one size on a different size of -paper. -.PP -The -.B \-l -option should be used for pages which are in landscape orientation (rotated 90 -degrees anticlockwise). The -.B \-r -option should be used for pages which are in seascape orientation (rotated 90 -degrees clockwise), and the -.B \-f -option should be used for pages which have the width and height interchanged, -but are not rotated. -.PP -.B Psnup -normally uses `row-major' layout, where adjacent pages are placed in rows -across the paper. -The -.B \-c -option changes the order to `column-major', where successive pages are placed -in columns down the paper. -.PP -A margin to leave around the whole page can be specified with the -.B \-m -option. This is useful for sheets of `thumbnail' pages, because the normal -page margins are reduced by putting multiple pages on a single sheet. -.PP -The -.B \-b -option is used to specify an additional margin around each page on a sheet. -.PP -The -.B \-d -option draws a line around the border of each page, of the specified width. -If the \fIlwidth\fR parameter is omitted, a default linewidth of 1 point is -assumed. The linewidth is relative to the original page dimensions, -i.e., it is scaled down with the rest of the page. -.PP -The scale chosen by -.B psnup -can be overridden with the -.B \-s -option. This is useful to merge pages which are already reduced. -.PP -The -.BI \- nup -option selects the number of logical pages to put on each sheet of paper. This -can be any whole number; -.B psnup -tries to optimise the layout so that the minimum amount of space is wasted. If -.B psnup -cannot find a layout within its tolerance limit, it will abort with an error -message. The alternative form -.BI \-n nup -can also be used, for compatibility with other n-up programs. -.PP -.B Psnup -normally prints the page numbers of the pages re-arranged; the -.B \-q -option suppresses this. -.SH EXAMPLES -The potential use of this utility is varied but one particular -use is in conjunction with -.BR psbook (1). -For example, using groff to create a PostScript document and lpr as -the -.SM UNIX -print spooler a typical command line might look like this: -.sp -groff -Tps -ms \fIfile\fP | psbook | psnup -2 | lpr -.sp -where file is a 4 page document this command will result in a -two page document printing two pages of \fIfile\fP per page and -rearranges the page order to match the input pages 4 and 1 -on the first output page and -pages 2 then 3 of the input document -on the second output page. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.Br psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B Psnup -does not accept all DSC comments. diff --git a/Build/source/texk/psutils/psutils-src/psnup.c b/Build/source/texk/psutils/psutils-src/psnup.c deleted file mode 100644 index 79e280a31f3..00000000000 --- a/Build/source/texk/psutils/psutils-src/psnup.c +++ /dev/null @@ -1,315 +0,0 @@ -/* psnup.c - * Put multiple pages on to one page - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#include <unistd.h> -#include <string.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" -#include "psspec.h" - -const char *syntax = "[-q] [-wWIDTH] [-hHEIGHT] [-pPAPER] [-WWIDTH] [-HHEIGHT] [-PPAPER] [-l] [-r] [-c] [-f] [-mMARGIN] [-bBORDER] [-dLWIDTH] [-sSCALE] [-NUP] [INFILE [OUTFILE]]\n"; - -const char *argerr_message = "bad dimension\n"; - -/* return next larger exact divisor of number, or 0 if none. There is probably - * a much more efficient method of doing this, but the numbers involved are - * small, so it's not a big loss. */ -_GL_ATTRIBUTE_CONST static int nextdiv(int n, int m) -{ - while (++n <= m) { - if (m%n == 0) - return (n); - } - return (0); -} - -int -main(int argc, char *argv[]) -{ - int horiz = 0, vert = 0, rotate = 0, column = 0; - int flip = 0, leftright = 0, topbottom = 0; - int nup = 1; - double draw = 0; /* draw page borders */ - double scale = 1.0; /* page scale */ - double uscale = 0; /* user supplied scale */ - double ppwid, pphgt; /* paper dimensions */ - double margin, border; /* paper & page margins */ - double vshift, hshift; /* page centring shifts */ - double iwidth, iheight ; /* input paper size */ - double tolerance = 100000; /* layout tolerance */ - off_t sizeheaders[20]; /* headers to remove */ - int opt; - - set_program_name (argv[0]); - - verbose = 1; - - if (!paper_size(NULL, &width, &height)) - die("could not get default paper size"); - - margin = border = vshift = hshift = column = flip = 0; - leftright = topbottom = 1; - iwidth = iheight = -1 ; - - while((opt = - getopt(argc, argv, - "qd::lrfcw:W:h:H:m:b:t:s:p:P:n:1::2::3::4::5::6::7::8::9::")) - != EOF) { - switch(opt) { - case 'q': /* quiet */ - verbose = 0; - break; - case 'd': /* draw borders */ - if (optarg) - draw = singledimen(optarg); - else - draw = 1; - break; - case 'l': /* landscape (rotated left) */ - column = !column; - topbottom = !topbottom; - break; - case 'r': /* seascape (rotated right) */ - column = !column; - leftright = !leftright; - break; - case 'f': /* flipped */ - flip = 1; - break; - case 'c': /* column major layout */ - column = !column; - break; - case 'w': /* page width */ - width = singledimen(optarg); - break; - case 'W': /* input page width */ - iwidth = singledimen(optarg); - break; - case 'h': /* page height */ - height = singledimen(optarg); - break; - case 'H': /* input page height */ - iheight = singledimen(optarg); - break; - case 'm': /* margins around whole page */ - margin = singledimen(optarg); - break; - case 'b': /* border around individual pages */ - border = singledimen(optarg); - break; - case 't': /* layout tolerance */ - tolerance = atof(optarg); - break; - case 's': /* override scale */ - uscale = atof(optarg); - break; - case 'p': /* output (and by default input) paper type */ - if (!paper_size(optarg, &width, &height)) - die("paper size '%s' not recognised", optarg); - break; - case 'P': /* paper type */ - if (!paper_size(optarg, &width, &height)) - die("paper size '%s' not recognised", optarg); - break; - case 'n': /* n-up, for compatibility with other psnups */ - if ((nup = atoi(optarg)) < 1) - die("-n %d too small", nup); - break; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if(optarg) { - char *valuestr = (char *) malloc(strlen(optarg) + 2); - valuestr[0] = opt; - strcpy(&(valuestr[1]), optarg); - - /* really should check that valuestr is only digits here...*/ - if ((nup = atoi(valuestr)) < 1) - die("-n %d too small", nup); - free(valuestr); - } else { - nup = (opt - '0'); - } - break; - case 'v': /* version */ - default: - usage(); - } - } - - infile = stdin; - outfile = stdout; - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if (optind != argc) { - /* User specified an input file */ - if ((infile = fopen(argv[optind], "rb")) == NULL) - die("can't open input file %s", argv[optind]); - optind++; - } - - if (optind != argc) { - /* User specified an output file */ - if ((outfile = fopen(argv[optind], "wb")) == NULL) - die("can't open output file %s", argv[optind]); - optind++; - } - - if (optind != argc) usage(); - - if (infile == stdin && set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - if (outfile == stdout && set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - if ((infile=seekable(infile))==NULL) - die("can't seek input"); - - if (width <= 0 || height <= 0) - die("page width and height must be set"); - - /* subtract paper margins from height & width */ - ppwid = width - margin*2; - pphgt = height - margin*2; - - if (ppwid <= 0 || pphgt <= 0) - die("paper margins are too large"); - - scanpages(sizeheaders); - - /* set default values of input height & width */ - if ( iwidth > 0 ) - width = iwidth ; - if ( iheight > 0 ) - height = iheight ; - - /* Finding the best layout is an optimisation problem. We try all of the - * combinations of width*height in both normal and rotated form, and - * minimise the wasted space. */ - { - double best = tolerance; - int hor; - for (hor = 1; hor; hor = nextdiv(hor, nup)) { - int ver = nup/hor; - /* try normal orientation first */ - double scl = MIN(pphgt/(height*ver), ppwid/(width*hor)); - double optim = (ppwid-scl*width*hor)*(ppwid-scl*width*hor) + - (pphgt-scl*height*ver)*(pphgt-scl*height*ver); - if (optim < best) { - best = optim; - /* recalculate scale to allow for internal borders */ - scale = MIN((pphgt-2*border*ver)/(height*ver), - (ppwid-2*border*hor)/(width*hor)); - hshift = (ppwid/hor - width*scale)/2; - vshift = (pphgt/ver - height*scale)/2; - horiz = hor; vert = ver; - rotate = flip; - } - /* try rotated orientation */ - scl = MIN(pphgt/(width*hor), ppwid/(height*ver)); - optim = (pphgt-scl*width*hor)*(pphgt-scl*width*hor) + - (ppwid-scl*height*ver)*(ppwid-scl*height*ver); - if (optim < best) { - best = optim; - /* recalculate scale to allow for internal borders */ - scale = MIN((pphgt-2*border*hor)/(width*hor), - (ppwid-2*border*ver)/(height*ver)); - hshift = (ppwid/ver - height*scale)/2; - vshift = (pphgt/hor - width*scale)/2; - horiz = ver; vert = hor; - rotate = !flip; - } - } - - /* fail if nothing better than worst tolerance was found */ - if (best == tolerance) - die("can't find acceptable layout for %d-up", nup); - } - - if (flip) { /* swap width & height for clipping */ - double tmp = width; - width = height; - height = tmp; - } - - if (rotate) { /* rotate leftright and topbottom orders */ - int tmp = topbottom; - topbottom = !leftright; - leftright = tmp; - column = !column; - } - - /* now construct specification list and run page rearrangement procedure */ - { - int page = 0; - PageSpec *specs, *tail; - - tail = specs = newspec(); - - while (page < nup) { - int up, across; /* page index */ - - if (column) { - if (leftright) /* left to right */ - across = page/vert; - else /* right to left */ - across = horiz-1-page/vert; - if (topbottom) /* top to bottom */ - up = vert-1-page%vert; - else /* bottom to top */ - up = page%vert; - } else { - if (leftright) /* left to right */ - across = page%horiz; - else /* right to left */ - across = horiz-1-page%horiz; - if (topbottom) /* top to bottom */ - up = vert-1-page/horiz; - else /* bottom to top */ - up = page/horiz; - } - if (rotate) { - tail->xoff = margin + (across+1)*ppwid/horiz - hshift; - tail->rotate = 90; - tail->flags |= ROTATE; - } else { - tail->xoff = margin + across*ppwid/horiz + hshift; - } - tail->pageno = page; - if (uscale > 0) - tail->scale = uscale; - else - tail->scale = scale; - tail->flags |= SCALE; - tail->yoff = margin + up*pphgt/vert + vshift; - tail->flags |= OFFSET; - if (++page < nup) { - tail->flags |= ADD_NEXT; - tail->next = newspec(); - tail = tail->next; - } - } - - pstops_write(nup, 1, 0, specs, draw, sizeheaders); /* do page rearrangement */ - } - - return 0; -} - diff --git a/Build/source/texk/psutils/psutils-src/psresize.1 b/Build/source/texk/psutils/psutils-src/psresize.1 deleted file mode 100644 index 819d85f7382..00000000000 --- a/Build/source/texk/psutils/psutils-src/psresize.1 +++ /dev/null @@ -1,68 +0,0 @@ -.TH PSRESIZE 1 "PSUtils" -.SH NAME -psresize \- rescales and centers a document for new output paper size -.SH SYNOPSIS -.B psresize -.RB [ \-w\fIwidth\fR ] -.RB [ \-h\fIheight\fR ] -.RB [ \-p\fIpaper\fR ] -.RB [ \-W\fIwidth\fR ] -.RB [ \-H\fIheight\fR ] -.RB [ \-P\fIpaper\fR ] -.RB [ \-q ] -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.B Psresize -rescales and centres a document on a different size of paper. -The input PostScript file should follow the Adobe Document Structuring -Conventions. -.PP -The -.B \-w -option gives the output paper width, and the -.B \-h -option gives the output paper height, normally specified in -.B "cm" -or -.B "in" -to convert -PostScript's points (1/72 of an inch) -to centimeters or inches. -The -.B \-p -option can be used instead, to set the paper size; otherwise a default value is used. -See -.BR paper (1). -.PP -The -.B \-W -option gives the input paper width, and the -.B \-H -option gives the input paper height. -The -.B \-P -option can be used instead, to set the paper size; otherwise a default value is used. -See -.BR paper (1). -.PP -.B Psresize -normally prints the page numbers of the pages output; the -.B \-q -option suppresses this. -.SH EXAMPLES -The following command can be used to convert a document on A4 size paper to -letter size paper: -.sp -psresize -PA4 -pletter in.ps out.ps -.sp -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.Br psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B Psresize -does not accept all DSC comments. diff --git a/Build/source/texk/psutils/psutils-src/psresize.c b/Build/source/texk/psutils/psutils-src/psresize.c deleted file mode 100644 index b52d77e88a8..00000000000 --- a/Build/source/texk/psutils/psutils-src/psresize.c +++ /dev/null @@ -1,158 +0,0 @@ -/* psresize.c - * Alter page size of document - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#include <unistd.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" -#include "psspec.h" - -const char *syntax = "[-q] [-wWIDTH] [-hHEIGHT] [-pPAPER] [-WWIDTH] [-HHEIGHT] [-PPAPER] [INFILE [OUTFILE]]\n"; - -const char *argerr_message = "bad dimension\n"; - -int -main(int argc, char *argv[]) -{ - double scale, rscale; /* page scale */ - double waste, rwaste; /* amount wasted */ - double vshift, hshift; /* page centring shifts */ - int rotate; - double inwidth = -1; - double inheight = -1; - off_t sizeheaders[20]; /* headers to remove */ - PageSpec *specs; - int opt; - - set_program_name (argv[0]); - - if (!paper_size(NULL, &width, &height)) - die("could not get default paper size"); - - vshift = hshift = 0; - rotate = 0; - - verbose = 1; - - while((opt = getopt(argc, argv, - "qw:h:p:W:H:P:")) != EOF) { - switch(opt) { - - case 'q': /* quiet */ - verbose = 0; - break; - case 'w': /* page width */ - width = singledimen(optarg); - break; - case 'h': /* page height */ - height = singledimen(optarg); - break; - case 'p': /* paper type */ - if (!paper_size(optarg, &width, &height)) - die("paper size '%s' not recognised", optarg); - break; - case 'W': /* input page width */ - inwidth = singledimen(optarg); - break; - case 'H': /* input page height */ - inheight = singledimen(optarg); - break; - case 'P': /* input paper type */ - if (!paper_size(optarg, &inwidth, &inheight)) - die("paper size '%s' not recognised", optarg); - break; - case 'v': /* version */ - default: - usage(); - } - } - - infile = stdin; - outfile = stdout; - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if (optind != argc) { - /* User specified an input file */ - if ((infile = fopen(argv[optind], "rb")) == NULL) - die("can't open input file %s", argv[optind]); - optind++; - } - - if (optind != argc) { - /* User specified an output file */ - if ((outfile = fopen(argv[optind], "wb")) == NULL) - die("can't open output file %s", argv[optind]); - optind++; - } - - if (optind != argc) usage(); - - if (infile == stdin && set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - if (outfile == stdout && set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - if ((infile=seekable(infile))==NULL) - die("can't seek input"); - - if (width <= 0 || height <= 0) - die("output page width and height must be set"); - - scanpages(sizeheaders); - - if (inwidth <= 0 || inheight <= 0) - die("input page width and height must be set"); - - /* try normal orientation first */ - scale = MIN(width/inwidth, height/inheight); - waste = (width-scale*inwidth)*(width-scale*inwidth) + - (height-scale*inheight)*(height-scale*inheight); - hshift = (width - inwidth*scale)/2; - vshift = (height - inheight*scale)/2; - - /* try rotated orientation */ - rscale = MIN(height/inwidth, width/inheight); - rwaste = (height-scale*inwidth)*(height-scale*inwidth) + - (width-scale*inheight)*(width-scale*inheight); - if (rwaste < waste) { - double tmp = width; - scale = rscale; - hshift = (width + inheight*scale)/2; - vshift = (height - inwidth*scale)/2; - rotate = 1; - width = height; - height = tmp; - } - - width /= scale; - height /= scale; - - /* now construct specification list and run page rearrangement procedure */ - specs = newspec(); - - if (rotate) { - specs->rotate = 90; - specs->flags |= ROTATE; - } - specs->pageno = 0; - specs->scale = scale; - specs->flags |= SCALE; - specs->xoff = hshift; - specs->yoff = vshift; - specs->flags |= OFFSET; - - pstops_write(1, 1, 0, specs, 0.0, sizeheaders); /* do page rearrangement */ - - return 0; -} - diff --git a/Build/source/texk/psutils/psutils-src/psselect.1 b/Build/source/texk/psutils/psutils-src/psselect.1 deleted file mode 100644 index 65708e85bd2..00000000000 --- a/Build/source/texk/psutils/psutils-src/psselect.1 +++ /dev/null @@ -1,79 +0,0 @@ -.TH PSSELECT 1 "PSUtils" -.SH NAME -psselect \- select pages from a PostScript file -.SH SYNOPSIS -.B psselect -.RB [ \-q ] -.RB [ \-e | \-o ] -.RB [ \-r ] -.RB [[ \-p ] \fIpages\fR ] -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.B Psselect -selects pages from a PostScript document, creating a new PostScript file. The -input PostScript file should follow the Adobe Document Structuring -Conventions. -.PP -The -.B \-e -option selects all of the even pages; it may be used in conjunction with the -other page selection options to select the even pages from a range of pages. -.PP -The -.B \-o -option selects all of the odd pages; it may be used in conjunction with the -other page selection options. -.PP -The -.BI \-p pages -option specifies the pages which are to be selected. -.I Pages -is a comma separated list of page ranges, each of which may be a page number, -or a page range of the form -.IB first \- last . -If -.I first -is omitted, the first page is assumed, and if -.I last -is omitted, the last page is assumed. - -The prefix character `_' indicates that the page number is relative to the end -of the document, counting backwards. If just this character with no page -number is used, a blank page will be inserted. -.PP -The -.B \-r -option causes -.B psselect -to output the selected pages in reverse order. -.PP -.B Psselect -normally prints the page numbers of the pages rearranged; the -.B \-q -option suppresses this. -.PP -If any of the -.BR \-r , -.BR \-e , -or -.B \-o -options are specified, the page range must be given with the -.B \-p -option. This is for backwards compatibility with previous versions. - -.SH NOTES -The page number given to -.I psselect -is the number of the page counting from the start or end of the file, starting -at one. The actual page number in the document may be different. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.I Psselect -does not accept all DSC comments. diff --git a/Build/source/texk/psutils/psutils-src/psselect.c b/Build/source/texk/psutils/psutils-src/psselect.c deleted file mode 100644 index 55a4d0e7b1e..00000000000 --- a/Build/source/texk/psutils/psutils-src/psselect.c +++ /dev/null @@ -1,245 +0,0 @@ -/* psselect.c - * Rearrange pages in conforming PS file for printing in signatures - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#include <unistd.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" - -const char *syntax = "[-q] [-e] [-o] [-r] [-pPAGES] [INFILE [OUTFILE]]\n"; - -const char *argerr_message = ""; - -typedef struct pgrange { - int first, last; - struct pgrange *next; -} PageRange ; - -static PageRange *makerange(int beg, int end, PageRange *next) -{ - PageRange *new; - if ((new = (PageRange *)malloc(sizeof(PageRange))) == NULL) - die("out of memory"); - new->first = beg; - new->last = end; - new->next = next; - return (new); -} - - -static PageRange *addrange(char *str, PageRange *rp) -{ - int first=0; - int sign; - - if(!str) return NULL; - - sign = (*str == '_' && ++str) ? -1 : 1; - if (isdigit((unsigned char)*str)) { - first = sign*atoi(str); - while (isdigit((unsigned char)*str)) str++; - } - switch (*str) { - case '\0': - if (first || sign < 0) - return (makerange(first, first, rp)); - break; - case ',': - if (first || sign < 0) - return (addrange(str+1, makerange(first, first, rp))); - break; - case '-': - case ':': - str++; - sign = (*str == '_' && ++str) ? -1 : 1; - if (!first) - first = 1; - if (isdigit((unsigned char)*str)) { - int last = sign*atoi(str); - while (isdigit((unsigned char)*str)) str++; - if (*str == '\0') - return (makerange(first, last, rp)); - if (*str == ',') - return (addrange(str+1, makerange(first, last, rp))); - } else if (*str == '\0') - return (makerange(first, -1, rp)); - else if (*str == ',') - return (addrange(str+1, makerange(first, -1, rp))); - default: /* Avoid a compiler warning */ - break; - } - die("invalid page range"); - return (PageRange *)0 ; -} - - -int -main(int argc, char *argv[]) -{ - int opt; - int currentpg, maxpage = 0; - int even = 0, odd = 0, reverse = 0; - int pass, all; - PageRange *pagerange = NULL; - - set_program_name (argv[0]); - - verbose = 1; - - while((opt = getopt(argc, argv, "eorqvp:")) != EOF) { - switch(opt) { - case 'e': /* even pages */ - even = 1; - break; - case 'o': /* odd pages */ - odd = 1; - break; - case 'r': /* reverse */ - reverse = 1; - break; - case 'p': /* page spec */ - pagerange = addrange(optarg, pagerange); - break; - case 'q': /* quiet */ - verbose = 0; - break; - case 'v': /* version */ - default: - usage(); - break; - } - } - - infile = stdin; - outfile = stdout; - - /* If we haven't gotten a page range yet, we better get one now */ - if (pagerange == NULL && !reverse && !even && !odd) { - pagerange = addrange(argv[optind], NULL); - optind++; - } - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if (optind != argc) { - /* User specified an input file */ - if ((infile = fopen(argv[optind], "rb")) == NULL) - die("can't open input file %s", argv[optind]); - optind++; - } - - if (optind != argc) { - /* User specified an output file */ - if ((outfile = fopen(argv[optind], "wb")) == NULL) - die("can't open output file %s", argv[optind]); - optind++; - } - - if(optind != argc) usage(); - - if (infile == stdin && set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - if (outfile == stdout && set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - if ((infile=seekable(infile))==NULL) - die("can't seek input"); - - scanpages(NULL); - - /* select all pages or all in range if odd or even not set */ - all = !(odd || even); - - /* add default page range */ - if (!pagerange) - pagerange = makerange(1, -1, NULL); - - /* reverse page list if not reversing pages (list constructed bottom up) */ - if (!reverse) { - PageRange *revlist = NULL; - PageRange *next = NULL; - while (pagerange) { - next = pagerange->next; - pagerange->next = revlist; - revlist = pagerange; - pagerange = next; - } - pagerange = revlist; - } else { /* swap start & end if reversing */ - PageRange *r; - for (r = pagerange; r; r = r->next) { - int temp = r->last; - r->last = r->first; - r->first = temp; - } - } - - { /* adjust for end-relative pageranges */ - PageRange *r; - for (r = pagerange; r; r = r->next) { - if (r->first < 0) { - r->first += pages + 1; - if (r->first < 1) - r->first = 1; - } - if (r->last < 0) { - r->last += pages + 1; - if (r->last < 1) - r->last = 1; - } - } - } - - /* count pages on first pass, select pages on second pass */ - for (pass = 0; pass < 2; pass++) { - PageRange *r; - if (pass) { /* write header on second pass */ - writeheader(maxpage, NULL); - writeprolog(); - writesetup(); - } - for (r = pagerange; r; r = r->next) { - if (r->last < r->first) { - for (currentpg = r->first; currentpg >= r->last; currentpg--) { - if (currentpg == 0 || - (currentpg <= pages && - ((currentpg&1) ? (odd || all) : (even || all)))) { - if (pass) { - if (currentpg) - writepage(currentpg-1); - else - writeemptypage() ; - } else - maxpage++; - } - } - } else { - for (currentpg = r->first; currentpg <= r->last; currentpg++) { - if (currentpg == 0 || - (currentpg <= pages && - ((currentpg&1) ? (odd || all) : (even || all)))) { - if (pass) { - if (currentpg) - writepage(currentpg-1); - else - writeemptypage() ; - } else - maxpage++; - } - } - } - } - } - writetrailer(); - - return 0; -} diff --git a/Build/source/texk/psutils/psutils-src/psspec.c b/Build/source/texk/psutils/psutils-src/psspec.c deleted file mode 100644 index 19a31a6408f..00000000000 --- a/Build/source/texk/psutils/psutils-src/psspec.c +++ /dev/null @@ -1,246 +0,0 @@ -/* psspec.c - * Page spec routines for page rearrangement - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#include "psutil.h" -#include "psspec.h" - -#include <string.h> - -double width = -1; -double height = -1; - -/* create a new page spec */ -PageSpec *newspec(void) -{ - PageSpec *temp = (PageSpec *)malloc(sizeof(PageSpec)); - if (temp == NULL) - die("out of memory"); - temp->pageno = temp->flags = temp->rotate = 0; - temp->scale = 1; - temp->xoff = temp->yoff = 0; - temp->next = NULL; - return (temp); -} - -/* dimension parsing routines */ -int parseint(char **sp) -{ - char *s = *sp; - int num = atoi(s); - - while (isdigit((unsigned char)*s)) - s++; - if (*sp == s) argerror(); - *sp = s; - return (num); -} - -double parsedouble(char **sp) -{ - char *s = *sp; - double num = atof(s); - - while (isdigit((unsigned char)*s) || *s == '-' || *s == '.') - s++; - if (*sp == s) argerror(); - *sp = s; - return (num); -} - -double parsedimen(char **sp) -{ - double num = parsedouble(sp); - char *s = *sp; - - if (strncmp(s, "pt", 2) == 0) { - s += 2; - } else if (strncmp(s, "in", 2) == 0) { - num *= 72; - s += 2; - } else if (strncmp(s, "cm", 2) == 0) { - num *= 28.346456692913385211; - s += 2; - } else if (strncmp(s, "mm", 2) == 0) { - num *= 2.8346456692913385211; - s += 2; - } else if (*s == 'w') { - if (width < 0) - die("width not initialised"); - num *= width; - s++; - } else if (*s == 'h') { - if (height < 0) - die("height not initialised"); - num *= height; - s++; - } - *sp = s; - return (num); -} - -double singledimen(char *str) -{ - double num = parsedimen(&str); - if (*str) usage(); - return (num); -} - -static const char *prologue[] = { /* PStoPS procset */ - /* Wrap these up with our own versions. We have to */ - "userdict begin", - "[/showpage/erasepage/copypage]{dup where{pop dup load", - " type/operatortype eq{ /PStoPSenablepage cvx 1 index" - " load 1 array astore cvx {} bind /ifelse cvx 4 array" - " astore cvx def}{pop}ifelse}{pop}ifelse}forall" - " /PStoPSenablepage true def", - "[/letter/legal/executivepage/a4/a4small/b5/com10envelope", /* nullify */ - " /monarchenvelope/c5envelope/dlenvelope/lettersmall/note", /* paper */ - " /folio/quarto/a5]{dup where{dup wcheck{exch{}put}", /* operators */ - " {pop{}def}ifelse}{pop}ifelse}forall", - "/setpagedevice {pop}bind 1 index where{dup wcheck{3 1 roll put}", - " {pop def}ifelse}{def}ifelse", - "/PStoPSmatrix matrix currentmatrix def", - "/PStoPSxform matrix def/PStoPSclip{clippath}def", - "/defaultmatrix{PStoPSmatrix exch PStoPSxform exch concatmatrix}bind def", - "/initmatrix{matrix defaultmatrix setmatrix}bind def", - "/initclip[{matrix currentmatrix PStoPSmatrix setmatrix", - " [{currentpoint}stopped{$error/newerror false put{newpath}}", - " {/newpath cvx 3 1 roll/moveto cvx 4 array astore cvx}ifelse]", - " {[/newpath cvx{/moveto cvx}{/lineto cvx}", - " {/curveto cvx}{/closepath cvx}pathforall]cvx exch pop}", - " stopped{$error/errorname get/invalidaccess eq{cleartomark", - " $error/newerror false put cvx exec}{stop}ifelse}if}bind aload pop", - " /initclip dup load dup type dup/operatortype eq{pop exch pop}", - " {dup/arraytype eq exch/packedarraytype eq or", - " {dup xcheck{exch pop aload pop}{pop cvx}ifelse}", - " {pop cvx}ifelse}ifelse", - " {newpath PStoPSclip clip newpath exec setmatrix} bind aload pop]cvx def", - "/initgraphics{initmatrix newpath initclip 1 setlinewidth", - " 0 setlinecap 0 setlinejoin []0 setdash 0 setgray", - " 10 setmiterlimit}bind def", - "end", - NULL - }; - -void pstops(int modulo, int pps, int nobind, PageSpec *specs, double draw) { - - scanpages(NULL); - pstops_write(modulo, pps, nobind, specs, draw, NULL); -} - -void pstops_write(int modulo, int pps, int nobind, PageSpec *specs, double draw, off_t *ignorelist) -{ - int thispg, maxpage; - int pageindex = 0; - const char **pro; - - maxpage = ((pages+modulo-1)/modulo)*modulo; - - /* rearrange pages: doesn't cope properly with loaded definitions */ - writeheadermedia((maxpage/modulo)*pps, ignorelist, width, height); - writestring("%%BeginProcSet: PStoPS"); - if (nobind) - writestring("-nobind"); - writestring(" 1 15\n"); - for (pro = prologue; *pro; pro++) { - writestring(*pro); - writestring("\n"); - } - if (nobind) /* desperation measures */ - writestring("/bind{}def\n"); - writestring("%%EndProcSet\n"); - /* save transformation from original to current matrix */ - if (writepartprolog()) { - writestring("userdict/PStoPSxform PStoPSmatrix matrix currentmatrix\n"); - writestring(" matrix invertmatrix matrix concatmatrix\n"); - writestring(" matrix invertmatrix put\n"); - } - writesetup(); - for (thispg = 0; thispg < maxpage; thispg += modulo) { - int add_last = 0; - PageSpec *ps; - for (ps = specs; ps != NULL; ps = ps->next) { - int actualpg; - int add_next = ((ps->flags & ADD_NEXT) != 0); - if (ps->flags & REVERSED) - actualpg = maxpage-thispg-modulo+ps->pageno; - else - actualpg = thispg+ps->pageno; - if (actualpg < pages) - seekpage(actualpg); - if (!add_last) { /* page label contains original pages */ - PageSpec *np = ps; - char *eob = pagelabel; - char sep = '('; - do { - *eob++ = sep; - if (np->flags & REVERSED) - sprintf(eob, "%d", maxpage-thispg-modulo+np->pageno); - else - sprintf(eob, "%d", thispg+np->pageno); - eob = eob + strlen(eob); - sep = ','; - } while ((np->flags & ADD_NEXT) && (np = np->next)); - strcpy(eob, ")"); - writepageheader(pagelabel, ++pageindex); - } - writestring("userdict/PStoPSsaved save put\n"); - if (ps->flags & GSAVE) { - char buffer[BUFSIZ]; - writestring("PStoPSmatrix setmatrix\n"); - if (ps->flags & OFFSET) { - sprintf(buffer, "%f %f translate\n", ps->xoff, ps->yoff); - writestring(buffer); - } - if (ps->flags & ROTATE) { - sprintf(buffer, "%d rotate\n", ps->rotate); - writestring(buffer); - } - if (ps->flags & HFLIP) { - sprintf(buffer, "[ -1 0 0 1 %f 0 ] concat\n", width*ps->scale); - writestring(buffer); - } - if (ps->flags & VFLIP) { - sprintf(buffer, "[ 1 0 0 -1 0 %f ] concat\n", height*ps->scale); - writestring(buffer); - } - if (ps->flags & SCALE) { - sprintf(buffer, "%f dup scale\n", ps->scale); - writestring(buffer); - } - writestring("userdict/PStoPSmatrix matrix currentmatrix put\n"); - if (width > 0 && height > 0) { - writestring("userdict/PStoPSclip{0 0 moveto\n"); - sprintf(buffer, " %f 0 rlineto 0 %f rlineto -%f 0 rlineto\n", - width, height, width); - writestring(buffer); - writestring(" closepath}put initclip\n"); - if (draw > 0) { - sprintf(buffer, "gsave clippath 0 setgray %f setlinewidth stroke grestore\n", draw); - writestring(buffer); - } - } - } - if (add_next) - writestring("/PStoPSenablepage false def\n"); - if (actualpg < pages) { - writepagesetup(); - writestring("PStoPSxform concat\n"); - writepagebody(actualpg); - } else { - writestring("PStoPSxform concat\n"); - writestring("showpage\n"); - } - writestring("PStoPSsaved restore\n"); - add_last = add_next; - } - } - writetrailer(); -} diff --git a/Build/source/texk/psutils/psutils-src/psspec.h b/Build/source/texk/psutils/psutils-src/psspec.h deleted file mode 100644 index 5764cf74f2f..00000000000 --- a/Build/source/texk/psutils/psutils-src/psspec.h +++ /dev/null @@ -1,35 +0,0 @@ -/* psspec.h - * Page spec routines for page rearrangement - * - * (c) Reuben Thomas 2012 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -/* pagespec flags */ -#define ADD_NEXT (0x01) -#define ROTATE (0x02) -#define HFLIP (0x04) -#define VFLIP (0x08) -#define SCALE (0x10) -#define OFFSET (0x20) -#define REVERSED (0x40) -#define GSAVE (ROTATE|HFLIP|VFLIP|SCALE|OFFSET) - -typedef struct pagespec { - int pageno, flags, rotate; - double xoff, yoff, scale; - struct pagespec *next; -} PageSpec ; - -extern double width, height; /* Width and height of paper in PostScript pt */ - -extern PageSpec *newspec(void); -extern int parseint(char **sp); -extern double parsedouble(char **sp); -extern double parsedimen(char **sp); -extern double singledimen(char *str); -extern void pstops(int modulo, int pps, int nobind, PageSpec *specs, - double draw); -extern void pstops_write(int modulo, int pps, int nobind, PageSpec *specs, - double draw, off_t *ignorelist); diff --git a/Build/source/texk/psutils/psutils-src/pstops.1 b/Build/source/texk/psutils/psutils-src/pstops.1 deleted file mode 100644 index d2750877382..00000000000 --- a/Build/source/texk/psutils/psutils-src/pstops.1 +++ /dev/null @@ -1,169 +0,0 @@ -.TH PSTOPS 1 "PSUtils" -.SH NAME -pstops \- shuffle pages in a PostScript file -.SH SYNOPSIS -.B pstops -.RB [ \-q ] -.RB [ \-b ] -.RB [ \-w\fIwidth\fR ] -.RB [ \-h\fIheight\fR ] -.RB [ \-p\fIpaper\fR ] -.RB [ \-d [ \fIlwidth\fR ]] -.I pagespecs -.RI [ infile -.RI [ outfile ]] -.SH DESCRIPTION -.I Pstops -rearranges pages from a PostScript document, creating a new PostScript file. -The input PostScript file should follow the Adobe Document Structuring -Conventions. -.I Pstops -can be used to perform a large number of arbitrary re-arrangements of -Documents, including arranging for printing 2-up, 4-up, booklets, reversing, -selecting front or back sides of documents, scaling, etc. -.PP -.I pagespecs -follow the syntax: -.RS -.TP 12 -.I pagespecs -= -.RI [ modulo\fB:\fP ] specs -.TP -.I specs -= -.IR spec [ \fB+\fPspecs | \fB,\fPspecs ] -.TP -.I spec -= -.RB [ - ] \fIpageno\fP [ L | R | U ][ H | V ][ @\fIscale\fP ][ ( \fIxoff\fP , \fIyoff\fP ) ] -.RE -.sp -.I modulo -is the number of pages in each block. The value of -.I modulo -should be greater than 0; the default value is 1. -.I specs -are the page specifications for the pages in each block. The value of the -.I pageno -in each -.I spec -should be between 0 (for the first page in the block) and \fImodulo\fR-1 -(for the last page in each block) inclusive. -The optional dimensions -.I xoff -and -.I yoff -shift the page by the specified amount. -.I xoff -and -.I yoff -are in PostScript's points, but may be followed by the units -.B "cm" -or -.B "in" -to convert to centimetres or inches, or the flag -.B "w" -or -.B "h" -to specify as a multiple of the width or height. -The optional parameters -.BR L , -.BR R , -.BR R , -.BR R , -and -.B V -rotate the page left, right, or upside-down, and flip (mirror) page -horizontally or vertically. -The optional -.I scale -parameter scales the page by the fraction specified. -If the optional minus sign is specified, the page is relative to the end of -the document, instead of the start. - -If page -.IR spec s -are separated by -.B + -the pages will be merged into one page; if they are separated by -.B , -they will be on separate pages. -If there is only one page specification, with -.I pageno -zero, the \fIpageno\fR may be omitted. - -The shift, rotation, and scaling are applied -to the PostScript transformation matrix -in that order regardless of which order -they appear on the command line. -The matrix accumulates the individual transformations. -The effect on the image is to first scale with respect to an origin -at the lower left corner, then rotate about the same origin, and -finally shift. -.PP -The -.B \-w -option gives the width which is used by the -.B "w" -dimension specifier, and the -.B \-h -option gives the height which is used by the -.B "h" -dimension specifier. These dimensions are also used (after scaling) to set the -clipping path for each page. -The -.B \-p -option can be used as an alternative, to set the paper size. See -.BR paper (1). -.PP -The -.B \-b -option prevents any -.B bind -operators in the PostScript prolog from binding. This may be needed in cases -where complex multi-page re-arrangements are being done. -.PP -The -.D \-d -option draws a line around the border of each page, of the specified width. -If the \fIlwidth\fR parameter is omitted, a default linewidth of 1 point is -assumed. The linewidth is relative to the original page dimensions, -i.e., it is scaled up or down with the rest of the page. -.PP -Pstops normally prints the page numbers of the pages re-arranged; the -.B \-q -option suppresses this. -.SH EXAMPLES -This section contains some sample re-arrangements. To put two pages on one -sheet (of A4 paper), the pagespec to use is: -.sp -.ce -"2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)" -.sp -To select all of the odd pages in reverse order, use: -.sp -.ce -2:-0 -.sp -To re-arrange pages for printing 2-up booklets, use -.sp -.ce -"4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm)" -.sp -for the front sides, and -.sp -.ce -"4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)" -.sp -for the reverse sides (or join them with a comma for duplex printing). -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psutils (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. -.SH BUGS -.B Pstops -does not accept all DSC comments. diff --git a/Build/source/texk/psutils/psutils-src/pstops.c b/Build/source/texk/psutils/psutils-src/pstops.c deleted file mode 100644 index e37a0a27f60..00000000000 --- a/Build/source/texk/psutils/psutils-src/pstops.c +++ /dev/null @@ -1,211 +0,0 @@ -/* pstops.c - * Rearrange pages in conforming PS file - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#include <unistd.h> -#include <string.h> -#include "progname.h" -#include "binary-io.h" - -#include "psutil.h" -#include "psspec.h" - -const char *syntax = "[-q] [-b] [-wWIDTH] [-hHEIGHT] [-dLWIDTH] [-pPAPER] PAGESPECS [INFILE [OUTFILE]]\n"; - -const char *argerr_message = "%page specification error:\n" - " pagespecs = [modulo:]spec\n" - " spec = [-]pageno[@scale][L|R|U|H|V][(xoff,yoff)][,spec|+spec]\n" - " modulo >= 1, 0 <= pageno < modulo\n"; - -static int modulo = 1; -static int pagesperspec = 1; - -static PageSpec *parsespecs(char *str) -{ - PageSpec *head, *tail; - unsigned long spec_count = 0; - long num = -1; - - head = tail = newspec(); - while (*str) { - if (isdigit((unsigned char)*str)) { - num = parseint(&str); - } else { - switch (*str++) { - case ':': - if (spec_count || head != tail || num < 1) argerror(); - modulo = num; - num = -1; - break; - case '-': - tail->flags ^= REVERSED; - break; - case '@': - tail->scale *= parsedouble(&str); - tail->flags |= SCALE; - break; - case 'l': case 'L': - tail->rotate += 90; - tail->flags |= ROTATE; - break; - case 'r': case 'R': - tail->rotate -= 90; - tail->flags |= ROTATE; - break; - case 'u': case 'U': - tail->rotate += 180; - tail->flags |= ROTATE; - break; - case 'h': case 'H': - tail->flags ^= HFLIP; - break; - case 'v': case 'V': - tail->flags ^= VFLIP; - break; - case '(': - tail->xoff += parsedimen(&str); - if (*str++ != ',') argerror(); - tail->yoff += parsedimen(&str); - if (*str++ != ')') argerror(); - tail->flags |= OFFSET; - break; - case '+': - tail->flags |= ADD_NEXT; - case ',': - if (num < 0 || num >= modulo) argerror(); - if ((tail->flags & ADD_NEXT) == 0) - pagesperspec++; - tail->pageno = num; - tail->next = newspec(); - tail = tail->next; - num = -1; - break; - default: - argerror(); - } - spec_count++; - } - } - if (num >= modulo) - argerror(); - else if (num >= 0) - tail->pageno = num; - return (head); -} - -int -main(int argc, char *argv[]) -{ - PageSpec *specs = NULL; - int nobinding = 0; - double draw = 0; - int opt; - - set_program_name (argv[0]); - - if (!paper_size(NULL, &width, &height)) - die("could not get default paper size"); - - verbose = 1; - - while((opt = getopt(argc, argv, "qd::bw:h:p:v0123456789")) != EOF) { - switch(opt) { - case 'q': /* quiet */ - verbose = 0; - break; - case 'd': /* draw borders */ - if(optarg) - draw = singledimen(optarg); - else - draw = 1; - break; - case 'b': /* no bind operator */ - nobinding = 1; - break; - case 'w': /* page width */ - width = singledimen(optarg); - break; - case 'h': /* page height */ - height = singledimen(optarg); - break; - case 'p': /* paper type */ - if (!paper_size(optarg, &width, &height)) - die("paper size '%s' not recognised", optarg); - break; - case 'v': /* version */ - usage(); - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (specs == NULL) { - char *spec_txt = malloc((optarg ? strlen(optarg) : 0) + 3); - if(!spec_txt) die("no memory for spec allocation"); - spec_txt[0] = '-'; - spec_txt[1] = opt; - spec_txt[2] = 0; - if (optarg) strcat(spec_txt, optarg); - specs = parsespecs(spec_txt); - free(spec_txt); - } else { - usage(); - } - break; - default: - usage(); - break; - } - } - - if (specs == NULL) { - if(optind == argc) usage(); - specs = parsespecs(argv[optind]); - optind++; - } - - infile = stdin; - outfile = stdout; - - /* Be defensive */ - if((argc - optind) < 0 || (argc - optind) > 2) usage(); - - if (optind != argc) { - /* User specified an input file */ - if ((infile = fopen(argv[optind], "rb")) == NULL) - die("can't open input file %s", argv[optind]); - optind++; - } - - if (optind != argc) { - /* User specified an output file */ - if ((outfile = fopen(argv[optind], "wb")) == NULL) - die("can't open output file %s", argv[optind]); - optind++; - } - - if (optind != argc || specs == NULL) usage(); - - if (infile == stdin && set_binary_mode(fileno(stdin), O_BINARY) < 0) - die("can't reset stdin to binary mode"); - if (outfile == stdout && set_binary_mode(fileno(stdout), O_BINARY) < 0) - die("can't reset stdout to binary mode"); - - if ((infile=seekable(infile))==NULL) - die("can't seek input"); - - pstops(modulo, pagesperspec, nobinding, specs, draw); - - return 0; -} diff --git a/Build/source/texk/psutils/psutils-src/psutil.c b/Build/source/texk/psutils/psutils-src/psutil.c deleted file mode 100644 index f129341ed69..00000000000 --- a/Build/source/texk/psutils/psutils-src/psutil.c +++ /dev/null @@ -1,407 +0,0 @@ -/* psutil.c - * PSUtils utility functions - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ - -#include "config.h" - -#define _FILE_OFFSET_BITS 64 - -#include "psutil.h" -#include "psspec.h" - -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <stdio.h> - -#include "progname.h" -#include "xvasprintf.h" -#include "verror.h" - -#define iscomment(x,y) (strncmp(x,y,strlen(y)) == 0) - -int pages; -int verbose; -FILE *infile; -FILE *outfile; -char pagelabel[BUFSIZ]; -int pageno; - -static char buffer[BUFSIZ]; -static long bytes = 0; -static off_t pagescmt = 0; -static off_t headerpos = 0; -static off_t endsetup = 0; -static off_t beginprocset = 0; /* start of pstops procset */ -static off_t endprocset = 0; -static int outputpage = 0; -static int maxpages = 100; -static off_t *pageptr; - -_Noreturn void usage(void) -{ - fprintf(stderr, "%s %s\n%sUsage: %s %s", program_name, PACKAGE_VERSION, COPYRIGHT_STRING, program_name, syntax); - exit(1); -} - -void argerror(void) -{ - die(argerr_message); -} - -/* Message function: for messages, warnings, and errors sent to stderr. - The routine does not return. */ -void die(const char *format, ...) -{ - va_list args; - - if (verbose) /* We may be in the middle of a line */ - putc('\n', stderr); - - va_start(args, format); - verror(1, 0, format, args); /* Does not return */ -} - -#if 0 /* not used for TeX Live */ -/* Read a line from a pipe and return it without any trailing newline. */ -static char *pgetline(const char *cmd) -{ - char *l = NULL; - FILE *fp = popen(cmd, "r"); - if (fp) { - size_t n, len; - len = getline(&l, &n, fp); - if (l && l[len - 1] == '\n') - l[len - 1] = '\0'; - pclose(fp); - } - return l; -} - -/* Get the size of the given paper, or the default paper if paper_name == NULL. */ -int paper_size(const char *paper_name, double *width, double *height) -{ - char *cmd = NULL, *l = NULL; - int res = 0; - if (paper_name == NULL) /* Use default paper name */ - paper_name = pgetline(PAPER); - if (paper_name && (cmd = xasprintf(PAPER " --unit=pt --size %s", paper_name)) && (l = pgetline(cmd))) - res = sscanf(l, "%lg %lg", width, height); - free(l); - free(cmd); - return res == 2; -} -#endif /* not used for TeX Live */ - -/* Make a file seekable, using temporary files if necessary */ -FILE *seekable(FILE *fp) -{ - FILE *ft; - long r, w ; - char *p; - char buffer[BUFSIZ] ; - off_t fpos; - - if ((fpos = ftello(fp)) >= 0) - if (!fseeko(fp, (off_t) 0, SEEK_END) && !fseeko(fp, fpos, SEEK_SET)) - return (fp); - - if ((ft = tmpfile()) == NULL) - return (NULL); - - while ((r = fread(p = buffer, sizeof(char), BUFSIZ, fp)) > 0) { - do { - if ((w = fwrite(p, sizeof(char), r, ft)) == 0) - return (NULL) ; - p += w ; - r -= w ; - } while (r > 0) ; - } - - if (!feof(fp)) - return (NULL) ; - - /* discard the input file, and rewind the temporary */ - (void) fclose(fp); - if (fseeko(ft, (off_t) 0, SEEK_SET) != 0) - return (NULL) ; - - return (ft); -} - - -/* copy input file from current position upto new position to output file, - * ignoring the lines starting at something ignorelist points to */ -static int fcopy(off_t upto, off_t *ignorelist) -{ - off_t here = ftello(infile); - off_t bytes_left; - - if (ignorelist != NULL) { - while (*ignorelist > 0 && *ignorelist < here) - ignorelist++; - - while (*ignorelist > 0 && *ignorelist < upto) { - int r = fcopy(*ignorelist, NULL); - if (!r || fgets(buffer, BUFSIZ, infile) == NULL) - return 0; - ignorelist++; - here = ftello(infile); - while (*ignorelist > 0 && *ignorelist < here) - ignorelist++; - } - } - bytes_left = upto - here; - - while (bytes_left > 0) { - size_t rw_result; - const size_t numtocopy = (bytes_left > BUFSIZ) ? BUFSIZ : bytes_left; - rw_result = fread(buffer, 1, numtocopy, infile); - if (rw_result < numtocopy) return (0); - rw_result = fwrite(buffer, 1, numtocopy, outfile); - if (rw_result < numtocopy) return (0); - bytes_left -= numtocopy; - bytes += numtocopy; - } - return (1); -} - -/* build array of pointers to start/end of pages */ -void scanpages(off_t *sizeheaders) -{ - register char *comment = buffer+2; - register int nesting = 0; - register off_t record; - - if (sizeheaders) - *sizeheaders = 0; - - if ((pageptr = (off_t *)malloc(sizeof(off_t)*maxpages)) == NULL) - die("out of memory"); - pages = 0; - fseeko(infile, (off_t) 0, SEEK_SET); - while (record = ftello(infile), fgets(buffer, BUFSIZ, infile) != NULL) - if (*buffer == '%') { - if (buffer[1] == '%') { - if (nesting == 0 && iscomment(comment, "Page:")) { - if (pages >= maxpages-1) { - maxpages *= 2; - if ((pageptr = (off_t *)realloc((char *)pageptr, - sizeof(off_t)*maxpages)) == NULL) - die("out of memory"); - } - pageptr[pages++] = record; - } else if (headerpos == 0 && iscomment(comment, "BoundingBox:")) { - if (sizeheaders) { - *(sizeheaders++) = record; - *sizeheaders = 0; - } - } else if (headerpos == 0 && iscomment(comment, "HiResBoundingBox:")) { - if (sizeheaders) { - *(sizeheaders++) = record; - *sizeheaders = 0; - } - } else if (headerpos == 0 && iscomment(comment,"DocumentPaperSizes:")) { - if (sizeheaders) { - *(sizeheaders++) = record; - *sizeheaders = 0; - } - } else if (headerpos == 0 && iscomment(comment,"DocumentMedia:")) { - if (sizeheaders) { - *(sizeheaders++) = record; - *sizeheaders = 0; - } - } else if (headerpos == 0 && iscomment(comment, "Pages:")) - pagescmt = record; - else if (headerpos == 0 && iscomment(comment, "EndComments")) - headerpos = ftello(infile); - else if (iscomment(comment, "BeginDocument") || - iscomment(comment, "BeginBinary") || - iscomment(comment, "BeginFile")) - nesting++; - else if (iscomment(comment, "EndDocument") || - iscomment(comment, "EndBinary") || - iscomment(comment, "EndFile")) - nesting--; - else if (nesting == 0 && iscomment(comment, "EndSetup")) - endsetup = record; - else if (nesting == 0 && iscomment(comment, "BeginProlog")) - headerpos = ftello(infile); - else if (nesting == 0 && - iscomment(comment, "BeginProcSet: PStoPS")) - beginprocset = record; - else if (beginprocset && !endprocset && - iscomment(comment, "EndProcSet")) - endprocset = ftello(infile); - else if (nesting == 0 && (iscomment(comment, "Trailer") || - iscomment(comment, "EOF"))) { - fseeko(infile, record, SEEK_SET); - break; - } - } else if (headerpos == 0 && buffer[1] != '!') - headerpos = record; - } else if (headerpos == 0) - headerpos = record; - pageptr[pages] = ftello(infile); - if (endsetup == 0 || endsetup > pageptr[0]) - endsetup = pageptr[0]; -} - -/* seek a particular page */ -void seekpage(int p) -{ - fseeko(infile, pageptr[p], SEEK_SET); - if (fgets(buffer, BUFSIZ, infile) != NULL && - iscomment(buffer, "%%Page:")) { - char *start, *end; - for (start = buffer+7; isspace((unsigned char)*start); start++); - if (*start == '(') { - int paren = 1; - for (end = start+1; paren > 0; end++) - switch (*end) { - case '\0': - die("Bad page label while seeking page %d", p); - case '(': - paren++; - break; - case ')': - paren--; - break; - default: - break; - } - } else - for (end = start; !isspace((unsigned char)*end); end++); - strncpy(pagelabel, start, end-start); - pagelabel[end-start] = '\0'; - pageno = atoi(end); - } else - die("I/O error seeking page %d", p); -} - -/* Output routines. These all update the global variable bytes with the number - * of bytes written */ -void writestring(const char *s) -{ - fputs(s, outfile); - bytes += strlen(s); -} - -/* write page comment */ -void writepageheader(const char *label, int page) -{ - if (verbose) - fprintf(stderr, "[%d] ", page); - sprintf(buffer, "%%%%Page: %s %d\n", label, ++outputpage); - writestring(buffer); -} - -/* search for page setup */ -void writepagesetup(void) -{ - char buffer[BUFSIZ]; - if (beginprocset) { - for (;;) { - if (fgets(buffer, BUFSIZ, infile) == NULL) - die("I/O error reading page setup %d", outputpage); - if (!strncmp(buffer, "PStoPSxform", 11)) - break; - if (fputs(buffer, outfile) == EOF) - die("I/O error writing page setup %d", outputpage); - bytes += strlen(buffer); - } - } -} - -/* write the body of a page */ -void writepagebody(int p) -{ - if (!fcopy(pageptr[p+1], NULL)) - die("I/O error writing page %d", outputpage); -} - -/* write a whole page */ -void writepage(int p) -{ - seekpage(p); - writepageheader(pagelabel, p+1); - writepagebody(p); -} - -/* write from start of file to end of header comments */ -void writeheader(int p, off_t *ignore) -{ - writeheadermedia(p, ignore, -1, -1); -} - -void writeheadermedia(int p, off_t *ignore, double width, double height) -{ - fseeko(infile, (off_t) 0, SEEK_SET); - if (pagescmt) { - if (!fcopy(pagescmt, ignore) || fgets(buffer, BUFSIZ, infile) == NULL) - die("I/O error in header"); - if (width > -1 && height > -1) { - sprintf(buffer, "%%%%DocumentMedia: plain %d %d 0 () ()\n", (int) width, (int) height); - writestring(buffer); - sprintf(buffer, "%%%%BoundingBox: 0 0 %d %d\n", (int) width, (int) height); - writestring(buffer); - } - sprintf(buffer, "%%%%Pages: %d 0\n", p); - writestring(buffer); - } - if (!fcopy(headerpos, ignore)) - die("I/O error in header"); -} - -/* write prologue to end of setup section excluding PStoPS procset */ -int writepartprolog(void) -{ - if (beginprocset && !fcopy(beginprocset, NULL)) - die("I/O error in prologue"); - if (endprocset) - fseeko(infile, endprocset, SEEK_SET); - writeprolog(); - return !beginprocset; -} - -/* write prologue up to end of setup section */ -void writeprolog(void) -{ - if (!fcopy(endsetup, NULL)) - die("I/O error in prologue"); -} - -/* write from end of setup to start of pages */ -void writesetup(void) -{ - if (!fcopy(pageptr[0], NULL)) - die("I/O error in prologue"); -} - -/* write trailer */ -void writetrailer(void) -{ - fseeko(infile, pageptr[pages], SEEK_SET); - while (fgets(buffer, BUFSIZ, infile) != NULL) { - writestring(buffer); - } - if (verbose) - fprintf(stderr, "Wrote %d pages, %ld bytes\n", outputpage, bytes); -} - -/* write a page with nothing on it */ -void writeemptypage(void) -{ - if (verbose) - fprintf(stderr, "[*] "); - sprintf(buffer, "%%%%Page: * %d\n", ++outputpage); - writestring(buffer); - if (beginprocset) - writestring("PStoPSxform concat\n"); - writestring("showpage\n"); -} - diff --git a/Build/source/texk/psutils/psutils-src/psutil.h b/Build/source/texk/psutils/psutils-src/psutil.h deleted file mode 100644 index 337692cff0b..00000000000 --- a/Build/source/texk/psutils/psutils-src/psutil.h +++ /dev/null @@ -1,49 +0,0 @@ -/* psutil.h - * PSUtils utility functions - * - * (c) Reuben Thomas 2012-2014 - * (c) Angus J. C. Duggan 1991-1997 - * See file LICENSE for details. - */ -#define _FILE_OFFSET_BITS 64 -#include <stdio.h> -#include <stdlib.h> -#include <ctype.h> -#include <stdarg.h> - -/* Definitions for functions found in psutil.c */ -extern void usage(void); -extern void die(const char *format, ...); -extern void argerror(void); -extern int paper_size(const char *paper_name, double *width, double *height); -extern FILE *seekable(FILE *fp); -extern void writepage(int p); -extern void seekpage(int p); -extern void writepageheader(const char *label, int p); -extern void writepagesetup(void); -extern void writepagebody(int p); -extern void writeheader(int p, off_t *ignorelist); -extern void writeheadermedia(int p, off_t *ignorelist, double width, double height); -extern int writepartprolog(void); -extern void writeprolog(void); -extern void writesetup(void); -extern void writetrailer(void); -extern void writeemptypage(void); -extern void scanpages(off_t *sizeheaders); -extern void writestring(const char *s); - -/* These variables are exported to the client program */ -extern int pages; -extern int verbose; -extern FILE *infile; -extern FILE *outfile; -extern char pagelabel[BUFSIZ]; -extern int pageno; - -/* Variables imported from the client program */ -extern const char *syntax; -extern const char *argerr_message; - -/* Useful macros */ -#define MIN(x,y) ((x) > (y) ? (y) : (x)) -#define COPYRIGHT_STRING "(c) Reuben Thomas <rrt@sc3d.org> 2014\n(c) Angus J. C. Duggan 1991-1997\nSee file LICENSE for details.\n" diff --git a/Build/source/texk/psutils/psutils-src/psutils.1 b/Build/source/texk/psutils/psutils-src/psutils.1 deleted file mode 100644 index d9f0a9d9fa2..00000000000 --- a/Build/source/texk/psutils/psutils-src/psutils.1 +++ /dev/null @@ -1,21 +0,0 @@ -.TH PSUTILS 1 "PSUtils" -.SH NAME -PSUtils \- utilities -.SH DESCRIPTION -PSUtils is a set of utilities for manipulating PostScript -documents which follow the Adobe Document Structuring Conventions. -.SH AUTHOR -Written by Angus J. C. Duggan. -.SH "SEE ALSO" -.BR psbook (1), -.BR psselect (1), -.BR pstops (1), -.BR epsffit (1), -.BR psnup (1), -.BR psresize (1), -.BR psjoin (1), -.BR extractres (1), -.BR includeres (1) -.SH TRADEMARKS -.B PostScript -is a trademark of Adobe Systems Incorporated. |