diff options
-rw-r--r-- | Build/source/texk/dviljk/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/texk/dviljk/Makefile.am | 3 | ||||
-rw-r--r-- | Build/source/texk/dviljk/Makefile.in | 227 | ||||
-rwxr-xr-x | Build/source/texk/dviljk/configure | 6 | ||||
-rw-r--r-- | Build/source/texk/dviljk/configure.ac | 4 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/ChangeLog | 10 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/Makefile.am | 27 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/Makefile.in | 535 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/dvihp.c | 443 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/mktex.h | 58 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/mktexlib.h | 59 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/stackenv.c | 349 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/stackenv.h | 46 | ||||
-rw-r--r-- | Build/source/texk/dviljk/win32/variables.h | 23 |
14 files changed, 1752 insertions, 43 deletions
diff --git a/Build/source/texk/dviljk/ChangeLog b/Build/source/texk/dviljk/ChangeLog index 94db9765151..18d70bb522d 100644 --- a/Build/source/texk/dviljk/ChangeLog +++ b/Build/source/texk/dviljk/ChangeLog @@ -1,3 +1,8 @@ +2011-05-25 Peter Breitenlohner <peb@mppmu.mpg.de> + + * Makefile.am (SUBDIRS): Add win32 to build C program dvihp + from Akira's W32TeX as WIN32 replacements for the shell script. + 2011-02-15 Peter Breitenlohner <peb@mppmu.mpg.de> * Makefile.am [WIN32]: Add dvilj6.exe wrapper. diff --git a/Build/source/texk/dviljk/Makefile.am b/Build/source/texk/dviljk/Makefile.am index 5db79bef48a..2ae8e49c8a3 100644 --- a/Build/source/texk/dviljk/Makefile.am +++ b/Build/source/texk/dviljk/Makefile.am @@ -1,6 +1,6 @@ ## Makefile.am for the TeX Live subdirectory texk/dviljk/ ## -## Copyright (C) 2009 - 2011 Peter Breitenlohner <tex-live@tug.org> +## Copyright (C) 2009-2011 Peter Breitenlohner <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## ACLOCAL_AMFLAGS = -I ../../m4 @@ -20,6 +20,7 @@ $(libdvilj_a_OBJECTS): $(KPATHSEA_DEPEND) bin_PROGRAMS = dvilj dvilj2p dvilj4 dvilj4l if WIN32 +SUBDIRS = win32 bin_PROGRAMS += dvilj6 else !WIN32 dist_bin_SCRIPTS = dvihp diff --git a/Build/source/texk/dviljk/Makefile.in b/Build/source/texk/dviljk/Makefile.in index ca5075eadb9..119fad0d1f0 100644 --- a/Build/source/texk/dviljk/Makefile.in +++ b/Build/source/texk/dviljk/Makefile.in @@ -145,11 +145,24 @@ SOURCES = $(libdvilj_a_SOURCES) $(dvilj_SOURCES) $(dvilj2p_SOURCES) \ DIST_SOURCES = $(libdvilj_a_SOURCES) $(dvilj_SOURCES) \ $(dvilj2p_SOURCES) $(dvilj4_SOURCES) $(dvilj4l_SOURCES) \ $(dvilj6_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man1_MANS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags +DIST_SUBDIRS = win32 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -157,6 +170,31 @@ am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print @@ -289,6 +327,7 @@ libdvilj_a_SOURCES = \ tfm.c \ tfm.h +@WIN32_TRUE@SUBDIRS = win32 @WIN32_FALSE@dist_bin_SCRIPTS = dvihp dvilj_CPPFLAGS = -DKPATHSEA -DLJ dvilj_SOURCES = \ @@ -334,7 +373,7 @@ man1_links = \ EXTRA_DIST = dvilj.pod DISTCLEANFILES = dvilj.ps all: c-auto.h - $(MAKE) $(AM_MAKEFLAGS) all-am + $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj @@ -636,6 +675,76 @@ uninstall-man1: echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -646,10 +755,23 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) mkid -fID $$unique tags: TAGS -TAGS: $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ +TAGS: tags-recursive $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ list='$(SOURCES) $(HEADERS) c-auto.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ @@ -668,7 +790,7 @@ TAGS: $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ fi; \ fi ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) c-auto.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -733,6 +855,34 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ @@ -849,21 +999,22 @@ distcleancheck: distclean $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am -check: check-am +check: check-recursive all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) c-auto.h -installdirs: +installdirs: installdirs-recursive +installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -installcheck: installcheck-am +installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ @@ -881,77 +1032,77 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -clean: clean-am +clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES mostlyclean-am -distclean: distclean-am +distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags -dvi: dvi-am +dvi: dvi-recursive dvi-am: -html: html-am +html: html-recursive html-am: -info: info-am +info: info-recursive info-am: install-data-am: install-man @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook -install-dvi: install-dvi-am +install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook -install-html: install-html-am +install-html: install-html-recursive install-html-am: -install-info: install-info-am +install-info: install-info-recursive install-info-am: install-man: install-man1 -install-pdf: install-pdf-am +install-pdf: install-pdf-recursive install-pdf-am: -install-ps: install-ps-am +install-ps: install-ps-recursive install-ps-am: installcheck-am: -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool -pdf: pdf-am +pdf: pdf-recursive pdf-am: -ps: ps-am +ps: ps-recursive ps-am: @@ -961,14 +1112,16 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS \ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook uninstall-man: uninstall-man1 -.MAKE: all install-am install-data-am install-exec-am install-strip \ - uninstall-am +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-data-am install-exec-am \ + install-strip tags-recursive uninstall-am -.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ - clean-binPROGRAMS clean-generic clean-libtool \ - clean-noinstLIBRARIES ctags dist dist-all dist-bzip2 dist-gzip \ - dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ - distclean distclean-compile distclean-generic distclean-hdr \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool clean-noinstLIBRARIES ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ @@ -977,12 +1130,12 @@ uninstall-man: uninstall-man1 install-exec-hook install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-dist_binSCRIPTS uninstall-hook uninstall-man \ - uninstall-man1 + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-dist_binSCRIPTS uninstall-hook \ + uninstall-man uninstall-man1 $(libdvilj_a_OBJECTS): $(KPATHSEA_DEPEND) diff --git a/Build/source/texk/dviljk/configure b/Build/source/texk/dviljk/configure index 7d360e40338..3f2adfbf7ea 100755 --- a/Build/source/texk/dviljk/configure +++ b/Build/source/texk/dviljk/configure @@ -760,8 +760,7 @@ CFLAGS LDFLAGS LIBS CPPFLAGS -CPP -CPPFLAGS' +CPP' # Initialize some variables set by options. @@ -14289,7 +14288,7 @@ else fi -ac_config_files="$ac_config_files Makefile" +ac_config_files="$ac_config_files Makefile win32/Makefile" cat >confcache <<\_ACEOF @@ -15313,6 +15312,7 @@ do "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "c-auto.h") CONFIG_HEADERS="$CONFIG_HEADERS c-auto.h:c-auto.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/Build/source/texk/dviljk/configure.ac b/Build/source/texk/dviljk/configure.ac index b66404381ea..1c2fb6f730a 100644 --- a/Build/source/texk/dviljk/configure.ac +++ b/Build/source/texk/dviljk/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl Copyright (C) 2009, 2010 Peter Breitenlohner <tex-live@tug.org> +dnl Copyright (C) 2009-2011 Peter Breitenlohner <tex-live@tug.org> dnl dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, @@ -26,6 +26,6 @@ KPSE_KPATHSEA_FLAGS KPSE_CHECK_WIN32 AM_CONDITIONAL([WIN32], [test "x$kpse_cv_have_win32" != xno]) -AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile win32/Makefile]) AC_OUTPUT diff --git a/Build/source/texk/dviljk/win32/ChangeLog b/Build/source/texk/dviljk/win32/ChangeLog new file mode 100644 index 00000000000..4d478c3d3f3 --- /dev/null +++ b/Build/source/texk/dviljk/win32/ChangeLog @@ -0,0 +1,10 @@ +2011-05-25 Peter Breitenlohner <peb@mppmu.mpg.de> + + * dvihp.c, mktex.h, mktexlib.h, stackenv.[ch], variables.h: + New files from Akira's W32TeX. + + * dvihp.c, stackenv.c: #include <kpathsea/config.h>. + * dvihp.c (main): Drop use of getlongname() for 8+3 names. + Remove unused variables `dvicopy_log' and `dvilj_log'. + Declare almost all strings as const. + * mktexlib.h, stackenv.c: Declare mktex_version_string as const.
\ No newline at end of file diff --git a/Build/source/texk/dviljk/win32/Makefile.am b/Build/source/texk/dviljk/win32/Makefile.am new file mode 100644 index 00000000000..31dd4c58a05 --- /dev/null +++ b/Build/source/texk/dviljk/win32/Makefile.am @@ -0,0 +1,27 @@ +## Makefile.am for the TeX Live subdirectory texk/dviljk/win32/ +## +## Copyright (C) 2011 Peter Breitenlohner <tex-live@tug.org> +## You may freely use, modify and/or distribute this file. +## +AM_CPPFLAGS = $(KPATHSEA_INCLUDES) +AM_CFLAGS = $(WARNING_CFLAGS) + +# Build WIN32 replacement for Unix shell script. +bin_PROGRAMS = dvihp + +dvihp_SOURCES = \ + dvihp.c \ + mktex.h \ + mktexlib.h \ + stackenv.c \ + stackenv.h \ + variables.h + +LDADD = $(KPATHSEA_LIBS) +dvihp_DEPENDENCIES = $(KPATHSEA_DEPEND) + +## Rebuild libkpathsea +@KPATHSEA_RULE@ + +EXTRA_DIST = ChangeLog + diff --git a/Build/source/texk/dviljk/win32/Makefile.in b/Build/source/texk/dviljk/win32/Makefile.in new file mode 100644 index 00000000000..d6f133391c8 --- /dev/null +++ b/Build/source/texk/dviljk/win32/Makefile.in @@ -0,0 +1,535 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = dvihp$(EXEEXT) +subdir = win32 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \ + $(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \ + $(top_srcdir)/../../m4/kpse-warnings.m4 \ + $(top_srcdir)/../../m4/kpse-win32.m4 \ + $(top_srcdir)/../../m4/libtool.m4 \ + $(top_srcdir)/../../m4/ltoptions.m4 \ + $(top_srcdir)/../../m4/ltsugar.m4 \ + $(top_srcdir)/../../m4/ltversion.m4 \ + $(top_srcdir)/../../m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/c-auto.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_dvihp_OBJECTS = dvihp.$(OBJEXT) stackenv.$(OBJEXT) +dvihp_OBJECTS = $(am_dvihp_OBJECTS) +dvihp_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(dvihp_SOURCES) +DIST_SOURCES = $(dvihp_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KPATHSEA_DEPEND = @KPATHSEA_DEPEND@ +KPATHSEA_INCLUDES = @KPATHSEA_INCLUDES@ +KPATHSEA_LIBS = @KPATHSEA_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARNING_CFLAGS = @WARNING_CFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = $(KPATHSEA_INCLUDES) +AM_CFLAGS = $(WARNING_CFLAGS) +dvihp_SOURCES = \ + dvihp.c \ + mktex.h \ + mktexlib.h \ + stackenv.c \ + stackenv.h \ + variables.h + +LDADD = $(KPATHSEA_LIBS) +dvihp_DEPENDENCIES = $(KPATHSEA_DEPEND) +EXTRA_DIST = ChangeLog +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign win32/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign win32/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +dvihp$(EXEEXT): $(dvihp_OBJECTS) $(dvihp_DEPENDENCIES) + @rm -f dvihp$(EXEEXT) + $(LINK) $(dvihp_OBJECTS) $(dvihp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dvihp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stackenv.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +@KPATHSEA_RULE@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/texk/dviljk/win32/dvihp.c b/Build/source/texk/dviljk/win32/dvihp.c new file mode 100644 index 00000000000..ec9ecbfb5dd --- /dev/null +++ b/Build/source/texk/dviljk/win32/dvihp.c @@ -0,0 +1,443 @@ +/* dvihp.c: emulate the dvihp shell script + + Converted to C by Eli Zaretskii <eliz@is.elta.co.il> + Adapted to Win32 by Fabrice POPINEAU + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include <kpathsea/config.h> +#include <fcntl.h> +#ifdef _WIN32 +#include <io.h> +#endif + +#include <kpathsea/kpathsea.h> +#include "mktex.h" +#include "stackenv.h" + +static const char rcs_id[] = + "$Id: dvihp.c,v 1.7 2002/10/06 14:02:09 olaf Exp $"; +static char rcs_revision[] = "$Revision: 1.7 $"; + +static void usage (void) +{ + printf ("Usage: %s [OPTIONS] [DVIFILE[.dvi]].\n\ + Translate the given DVIFILE to Hewlett-Packard PCL by calling dvicopy\n\ + and then $DVILJ (dvilj4 by default).\n\ + In the absence of other options, pipe the PCL to $SPOOL (lpr by default).\n\ +\n\ + Options are recognized from dvips where possible:\n\ +-A print odd pages\n\ +-B print even pages\n\ +-d # set debug bits to # (see documentation)\n\ +-D # set resolution to #\n\ +-f run as filter\n\ +-l # don't print pages after #\n\ +-m manual feed\n\ +-n # print # pages\n\ +-O #,# set/change paper offset to #,# mm\n\ +-o s output to s instead of spooling\n\ +-p # don't print pages before #\n\ +-Ps pass directly to lpr\n\ +-v verbose operation\n\ +-x # set magnification to #\n\ +\n\ +Other options are passed to the dvilj program.\n\ +\n\ +Email bug reports to tex-k@mail.tug.org.\n", kpse_invocation_name); + fflush (stdout); +} + +/* Emulate `rm -f prefix*' */ + + +static void rmfiles (char *prefix) +{ +#ifdef _WIN32 + /* Win32 doesn't have POSIX dirent functions. */ + WIN32_FIND_DATA ffd; + HANDLE hnd; + int go_on; + string temp = concat (prefix, "*"); + string directory = xdirname (prefix); + + pushd (directory); + hnd = FindFirstFile(temp, &ffd); + go_on = (hnd != INVALID_HANDLE_VALUE); + while (go_on) { + /* FIXME: can this remove read-only files also, like rm -f does? */ + DeleteFile(ffd.cFileName); + go_on = (FindNextFile(hnd, &ffd) == TRUE); + } + FindClose(hnd); + free(temp); + popd (); +#else /* not _WIN32 */ + DIR *dp; + struct dirent *de; + int temp_len = strlen (prefix); + string directory = "./"; + const_string base = xbasename (prefix); + + /* Copy the directory part of PREFIX with the trailing slash, if any. */ + if (base != prefix) + { + directory = (string) xmalloc (base - prefix + 1); + directory[0] = '\0'; + strncat (directory, prefix, base - prefix); + } + + /* Find matching files and delete them. */ + if ((dp = opendir (directory)) != 0) { + while ((de = readdir (dp)) != 0) + { + string found = concat (directory, de->d_name); + + if (FILESTRNCASEEQ (found, prefix, temp_len)) + /* On POSIX-compliant systems, including DJGPP, this will also + remove read-only files and empty directories, like rm -f does. */ + if (remove (found)) + perror (found); + free (found); + } + } +#endif /* not _WIN32 */ +} + +static void __cdecl output_and_cleanup(int code) +{ + /* FIXME : what cleanup should be done ? */ +} + +char *progname; + +int +main (int argc, char *argv[]) +{ + string opt = (string) xmalloc (1); + const_string output = "", infile = ""; + const_string output_opt = " -e"; + const_string dvilj; + const_string spool; + const_string tmpdir; + const_string spool_opt = ""; + char template[PATH_MAX]; + const_string vfless_dvi; + int verbose = 0; + string cmdline; + const_string maybe_spool_cmd = ""; + const_string space = " "; + + output_and_cleanup_function = output_and_cleanup; + + progname = argv[0]; + kpse_set_program_name (progname, NULL); +#ifdef _WIN32 + setmode(fileno(stdin), _O_BINARY); + setmode(fileno(stdout), _O_BINARY); + SetConsoleCtrlHandler((PHANDLER_ROUTINE)mt_exit, TRUE); +#else +# ifdef SIGINT + signal (SIGINT, sigint_handler); +# endif +# ifdef SIGQUIT + signal (SIGQUIT, sigint_handler); +# endif +# ifdef SIGHUP + signal (SIGHUP, sigint_handler); +# endif +# ifdef SIGTERM + signal (SIGTERM, sigint_handler); +# endif +#endif + + dvilj = kpse_var_value ("DVILJ"); + spool = kpse_var_value ("SPOOL"); + tmpdir = kpse_var_value ("TMPDIR"); + opt[0] = '\0'; + + if(!tmpdir) + tmpdir = kpse_var_value ("TMP"); + if(!tmpdir) + tmpdir = kpse_var_value ("TEMP"); + + /* Set default values for variables: + + ${DVILJ=dvilj4} the dvilj variant to run + ${SPOOL=lpr} used to print an LJ file + ${TMPDIR=/tmp} for the dvicopy output */ + if (!dvilj || !*dvilj) + dvilj = "dvilj4"; + if (!spool || !*spool) + { +#ifdef __DJGPP__ + /* Feature: if they don't have LPR installed, make the + default be to print to the local printer device. */ + char lpr_path[PATH_MAX]; + extern char *__dosexec_find_on_path (const char *, char **, char *); + extern char **environ; + + if (!__dosexec_find_on_path ("lpr", (char **)0, lpr_path) + && !__dosexec_find_on_path ("lpr", environ, lpr_path)) + spool = "> PRN"; + else +#endif + spool = "| lpr"; + } + + if (!tmpdir || !*tmpdir) + { +#ifdef _WIN32 + tmpdir = "c:/tmp"; +#else + tmpdir = "/tmp"; +#endif + if (access (tmpdir, R_OK|W_OK) != 0) + { + mkdir (tmpdir, S_IRWXU); + } + } + + if (argc <= 1) + { + fprintf (stderr, "%s: Missing argument(s).\nTry `%s --help' for more information.\n", + kpse_invocation_name, kpse_invocation_name); + return 0; + } + + while (--argc) + { + char *arg = *++argv; + + if (STREQ (arg, "-help") || STREQ (arg, "--help")) + { + usage (); + return 0; + } + else if (STREQ (arg, "-version") || STREQ (arg, "--version")) + { + printf ("%s: (Dviljk 2.6) %s\nThere is NO warranty. This program is public domain.\n", + kpse_invocation_name, rcs_revision); + return 0; + } + else if (arg[0] == '-') + { + string newopt = NULL; + + switch (arg[1]) + { + case 'A': /* -A => -D1 (odd pages) */ + newopt = concat (opt, " -D1"); + break; + case 'B': /* -B -> -D2 (even pages) */ + newopt = concat (opt, " -D2"); + break; + case 'd': /* -d => --D (debug) */ + if (arg[2] == '\0') + { + argc--; + newopt = concat3 (opt, " --D", *++argv); + } + else + newopt = concat3 (opt, " --D", arg + 2); + break; + case 'D': /* -D => -R (resolution) */ + argc--; + newopt = concat3 (opt, " -R", *++argv); + break; + case 'f': /* -f (run as filter) */ + infile = ""; + output = "-"; + break; + case 'l': /* -l => -t (ending page) */ + if (arg[2] == '\0') + { + argc--; + newopt = concat3 (opt, " -t", *++argv); + } + else + newopt = concat3 (opt, " -t", arg + 2); + break; + case 'm': /* -m => -A (manual feed) */ + newopt = concat (opt, " -A"); + break; + case 'n': /* -n => -p (page count) */ + if (arg[2] == '\0') + { + argc--; + newopt = concat3 (opt, " -t", *++argv); + } + else + newopt = concat3 (opt, " -t", arg + 2); + break; + case 'o': /* -o (output file) */ + { + string inbase = xstrdup (xbasename (infile)); + if (argc == 1 && *inbase) + { + /* No remaining args, output to foo.lj. */ + int inbaselen = strlen (inbase); + + if (FILESTRCASEEQ (inbase + inbaselen - 4, ".dvi")) + output = strcpy (inbase + inbaselen - 4, ".lj"); + else + { +#if defined (MSDOS) && defined _PC_NAME_MAX + if (pathconf (infile, _PC_NAME_MAX) <= 12) + { + /* Plain MS-DOS (not Windows 95), can't have + more than a single dot in a filename. */ + char *dot = strchr (inbase, '.'); + + if (dot) + *dot = '\0'; + } +#endif + output = concat (inbase, ".lj"); + free (inbase); + } + } + else if (arg[2] == '\0') + { + argc--; + output = *++argv; + } + else + output = arg + 2; + break; + } + case 'O': /* -O => -x, -y (page offsets) */ + { + int x_len; + char *params = arg + 2; + char *x; + + if (arg[2] == '\0') + { + argc--; + params = *++argv; + } + + x_len = strcspn (params, ","); + x = (char *)xmalloc (x_len + 1); + x[0] = '\0'; + strncat (x, params, x_len); + if (params[x_len] == ',') + x_len++; /* get past the comma, if any */ + newopt = concatn (opt, " -x", x, " y", params + x_len, NULL); + break; + } + case 'p': /* -p => -f (starting page) */ + if (arg[2] == '\0') + { + argc--; + newopt = concat3 (opt, " -f", *++argv); + } + else + newopt = concat3 (opt, " -f", arg + 2); + break; + case 'P': /* -Pprinter */ + output = ""; + if (spool[0] == '>') /* direct printing: replace device */ + spool = concat ("> ", arg[2] ? arg + 2 : *++argv); + else + spool_opt = concat ("-P", arg[2] ? arg + 2 : *++argv); + if (arg[2] == '\0') + argc--; + break; + case 'v': /* verbose */ + verbose = 1; + newopt = concat (opt, " -v"); + break; + case 'x': /* -x => -m (magnification) */ + if (arg[2] == '\0') + { + argc--; + newopt = concat3 (opt, " -m", *++argv); + } + else + newopt = concat3 (opt, " -m", arg + 2); + break; + case '-': /* -- => end of options */ + argc--; + infile = *++argv; + break; + default: /* pass other options through */ + newopt = concat3 (opt, space, arg); + break; + } + + if (newopt) + { + free (opt); + opt = newopt; + } + } + else + infile = arg; + } + + /* Generate temporary filenames. Assumes PID is 5 digits. */ + sprintf (template, "%s/dvi%5.5d.", tmpdir, getpid ()); + vfless_dvi = concat (template, "-vf"); + + /* Expand VF references. + If INFILE is null, this will read standard input. + dvilj can't read from a pipe, so always write to a file. */ + if (verbose) + fprintf (stderr, "Running dvicopy %s >%s\n", infile, vfless_dvi); + + /* FIXME: special characters in filenames aren't protected from the shell. */ + cmdline = concatn ("dvicopy ", infile, " >", vfless_dvi, NULL); + if (system (cmdline)) + { + fprintf (stderr, "%s: dvicopy %s failed.\n", progname, infile); + return 1; + } + free (cmdline); + + if (verbose) + { + struct stat st_buf; + + if (stat (vfless_dvi, &st_buf)) + perror (vfless_dvi); + else /* assume they only want to see the size and timestamp */ + fprintf (stderr, " %ld %s %s\n", + (long)st_buf.st_size, ctime (&st_buf.st_mtime), vfless_dvi); + } + if (!*output) + { + output = "-"; /* output to stdout */ + maybe_spool_cmd = concat (spool, spool_opt); + } + + /* Translate DVI to LJ. */ + cmdline = concatn (dvilj, space, opt, output_opt, output, + space, vfless_dvi, space, maybe_spool_cmd, NULL); + if (verbose) + fprintf (stderr, "Running %s\n", cmdline); + if (system (cmdline)) + { + fprintf (stderr, "%s: %s failed.\n", progname, dvilj); + return 2; + } + + /* rm -f $TMPDIR/dvi$$.* */ + rmfiles (template); + + return 0; +} diff --git a/Build/source/texk/dviljk/win32/mktex.h b/Build/source/texk/dviljk/win32/mktex.h new file mode 100644 index 00000000000..153598086fe --- /dev/null +++ b/Build/source/texk/dviljk/win32/mktex.h @@ -0,0 +1,58 @@ +/* mktex.h: definitions for mktex lib exports. + +Copyright (C) 1997 Fabrice POPINEAU. +Adapted to MS-DOS/DJGPP by Eli Zaretskii <eliz@is.elta.co.il>. + +Time-stamp: <02/12/23 00:33:08 popineau> + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _MKTEX_H_ +#define _MKTEX_H_ + +#include "mktexlib.h" + +/* Pointer to functions that accept argc and argv[] */ +typedef int (*fp)(int, string*); + +typedef struct _program_description { + string name; + int arg_min; + int arg_max; + fp prog; +} program_description; + +extern MKTEXDLL int program_number; +extern MKTEXDLL string progname; +extern MKTEXDLL char empty_str[]; +extern MKTEXDLL FILE *fout; +extern MKTEXDLL FILE *fnul; +extern MKTEXDLL string output; +extern MKTEXDLL string progname; +extern MKTEXDLL char tmpdir[]; +extern MKTEXDLL void mktexinit(int, char**); +extern MKTEXDLL int mktexpk(int, char**); +extern MKTEXDLL int mktextfm(int, char**); +extern MKTEXDLL int mktextex(int, char**); +extern MKTEXDLL int mktexmf(int, char**); +extern MKTEXDLL int mktexlsr(int, char**); +extern MKTEXDLL int mktexupdate(int, char**); +extern MKTEXDLL int mktexmkdir(int, char**); +extern MKTEXDLL int mktexrmdir(int, char**); +extern MKTEXDLL int mktexnames(int, char**); +extern MKTEXDLL int mktex_opt(int, char**, program_description *); +extern MKTEXDLL program_description makedesc[]; +#endif /* _MKTEX_H_ */ + diff --git a/Build/source/texk/dviljk/win32/mktexlib.h b/Build/source/texk/dviljk/win32/mktexlib.h new file mode 100644 index 00000000000..a7ed0741126 --- /dev/null +++ b/Build/source/texk/dviljk/win32/mktexlib.h @@ -0,0 +1,59 @@ +#ifndef _MKTEXLIB_H_ +#define _MKTEXLIB_H_ + +#if defined(WIN32) +# ifdef MKTEX_DLL +# ifdef MAKE_MKTEX_DLL +# define MKTEXDLL __declspec( dllexport) +# else +# define MKTEXDLL __declspec( dllimport) +# endif +# else +# define MKTEXDLL +# endif +#else /* ! WIN32 */ +# define MKTEXDLL +# define __cdecl +#endif + +#include <assert.h> +#ifdef _WIN32 +#include <direct.h> +#else +#include <unistd.h> +#include <signal.h> +#endif +#include <stdio.h> +#include <signal.h> +#include <errno.h> +#include <time.h> +#include <sys/stat.h> + +#include <kpathsea/config.h> +#include <kpathsea/kpathsea.h> +#include <kpathsea/version.h> + +#ifndef _WIN32 +#include <sys/param.h> +#endif + +#ifdef WIN32 +# ifdef mkdir +# undef mkdir +# endif +# define mkdir(p,m) _mkdir(p) +#else +//# define FS_CASE_SENSITIVE _FILESYS_CASE_SENSITIVE +typedef unsigned int DWORD; +#endif + +/* gsftopk defines KPSE_LAST_DEBUG+2, so avoid clashes */ +#define MKTEX_DEBUG (KPSE_LAST_DEBUG + 3) +#define MKTEX_FINE_DEBUG (KPSE_LAST_DEBUG + 4) + + +#define LAST_CHAR(s) (*((s)+strlen(s)-1)) + +extern MKTEXDLL const_string mktex_version_string; + +#endif /* _MKTEXLIB_H_ */ diff --git a/Build/source/texk/dviljk/win32/stackenv.c b/Build/source/texk/dviljk/win32/stackenv.c new file mode 100644 index 00000000000..e91a72a63fd --- /dev/null +++ b/Build/source/texk/dviljk/win32/stackenv.c @@ -0,0 +1,349 @@ +/* stackenv.c: routines that help to mimic shell scripts. + +Copyright (C) 1997 Fabrice POPINEAU. + +Adapted to DJGPP by Eli Zaretskii. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + +#include <kpathsea/config.h> +#ifdef __MINGW32__ +#define fcloseall _fcloseall +#define flushall _flushall +#endif +#include <kpathsea/kpathsea.h> +#include "stackenv.h" +#include "variables.h" +const_string mktex_version_string = "2.0"; + +extern char *output; +extern char tmpdir[]; +extern char *progname; + +/* The global stack. */ +static mod_env stack_env[256]; +static int index_env = 0; + +void mt_exit(int); + +static FILE *fnul = NULL; + +pfnOutputAndCleanup output_and_cleanup_function; + +#ifndef _WIN32 +#include <unistd.h> + +static void flushall (void) +{ + /* Simulate `flushall' by only flushing standard streams. + This should be enough, since the non-standard are going + to be closed in a moment, and will be flushed then. */ + fflush (stdout); + fsync (fileno (stdout)); + fflush (stderr); + fsync (fileno (stderr)); +} +#endif + +#ifndef _WIN32 +#ifdef __DJGPP__ + +/* DJGPP-specific emulation of functions which aren't in the library + and aren't ANSI/POSIX. */ + +#include <errno.h> +#include <libc/file.h> + +static void fcloseall_func (FILE *f) +{ + fflush (f); + if (fileno (f) > 2) + fclose(f); + else + fsync (fileno (f)); +} + +void fcloseall (void) +{ + _fwalk (fcloseall_func); +} + +#else /* not __DJGPP__ */ + +/* FIXME: is this enough on Unix? */ +static void fcloseall (void) +{ + flushall (); +} + +#endif /* not __DJGPP__ */ +#endif /* not _WIN32 */ + +void +oops(const char *message, ...) +{ + va_list args; + + va_start(args, message); + vfprintf(stderr, message, args); + va_end(args); + fputc('\n', stderr); + mt_exit(1); +} + +/* pushd */ +void pushd(char *p) +{ + if (index_env >= sizeof(stack_env)/sizeof(stack_env[0])) { + fprintf(stderr, "%s: stack overflow in pushd\n", progname); + mt_exit(1); + } + if ((stack_env[index_env].data.path = malloc(MAXPATHLEN)) == NULL + || getcwd(stack_env[index_env].data.path, MAXPATHLEN) == NULL) { + fprintf(stderr, "pushd error!\n"); + mt_exit(1); + } + stack_env[index_env].op = CHDIR; + if (KPSE_DEBUG_P(MKTEX_FINE_DEBUG)) { + fprintf(stderr, "At %d, pushing from %s to %s\n", index_env, + stack_env[index_env].data.path, p); + } + + index_env++; + if (chdir(p) == -1) { + perror(p); + mt_exit(1); + } +} +/* popd */ +void popd(void) +{ + if (index_env == 0) + return; + index_env--; + if (KPSE_DEBUG_P(MKTEX_FINE_DEBUG)) { + fprintf(stderr, "At %d, popping %s\n", index_env, stack_env[index_env].data.path); + } + assert(stack_env[index_env].op == CHDIR); + if (chdir(stack_env[index_env].data.path) == -1) { + perror(stack_env[index_env].data.path); + mt_exit(1); + } + free(stack_env[index_env].data.path); + return; +} + +/* random access to directories' stack */ +char *peek_dir(int n) +{ + int i; + int level = n; + + /* The stack holds both directories pushed by `pushd' and file + handles pushed by `push_fd'. When they say "peek_dir(n)", they + mean the n'th DIRECTORY entry, not the n'th entry counting from + the stack bottom. + + For example, if the stack looks like this: + + idx type + + 0 handles + 1 handles + 2 directory + 3 handles <--- top of the stack + 4 <empty> <--- index_env + + then "peek_dir(0)" should return the entry with the index 2, not + the one with the index 0. + + The following loop looks for the index i of a stack slot which + holds the n'th directory pushed on to the stack. */ + + do { + for (i = 0; i < index_env && stack_env[i].op != CHDIR; i++) + ; + } while (i < index_env && n--); + + if (i < index_env) + return stack_env[i].data.path; + else { + fprintf (stderr, "%s: attempt to peek at invalid stack level %d\n", + progname, level); + mt_exit(1); + } +} + +/* redirect */ +void push_fd(int newfd[3]) +{ + int i; + + if (KPSE_DEBUG_P(MKTEX_FINE_DEBUG)) { + fprintf(stderr, "At %d, pushing fds %d %d %d\n", index_env, newfd[0], + newfd[1], newfd[2]); + } + flushall(); + if (index_env >= sizeof(stack_env)/sizeof(stack_env[0])) { + fprintf(stderr, "%s: stack overflow in push_fd\n", progname); + mt_exit(1); + } + stack_env[index_env].op = REDIRECT; + for(i = 0; i < 3; i++) { + if (i == newfd[i]) + stack_env[index_env].data.oldfd[i] = i; + else { + if ((stack_env[index_env].data.oldfd[i] = dup(i)) == -1) { + perror("push_fd: dup"); + mt_exit(1); + } + if (dup2(newfd[i], i) == -1) { + perror("push_fd : dup2"); + mt_exit(1); + } + } + } + index_env++; +} + +void pop_fd(void) +{ + int i; + index_env--; + assert(stack_env[index_env].op == REDIRECT); + if (KPSE_DEBUG_P(MKTEX_FINE_DEBUG)) { + fprintf(stderr, "At %d; popping fds %d %d %d\n", + index_env, + stack_env[index_env].data.oldfd[0], + stack_env[index_env].data.oldfd[1], + stack_env[index_env].data.oldfd[2]); + } + flushall(); + for(i = 0; i < 3; i++) + if (i != stack_env[index_env].data.oldfd[i]) { + if (fnul && i != fileno(fnul)) close(i); + if (dup2(stack_env[index_env].data.oldfd[i], i) == -1) { + perror("pop_fd : dup2"); + mt_exit(1); + } + if (fnul && stack_env[index_env].data.oldfd[i] != fileno(fnul)) + close(stack_env[index_env].data.oldfd[i]); + } +} + +/* popenv */ +void popenv(void) +{ + if (index_env <= 0) { + if (KPSE_DEBUG_P(MKTEX_FINE_DEBUG)) + fprintf(stderr, "Trying to popenv() from empty stack!\n"); + return; + } + + switch(stack_env[index_env-1].op) { + case CHDIR: + popd(); + break; + case REDIRECT: + pop_fd(); + break; + default: + fprintf(stderr, "popenv : unknown op %d.\n", stack_env[index_env-1].op); + break; + } +} + +#ifdef _WIN32 +int sigint_handler(DWORD dwCtrlType) +{ + /* Fix me : there is a problem if a system() command is running. + We should wait for the son process to be interrupted. + Only way I can think of to do that : rewrite system() based on + spawn() with parsing of the command line and set a global pid + Next cwait(pid) in the HandlerRoutine. + */ + + /* This is not that good, but else we would need to wait for + the child processes to finish ! */ + Sleep(250); + + mt_exit(3); + return FALSE; /* return value obligatory */ +} +#else +void sigint_handler (int sig) +{ + mt_exit(3); +} +#endif + +void mt_exit(int code) +{ + /* rétablir les 0, 1 et 2 d'origine avant de tenter quoi que ce soit ! */ + fcloseall(); + + /* unstack all env from main) */ + for( ; index_env > 0; popenv()); + + /* output the result and rm any unneeded file */ + if (output_and_cleanup_function != 0) + (*output_and_cleanup_function)(code); + + exit(code); +} + +#if 0 /* unused */ +static void +dump_stack(void) +{ + int i; + for (i = 0; i < index_env; i++) + switch (stack_env[i].op) { + case CHDIR: + fprintf(stderr, "Env %d : chdir %s\n", i, stack_env[i].data.path); + break; + case REDIRECT: + fprintf(stderr, "Env %d : redirect %d %d %d\n", i, + stack_env[i].data.oldfd[0], + stack_env[i].data.oldfd[1], + stack_env[i].data.oldfd[2]); + break; + } + +} +#endif + +/* + This is used by mktex{mf,tfm,pk} + if the argument is true, stdout is redirected to fnul + else to stderr. + */ +void start_redirection(int discard_stdout) +{ + int newfd[3]; + if (fnul == NULL) +#ifdef _WIN32 + fnul = fopen("nul", "r"); /* fopen /dev/null */ +#else + fnul = fopen("/dev/null", "r"); +#endif + + newfd[0] = fileno(fnul); + newfd[1] = (discard_stdout ? fileno(fnul) : fileno(stderr)); + newfd[2] = fileno(stderr); + + push_fd(newfd); +} diff --git a/Build/source/texk/dviljk/win32/stackenv.h b/Build/source/texk/dviljk/win32/stackenv.h new file mode 100644 index 00000000000..63a0a04411c --- /dev/null +++ b/Build/source/texk/dviljk/win32/stackenv.h @@ -0,0 +1,46 @@ +#ifndef _STACKENV_H_ + +#define _STACKENV_H_ + +#include "mktexlib.h" + +/* + We are keeping trace of the environment (ie: cwd, file redirections) + with the help of these ops and structures. There is a global stack + inidcating wich actions have been taken. + */ +typedef enum { CHDIR = 1, REDIRECT } op_env; +typedef struct mod_env { + op_env op; + union { + char *path; + int oldfd[3]; + } data; +} mod_env; + +/* from stackenv.c */ +extern void oops(const char *, ...); +#ifdef __GNUC__ +extern void mt_exit(int) __attribute__((noreturn)); +#else +extern MKTEXDLL void mt_exit(int); +#endif +extern MKTEXDLL void pushd(char *); +extern MKTEXDLL void popd(void); +extern MKTEXDLL void popenv(void); +extern char *peek_dir(int); +extern MKTEXDLL void push_fd(int [3]); +extern MKTEXDLL void pop_fd(void); +extern MKTEXDLL void start_redirection(int); +#ifdef _WIN32 +/* extern void mt_exit(int); */ +extern MKTEXDLL int sigint_handler(DWORD); +#else +extern void sigint_handler(int); +#endif + +typedef void (__cdecl * pfnOutputAndCleanup)(int); +extern MKTEXDLL pfnOutputAndCleanup output_and_cleanup_function; + +extern MKTEXDLL int redirect_stdout; +#endif /* _STACKENV_H_ */ diff --git a/Build/source/texk/dviljk/win32/variables.h b/Build/source/texk/dviljk/win32/variables.h new file mode 100644 index 00000000000..06f79ddb132 --- /dev/null +++ b/Build/source/texk/dviljk/win32/variables.h @@ -0,0 +1,23 @@ +#ifndef _MKTEX_VARIABLES_H_ + +#define _MKTEX_VARIABLES_H_ + +#include <kpathsea/cnf.h> +#include <kpathsea/db.h> +#include <kpathsea/fn.h> +#include <kpathsea/hash.h> + +extern MKTEXDLL void init_vars(void); +extern MKTEXDLL char *getval(char *name); +extern MKTEXDLL char *setval(char *name,char *value); +extern MKTEXDLL char *setval_default(char *name,char *value); +extern MKTEXDLL char **grep(char *regexp,char *line,int num_vars) ; + +extern MKTEXDLL int parse_variable(char *line); + +extern char *strcasestr(char *s1,char *s2); + +extern char *subst(char *line, char *from, char *to); +extern MKTEXDLL string expand_var(const_string); +extern MKTEXDLL string mktex_var_expand (const_string src); +#endif /* _MKTEX_VARIABLES_H_ */ |