[PATCH] gnu: Add xloadimage.

OpenSubmitted by Brice Waegeneire.
Details
2 participants
  • Brice Waegeneire
  • Ludovic Courtès
Owner
unassigned
Severity
normal
B
B
Brice Waegeneire wrote on 26 Jun 2020 11:56
(address . guix-patches@gnu.org)
20200626095606.29923-1-brice@waegenei.re
* gnu/packages/xorg.scm (xloadimage): New variable.* gnu/packages/patches/xloadimage-debian-series-25.patch: New file …* gnu/local.mk (dist_patch_DATA): … add it.--- gnu/local.mk | 1 + .../patches/xloadimage-debian-series-25.patch | 7665 +++++++++++++++++ gnu/packages/xorg.scm | 68 + 3 files changed, 7734 insertions(+) create mode 100644 gnu/packages/patches/xloadimage-debian-series-25.patch
Toggle diff (7768 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex b3aaeadf1d..45eb09d9f8 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1622,6 +1622,7 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \+ %D%/packages/patches/xloadimage-debian-series-25.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch \ %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch \diff --git a/gnu/packages/patches/xloadimage-debian-series-25.patch b/gnu/packages/patches/xloadimage-debian-series-25.patchnew file mode 100644index 0000000000..593de65883--- /dev/null+++ b/gnu/packages/patches/xloadimage-debian-series-25.patch@@ -0,0 +1,7665 @@+Combined patches from Debian: https://sources.debian.org/patches/xloadimage/4.1-25/++Index: xloadimage.4.1.old/Makefile.in+===================================================================+--- /dev/null++++ xloadimage.4.1.old/Makefile.in+@@ -0,0 +1,57 @@++#++# Makefile for autoconf tutorial++#++++CC = @CC@++DEFS = @DEFS@ -DSYSPATHFILE=\"/etc/X11/Xloadimage\"++CFLAGS = @CFLAGS@++XLIB = @X_LIBS@ -lX11 @X_EXTRA_LIBS@++LDFLAGS = @LDFLAGS@++LIBS = @LIBS@++CFLAGS += @CPPFLAGS@++++SRCS = bright.c clip.c cmuwmraster.c compress.c config.c \++dither.c faces.c fbm.c fill.c gif.c halftone.c imagetypes.c img.c jpeg.c \++mac.c mc_tables.c mcidas.c merge.c misc.c new.c niff.c options.c \++pbm.c pcx.c pdsuncomp.c reduce.c rle.c rlelib.c root.c rotate.c \++send.c smooth.c sunraster.c tiff.c undither.c value.c vff.c \++vicar.c window.c xbitmap.c xloadimage.c xpixmap.c xwd.c zio.c zoom.c png.c++++OBJS = $(SRCS:.c=.o)++PROG = xloadimage++++all: $(PROG) uufilter++++$(PROG): $(OBJS)++ ./build-info++ $(CC) $(CFLAGS) -c $(DEFS) build.c ++ $(CC) -o $@ $(OBJS) build.o $(LDFLAGS) $(XLIB) $(LIBS)++++uufilter: uufilter.c++ $(CC) $(CFLAGS) $(DEFS) uufilter.c -o $@++++.c.o: config.h image.h++ $(CC) $(CFLAGS) -c $(DEFS) $<++++build.c:++ ./build-info++++clean:++ rm -f autoconfig build.c err++# cd jpeg ; make clean++# cd tiff ; make clean++ rm -f *.o *~ xloadimage uufilter autoconfig libconfig packtar \++ buildshar doshar shar.* *.tar *.tar.Z *.tc++++distclean:++ make clean++ rm -f config.log config.cache config.status config.h Makefile++++config.h.in: configure.in++ autoheader++++configure: configure.in++ autoconf++++Makefile: Makefile.in++ ./configure+Index: xloadimage.4.1.old/config.h.in+===================================================================+--- /dev/null++++ xloadimage.4.1.old/config.h.in+@@ -0,0 +1,40 @@++/* config.h.in. Generated automatically from configure.in by autoheader. */++++/* Define as the return type of signal handlers (int or void). */++#undef RETSIGTYPE++++/* Define if you have the ANSI C header files. */++#undef STDC_HEADERS++++/* Define if the X Window System is missing or not being used. */++#undef X_DISPLAY_MISSING++++/* Define if you have the select function. */++#undef HAVE_SELECT++++/* Define if you have the <malloc.h> header file. */++#undef HAVE_MALLOC_H++++/* Define if you have the <strings.h> header file. */++#undef HAVE_STRINGS_H++++/* Define if you have the <sys/time.h> header file. */++#undef HAVE_SYS_TIME_H++++/* Define if you have the <unistd.h> header file. */++#undef HAVE_UNISTD_H++++/* Define if you have the m library (-lm). */++#undef HAVE_LIBM++++/* Define if you have the jpeg library (-ljpeg). */++#undef HAVE_LIBJPEG++++/* Define if you have the tiff library (-ltiff). */++#undef HAVE_LIBTIFF++++/* Define if you have the png library (-lpng). */++#undef HAVE_LIBPNG++++/* Define if you have the z library (-lz). */++#undef HAVE_LIBZ+Index: xloadimage.4.1.old/configure+===================================================================+--- /dev/null++++ xloadimage.4.1.old/configure+@@ -0,0 +1,2476 @@++#! /bin/sh++++# Guess values for system-dependent variables and create Makefiles.++# Generated automatically using autoconf version 2.13 ++# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.++#++# This configure script is free software; the Free Software Foundation++# gives unlimited permission to copy, distribute and modify it.++++# Defaults:++ac_help=++ac_default_prefix=/usr/local++# Any additions from configure.in:++ac_help="$ac_help++ --with-x use the X Window System"++++# Initialize some variables set by options.++# The variables have the same names as the options, with++# dashes changed to underlines.++build=NONE++cache_file=./config.cache++exec_prefix=NONE++host=NONE++no_create=++nonopt=NONE++no_recursion=++prefix=NONE++program_prefix=NONE++program_suffix=NONE++program_transform_name=s,x,x,++silent=++site=++srcdir=++target=NONE++verbose=++x_includes=NONE++x_libraries=NONE++bindir='${exec_prefix}/bin'++sbindir='${exec_prefix}/sbin'++libexecdir='${exec_prefix}/libexec'++datadir='${prefix}/share'++sysconfdir='${prefix}/etc'++sharedstatedir='${prefix}/com'++localstatedir='${prefix}/var'++libdir='${exec_prefix}/lib'++includedir='${prefix}/include'++oldincludedir='/usr/include'++infodir='${prefix}/info'++mandir='${prefix}/man'++++# Initialize some other variables.++subdirs=++MFLAGS= MAKEFLAGS=++SHELL=${CONFIG_SHELL-/bin/sh}++# Maximum number of lines to put in a shell here document.++ac_max_here_lines=12++++ac_prev=++for ac_option++do++++ # If the previous option needs an argument, assign it.++ if test -n "$ac_prev"; then++ eval "$ac_prev=\$ac_option"++ ac_prev=++ continue++ fi++++ case "$ac_option" in++ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;++ *) ac_optarg= ;;++ esac++++ # Accept the important Cygnus configure options, so we can diagnose typos.++++ case "$ac_option" in++++ -bindir | --bindir | --bindi | --bind | --bin | --bi)++ ac_prev=bindir ;;++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)++ bindir="$ac_optarg" ;;++++ -build | --build | --buil | --bui | --bu)++ ac_prev=build ;;++ -build=* | --build=* | --buil=* | --bui=* | --bu=*)++ build="$ac_optarg" ;;++++ -cache-file | --cache-file | --cache-fil | --cache-fi \++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)++ ac_prev=cache_file ;;++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)++ cache_file="$ac_optarg" ;;++++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)++ ac_prev=datadir ;;++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \++ | --da=*)++ datadir="$ac_optarg" ;;++++ -disable-* | --disable-*)++ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`++ # Reject names that are not valid shell variable names.++ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }++ fi++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`++ eval "enable_${ac_feature}=no" ;;++++ -enable-* | --enable-*)++ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`++ # Reject names that are not valid shell variable names.++ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }++ fi++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`++ case "$ac_option" in++ *=*) ;;++ *) ac_optarg=yes ;;++ esac++ eval "enable_${ac_feature}='$ac_optarg'" ;;++++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \++ | --exec | --exe | --ex)++ ac_prev=exec_prefix ;;++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \++ | --exec=* | --exe=* | --ex=*)++ exec_prefix="$ac_optarg" ;;++++ -gas | --gas | --ga | --g)++ # Obsolete; use --with-gas.++ with_gas=yes ;;++++ -help | --help | --hel | --he)++ # Omit some internal or obsolete options to make the list less imposing.++ # This message is too long to be a string in the A/UX 3.1 sh.++ cat << EOF++Usage: configure [options] [host]++Options: [defaults in brackets after descriptions]++Configuration:++ --cache-file=FILE cache test results in FILE++ --help print this message++ --no-create do not create output files++ --quiet, --silent do not print \`checking...' messages++ --version print the version of autoconf that created configure++Directory and file names:++ --prefix=PREFIX install architecture-independent files in PREFIX++ [$ac_default_prefix]++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX++ [same as prefix]++ --bindir=DIR user executables in DIR [EPREFIX/bin]++ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]++ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]++ --datadir=DIR read-only architecture-independent data in DIR++ [PREFIX/share]++ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]++ --sharedstatedir=DIR modifiable architecture-independent data in DIR++ [PREFIX/com]++ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]++ --libdir=DIR object code libraries in DIR [EPREFIX/lib]++ --includedir=DIR C header files in DIR [PREFIX/include]++ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]++ --infodir=DIR info documentation in DIR [PREFIX/info]++ --mandir=DIR man documentation in DIR [PREFIX/man]++ --srcdir=DIR find the sources in DIR [configure dir or ..]++ --program-prefix=PREFIX prepend PREFIX to installed program names++ --program-suffix=SUFFIX append SUFFIX to installed program names++ --program-transform-name=PROGRAM++ run sed PROGRAM on installed program names++EOF++ cat << EOF++Host type:++ --build=BUILD configure for building on BUILD [BUILD=HOST]++ --host=HOST configure for HOST [guessed]++ --target=TARGET configure for TARGET [TARGET=HOST]++Features and packages:++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)++ --x-includes=DIR X include files are in DIR++ --x-libraries=DIR X library files are in DIR++EOF++ if test -n "$ac_help"; then++ echo "--enable and --with options recognized:$ac_help"++ fi++ exit 0 ;;++++ -host | --host | --hos | --ho)++ ac_prev=host ;;++ -host=* | --host=* | --hos=* | --ho=*)++ host="$ac_optarg" ;;++++ -includedir | --includedir | --includedi | --included | --include \++ | --includ | --inclu | --incl | --inc)++ ac_prev=includedir ;;++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \++ | --includ=* | --inclu=* | --incl=* | --inc=*)++ includedir="$ac_optarg" ;;++++ -infodir | --infodir | --infodi | --infod | --info | --inf)++ ac_prev=infodir ;;++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)++ infodir="$ac_optarg" ;;++++ -libdir | --libdir | --libdi | --libd)++ ac_prev=libdir ;;++ -libdir=* | --libdir=* | --libdi=* | --libd=*)++ libdir="$ac_optarg" ;;++++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \++ | --libexe | --libex | --libe)++ ac_prev=libexecdir ;;++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \++ | --libexe=* | --libex=* | --libe=*)++ libexecdir="$ac_optarg" ;;++++ -localstatedir | --localstatedir | --localstatedi | --localstated \++ | --localstate | --localstat | --localsta | --localst \++ | --locals | --local | --loca | --loc | --lo)++ ac_prev=localstatedir ;;++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)++ localstatedir="$ac_optarg" ;;++++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)++ ac_prev=mandir ;;++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)++ mandir="$ac_optarg" ;;++++ -nfp | --nfp | --nf)++ # Obsolete; use --without-fp.++ with_fp=no ;;++++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \++ | --no-cr | --no-c)++ no_create=yes ;;++++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)++ no_recursion=yes ;;++++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \++ | --oldin | --oldi | --old | --ol | --o)++ ac_prev=oldincludedir ;;++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)++ oldincludedir="$ac_optarg" ;;++++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)++ ac_prev=prefix ;;++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)++ prefix="$ac_optarg" ;;++++ -program-prefix | --program-prefix | --program-prefi | --program-pref \++ | --program-pre | --program-pr | --program-p)++ ac_prev=program_prefix ;;++ -program-prefix=* | --program-prefix=* | --program-prefi=* \++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)++ program_prefix="$ac_optarg" ;;++++ -program-suffix | --program-suffix | --program-suffi | --program-suff \++ | --program-suf | --program-su | --program-s)++ ac_prev=program_suffix ;;++ -program-suffix=* | --program-suffix=* | --program-suffi=* \++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)++ program_suffix="$ac_optarg" ;;++++ -program-transform-name | --program-transform-name \++ | --program-transform-nam | --program-transform-na \++ | --program-transform-n | --program-transform- \++ | --program-transform | --program-transfor \++ | --program-transfo | --program-transf \++ | --program-trans | --program-tran \++ | --progr-tra | --program-tr | --program-t)++ ac_prev=program_transform_name ;;++ -program-transform-name=* | --program-transform-name=* \++ | --program-transform-nam=* | --program-transform-na=* \++ | --program-transform-n=* | --program-transform-=* \++ | --program-transform=* | --program-transfor=* \++ | --program-transfo=* | --program-transf=* \++ | --program-trans=* | --program-tran=* \++ | --progr-tra=* | --program-tr=* | --program-t=*)++ program_transform_name="$ac_optarg" ;;++++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \++ | -silent | --silent | --silen | --sile | --sil)++ silent=yes ;;++++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)++ ac_prev=sbindir ;;++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \++ | --sbi=* | --sb=*)++ sbindir="$ac_optarg" ;;++++ -sharedstatedir | --sharedstatedir | --sharedstatedi \++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \++ | --sharedst | --shareds | --shared | --share | --shar \++ | --sha | --sh)++ ac_prev=sharedstatedir ;;++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \++ | --sha=* | --sh=*)++ sharedstatedir="$ac_optarg" ;;++++ -site | --site | --sit)++ ac_prev=site ;;++ -site=* | --site=* | --sit=*)++ site="$ac_optarg" ;;++++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)++ ac_prev=srcdir ;;++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)++ srcdir="$ac_optarg" ;;++++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \++ | --syscon | --sysco | --sysc | --sys | --sy)++ ac_prev=sysconfdir ;;++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)++ sysconfdir="$ac_optarg" ;;++++ -target | --target | --targe | --targ | --tar | --ta | --t)++ ac_prev=target ;;++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)++ target="$ac_optarg" ;;++++ -v | -verbose | --verbose | --verbos | --verbo | --verb)++ verbose=yes ;;++++ -version | --version | --versio | --versi | --vers)++ echo "configure generated by autoconf version 2.13"++ exit 0 ;;++++ -with-* | --with-*)++ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`++ # Reject names that are not valid shell variable names.++ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }++ fi++ ac_package=`echo $ac_package| sed 's/-/_/g'`++ case "$ac_option" in++ *=*) ;;++ *) ac_optarg=yes ;;++ esac++ eval "with_${ac_package}='$ac_optarg'" ;;++++ -without-* | --without-*)++ ac_package=`echo $ac_option|sed -e 's/-*without-//'`++ # Reject names that are not valid shell variable names.++ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }++ fi++ ac_package=`echo $ac_package| sed 's/-/_/g'`++ eval "with_${ac_package}=no" ;;++++ --x)++ # Obsolete; use --with-x.++ with_x=yes ;;++++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \++ | --x-incl | --x-inc | --x-in | --x-i)++ ac_prev=x_includes ;;++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)++ x_includes="$ac_optarg" ;;++++ -x-libraries | --x-libraries | --x-librarie | --x-librari \++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)++ ac_prev=x_libraries ;;++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)++ x_libraries="$ac_optarg" ;;++++ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }++ ;;++++ *)++ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then++ echo "configure: warning: $ac_option: invalid host type" 1>&2++ fi++ if test "x$nonopt" != xNONE; then++ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }++ fi++ nonopt="$ac_option"++ ;;++++ esac++done++++if test -n "$ac_prev"; then++ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }++fi++++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15++++# File descriptor usage:++# 0 standard input++# 1 file creation++# 2 errors and warnings++# 3 some systems may open it to /dev/tty++# 4 used on the Kubota Titan++# 6 checking for... messages and results++# 5 compiler messages saved in config.log++if test "$silent" = yes; then++ exec 6>/dev/null++else++ exec 6>&1++fi++exec 5>./config.log++++echo "\++This file contains any messages produced by compilers while++running configure, to aid debugging if configure makes a mistake.++" 1>&5++++# Strip out --no-create and --no-recursion so they do not pile up.++# Also quote any args containing shell metacharacters.++ac_configure_args=++for ac_arg++do++ case "$ac_arg" in++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \++ | --no-cr | --no-c) ;;++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)++ ac_configure_args="$ac_configure_args '$ac_arg'" ;;++ *) ac_configure_args="$ac_configure_args $ac_arg" ;;++ esac++done++++# NLS nuisances.++# Only set these to C if already set. These must not be set unconditionally++# because not all systems understand e.g. LANG=C (notably SCO).++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!++# Non-C LC_CTYPE values break the ctype check.++if test "${LANG+set}" = set; then LANG=C; export LANG; fi++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi++if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi++++# confdefs.h avoids OS command line length limits that DEFS can exceed.++rm -rf conftest* confdefs.h++# AIX cpp loses on an empty file, so make sure it contains at least a newline.++echo > confdefs.h++++# A filename unique to this package, relative to the directory that++# configure is in, which we can look for to find out if srcdir is correct.++ac_unique_file=xloadimage.c++++# Find the source files, if location was not specified.++if test -z "$srcdir"; then++ ac_srcdir_defaulted=yes++ # Try the directory containing this script, then its parent.++ ac_prog=$0++ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`++ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.++ srcdir=$ac_confdir++ if test ! -r $srcdir/$ac_unique_file; then++ srcdir=..++ fi++else++ ac_srcdir_defaulted=no++fi++if test ! -r $srcdir/$ac_unique_file; then++ if test "$ac_srcdir_defaulted" = yes; then++ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }++ else++ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }++ fi++fi++srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`++++# Prefer explicitly selected file to automatically selected ones.++if test -z "$CONFIG_SITE"; then++ if test "x$prefix" != xNONE; then++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"++ else++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"++ fi++fi++for ac_site_file in $CONFIG_SITE; do++ if test -r "$ac_site_file"; then++ echo "loading site script $ac_site_file"++ . "$ac_site_file"++ fi++done++++if test -r "$cache_file"; then++ echo "loading cache $cache_file"++ . $cache_file++else++ echo "creating cache $cache_file"++ > $cache_file++fi++++ac_ext=c++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.++ac_cpp='$CPP $CPPFLAGS'++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'++cross_compiling=$ac_cv_prog_cc_cross++++ac_exeext=++ac_objext=o++if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then++ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.++ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then++ ac_n= ac_c='++' ac_t=' '++ else++ ac_n=-n ac_c= ac_t=++ fi++else++ ac_n= ac_c='\c' ac_t=++fi++++++++++# Extract the first word of "gcc", so it can be a program name with args.++set dummy gcc; ac_word=$2++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6++echo "configure:532: checking for $ac_word" >&5++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ if test -n "$CC"; then++ ac_cv_prog_CC="$CC" # Let the user override the test.++else++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"++ ac_dummy="$PATH"++ for ac_dir in $ac_dummy; do++ test -z "$ac_dir" && ac_dir=.++ if test -f $ac_dir/$ac_word; then++ ac_cv_prog_CC="gcc"++ break++ fi++ done++ IFS="$ac_save_ifs"++fi++fi++CC="$ac_cv_prog_CC"++if test -n "$CC"; then++ echo "$ac_t""$CC" 1>&6++else++ echo "$ac_t""no" 1>&6++fi++++if test -z "$CC"; then++ # Extract the first word of "cc", so it can be a program name with args.++set dummy cc; ac_word=$2++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6++echo "configure:562: checking for $ac_word" >&5++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ if test -n "$CC"; then++ ac_cv_prog_CC="$CC" # Let the user override the test.++else++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"++ ac_prog_rejected=no++ ac_dummy="$PATH"++ for ac_dir in $ac_dummy; do++ test -z "$ac_dir" && ac_dir=.++ if test -f $ac_dir/$ac_word; then++ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then++ ac_prog_rejected=yes++ continue++ fi++ ac_cv_prog_CC="cc"++ break++ fi++ done++ IFS="$ac_save_ifs"++if test $ac_prog_rejected = yes; then++ # We found a bogon in the path, so make sure we never use it.++ set dummy $ac_cv_prog_CC++ shift++ if test $# -gt 0; then++ # We chose a different compiler from the bogus one.++ # However, it has the same basename, so the bogon will be chosen++ # first if we set CC to just the basename; use the full file name.++ shift++ set dummy "$ac_dir/$ac_word" "$@"++ shift++ ac_cv_prog_CC="$@"++ fi++fi++fi++fi++CC="$ac_cv_prog_CC"++if test -n "$CC"; then++ echo "$ac_t""$CC" 1>&6++else++ echo "$ac_t""no" 1>&6++fi++++ if test -z "$CC"; then++ case "`uname -s`" in++ *win32* | *WIN32*)++ # Extract the first word of "cl", so it can be a program name with args.++set dummy cl; ac_word=$2++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6++echo "configure:613: checking for $ac_word" >&5++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ if test -n "$CC"; then++ ac_cv_prog_CC="$CC" # Let the user override the test.++else++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"++ ac_dummy="$PATH"++ for ac_dir in $ac_dummy; do++ test -z "$ac_dir" && ac_dir=.++ if test -f $ac_dir/$ac_word; then++ ac_cv_prog_CC="cl"++ break++ fi++ done++ IFS="$ac_save_ifs"++fi++fi++CC="$ac_cv_prog_CC"++if test -n "$CC"; then++ echo "$ac_t""$CC" 1>&6++else++ echo "$ac_t""no" 1>&6++fi++ ;;++ esac++ fi++ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }++fi++++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6++echo "configure:645: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5++++ac_ext=c++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.++ac_cpp='$CPP $CPPFLAGS'++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'++cross_compiling=$ac_cv_prog_cc_cross++++cat > conftest.$ac_ext << EOF++++#line 656 "configure"++#include "confdefs.h"++++main(){return(0);}++EOF++if { (eval echo configure:661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ ac_cv_prog_cc_works=yes++ # If we can't run a trivial program, we are probably using a cross compiler.++ if (./conftest; exit) 2>/dev/null; then++ ac_cv_prog_cc_cross=no++ else++ ac_cv_prog_cc_cross=yes++ fi++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ ac_cv_prog_cc_works=no++fi++rm -fr conftest*++ac_ext=c++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.++ac_cpp='$CPP $CPPFLAGS'++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'++cross_compiling=$ac_cv_prog_cc_cross++++echo "$ac_t""$ac_cv_prog_cc_works" 1>&6++if test $ac_cv_prog_cc_works = no; then++ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }++fi++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6++echo "configure:687: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5++echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6++cross_compiling=$ac_cv_prog_cc_cross++++echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6++echo "configure:692: checking whether we are using GNU C" >&5++if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.c <<EOF++#ifdef __GNUC__++ yes;++#endif++EOF++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then++ ac_cv_prog_gcc=yes++else++ ac_cv_prog_gcc=no++fi++fi++++echo "$ac_t""$ac_cv_prog_gcc" 1>&6++++if test $ac_cv_prog_gcc = yes; then++ GCC=yes++else++ GCC=++fi++++ac_test_CFLAGS="${CFLAGS+set}"++ac_save_CFLAGS="$CFLAGS"++CFLAGS=++echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6++echo "configure:720: checking whether ${CC-cc} accepts -g" >&5++if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ echo 'void f(){}' > conftest.c++if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then++ ac_cv_prog_cc_g=yes++else++ ac_cv_prog_cc_g=no++fi++rm -f conftest*++++fi++++echo "$ac_t""$ac_cv_prog_cc_g" 1>&6++if test "$ac_test_CFLAGS" = set; then++ CFLAGS="$ac_save_CFLAGS"++elif test $ac_cv_prog_cc_g = yes; then++ if test "$GCC" = yes; then++ CFLAGS="-g -O2"++ else++ CFLAGS="-g"++ fi++else++ if test "$GCC" = yes; then++ CFLAGS="-O2"++ else++ CFLAGS=++ fi++fi++++++echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6++echo "configure:753: checking how to run the C preprocessor" >&5++# On Suns, sometimes $CPP names a directory.++if test -n "$CPP" && test -d "$CPP"; then++ CPP=++fi++if test -z "$CPP"; then++if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ # This must be in double quotes, not single quotes, because CPP may get++ # substituted into the Makefile and "${CC-cc}" will confuse make.++ CPP="${CC-cc} -E"++ # On the NeXT, cc -E runs the code through the compiler's parser,++ # not just through cpp.++ cat > conftest.$ac_ext <<EOF++#line 768 "configure"++#include "confdefs.h"++#include <assert.h>++Syntax Error++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:774: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ :++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ CPP="${CC-cc} -E -traditional-cpp"++ cat > conftest.$ac_ext <<EOF++#line 785 "configure"++#include "confdefs.h"++#include <assert.h>++Syntax Error++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ :++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ CPP="${CC-cc} -nologo -E"++ cat > conftest.$ac_ext <<EOF++#line 802 "configure"++#include "confdefs.h"++#include <assert.h>++Syntax Error++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ :++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ CPP=/lib/cpp++fi++rm -f conftest*++fi++rm -f conftest*++fi++rm -f conftest*++ ac_cv_prog_CPP="$CPP"++fi++ CPP="$ac_cv_prog_CPP"++else++ ac_cv_prog_CPP="$CPP"++fi++echo "$ac_t""$CPP" 1>&6++++# If we find X, set shell vars x_includes and x_libraries to the++# paths, otherwise set no_x=yes.++# Uses ac_ vars as temps to allow command line to override cache and checks.++# --without-x overrides everything else, but does not touch the cache.++echo $ac_n "checking for X""... $ac_c" 1>&6++echo "configure:837: checking for X" >&5++++# Check whether --with-x or --without-x was given.++if test "${with_x+set}" = set; then++ withval="$with_x"++ :++fi++++# $have_x is `yes', `no', `disabled', or empty when we do not yet know.++if test "x$with_x" = xno; then++ # The user explicitly disabled X.++ have_x=disabled++else++ if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then++ # Both variables are already set.++ have_x=yes++ else++if eval "test \"`echo '$''{'ac_cv_have_x'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ # One or both of the vars are not set, and there is no cached value.++ac_x_includes=NO ac_x_libraries=NO++rm -fr conftestdir++if mkdir conftestdir; then++ cd conftestdir++ # Make sure to not put "make" in the Imakefile rules, since we grep it out.++ cat > Imakefile <<'EOF'++acfindx:++ @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'++EOF++ if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then++ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.++ eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`++ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.++ for ac_extension in a so sl; do++ if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&++ test -f $ac_im_libdir/libX11.$ac_extension; then++ ac_im_usrlibdir=$ac_im_libdir; break++ fi++ done++ # Screen out bogus values from the imake configuration. They are++ # bogus both because they are the default anyway, and because++ # using them would break gcc on systems where it needs fixed includes.++ case "$ac_im_incroot" in++ /usr/include) ;;++ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;;++ esac++ case "$ac_im_usrlibdir" in++ /usr/lib | /lib) ;;++ *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;;++ esac++ fi++ cd ..++ rm -fr conftestdir++fi++++if test "$ac_x_includes" = NO; then++ # Guess where to find include files, by looking for this one X11 .h file.++ test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h++++ # First, try using that file with no special directory specified.++cat > conftest.$ac_ext <<EOF++#line 899 "configure"++#include "confdefs.h"++#include <$x_direct_test_include>++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ rm -rf conftest*++ # We can compile using X headers with no special include directory.++ac_x_includes=++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ # Look for the header file in a standard set of common directories.++# Check X11 before X11Rn because it is often a symlink to the current release.++ for ac_dir in \++ /usr/X11/include \++ /usr/X11R6/include \++ /usr/X11R5/include \++ /usr/X11R4/include \++ \++ /usr/include/X11 \++ /usr/include/X11R6 \++ /usr/include/X11R5 \++ /usr/include/X11R4 \++ \++ /usr/local/X11/include \++ /usr/local/X11R6/include \++ /usr/local/X11R5/include \++ /usr/local/X11R4/include \++ \++ /usr/local/include/X11 \++ /usr/local/include/X11R6 \++ /usr/local/include/X11R5 \++ /usr/local/include/X11R4 \++ \++ /usr/X386/include \++ /usr/x386/include \++ /usr/XFree86/include/X11 \++ \++ /usr/include \++ /usr/local/include \++ /usr/unsupported/include \++ /usr/athena/include \++ /usr/local/x11r5/include \++ /usr/lpp/Xamples/include \++ \++ /usr/openwin/include \++ /usr/openwin/share/include \++ ; \++ do++ if test -r "$ac_dir/$x_direct_test_include"; then++ ac_x_includes=$ac_dir++ break++ fi++ done++fi++rm -f conftest*++fi # $ac_x_includes = NO++++if test "$ac_x_libraries" = NO; then++ # Check for the libraries.++++ test -z "$x_direct_test_library" && x_direct_test_library=Xt++ test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc++++ # See if we find them without any special options.++ # Don't add to $LIBS permanently.++ ac_save_LIBS="$LIBS"++ LIBS="-l$x_direct_test_library $LIBS"++cat > conftest.$ac_ext <<EOF++#line 973 "configure"++#include "confdefs.h"++++int main() {++${x_direct_test_function}()++; return 0; }++EOF++if { (eval echo configure:980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ LIBS="$ac_save_LIBS"++# We can link X programs with no special library path.++ac_x_libraries=++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ LIBS="$ac_save_LIBS"++# First see if replacing the include by lib works.++# Check X11 before X11Rn because it is often a symlink to the current release.++for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \++ /usr/X11/lib \++ /usr/X11R6/lib \++ /usr/X11R5/lib \++ /usr/X11R4/lib \++ \++ /usr/lib/X11 \++ /usr/lib/X11R6 \++ /usr/lib/X11R5 \++ /usr/lib/X11R4 \++ \++ /usr/local/X11/lib \++ /usr/local/X11R6/lib \++ /usr/local/X11R5/lib \++ /usr/local/X11R4/lib \++ \++ /usr/local/lib/X11 \++ /usr/local/lib/X11R6 \++ /usr/local/lib/X11R5 \++ /usr/local/lib/X11R4 \++ \++ /usr/X386/lib \++ /usr/x386/lib \++ /usr/XFree86/lib/X11 \++ \++ /usr/lib \++ /usr/local/lib \++ /usr/unsupported/lib \++ /usr/athena/lib \++ /usr/local/x11r5/lib \++ /usr/lpp/Xamples/lib \++ /lib/usr/lib/X11 \++ \++ /usr/openwin/lib \++ /usr/openwin/share/lib \++ ; \++do++ for ac_extension in a so sl; do++ if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then++ ac_x_libraries=$ac_dir++ break 2++ fi++ done++done++fi++rm -f conftest*++fi # $ac_x_libraries = NO++++if test "$ac_x_includes" = NO || test "$ac_x_libraries" = NO; then++ # Didn't find X anywhere. Cache the known absence of X.++ ac_cv_have_x="have_x=no"++else++ # Record where we found X for the cache.++ ac_cv_have_x="have_x=yes \++ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"++fi++fi++ fi++ eval "$ac_cv_have_x"++fi # $with_x != no++++if test "$have_x" != yes; then++ echo "$ac_t""$have_x" 1>&6++ no_x=yes++else++ # If each of the values was on the command line, it overrides each guess.++ test "x$x_includes" = xNONE && x_includes=$ac_x_includes++ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries++ # Update the cache value to reflect the command line values.++ ac_cv_have_x="have_x=yes \++ ac_x_includes=$x_includes ac_x_libraries=$x_libraries"++ echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6++fi++++if test "$no_x" = yes; then++ # Not all programs may use this symbol, but it does not hurt to define it.++ cat >> confdefs.h <<\EOF++#define X_DISPLAY_MISSING 1++EOF++++ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=++else++ if test -n "$x_includes"; then++ X_CFLAGS="$X_CFLAGS -I$x_includes"++ fi++++ # It would also be nice to do this for all -L options, not just this one.++ if test -n "$x_libraries"; then++ X_LIBS="$X_LIBS -L$x_libraries"++ # For Solaris; some versions of Sun CC require a space after -R and++ # others require no space. Words are not sufficient . . . .++ case "`(uname -sr) 2>/dev/null`" in++ "SunOS 5"*)++ echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6++echo "configure:1086: checking whether -R must be followed by a space" >&5++ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"++ cat > conftest.$ac_ext <<EOF++#line 1089 "configure"++#include "confdefs.h"++++int main() {++++; return 0; }++EOF++if { (eval echo configure:1096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ ac_R_nospace=yes++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ ac_R_nospace=no++fi++rm -f conftest*++ if test $ac_R_nospace = yes; then++ echo "$ac_t""no" 1>&6++ X_LIBS="$X_LIBS -R$x_libraries"++ else++ LIBS="$ac_xsave_LIBS -R $x_libraries"++ cat > conftest.$ac_ext <<EOF++#line 1112 "configure"++#include "confdefs.h"++++int main() {++++; return 0; }++EOF++if { (eval echo configure:1119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ ac_R_space=yes++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ ac_R_space=no++fi++rm -f conftest*++ if test $ac_R_space = yes; then++ echo "$ac_t""yes" 1>&6++ X_LIBS="$X_LIBS -R $x_libraries"++ else++ echo "$ac_t""neither works" 1>&6++ fi++ fi++ LIBS="$ac_xsave_LIBS"++ esac++ fi++++ # Check for system-dependent libraries X programs must link with.++ # Do this before checking for the system-independent R6 libraries++ # (-lICE), since we may need -lsocket or whatever for X linking.++++ if test "$ISC" = yes; then++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"++ else++ # Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X++ # libraries were built with DECnet support. And karl@cs.umb.edu says++ # the Alpha needs dnet_stub (dnet does not exist).++ echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6++echo "configure:1151: checking for dnet_ntoa in -ldnet" >&5++ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-ldnet $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1159 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char dnet_ntoa();++++int main() {++dnet_ntoa()++; return 0; }++EOF++if { (eval echo configure:1170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"++else++ echo "$ac_t""no" 1>&6++fi++++ if test $ac_cv_lib_dnet_dnet_ntoa = no; then++ echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6++echo "configure:1192: checking for dnet_ntoa in -ldnet_stub" >&5++ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-ldnet_stub $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1200 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char dnet_ntoa();++++int main() {++dnet_ntoa()++; return 0; }++EOF++if { (eval echo configure:1211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"++else++ echo "$ac_t""no" 1>&6++fi++++ fi++++ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,++ # to get the SysV transport functions.++ # chad@anasazi.com says the Pyramis MIS-ES running DC/OSx (SVR4)++ # needs -lnsl.++ # The nsl library prevents programs from opening the X display++ # on Irix 5.2, according to dickey@clark.net.++ echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6++echo "configure:1240: checking for gethostbyname" >&5++if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1245 "configure"++#include "confdefs.h"++/* System header to define __stub macros and hopefully few prototypes,++ which can conflict with char gethostbyname(); below. */++#include <assert.h>++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char gethostbyname();++++int main() {++++/* The GNU C library defines this for functions which it implements++ to always fail with ENOSYS. Some functions are actually named++ something starting with __ and the normal name is an alias. */++#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)++choke me++#else++gethostbyname();++#endif++++; return 0; }++EOF++if { (eval echo configure:1268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_func_gethostbyname=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_func_gethostbyname=no"++fi++rm -f conftest*++fi++++if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ :++else++ echo "$ac_t""no" 1>&6++fi++++ if test $ac_cv_func_gethostbyname = no; then++ echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6++echo "configure:1289: checking for gethostbyname in -lnsl" >&5++ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lnsl $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1297 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char gethostbyname();++++int main() {++gethostbyname()++; return 0; }++EOF++if { (eval echo configure:1308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"++else++ echo "$ac_t""no" 1>&6++fi++++ fi++++ # lieder@skyler.mavd.honeywell.com says without -lsocket,++ # socket/setsockopt and other routines are undefined under SCO ODT++ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary++ # on later versions), says simon@lia.di.epfl.ch: it contains++ # gethostby* variants that don't use the nameserver (or something).++ # -lsocket must be given before -lnsl if both are needed.++ # We assume that if connect needs -lnsl, so does gethostbyname.++ echo $ac_n "checking for connect""... $ac_c" 1>&6++echo "configure:1338: checking for connect" >&5++if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1343 "configure"++#include "confdefs.h"++/* System header to define __stub macros and hopefully few prototypes,++ which can conflict with char connect(); below. */++#include <assert.h>++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char connect();++++int main() {++++/* The GNU C library defines this for functions which it implements++ to always fail with ENOSYS. Some functions are actually named++ something starting with __ and the normal name is an alias. */++#if defined (__stub_connect) || defined (__stub___connect)++choke me++#else++connect();++#endif++++; return 0; }++EOF++if { (eval echo configure:1366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_func_connect=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_func_connect=no"++fi++rm -f conftest*++fi++++if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ :++else++ echo "$ac_t""no" 1>&6++fi++++ if test $ac_cv_func_connect = no; then++ echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6++echo "configure:1387: checking for connect in -lsocket" >&5++ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lsocket $X_EXTRA_LIBS $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1395 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char connect();++++int main() {++connect()++; return 0; }++EOF++if { (eval echo configure:1406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"++else++ echo "$ac_t""no" 1>&6++fi++++ fi++++ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.++ echo $ac_n "checking for remove""... $ac_c" 1>&6++echo "configure:1430: checking for remove" >&5++if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1435 "configure"++#include "confdefs.h"++/* System header to define __stub macros and hopefully few prototypes,++ which can conflict with char remove(); below. */++#include <assert.h>++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char remove();++++int main() {++++/* The GNU C library defines this for functions which it implements++ to always fail with ENOSYS. Some functions are actually named++ something starting with __ and the normal name is an alias. */++#if defined (__stub_remove) || defined (__stub___remove)++choke me++#else++remove();++#endif++++; return 0; }++EOF++if { (eval echo configure:1458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_func_remove=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_func_remove=no"++fi++rm -f conftest*++fi++++if eval "test \"`echo '$ac_cv_func_'remove`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ :++else++ echo "$ac_t""no" 1>&6++fi++++ if test $ac_cv_func_remove = no; then++ echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6++echo "configure:1479: checking for remove in -lposix" >&5++ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lposix $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1487 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char remove();++++int main() {++remove()++; return 0; }++EOF++if { (eval echo configure:1498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"++else++ echo "$ac_t""no" 1>&6++fi++++ fi++++ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.++ echo $ac_n "checking for shmat""... $ac_c" 1>&6++echo "configure:1522: checking for shmat" >&5++if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1527 "configure"++#include "confdefs.h"++/* System header to define __stub macros and hopefully few prototypes,++ which can conflict with char shmat(); below. */++#include <assert.h>++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char shmat();++++int main() {++++/* The GNU C library defines this for functions which it implements++ to always fail with ENOSYS. Some functions are actually named++ something starting with __ and the normal name is an alias. */++#if defined (__stub_shmat) || defined (__stub___shmat)++choke me++#else++shmat();++#endif++++; return 0; }++EOF++if { (eval echo configure:1550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_func_shmat=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_func_shmat=no"++fi++rm -f conftest*++fi++++if eval "test \"`echo '$ac_cv_func_'shmat`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ :++else++ echo "$ac_t""no" 1>&6++fi++++ if test $ac_cv_func_shmat = no; then++ echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6++echo "configure:1571: checking for shmat in -lipc" >&5++ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lipc $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1579 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char shmat();++++int main() {++shmat()++; return 0; }++EOF++if { (eval echo configure:1590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"++else++ echo "$ac_t""no" 1>&6++fi++++ fi++ fi++++ # Check for libraries that X11R6 Xt/Xaw programs need.++ ac_save_LDFLAGS="$LDFLAGS"++ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"++ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to++ # check for ICE first), but we must link in the order -lSM -lICE or++ # we get undefined symbols. So assume we have SM if we have ICE.++ # These have to be linked with before -lX11, unlike the other++ # libraries we check for below, so use a different variable.++ # --interran@uluru.Stanford.EDU, kb@cs.umb.edu.++ echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6++echo "configure:1623: checking for IceConnectionNumber in -lICE" >&5++ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lICE $X_EXTRA_LIBS $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1631 "configure"++#include "confdefs.h"++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char IceConnectionNumber();++++int main() {++IceConnectionNumber()++; return 0; }++EOF++if { (eval echo configure:1642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"++else++ echo "$ac_t""no" 1>&6++fi++++ LDFLAGS="$ac_save_LDFLAGS"++++fi++++echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6++echo "configure:1667: checking for ANSI C header files" >&5++if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1672 "configure"++#include "confdefs.h"++#include <stdlib.h>++#include <stdarg.h>++#include <string.h>++#include <float.h>++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:1680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ rm -rf conftest*++ ac_cv_header_stdc=yes++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ ac_cv_header_stdc=no++fi++rm -f conftest*++++if test $ac_cv_header_stdc = yes; then++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.++cat > conftest.$ac_ext <<EOF++#line 1697 "configure"++#include "confdefs.h"++#include <string.h>++EOF++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |++ egrep "memchr" >/dev/null 2>&1; then++ :++else++ rm -rf conftest*++ ac_cv_header_stdc=no++fi++rm -f conftest*++++fi++++if test $ac_cv_header_stdc = yes; then++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.++cat > conftest.$ac_ext <<EOF++#line 1715 "configure"++#include "confdefs.h"++#include <stdlib.h>++EOF++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |++ egrep "free" >/dev/null 2>&1; then++ :++else++ rm -rf conftest*++ ac_cv_header_stdc=no++fi++rm -f conftest*++++fi++++if test $ac_cv_header_stdc = yes; then++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.++if test "$cross_compiling" = yes; then++ :++else++ cat > conftest.$ac_ext <<EOF++#line 1736 "configure"++#include "confdefs.h"++#include <ctype.h>++#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')++#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))++int main () { int i; for (i = 0; i < 256; i++)++if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);++exit (0); }++++EOF++if { (eval echo configure:1747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null++then++ :++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -fr conftest*++ ac_cv_header_stdc=no++fi++rm -fr conftest*++fi++++fi++fi++++echo "$ac_t""$ac_cv_header_stdc" 1>&6++if test $ac_cv_header_stdc = yes; then++ cat >> confdefs.h <<\EOF++#define STDC_HEADERS 1++EOF++++fi++++for ac_hdr in malloc.h strings.h sys/time.h unistd.h++do++ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6++echo "configure:1774: checking for $ac_hdr" >&5++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 1779 "configure"++#include "confdefs.h"++#include <$ac_hdr>++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:1784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ rm -rf conftest*++ eval "ac_cv_header_$ac_safe=yes"++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_header_$ac_safe=no"++fi++rm -f conftest*++fi++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`++ cat >> confdefs.h <<EOF++#define $ac_tr_hdr 1++EOF++ ++else++ echo "$ac_t""no" 1>&6++fi++done++++++echo $ac_n "checking for main in -lm""... $ac_c" 1>&6++echo "configure:1812: checking for main in -lm" >&5++ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lm $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1820 "configure"++#include "confdefs.h"++++int main() {++main()++; return 0; }++EOF++if { (eval echo configure:1827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \++ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`++ cat >> confdefs.h <<EOF++#define $ac_tr_lib 1++EOF++++ LIBS="-lm $LIBS"++++else++ echo "$ac_t""no" 1>&6++fi++++echo $ac_n "checking for main in -lz""... $ac_c" 1>&6++echo "configure:1855: checking for main in -lz" >&5++ac_lib_var=`echo z'_'main | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lz $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1863 "configure"++#include "confdefs.h"++++int main() {++main()++; return 0; }++EOF++if { (eval echo configure:1870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_lib=HAVE_LIB`echo z | sed -e 's/[^a-zA-Z0-9_]/_/g' \++ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`++ cat >> confdefs.h <<EOF++#define $ac_tr_lib 1++EOF++++ LIBS="-lz $LIBS"++++else++ echo "$ac_t""no" 1>&6++fi++++echo $ac_n "checking for main in -lpng""... $ac_c" 1>&6++echo "configure:1898: checking for main in -lpng" >&5++ac_lib_var=`echo png'_'main | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-lpng $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1906 "configure"++#include "confdefs.h"++++int main() {++main()++; return 0; }++EOF++if { (eval echo configure:1913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_lib=HAVE_LIB`echo png | sed -e 's/[^a-zA-Z0-9_]/_/g' \++ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`++ cat >> confdefs.h <<EOF++#define $ac_tr_lib 1++EOF++++ LIBS="-lpng $LIBS"++++else++ echo "$ac_t""no" 1>&6++fi++++echo $ac_n "checking for main in -ljpeg""... $ac_c" 1>&6++echo "configure:1941: checking for main in -ljpeg" >&5++ac_lib_var=`echo jpeg'_'main | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-ljpeg $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1949 "configure"++#include "confdefs.h"++++int main() {++main()++; return 0; }++EOF++if { (eval echo configure:1956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_lib=HAVE_LIB`echo jpeg | sed -e 's/[^a-zA-Z0-9_]/_/g' \++ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`++ cat >> confdefs.h <<EOF++#define $ac_tr_lib 1++EOF++++ LIBS="-ljpeg $LIBS"++++else++ echo "$ac_t""no" 1>&6++fi++++echo $ac_n "checking for main in -ltiff""... $ac_c" 1>&6++echo "configure:1984: checking for main in -ltiff" >&5++ac_lib_var=`echo tiff'_'main | sed 'y%./+-%__p_%'`++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ ac_save_LIBS="$LIBS"++LIBS="-ltiff $LIBS"++cat > conftest.$ac_ext <<EOF++#line 1992 "configure"++#include "confdefs.h"++++int main() {++main()++; return 0; }++EOF++if { (eval echo configure:1999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_lib_$ac_lib_var=no"++fi++rm -f conftest*++LIBS="$ac_save_LIBS"++++fi++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_lib=HAVE_LIB`echo tiff | sed -e 's/[^a-zA-Z0-9_]/_/g' \++ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`++ cat >> confdefs.h <<EOF++#define $ac_tr_lib 1++EOF++++ LIBS="-ltiff $LIBS"++++else++ echo "$ac_t""no" 1>&6++fi++++++++++echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6++echo "configure:2030: checking return type of signal handlers" >&5++if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 2035 "configure"++#include "confdefs.h"++#include <sys/types.h>++#include <signal.h>++#ifdef signal++#undef signal++#endif++#ifdef __cplusplus++extern "C" void (*signal (int, void (*)(int)))(int);++#else++void (*signal ()) ();++#endif++++int main() {++int i;++; return 0; }++EOF++if { (eval echo configure:2052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then++ rm -rf conftest*++ ac_cv_type_signal=void++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ ac_cv_type_signal=int++fi++rm -f conftest*++fi++++echo "$ac_t""$ac_cv_type_signal" 1>&6++cat >> confdefs.h <<EOF++#define RETSIGTYPE $ac_cv_type_signal++EOF++++++for ac_func in mkdir select++do++echo $ac_n "checking for $ac_func""... $ac_c" 1>&6++echo "configure:2073: checking for $ac_func" >&5++if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 2078 "configure"++#include "confdefs.h"++/* System header to define __stub macros and hopefully few prototypes,++ which can conflict with char $ac_func(); below. */++#include <assert.h>++/* Override any gcc2 internal prototype to avoid an error. */++/* We use char because int might match the return type of a gcc2++ builtin and then its argument prototype would still apply. */++char $ac_func();++++int main() {++++/* The GNU C library defines this for functions which it implements++ to always fail with ENOSYS. Some functions are actually named++ something starting with __ and the normal name is an alias. */++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)++choke me++#else++$ac_func();++#endif++++; return 0; }++EOF++if { (eval echo configure:2101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then++ rm -rf conftest*++ eval "ac_cv_func_$ac_func=yes"++else++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_func_$ac_func=no"++fi++rm -f conftest*++fi++++if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`++ cat >> confdefs.h <<EOF++#define $ac_tr_func 1++EOF++ ++else++ echo "$ac_t""no" 1>&6++fi++done++++++trap '' 1 2 15++cat > confcache <<\EOF++# This file is a shell script that caches the results of configure++# tests run on this system so they can be shared between configure++# scripts and configure runs. It is not useful on other systems.++# If it contains results you don't want to keep, you may remove or edit it.++#++# By default, configure uses ./config.cache as the cache file,++# creating it if it does not exist already. You can give configure++# the --cache-file=FILE option to use a different cache file; that is++# what configure does when it calls configure scripts in++# subdirectories, so they share the cache.++# Giving --cache-file=/dev/null disables caching, for debugging configure.++# config.status only pays attention to the cache file if you give it the++# --recheck option to rerun configure.++#++EOF++# The following way of writing the cache mishandles newlines in values,++# but we know of no workaround that is simple, portable, and efficient.++# So, don't put newlines in cache variables' values.++# Ultrix sh set writes to stderr and can't be redirected directly,++# and sets the high bit in the cache file unless we assign to the vars.++(set) 2>&1 |++ case `(ac_space=' '; set | grep ac_space) 2>&1` in++ *ac_space=\ *)++ # `set' does not quote correctly, so add quotes (double-quote substitution++ # turns \\\\ into \\, and sed turns \\ into \).++ sed -n \++ -e "s/'/'\\\\''/g" \++ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"++ ;;++ *)++ # `set' quotes correctly as required by POSIX, so do not add quotes.++ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'++ ;;++ esac >> confcache++if cmp -s $cache_file confcache; then++ :++else++ if test -w $cache_file; then++ echo "updating cache $cache_file"++ cat confcache > $cache_file++ else++ echo "not updating unwritable cache $cache_file"++ fi++fi++rm -f confcache++++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15++++test "x$prefix" = xNONE && prefix=$ac_default_prefix++# Let make expand exec_prefix.++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'++++# Any assignment to VPATH causes Sun make to only execute++# the first set of double-colon rules, so remove it if not needed.++# If there is a colon in the path, we need to keep it.++if test "x$srcdir" = x.; then++ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'++fi++++trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15++++DEFS=-DHAVE_CONFIG_H++++# Without the "./", some shells look in PATH for config.status.++: ${CONFIG_STATUS=./config.status}++++echo creating $CONFIG_STATUS++rm -f $CONFIG_STATUS++cat > $CONFIG_STATUS <<EOF++#! /bin/sh++# Generated automatically by configure.++# Run this file to recreate the current configuration.++# This directory was configured as follows,++# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:++#++# $0 $ac_configure_args++#++# Compiler output produced by configure, useful for debugging++# configure, is in ./config.log if it exists.++++ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"++for ac_option++do++ case "\$ac_option" in++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)++ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"++ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;++ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)++ echo "$CONFIG_STATUS generated by autoconf version 2.13"++ exit 0 ;;++ -help | --help | --hel | --he | --h)++ echo "\$ac_cs_usage"; exit 0 ;;++ *) echo "\$ac_cs_usage"; exit 1 ;;++ esac++done++++ac_given_srcdir=$srcdir++++trap 'rm -fr `echo "Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15++EOF++cat >> $CONFIG_STATUS <<EOF++++# Protect against being on the right side of a sed subst in config.status.++sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;++ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF++$ac_vpsub++$extrasub++s%@SHELL@%$SHELL%g++s%@CFLAGS@%$CFLAGS%g++s%@CPPFLAGS@%$CPPFLAGS%g++s%@CXXFLAGS@%$CXXFLAGS%g++s%@FFLAGS@%$FFLAGS%g++s%@DEFS@%$DEFS%g++s%@LDFLAGS@%$LDFLAGS%g++s%@LIBS@%$LIBS%g++s%@exec_prefix@%$exec_prefix%g++s%@prefix@%$prefix%g++s%@program_transform_name@%$program_transform_name%g++s%@bindir@%$bindir%g++s%@sbindir@%$sbindir%g++s%@libexecdir@%$libexecdir%g++s%@datadir@%$datadir%g++s%@sysconfdir@%$sysconfdir%g++s%@sharedstatedir@%$sharedstatedir%g++s%@localstatedir@%$localstatedir%g++s%@libdir@%$libdir%g++s%@includedir@%$includedir%g++s%@oldincludedir@%$oldincludedir%g++s%@infodir@%$infodir%g++s%@mandir@%$mandir%g++s%@CC@%$CC%g++s%@CPP@%$CPP%g++s%@X_CFLAGS@%$X_CFLAGS%g++s%@X_PRE_LIBS@%$X_PRE_LIBS%g++s%@X_LIBS@%$X_LIBS%g++s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g++++CEOF++EOF++++cat >> $CONFIG_STATUS <<\EOF++++# Split the substitutions into bite-sized pieces for seds with++# small command number limits, like on Digital OSF/1 and HP-UX.++ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.++ac_file=1 # Number of current file.++ac_beg=1 # First line for current file.++ac_end=$ac_max_sed_cmds # Line after last line for current file.++ac_more_lines=:++ac_sed_cmds=""++while $ac_more_lines; do++ if test $ac_beg -gt 1; then++ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file++ else++ sed "${ac_end}q" conftest.subs > conftest.s$ac_file++ fi++ if test ! -s conftest.s$ac_file; then++ ac_more_lines=false++ rm -f conftest.s$ac_file++ else++ if test -z "$ac_sed_cmds"; then++ ac_sed_cmds="sed -f conftest.s$ac_file"++ else++ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"++ fi++ ac_file=`expr $ac_file + 1`++ ac_beg=$ac_end++ ac_end=`expr $ac_end + $ac_max_sed_cmds`++ fi++done++if test -z "$ac_sed_cmds"; then++ ac_sed_cmds=cat++fi++EOF++++cat >> $CONFIG_STATUS <<EOF++++CONFIG_FILES=\${CONFIG_FILES-"Makefile"}++EOF++cat >> $CONFIG_STATUS <<\EOF++for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then++ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".++ case "$ac_file" in++ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`++ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;++ *) ac_file_in="${ac_file}.in" ;;++ esac++++ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.++++ # Remove last slash and all that follows it. Not all systems have dirname.++ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`++ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then++ # The file is in a subdirectory.++ test ! -d "$ac_dir" && mkdir "$ac_dir"++ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"++ # A "../" for each directory in $ac_dir_suffix.++ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`++ else++ ac_dir_suffix= ac_dots=++ fi++++ case "$ac_given_srcdir" in++ .) srcdir=.++ if test -z "$ac_dots"; then top_srcdir=.++ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;++ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;++ *) # Relative path.++ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"++ top_srcdir="$ac_dots$ac_given_srcdir" ;;++ esac++++++ echo creating "$ac_file"++ rm -f "$ac_file"++ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."++ case "$ac_file" in++ *Makefile*) ac_comsub="1i\\++# $configure_input" ;;++ *) ac_comsub= ;;++ esac++++ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`++ sed -e "$ac_comsub++s%@configure_input@%$configure_input%g++s%@srcdir@%$srcdir%g++s%@top_srcdir@%$top_srcdir%g++" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file++fi; done++rm -f conftest.s*++++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where++# NAME is the cpp macro being defined and VALUE is the value it is being given.++#++# ac_d sets the value in "#define NAME VALUE" lines.++ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'++ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'++ac_dC='\3'++ac_dD='%g'++# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".++ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'++ac_uB='\([ ]\)%\1#\2define\3'++ac_uC=' '++ac_uD='\4%g'++# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".++ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'++ac_eB='$%\1#\2define\3'++ac_eC=' '++ac_eD='%g'++++if test "${CONFIG_HEADERS+set}" != set; then++EOF++cat >> $CONFIG_STATUS <<EOF++ CONFIG_HEADERS="config.h"++EOF++cat >> $CONFIG_STATUS <<\EOF++fi++for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then++ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".++ case "$ac_file" in++ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`++ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;++ *) ac_file_in="${ac_file}.in" ;;++ esac++++ echo creating $ac_file++++ rm -f conftest.frag conftest.in conftest.out++ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`++ cat $ac_file_inputs > conftest.in++++EOF++++# Transform confdefs.h into a sed script conftest.vals that substitutes++# the proper values into config.h.in to produce config.h. And first:++# Protect against being on the right side of a sed subst in config.status.++# Protect against being in an unquoted here document in config.status.++rm -f conftest.vals++cat > conftest.hdr <<\EOF++s/[\\&%]/\\&/g++s%[\\$`]%\\&%g++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp++s%ac_d%ac_u%gp++s%ac_u%ac_e%gp++EOF++sed -n -f conftest.hdr confdefs.h > conftest.vals++rm -f conftest.hdr++++# This sed command replaces #undef with comments. This is necessary, for++# example, in the case of _POSIX_SOURCE, which is predefined and required++# on some systems where configure will not decide to define it.++cat >> conftest.vals <<\EOF++s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%++EOF++++# Break up conftest.vals because some shells have a limit on++# the size of here documents, and old seds have small limits too.++++rm -f conftest.tail++while :++do++ ac_lines=`grep -c . conftest.vals`++ # grep -c gives empty output for an empty file on some AIX systems.++ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi++ # Write a limited-size here document to conftest.frag.++ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS++ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS++ echo 'CEOF++ sed -f conftest.frag conftest.in > conftest.out++ rm -f conftest.in++ mv conftest.out conftest.in++' >> $CONFIG_STATUS++ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail++ rm -f conftest.vals++ mv conftest.tail conftest.vals++done++rm -f conftest.vals++++cat >> $CONFIG_STATUS <<\EOF++ rm -f conftest.frag conftest.h++ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h++ cat conftest.in >> conftest.h++ rm -f conftest.in++ if cmp -s $ac_file conftest.h 2>/dev/null; then++ echo "$ac_file is unchanged"++ rm -f conftest.h++ else++ # Remove last slash and all that follows it. Not all systems have dirname.++ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`++ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then++ # The file is in a subdirectory.++ test ! -d "$ac_dir" && mkdir "$ac_dir"++ fi++ rm -f $ac_file++ mv conftest.h $ac_file++ fi++fi; done++++EOF++cat >> $CONFIG_STATUS <<EOF++++EOF++cat >> $CONFIG_STATUS <<\EOF++++exit 0++EOF++chmod +x $CONFIG_STATUS++rm -fr confdefs* $ac_clean_files++test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1+++Index: xloadimage.4.1.old/configure.in+===================================================================+--- /dev/null++++ xloadimage.4.1.old/configure.in+@@ -0,0 +1,32 @@++dnl Process this file with autoconf to produce a configure script.++AC_INIT(xloadimage.c)++AC_CONFIG_HEADER(config.h)++++dnl Checks for programs.++AC_PROG_CC++++dnl Checks for header files.++AC_PATH_XTRA++AC_HEADER_STDC++AC_CHECK_HEADERS(malloc.h strings.h sys/time.h unistd.h)++++dnl Checks for libraries.++dnl Replace `main' with a function in -lm:++AC_CHECK_LIB(m, main)++dnl Replace `main' with a function in -lz:++AC_CHECK_LIB(z, main)++dnl Replace `main' with a function in -lpng:++AC_CHECK_LIB(png, main)++dnl Replace `main' with a function in -ljpeg:++AC_CHECK_LIB(jpeg, main)++dnl Replace `main' with a function in -ltiff:++AC_CHECK_LIB(tiff, main)++++++dnl Checks for typedefs, structures, and compiler characteristics.++++dnl Checks for library functions.++AC_TYPE_SIGNAL++AC_CHECK_FUNCS(select)++++AC_OUTPUT(Makefile)+Index: xloadimage.4.1.old/configure.scan+===================================================================+--- /dev/null++++ xloadimage.4.1.old/configure.scan+@@ -0,0 +1,32 @@++dnl Process this file with autoconf to produce a configure script.++AC_INIT(buildshar.c)++++dnl Checks for programs.++AC_PROG_CC++++dnl Checks for libraries.++dnl Replace `main' with a function in -lX11:++AC_CHECK_LIB(X11, main)++dnl Replace `main' with a function in -lXext:++AC_CHECK_LIB(Xext, main)++dnl Replace `main' with a function in -ljpeg:++AC_CHECK_LIB(jpeg, main)++dnl Replace `main' with a function in -lm:++AC_CHECK_LIB(m, main)++dnl Replace `main' with a function in -ltiff:++AC_CHECK_LIB(tiff, main)++dnl Replace `main' with a function in -lz:++AC_CHECK_LIB(z, main)++++dnl Checks for header files.++AC_PATH_X++AC_HEADER_STDC++AC_CHECK_HEADERS(malloc.h strings.h sys/time.h unistd.h)++++dnl Checks for typedefs, structures, and compiler characteristics.++++dnl Checks for library functions.++AC_TYPE_SIGNAL++AC_CHECK_FUNCS(mkdir select)++++AC_OUTPUT(Makefile)+Index: xloadimage.4.1.old/fbm.c+===================================================================+--- xloadimage.4.1.old.orig/fbm.c++++ xloadimage.4.1.old/fbm.c+@@ -45,12 +45,12 @@ static int fbmin_img_bits; /* co+ static int fbmin_img_rowlen; /* length of one row of data */+ static int fbmin_img_plnlen; /* length of one plane of data */+ static int fbmin_img_clrlen; /* length of the colormap */+-static int fbmin_img_aspect; /* image aspect ratio */++static double fbmin_img_aspect; /* image aspect ratio */+ static int fbmin_img_physbits; /* physical bits per pixel */+ static char *fbmin_img_title; /* name of image */+ static char *fbmin_img_credit; /* credit for image */+ +-static fbmin_image_test()++static int fbmin_image_test()+ {+ if (fbmin_img_width < 1 || fbmin_img_width > 32767) {+ fprintf (stderr, "Invalid width (%d) on input\n", fbmin_img_width);+@@ -93,7 +93,7 @@ static fbmin_image_test()+ }+ + if (fbmin_img_aspect < 0.01 || fbmin_img_aspect > 100.0) {+- fprintf (stderr, "Invalid aspect ratio %lg on input\n",++ fprintf (stderr, "Invalid aspect ratio %1.3f on input\n",+ fbmin_img_aspect);+ return FBMIN_ERR_BAD_SD;+ }+@@ -133,7 +133,7 @@ ZFILE *s;+ fbmin_img_rowlen = atoi(phdr.rowlen);+ fbmin_img_plnlen = atoi(phdr.plnlen);+ fbmin_img_clrlen = atoi(phdr.clrlen);+- fbmin_img_aspect = atoi(phdr.aspect);++ fbmin_img_aspect = atof(phdr.aspect);+ fbmin_img_physbits = atoi(phdr.physbits);+ fbmin_img_title = phdr.title;+ fbmin_img_credit = phdr.credits;+@@ -204,7 +204,6 @@ Image *fbmLoad(fullname, name, verbose)+ register int x, y, j, k, rowlen, plnlen;+ unsigned char *pixptr, *cm;+ unsigned int map_size;+- extern int Scrn;+ unsigned char *r, *g, *b;+ + if (! (zf= zopen(fullname)))+Index: xloadimage.4.1.old/image.h+===================================================================+--- xloadimage.4.1.old.orig/image.h++++ xloadimage.4.1.old/image.h+@@ -8,21 +8,25 @@+ * copyright information.+ */+ ++#ifndef __IMAGE_H__++#define __IMAGE_H__++++#ifdef HAVE_CONFIG_H++#include "config.h"++#endif+++ #include "copyright.h"+ + #include <stdio.h>+ + /* ANSI-C stuff+ */+-#if defined(__STDC__)+-++#ifdef STDC_HEADERS+ #if !defined(_ArgProto)+ #define _ArgProto(ARGS) ARGS+ #endif+-+ #include <stdlib.h>+-+-#else /* !__STDC__ */++#else /* !STDC_HEADERS */+ + #if !defined(const) /* "const" is an ANSI thing */+ #define const+@@ -31,26 +35,14 @@+ #define _ArgProto(ARGS) ()+ #endif+ +-#endif /* !__STDC__ */++#endif /* !STDC_HEADERS */+ + /* handle strings stuff that varies between BSD and ANSI/SYSV+ */+-#if defined(IS_BSD) && !defined(__STDC__)+-#include <strings.h>+-#if !defined(strchr) && !defined(index)+-#define strchr index+-#endif+-#if !defined(strrchr) && !defined(rindex)+-#define strrchr rindex+-#endif+-#if !defined(memcpy) && !defined(bcopy)+-#define memcpy(D,S,L) bcopy((char *)(S),(char *)(D),(L))+-#endif+-#if !defined(memset) && !defined(bzero)+-/* #define memset(D,V,L) bzero(D,L) */+-#endif+-#else /* !IS_BSD || __STDC__ */+ #include <string.h>++#ifdef HAVE_STRINGS_H++#include <strings.h>++#else /* !HAVE_STRINGS_H */+ #if !defined(index) && !defined(strchr)+ #define index strchr+ #endif+@@ -63,7 +55,7 @@+ #if !defined(bzero) && !defined(memset)+ #define bzero(D,L) memset((void *)(D),0,(L))+ #endif+-#endif /* !IS_BSD || __STDC__ */++#endif /* !HAVE_STRINGS_H */+ + #ifdef VMS+ #define R_OK 4+@@ -230,7 +222,7 @@ void gray _ArgProto((Image *image, unsig+ Image *normalize _ArgProto((Image *image, unsigned int verbose));+ + /* compress.c */+-void compress _ArgProto((Image *image, unsigned int verbose));++void compress_cmap _ArgProto((Image *image, unsigned int verbose));+ + /* dither.c */+ Image *dither _ArgProto((Image *image, unsigned int verbose));+@@ -331,3 +323,5 @@ extern int _Xdebug;+ #else /* !DEBUG */+ #define debug(ARGS)+ #endif /* !DEBUG */++++#endif /* __IMAGE_H__ */+Index: xloadimage.4.1.old/imagetypes.c+===================================================================+--- xloadimage.4.1.old.orig/imagetypes.c++++ xloadimage.4.1.old/imagetypes.c+@@ -16,7 +16,7 @@+ + /* SUPPRESS 560 */+ +-extern int errno;++extern int findImage(char *name, char *fullname);+ + /* load a named image+ */+@@ -46,7 +46,7 @@ Image *loadImage(globalopts, options, na+ if (opt) {+ for (a= 0; ImageTypes[a].loader; a++)+ if (!strncmp(ImageTypes[a].type, opt->info.type, strlen(opt->info.type))) {+- if (image= ImageTypes[a].loader(fullname, name, verbose)) {++ if ((image= ImageTypes[a].loader(fullname, name, verbose))) {+ zreset(NULL);+ + /* this converts a 1-bit RGB image to a bitmap prior to blitting+@@ -79,7 +79,7 @@ Image *loadImage(globalopts, options, na+ */+ for (a= 0; ImageTypes[a].loader; a++) {+ debug(("Checking %s against loader for %s\n", fullname, ImageTypes[a].name));+- if (image= ImageTypes[a].loader(fullname, name, verbose)) {++ if ((image= ImageTypes[a].loader(fullname, name, verbose))) {+ zreset(NULL);+ + /* this does the 1-bit conversion as above.+@@ -145,7 +145,10 @@ void dumpImage(image, type, filename, ve+ optptr++; /* skip comma */+ }+ else+- strcpy(typename, type);++ {++ strncpy(typename, type, 31);++ typename[31] = '\0';++ }+ + for (a= 0; ImageTypes[a].loader; a++)+ if (!strncmp(ImageTypes[a].type, typename, strlen(typename))) {+Index: xloadimage.4.1.old/imagetypes.h+===================================================================+--- xloadimage.4.1.old.orig/imagetypes.h++++ xloadimage.4.1.old/imagetypes.h+@@ -7,6 +7,9 @@+ * jim frost 10.15.89+ */+ ++#ifndef __IMAGETYPES_H__++#define __IMAGETYPES_H__+++ Image *niffLoad();+ Image *facesLoad();+ Image *pbmLoad();+@@ -28,12 +31,15 @@ Image *pdsLoad();+ #else+ Image *vicarLoad();+ #endif+-#ifdef HAS_JPEG++#ifdef HAVE_LIBJPEG+ Image *jpegLoad();+ #endif+-#ifdef HAS_TIFF++#ifdef HAVE_LIBTIFF+ Image *tiffLoad();+ #endif++#ifdef HAVE_LIBPNG++Image *pngLoad();++#endif+ + int niffIdent();+ int facesIdent();+@@ -56,18 +62,21 @@ int pdsIdent();+ #else+ int vicarIdent();+ #endif+-#ifdef HAS_JPEG++#ifdef HAVE_LIBJPEG+ int jpegIdent();+ #endif+-#ifdef HAS_TIFF++#ifdef HAVE_LIBTIFF+ int tiffIdent();+ #endif++#ifdef HAVE_LIBPNG++int pngIdent();++#endif+ + void niffDump();+-#ifdef HAS_JPEG++#ifdef HAVE_LIBJPEG+ void jpegDump();+ #endif+-#ifdef HAS_TIFF++#ifdef HAVE_LIBTIFF+ void tiffDump();+ #endif+ void pbmDump();+@@ -82,32 +91,39 @@ struct {+ char *type; /* image type name */+ char *name; /* name of this image format */+ } ImageTypes[] = {+- niffIdent, niffLoad, niffDump, "niff", "Native Image File Format (NIFF)",+- sunRasterIdent, sunRasterLoad, NULL, "sunraster", "Sun Rasterfile",+- gifIdent, gifLoad, NULL, "gif", "GIF Image",+-#ifdef HAS_JPEG+- jpegIdent, jpegLoad, jpegDump, "jpeg", "JFIF-style JPEG Image",+-#endif+-#ifdef HAS_TIFF+- tiffIdent, tiffLoad, tiffDump, "tiff", "TIFF image",+-#endif+- fbmIdent, fbmLoad, NULL, "fbm", "FBM Image",+- cmuwmIdent, cmuwmLoad, NULL, "cmuraster", "CMU WM Raster",+- pbmIdent, pbmLoad, pbmDump, "pbm", "Portable Bit Map (PBM, PGM, PPM)",+- facesIdent, facesLoad, NULL, "faces", "Faces Project",+- rleIdent, rleLoad, NULL, "rle", "Utah RLE Image",+- xwdIdent, xwdLoad, NULL, "xwd", "X Window Dump",+- vffIdent, vffLoad, NULL, "vff", "Sun Visualization File Format",+- mcidasIdent, mcidasLoad, NULL, "mcidas", "McIDAS areafile",++ {niffIdent, niffLoad, niffDump, "niff", "Native Image File Format (NIFF)"},++ {sunRasterIdent, sunRasterLoad, NULL, "sunraster", "Sun Rasterfile"},++ {gifIdent, gifLoad, NULL, "gif", "GIF Image"},++#ifdef HAVE_LIBJPEG++ {jpegIdent, jpegLoad, jpegDump, "jpeg", "JFIF-style JPEG Image"},++#endif++#ifdef HAVE_LIBTIFF++ {tiffIdent, tiffLoad, tiffDump, "tiff", "TIFF image"},++#endif++#ifdef HAVE_LIBPNG++ {pngIdent, pngLoad, NULL, "png", "PNG image"},++#endif++ {fbmIdent, fbmLoad, NULL, "fbm", "FBM Image"},++ {cmuwmIdent, cmuwmLoad, NULL, "cmuraster", "CMU WM Raster"},++ {pbmIdent, pbmLoad, pbmDump, "pbm", "Portable Bit Map (PBM, PGM, PPM)"},++ {facesIdent, facesLoad, NULL, "faces", "Faces Project"},++ {rleIdent, rleLoad, NULL, "rle", "Utah RLE Image"},++ {xwdIdent, xwdLoad, NULL, "xwd", "X Window Dump"},++ {vffIdent, vffLoad, NULL, "vff", "Sun Visualization File Format"},++ {mcidasIdent, mcidasLoad, NULL, "mcidas", "McIDAS areafile"},+ #if 0+- pdsIdent, pdsLoad, NULL, "pds", "PDS/VICAR Image",++ {pdsIdent, pdsLoad, NULL, "pds", "PDS/VICAR Image"},+ #else+- vicarIdent, vicarLoad, NULL, "vicar", "VICAR Image",++ {vicarIdent, vicarLoad, NULL, "vicar", "VICAR Image"},+ #endif+- pcxIdent, pcxLoad, NULL, "pcx", "PC Paintbrush Image",+- imgIdent, imgLoad, NULL, "gem", "GEM Bit Image",+- macIdent, macLoad, NULL, "macpaint", "MacPaint Image",+- xpixmapIdent, xpixmapLoad, NULL, "xpm", "X Pixmap",+- xbitmapIdent, xbitmapLoad, NULL, "xbm", "X Bitmap",+- NULL, NULL, NULL, NULL, NULL++ {pcxIdent, pcxLoad, NULL, "pcx", "PC Paintbrush Image"},++ {imgIdent, imgLoad, NULL, "gem", "GEM Bit Image"},++ {macIdent, macLoad, NULL, "macpaint", "MacPaint Image"},++ {xpixmapIdent, xpixmapLoad, NULL, "xpm", "X Pixmap"},++ {xbitmapIdent, xbitmapLoad, NULL, "xbm", "X Bitmap"},++ {NULL, NULL, NULL, NULL, NULL}+ };++++void dumpImage (Image *image, char *type, char *filename, int verbose);++++#endif /* __IMAGETYPES_H__ */+Index: xloadimage.4.1.old/img.c+===================================================================+--- xloadimage.4.1.old.orig/img.c++++ xloadimage.4.1.old/img.c+@@ -14,10 +14,9 @@+ #include <stdlib.h>+ #include <string.h>+ #include <math.h>++#include <errno.h>+ #include "image.h"+ +-extern int errno;+-+ #define TRUE 1+ #define FALSE 0+ +@@ -71,11 +70,15 @@ typedef struct ximg_header+ void (*transf) ();+ + static int vdi2pli();++#ifdef UNUSED_FUNCTIONS+ static int pli2vdi();++#endif /* UNUSED_FUNCTIONS */+ + static void transf0 ();+ static void transf1 ();++#ifdef UNUSED_FUNCTIONS+ static void transf2 ();++#endif /* UNUSED_FUNCTIONS */+ static void transf3 ();+ static void xread_img ();+ static void xread_line ();+@@ -89,8 +92,9 @@ XIMG_HEADER xheader;+ unsigned int ScanByteBreite, max_planes,+ pattern_len, plane, x, y, ByteNr, height;+ unsigned char *ptr, Muster[ALL_PLANES][BUFSIZ], tmp[BUFSIZ];++#ifdef UNUSED_FUNCTIONS+ static unsigned char *bitplane[ALL_PLANES], *lastbitplane;+-++#endif /* UNUSED_FUNCTIONS */+ + + static void transf0(bitimage, plane, value, planes)+@@ -128,7 +132,7 @@ static void transf1(bitimage, plane, val+ }+ + +-++#ifdef UNUSED_FUNCTIONS+ static void transf2(bitimage, plane, value, planes)+ unsigned char *bitimage;+ unsigned int plane;+@@ -146,6 +150,7 @@ static void transf2(bitimage, plane, val+ bitplane[plane][x] = value;+ x++;+ }++#endif /* UNUSED_FUNCTIONS */+ + static void transf3(bitimage, plane, value, planes)+ unsigned char *bitimage;+@@ -367,9 +372,10 @@ static int ident_img(name)+ ZFILE *file;+ long size = 0;+ int w, h, nplanes;+- char extention[5];+ + #if 0++ char extention[5];+++ strncpy (extention, name+strlen(name)-4, 4);+ extention[4] = '\0';+ if (strcmp(extention, ".IMG") != 0 && strcmp(extention, ".img") != 0)+@@ -402,7 +408,7 @@ static int ident_img(name)+ printf("%s is a %dx%d monochrome IMG-file\n",name , w, h);+ else+ if (nplanes != 24)+- printf("%s is a %dx%d IMG-file with %ld colors\n",name , w, h,++ printf("%s is a %dx%d IMG-file with %d colors\n",name , w, h,+ (1 << nplanes));+ else+ printf("%s is a %dx%d %d-bit IMG-file\n",name , w, h, nplanes);+@@ -413,7 +419,7 @@ static Image *load_img(name)+ char *name;+ {+ ZFILE *file;+- Image *image;++ Image *image = NULL;+ unsigned long w, h, nplanes, headlength, scanwidth;+ int colors;+ long i, dummy;+@@ -564,7 +570,6 @@ static int ident_ximg(name)+ ZFILE *file;+ long size = 0;+ int w, h, nplanes;+- char extention[5];+ + if ((file = zopen(name)) == NULL)+ {+@@ -593,7 +598,7 @@ static int ident_ximg(name)+ + printf("%s\n is a %dx%d ",name, w, h);+ if (nplanes != 24)+- printf("RGB XIMG-file with %ld colors\n", 1<<nplanes);++ printf("RGB XIMG-file with %d colors\n", 1<<nplanes);+ else+ printf("24-bit XIMG-file\n");+ return (1);+@@ -602,8 +607,6 @@ static int ident_ximg(name)+ static int vdi2pli(vdi, plimax)+ int vdi, plimax;+ {+- extern unsigned char indexToCode[];+- extern int work_ext[];+ static char vdi2pli[] = {0, 15, 1, 2, 4, 6, 3, 5, 7, 8, 9, 10, 12, 14, 11, 13 };+ + if (vdi == 1)+@@ -614,7 +617,7 @@ static int vdi2pli(vdi, plimax)+ }+ + +-++#ifdef UNUSED_FUNCTIONS+ static int pli2vdi(pli, plimax)+ int pli, plimax;+ {+@@ -626,15 +629,16 @@ static int pli2vdi(pli, plimax)+ return(pli);+ return(pli2vdi[pli]);+ }++#endif /* UNUSED_FUNCTIONS */+ + static Image *load_ximg(name)+ char *name;+ {+ void transferRGBMap();+ ZFILE *file;+- Image *image;++ Image *image = NULL;+ unsigned long w, h, nplanes, scanwidth;+- int i, color, colors;++ int color, colors;+ struct RGB_LIST+ {+ unsigned int red;+Index: xloadimage.4.1.old/install-sh+===================================================================+--- /dev/null++++ xloadimage.4.1.old/install-sh+@@ -0,0 +1,238 @@++#! /bin/sh++#++# install - install a program, script, or datafile++# This comes from X11R5.++#++# Calling this script install-sh is preferred over install.sh, to prevent++# `make' implicit rules from creating a file called install from it++# when there is no Makefile.++#++# This script is compatible with the BSD install script, but was written++# from scratch.++#++++++# set DOITPROG to echo to test this script++++# Don't use :- since 4.3BSD and earlier shells don't like it.++doit="${DOITPROG-}"++++++# put in absolute paths if you don't have them in your path; or use env. vars.++++mvprog="${MVPROG-mv}"++cpprog="${CPPROG-cp}"++chmodprog="${CHMODPROG-chmod}"++chownprog="${CHOWNPROG-chown}"++chgrpprog="${CHGRPPROG-chgrp}"++stripprog="${STRIPPROG-strip}"++rmprog="${RMPROG-rm}"++mkdirprog="${MKDIRPROG-mkdir}"++++tranformbasename=""++transform_arg=""++instcmd="$mvprog"++chmodcmd="$chmodprog 0755"++chowncmd=""++chgrpcmd=""++stripcmd=""++rmcmd="$rmprog -f"++mvcmd="$mvprog"++src=""++dst=""++dir_arg=""++++while [ x"$1" != x ]; do++ case $1 in++ -c) instcmd="$cpprog"++ shift++ continue;;++++ -d) dir_arg=true++ shift++ continue;;++++ -m) chmodcmd="$chmodprog $2"++ shift++ shift++ continue;;++++ -o) chowncmd="$chownprog $2"++ shift++ shift++ continue;;++++ -g) chgrpcmd="$chgrpprog $2"++ shift++ shift++ continue;;++++ -s) stripcmd="$stripprog"++ shift++ continue;;++++ -t=*) transformarg=`echo $1 | sed 's/-t=//'`++ shift++ continue;;++++ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`++ shift++ continue;;++++ *) if [ x"$src" = x ]++ then++ src=$1++ else++ # this colon is to work around a 386BSD /bin/sh bug++ :++ dst=$1++ fi++ shift++ continue;;++ esac++done++++if [ x"$src" = x ]++then++ echo "install: no input file specified"++ exit 1++else++ true++fi++++if [ x"$dir_arg" != x ]; then++ dst=$src++ src=""++ ++ if [ -d $dst ]; then++ instcmd=:++ else++ instcmd=mkdir++ fi++else++++# Waiting for this to be detected by the "$instcmd $src $dsttmp" command++# might cause directories to be created, which would be especially bad ++# if $src (and thus $dsttmp) contains '*'.++++ if [ -f $src -o -d $src ]++ then++ true++ else++ echo "install: $src does not exist"++ exit 1++ fi++ ++ if [ x"$dst" = x ]++ then++ echo "install: no destination specified"++ exit 1++ else++ true++ fi++++# If destination is a directory, append the input filename; if your system++# does not like double slashes in filenames, you may need to add some logic++++ if [ -d $dst ]++ then++ dst="$dst"/`basename $src`++ else++ true++ fi++fi++++## this sed command emulates the dirname command++dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`++++# Make sure that the destination directory exists.++# this part is taken from Noah Friedman's mkinstalldirs script++++# Skip lots of stat calls in the usual case.++if [ ! -d "$dstdir" ]; then++defaultIFS=' ++'++IFS="${IFS-${defaultIFS}}"++++oIFS="${IFS}"++# Some sh's can't handle IFS=/ for some reason.++IFS='%'++set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`++IFS="${oIFS}"++++pathcomp=''++++while [ $# -ne 0 ] ; do++ pathcomp="${pathcomp}${1}"++ shift++++ if [ ! -d "${pathcomp}" ] ;++ then++ $mkdirprog "${pathcomp}"++ else++ true++ fi++++ pathcomp="${pathcomp}/"++done++fi++++if [ x"$dir_arg" != x ]++then++ $doit $instcmd $dst &&++++ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&++ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&++ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&++ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi++else++++# If we're going to rename the final executable, determine the name now.++++ if [ x"$transformarg" = x ] ++ then++ dstfile=`basename $dst`++ else++ dstfile=`basename $dst $transformbasename | ++ sed $transformarg`$transformbasename++ fi++++# don't allow the sed command to completely eliminate the filename++++ if [ x"$dstfile" = x ] ++ then++ dstfile=`basename $dst`++ else++ true++ fi++++# Make a temp file name in the proper directory.++++ dsttmp=$dstdir/#inst.$$#++++# Move or copy the file name to the temp name++++ $doit $instcmd $src $dsttmp &&++++ trap "rm -f ${dsttmp}" 0 &&++++# and set any options; do chmod last to preserve setuid bits++++# If any of these fail, we abort the whole thing. If we want to++# ignore errors from any of these, just make sure not to ignore++# errors from the above "$doit $instcmd $src $dsttmp" command.++++ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&++ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&++ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&++ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&++++# Now rename the file to the real destination.++++ $doit $rmcmd -f $dstdir/$dstfile &&++ $doit $mvcmd $dsttmp $dstdir/$dstfile ++++fi &&++++++exit 0+Index: xloadimage.4.1.old/jpeg.c+===================================================================+--- xloadimage.4.1.old.orig/jpeg.c++++ xloadimage.4.1.old/jpeg.c+@@ -4,509 +4,314 @@+ * free JPEG software. See jpeg.README for more information.+ *+ * This code is based on example.c from the IJG v4 distribution.++ * 1998/08/19: Change for IJG v6.0a. dump Progressive JPEG support.+ */+ + #include "image.h" /* xloadimage declarations */+-#include "jpeg.conf.h" /* definitions used in jpeg directory */+-#include "jpeg/jinclude.h" /* IJG declarations */++#ifdef HAVE_LIBJPEG++#include "options.h"++#include <jpeglib.h>++#include <jerror.h>+ #include <setjmp.h> /* need setjmp/longjmp */+ +-/* Error-catching routines */++#undef DEBUG++/* #define DEBUG */++#undef debug++++#ifdef DEBUG++# define debug(xx) fprintf(stderr,xx)++#else++# define debug(xx)++#endif++++static Image *image; /* xloadimage image being returned */+ + static char *filename;+-static unsigned int verbose;+-static unsigned int identify;+ static jmp_buf setjmp_buffer; /* for return to caller */+-static external_methods_ptr emethods; /* needed for access to message_parm */++ZFILE * zinput_file; /* tells input routine where to read JPEG */++static JOCTET jpeg_read_buff[1024 * 16];+ +-static void+-trace_message (msgtext)+- char *msgtext;++/*++ * source manager++ */++static void init_source( j_decompress_ptr cinfo)+ {+- fprintf(stderr, "jpegLoad: %s - ", filename);+- fprintf(stderr, msgtext,+- emethods->message_parm[0], emethods->message_parm[1],+- emethods->message_parm[2], emethods->message_parm[3],+- emethods->message_parm[4], emethods->message_parm[5],+- emethods->message_parm[6], emethods->message_parm[7]);+- fprintf(stderr, "\n"); /* there is no \n in the format string! */+-}+ +-static void+-error_exit (msgtext)+- char *msgtext;+-{+- trace_message(msgtext); /* report the error message */+- (*emethods->free_all) (); /* clean up memory allocation & temp files */+- longjmp(setjmp_buffer, 1); /* return control to outer routine */++ debug("init_source()");+ }+ ++static boolean fill_input_buffer( j_decompress_ptr cinfo)++{++ struct jpeg_source_mgr *src = cinfo->src;+ +-/* Output-acceptance routines */+-+-static Image *image; /* xloadimage image being returned */+-static int rows_put; /* Number of rows copied to image */+-+-+-static void+-output_init (cinfo)+- decompress_info_ptr cinfo;+-/* Initialize for output */+-{+- int i;+-+- if (cinfo->out_color_space == CS_GRAYSCALE) {+- image = newRGBImage(cinfo->image_width,cinfo->image_height,8);+- image->title = dupString(filename);+- /* set a linear map */+- for(i=0;i<256;i++) {+- *(image->rgb.red + i) = +- *(image->rgb.green + i) = +- *(image->rgb.blue + i) = i<<8;+- }+- image->rgb.used = 256;+- } else if (cinfo->out_color_space == CS_RGB) {+- image = newTrueImage(cinfo->image_width,cinfo->image_height);+- image->title = dupString(filename);+- } else {+- image = NULL;+- ERREXIT(cinfo->emethods, "Cannot cope with JPEG image colorspace");+- }+- rows_put = 0;++ debug("fill_input_buffer()");++#ifdef DEBUG++ fprintf( stderr,"fill_input_buffer(): %d ",src->bytes_in_buffer);++#endif++ src->next_input_byte = jpeg_read_buff;++ src->bytes_in_buffer = zread(zinput_file,++ jpeg_read_buff, sizeof(jpeg_read_buff));++ if(src->bytes_in_buffer <= 0){++ WARNMS(cinfo, JWRN_JPEG_EOF);++ jpeg_read_buff[0] = 0xFF;++ jpeg_read_buff[1] = JPEG_EOI;++ src->bytes_in_buffer = 2;++ }++ return TRUE;++}++++static void skip_input_data( j_decompress_ptr cinfo, long num_bytes)++{++ int rest;++ struct jpeg_source_mgr *src = cinfo->src;++++ debug("skip_input_data()");++#ifdef DEBUG++ fprintf(stderr,": %ld,%d ", num_bytes, src->bytes_in_buffer);++#endif++ if( num_bytes < 1) return;++ rest = src->bytes_in_buffer;++ if( num_bytes < rest) {++ src->next_input_byte += num_bytes;++ src->bytes_in_buffer -= num_bytes;;++ return;++ }++ num_bytes -= rest;++ while( num_bytes--) {++ zgetc(zinput_file);++ }++ fill_input_buffer(cinfo);+ }+ +-+-static void+-put_color_map (cinfo, num_colors, colormap)+- decompress_info_ptr cinfo;+- int num_colors;+- JSAMPARRAY colormap;+-/* Write the color map -- should not be called */++static boolean resync_to_restart( j_decompress_ptr cinfo, int desired)+ {+- fprintf(stderr, "put_color_map called: there is a bug here somewhere!\n");++ return jpeg_resync_to_restart( cinfo, desired);+ }+ +-+-static void+-put_pixel_rows (cinfo, num_rows, pixel_data)+- decompress_info_ptr cinfo;+- int num_rows;+- JSAMPIMAGE pixel_data;+-/* Write some rows of output data */+-{+- register unsigned char *bufp;+- register JSAMPROW ptr0, ptr1, ptr2;+- register long col;+- long width = cinfo->image_width;+- int row;+- +- if (cinfo->out_color_space == CS_GRAYSCALE) {+- bufp = image->data + rows_put * width;+- /* Assume JSAMPLE == chars */+- for (row = 0; row < num_rows; row++) {+- bcopy(pixel_data[0][row],bufp,width);+- bufp += width;+- }+- } else {+- bufp = image->data + rows_put * width * 3;+- for (row = 0; row < num_rows; row++) {+- ptr0 = pixel_data[0][row];+- ptr1 = pixel_data[1][row];+- ptr2 = pixel_data[2][row];+- for (col = width; col > 0; col--) {+- *bufp++ = *ptr0++;+- *bufp++ = *ptr1++;+- *bufp++ = *ptr2++;+- }+- }+- }+- rows_put += num_rows;++static void term_source( j_decompress_ptr cinfo)++{++ debug("term_source()");+ }+ +-++/*++ * error manager++ */+ static void+-output_term (cinfo)+- decompress_info_ptr cinfo;+-/* Finish up at the end of the output */++output_message ( j_common_ptr cominfo)+ {+- /* No work here */+-}+-++ char buf[JMSG_LENGTH_MAX];+ +-/* Input-file-reading routine */+-+-+-static ZFILE * input_file; /* tells input routine where to read JPEG */++ (*cominfo->err->format_message)(cominfo, buf);++ fprintf(stderr, "jpegLoad: %s - %s\n", filename, buf);++}+ + +-static int+-read_jpeg_data (cinfo)+- decompress_info_ptr cinfo;++static void error_exit (j_common_ptr cominfo)+ {+- cinfo->next_input_byte = cinfo->input_buffer + MIN_UNGET;+-+- cinfo->bytes_in_buffer = zread(input_file,+- (byte *)cinfo->next_input_byte,+- JPEG_BUF_SIZE);+- +- if (cinfo->bytes_in_buffer <= 0) {+- WARNMS(cinfo->emethods, "Premature EOF in JPEG file");+- cinfo->next_input_byte[0] = (char) 0xFF;+- cinfo->next_input_byte[1] = (char) 0xD9; /* EOI marker */+- cinfo->bytes_in_buffer = 2;+- }+-+- return JGETC(cinfo);++ output_message( cominfo);++ longjmp(setjmp_buffer, 1); /* return control to outer routine */+ }+ + +-/* Required control-hook routine */+-+-+ static void+-d_ui_method_selection (cinfo)+- decompress_info_ptr cinfo;++jpegInfo (cinfo)++ j_decompress_ptr cinfo;+ {+- /* if grayscale input, force grayscale output; */+- /* else leave the output colorspace as set by main routine. */+- if (cinfo->jpeg_color_space == CS_GRAYSCALE)+- cinfo->out_color_space = CS_GRAYSCALE;+-+- /* Create display of image parameters */+- if (verbose) {++ /* Create display of image parameters */+ printf("%s is a %dx%d JPEG image, color space ", filename,+ cinfo->image_width, cinfo->image_height);+ switch (cinfo->jpeg_color_space) {+- case CS_UNKNOWN:+- printf("Unknown");+- break;+- case CS_GRAYSCALE:+- printf("Grayscale");+- break;+- case CS_RGB:+- printf("RGB");+- break;+- case CS_YCbCr:+- printf("YCbCr");+- break;+- case CS_YIQ:+- printf("YIQ");+- break;+- case CS_CMYK:+- printf("CMYK");+- break;++ case JCS_GRAYSCALE:++ printf("Grayscale");++ break;++ case JCS_RGB:++ printf("RGB");++ break;++ case JCS_YCbCr:++ printf("YCbCr");++ break;++ case JCS_CMYK:++ printf("CMYK");++ break;++ case JCS_YCCK:++ printf("YCCK");++ break;++ case JCS_UNKNOWN:++ default:++ printf("Unknown");++ break;+ }+ printf(", %d comp%s,", cinfo->num_components,+- cinfo->num_components ? "s." : ".");++ (cinfo->num_components - 1) ? "s" : "");++ if (cinfo->progressive_mode)++ printf(" Progressive,");+ if (cinfo->arith_code)+- printf(" Arithmetic coding\n");++ printf(" Arithmetic coding.\n");+ else+- printf(" Huffman coding\n");+- }+-+- /* Turn off caching beyond this point of the file */+- znocache(input_file);+-+- /* If we only wanted to identify the image, abort now */+- if (identify) {+- (*emethods->free_all) (); /* clean up memory allocation & temp files */+- longjmp(setjmp_buffer, 10); /* return control with success code */+- }+-+- /* select output routines */+- cinfo->methods->output_init = output_init;+- cinfo->methods->put_color_map = put_color_map;+- cinfo->methods->put_pixel_rows = put_pixel_rows;+- cinfo->methods->output_term = output_term;++ printf(" Huffman coding.\n");+ }+ + + /* Main control routine for loading */+ +-+ Image *+-jpegLoad (fullname, name, vbose)++jpegLoad (fullname, name, verbose)+ char *fullname, *name;+- unsigned int vbose;++ unsigned int verbose;+ {+- struct Decompress_info_struct cinfo;+- struct Decompress_methods_struct dc_methods;+- struct External_methods_struct e_methods;+-+- input_file = zopen(fullname); /* Open the input file */+- if (input_file == NULL)+- return NULL;+-+- /* Quick check to see if file starts with JPEG SOI marker */+- if (zgetc(input_file) != 0xFF || zgetc(input_file) != 0xD8) {+- zclose(input_file);+- return NULL;+- }++ struct jpeg_decompress_struct cinfo;++ struct jpeg_source_mgr src_mgr;++ struct jpeg_error_mgr err_mgr;++ int i, row_stride;++ byte *bufp;++++ zinput_file = zopen(fullname); /* Open the input file */++ if (zinput_file == NULL)++ return NULL;++ filename = name; /* copy parms to static vars */++ image = NULL; /* in case we fail before creating image */++++ jpeg_create_decompress(&cinfo);++ src_mgr.init_source = init_source;++ src_mgr.fill_input_buffer = fill_input_buffer;++ src_mgr.skip_input_data = skip_input_data;++ src_mgr.resync_to_restart = resync_to_restart;++ src_mgr.term_source = term_source;++ cinfo.src = &src_mgr; /* links to method structs */++ err_mgr.error_exit = error_exit; /* supply error-exit routine */++ err_mgr.output_message = output_message;++ err_mgr.trace_level = 0; /* default = no tracing */++ err_mgr.num_warnings = 0; /* no warnings emitted yet */++ cinfo.err = jpeg_std_error(&err_mgr);++++ src_mgr.bytes_in_buffer = 0;++ fill_input_buffer( &cinfo);++ /* Quick check to see if file starts with JPEG SOI marker */++ if(jpeg_read_buff[0] != 0xFF || jpeg_read_buff[1] != 0xD8) {++ zclose(zinput_file);++ return NULL;++ }++++ /* prepare setjmp context for possible exit from error_exit */++ if (setjmp(setjmp_buffer)) {++ /* If we get here, the JPEG code has signaled an error. */++ /* Return as much of the image as we could get. */++ jpeg_destroy_decompress(&cinfo);++ zclose(zinput_file);++ return image;++ }++ ++ jpeg_read_header(&cinfo, TRUE);++ if (verbose) jpegInfo(&cinfo);++ /* Turn off caching beyond this point of the file */++ znocache(zinput_file);++ jpeg_start_decompress(&cinfo);++++ switch (cinfo.out_color_space) {++ case JCS_GRAYSCALE:++ image = newRGBImage(cinfo.image_width,cinfo.image_height,8);++ image->title = dupString(filename);++ /* set a linear map */++ for(i=0;i<256;i++) {++ *(image->rgb.red + i) = ++ *(image->rgb.green + i) = ++ *(image->rgb.blue + i) = i << 8;++ }++ image->rgb.used = 256;++ break;++ case JCS_RGB:++ image = newTrueImage(cinfo.image_width,cinfo.image_height);++ image->title = dupString(filename);++ break;++ default:++ image = NULL;++ ERREXITS(&cinfo, 1, "Cannot cope with JPEG image colorspace");++ }++++ row_stride = cinfo.output_width * cinfo.output_components;++ bufp = image->data;++ while (cinfo.output_scanline < cinfo.output_height) {++ jpeg_read_scanlines(&cinfo, &bufp, 1);++ bufp += row_stride;++ }++++ jpeg_finish_decompress(&cinfo);++ jpeg_destroy_decompress(&cinfo);++ zclose(zinput_file); /* Done, close the input file */+ +- filename = name; /* copy parms to static vars */+- verbose = vbose;+- identify = 0;+-+- image = NULL; /* in case we fail before creating image */+-+- cinfo.methods = &dc_methods; /* links to method structs */+- cinfo.emethods = &e_methods;+- emethods = &e_methods; /* save struct addr for possible access */+- e_methods.error_exit = error_exit; /* supply error-exit routine */+- e_methods.trace_message = trace_message; /* supply trace-message routine */+- e_methods.trace_level = 0; /* default = no tracing */+- e_methods.num_warnings = 0; /* no warnings emitted yet */+- e_methods.first_warning_level = 0; /* display first corrupt-data warning */+- e_methods.more_warning_level = 3; /* but suppress additional ones */+-+- /* prepare setjmp context for possible exit from error_exit */+- if (setjmp(setjmp_buffer)) {+- /* If we get here, the JPEG code has signaled an error. */+- /* Return as much of the image as we could get. */+- zclose(input_file);+ return image;+- }+-+- jselmemmgr(&e_methods); /* select std memory allocation routines */+-+- /* Set up default decompression parameters. */+- j_d_defaults(&cinfo, TRUE);+-+- /* Override default methods */+- dc_methods.d_ui_method_selection = d_ui_method_selection;+- dc_methods.read_jpeg_data = read_jpeg_data;+-+- /* Insert fake SOI into the input buffer --- needed cause we read it above */+- cinfo.next_input_byte = cinfo.input_buffer + MIN_UNGET;+- cinfo.next_input_byte[0] = (char) 0xFF;+- cinfo.next_input_byte[1] = (char) 0xD8; /* SOI marker */+- cinfo.bytes_in_buffer = 2;+-+- /* Set up to read a JFIF or baseline-JPEG file. */+- /* This is the only JPEG file format currently supported. */+- jselrjfif(&cinfo);+-+- /* Here we go! */+- jpeg_decompress(&cinfo);+-+- zclose(input_file); /* Done, close the input file */+-+- return image;+ }+ + +-/* Main control routine for identifying JPEG without loading */+-+-++/*++ Main control routine for identifying JPEG without loading++ return 0: Not jpeg file.++ */+ int+ jpegIdent (fullname, name)+ char *fullname, *name;+ {+- struct Decompress_info_struct cinfo;+- struct Decompress_methods_struct dc_methods;+- struct External_methods_struct e_methods;+-+- input_file = zopen(fullname); /* Open the input file */+- if (input_file == NULL)+- return 0;+-+- /* Quick check to see if file starts with JPEG SOI marker */+- if (zgetc(input_file) != 0xFF || zgetc(input_file) != 0xD8) {+- zclose(input_file);+- return 0;+- }++ struct jpeg_decompress_struct cinfo;++ struct jpeg_source_mgr src_mgr;++ struct jpeg_error_mgr err_mgr;++++ zinput_file = zopen(fullname); /* Open the input file */++ if (zinput_file == NULL)++ return 0;++++ filename = name; /* copy parms to static vars */++++ jpeg_create_decompress(&cinfo);++ src_mgr.init_source = init_source;++ src_mgr.fill_input_buffer = fill_input_buffer;++ src_mgr.skip_input_data = skip_input_data;++ src_mgr.resync_to_restart = resync_to_restart;++ src_mgr.term_source = term_source;++ cinfo.src = &src_mgr; /* links to method structs */++ err_mgr.error_exit = error_exit; /* supply error-exit routine */++ err_mgr.output_message = output_message;++ err_mgr.trace_level = 0; /* default = no tracing */++ err_mgr.num_warnings = 0; /* no warnings emitted yet */++ cinfo.err = jpeg_std_error(&err_mgr);++++ src_mgr.bytes_in_buffer = 0;++ fill_input_buffer( &cinfo);++ /* Quick check to see if file starts with JPEG SOI marker */++ if(jpeg_read_buff[0] != 0xFF || jpeg_read_buff[1] != 0xD8) {++ jpeg_destroy_decompress(&cinfo);++ zclose(zinput_file);++ return 0;++ }++++ /* prepare setjmp context for expected exit via longjmp */++ if (setjmp(setjmp_buffer)) {++ /* If we get here, the JPEG code has signaled an error. */++ /* Return 0 since error in the headers means the image is unloadable. */++ jpeg_destroy_decompress(&cinfo);++ zclose(zinput_file);++ return 0;++ }++++ jpeg_read_header(&cinfo, TRUE);++ jpegInfo(&cinfo);++ /* Turn off caching beyond this point of the file */++ znocache(zinput_file);++ jpeg_destroy_decompress(&cinfo);++ zclose(zinput_file);+ +- /* We want to find and display the image dimensions, and also+- * verify that the header markers are not corrupt. To do this,+- * we fire up the JPEG decoder as normal, but when d_ui_method_selection+- * is called, we abort the process by longjmp'ing back here.+- * This works nicely since the headers are all read at that point.+- */+-+- filename = name; /* copy parms to static vars */+- verbose = 1;+- identify = 1;+-+- cinfo.methods = &dc_methods; /* links to method structs */+- cinfo.emethods = &e_methods;+- emethods = &e_methods; /* save struct addr for possible access */+- e_methods.error_exit = error_exit; /* supply error-exit routine */+- e_methods.trace_message = trace_message; /* supply trace-message routine */+- e_methods.trace_level = 0; /* default = no tracing */+- e_methods.num_warnings = 0; /* no warnings emitted yet */+- e_methods.first_warning_level = 0; /* display first corrupt-data warning */+- e_methods.more_warning_level = 3; /* but suppress additional ones */+-+- /* prepare setjmp context for expected exit via longjmp */+- switch (setjmp(setjmp_buffer)) {+- case 0:+- /* First time thru, keep going */+- break;+- case 10:+- /* Successful exit from d_ui_method_selection; return A-OK */+- zclose(input_file);+ return 1;+- default:+- /* If we get here, the JPEG code has signaled an error. */+- /* Return 0 since error in the headers means the image is unloadable. */+- zclose(input_file);+- return 0;+- }+-+- jselmemmgr(&e_methods); /* select std memory allocation routines */+-+- /* Set up default decompression parameters. */+- j_d_defaults(&cinfo, TRUE);+-+- /* Override default methods */+- dc_methods.d_ui_method_selection = d_ui_method_selection;+- dc_methods.read_jpeg_data = read_jpeg_data;+-+- /* Insert fake SOI into the input buffer --- needed cause we read it above */+- cinfo.next_input_byte = cinfo.input_buffer + MIN_UNGET;+- cinfo.next_input_byte[0] = (char) 0xFF;+- cinfo.next_input_byte[1] = (char) 0xD8; /* SOI marker */+- cinfo.bytes_in_buffer = 2;+-+- /* Set up to read a JFIF or baseline-JPEG file. */+- /* This is the only JPEG file format currently supported. */+- jselrjfif(&cinfo);+-+- /* Here we go! */+- jpeg_decompress(&cinfo);+-+- /* Don't expect to get here since d_ui_method_selection should do longjmp */+-+- zclose(input_file);+- return 0;+-}+-+-/* information necessary to extract image data+- */+-static struct {+- Image *image;+- byte *current_row;+- unsigned int bytes_per_row;+-} ReadInfo;+-+-static void input_init(cinfo)+-compress_info_ptr cinfo;+-{+- /* this is done in jpegDump()+- */+-}+-+-static void input_term(cinfo)+-compress_info_ptr cinfo;+-{+- /* there is no shutdown necessary+- */+-}+-+-/* this reads a single raster line+- */+-static void read_row(cinfo, pixel_rows)+- compress_info_ptr cinfo;+- JSAMPARRAY pixel_rows;+-{+- register int x;+- register int pixlen;+- register byte *src_row_ptr;+- register byte *dest_red_ptr;+- register byte *dest_green_ptr;+- register byte *dest_blue_ptr;+- register Pixel pixval;+- register byte mask;+-+- switch (ReadInfo.image->type) {+- case IBITMAP:+- mask = 0x80;+- src_row_ptr = ReadInfo.current_row;+- dest_red_ptr = (byte *)pixel_rows[0];+- for (x = 0; x < cinfo->image_width; x++) {+- pixval = ((*src_row_ptr & mask) > 0 ? 1 : 0);+-+- /* we use the "red" color value under the assumption that they+- * are all equal. that can be wrong if the user used -foreground+- * or -background. I don't care right now.+- */+- *(dest_red_ptr++) = ReadInfo.image->rgb.red[pixval] >> 8;+- mask >>= 1;+- if (mask == 0) {+- mask = 0x80;+- src_row_ptr++;+- }+- }+- break;+-+- case IRGB:+- /* this expands the pixel value into its components+- */+- pixlen = ReadInfo.image->pixlen;+- src_row_ptr = ReadInfo.current_row;+- dest_red_ptr = (byte *)pixel_rows[0];+- dest_green_ptr = (byte *)pixel_rows[1];+- dest_blue_ptr = (byte *)pixel_rows[2];+- for (x = 0; x < cinfo->image_width; x++) {+- pixval = memToVal(src_row_ptr, pixlen);+- *(dest_red_ptr++) = ReadInfo.image->rgb.red[pixval] >> 8;+- *(dest_green_ptr++) = ReadInfo.image->rgb.green[pixval] >> 8;+- *(dest_blue_ptr++) = ReadInfo.image->rgb.blue[pixval] >> 8;+- src_row_ptr += pixlen;+- }+- break;+-+- case ITRUE:+- src_row_ptr = ReadInfo.current_row;+- dest_red_ptr = (byte *)pixel_rows[0];+- dest_green_ptr = (byte *)pixel_rows[1];+- dest_blue_ptr = (byte *)pixel_rows[2];+- for (x = 0; x < cinfo->image_width; x++) {+- *(dest_red_ptr++) = *(src_row_ptr++);+- *(dest_green_ptr++) = *(src_row_ptr++);+- *(dest_blue_ptr++) = *(src_row_ptr++);+- }+- break;+- }+- ReadInfo.current_row += ReadInfo.bytes_per_row;+ }+ + /*+- * This routine gets control after the input file header has been read.+- * It must determine what output JPEG file format is to be written,+- * and make any other compression parameter changes that are desirable.++ * Dump Jpeg+ */+ +-static void+-c_ui_method_selection (cinfo)+- compress_info_ptr cinfo;+-{+- /* If the input is gray scale, generate a monochrome JPEG file. */+- if (cinfo->in_color_space == CS_GRAYSCALE)+- j_monochrome_default(cinfo);+- jselwjfif(cinfo);+-}+-+ /* parse options passed to jpegDump+ */+-static void parseOptions(cinfo, options, verbose)+- compress_info_ptr cinfo;+- char *options;+- int verbose;++static void parseOptions(j_compress_ptr cinfo, char *options, int verbose)+ {+ char *name, *value;+ +- /* (Re-)initialize the system-dependent error and memory managers. */+- jselerror(cinfo->emethods); /* error/trace message routines */+- jselmemmgr(cinfo->emethods); /* memory allocation routines */+- cinfo->methods->c_ui_method_selection = c_ui_method_selection;+-+- /* Set up default JPEG parameters. */+- /* Note that default -quality level here need not, and does not,+- * match the default scaling for an explicit -qtables argument.+- */+- j_c_defaults(cinfo, 75, FALSE); /* default quality level = 75 */+-+ while (getNextTypeOption(&options, &name, &value) > 0) {+ if (!strncmp("arithmetic", name, strlen(name))) {+ /* Use arithmetic coding. */+@@ -516,15 +321,15 @@ static void parseOptions(cinfo, options,+ cinfo->arith_code = TRUE;+ #else+ fprintf(stderr, "jpegDump: sorry, arithmetic coding not supported\n");+- }+ #endif++ }+ else if (!strncmp("grayscale", name, strlen(name)) ||+ !strncmp("greyscale", name, strlen(name)) ||+ !strncmp("monochrome", name, strlen(name))) {+ /* Force a monochrome JPEG file to be generated. */+ if (verbose)+ printf(" Creating a grayscale/monochrome file.\n");+- j_monochrome_default(cinfo);++ jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);+ }+ else if (!strncmp("nointerleave", name, strlen(name))) {+ /* Create noninterleaved file. */+@@ -536,16 +341,18 @@ static void parseOptions(cinfo, options,+ fprintf(stderr, "jpegDump: sorry, multiple-scan support was not compiled\n");+ #endif+ }++ else if (!strncmp("progressive", name, strlen(name))) {++ /* Enable progressive JPEG. */++ if (verbose)++ printf(" Progressive JPEG.\n");++ jpeg_simple_progression (cinfo);++ }+ else if (!strncmp("optimize", name, strlen(name)) ||+ !strncmp("optimise", name, strlen(name))) {+ /* Enable entropy parm optimization. */+-#ifdef ENTROPY_OPT_SUPPORTED+ if (verbose)+ printf(" Optimizing entropy.\n");+ cinfo->optimize_coding = TRUE;+-#else+- fprintf(stderr, "jpegDump: sorry, entropy optimization was not compiled\n");+-#endif+ }+ else if (!strncmp("quality", name, strlen(name))) {+ /* Quality factor (quantization table scaling factor). */+@@ -561,7 +368,7 @@ static void parseOptions(cinfo, options,+ */+ if (verbose)+ printf(" Using a quality factor of %d.\n", val);+- j_set_quality(cinfo, val, FALSE);++ jpeg_set_quality(cinfo, val, FALSE);+ #if 0+ /* Change scale factor in case -qtables is present. */+ q_scale_factor = j_quality_scaling(val);+@@ -626,74 +433,134 @@ static void parseOptions(cinfo, options,+ }+ }+ +-void jpegDump(image, options, file, verbose)+- Image *image;+- char *options;+- char *file;+-{+- struct Compress_info_struct cinfo;+- struct Compress_methods_struct c_methods;+- struct External_methods_struct e_methods;+-+- if (verbose)+- printf("Dumping JFIF-style JPEG image to %s.\n", file);+-+- /* Set up links to method structures. */+- cinfo.methods = &c_methods;+- cinfo.emethods = &e_methods;+-+- /* set up "input methods" that handle "reading" from our image file+- */+- cinfo.methods->input_init = input_init;+- cinfo.methods->input_term = input_term;+- cinfo.methods->get_input_row = read_row;+-+- /* set up output file; there is no input file+- */+- cinfo.input_file = NULL;+- cinfo.output_file = fopen(file, "w");+- if (cinfo.output_file == NULL) {+- perror(file);+- return;+- }++/* this reads a single raster line++ */+ +- ReadInfo.image = image;+- ReadInfo.current_row = image->data;++byte *current_row;++unsigned int bytes_per_row;+ +- /* parse the options the user gave us+- */+- parseOptions(&cinfo, options, verbose);+-+- /* set up image information+- */+- cinfo.image_width = image->width;+- cinfo.image_height = image->height;+-+- switch (image->type) {+- case IBITMAP:+- ReadInfo.bytes_per_row = (image->width / 8) + (image->width % 8 ? 1 : 0);+- cinfo.input_components = 1;+- cinfo.in_color_space = CS_GRAYSCALE;+- cinfo.data_precision = 8;+- break;+- case IRGB:+- ReadInfo.bytes_per_row = image->width * image->pixlen;+- cinfo.input_components = 3;+- cinfo.in_color_space = CS_RGB;+- cinfo.data_precision = 8;+- break;+- case ITRUE:+- ReadInfo.bytes_per_row = image->width * image->pixlen;+- cinfo.input_components = 3;+- cinfo.in_color_space = CS_RGB;+- cinfo.data_precision = 8;+- break;+- }++static byte *read_row(Image *image, byte *pixel_rows)++{++ int x;++ int pixlen;++ byte *src_row_ptr = current_row;++ byte *dest_row_ptr = pixel_rows;++ Pixel pixval;++ byte mask;++++ switch (image->type) {++ case IBITMAP:++ mask = 0x80;++ for (x = 0; x < image->width; x++) {++ pixval = ((*src_row_ptr & mask) > 0 ? 1 : 0);+ +- /* compress, baby+- */+- jpeg_compress(&cinfo);++ /* we use the "red" color value under the assumption that they++ * are all equal. that can be wrong if the user used -foreground++ * or -background. I don't care right now.++ */++ *dest_row_ptr++ = image->rgb.red[pixval] >> 8;++ mask >>= 1;++ if (mask == 0) {++ mask = 0x80;++ src_row_ptr++;++ }++ }++ break;+ +- fclose(cinfo.output_file);+- return;++ case IRGB:++ /* this expands the pixel value into its components++ */++ pixlen = image->pixlen;++ for (x = 0; x < image->width; x++) {++ pixval = memToVal(src_row_ptr, pixlen);++ *dest_row_ptr++ = image->rgb.red[pixval] >> 8;++ *dest_row_ptr++ = image->rgb.green[pixval] >> 8;++ *dest_row_ptr++ = image->rgb.blue[pixval] >> 8;++ src_row_ptr += pixlen;++ }++ break;++++ case ITRUE:++ return current_row;++ break;++ }++ return pixel_rows;++}++++void jpegDump(Image *image, char *options, char *file, int verbose)++{++ struct jpeg_compress_struct cinfo;++ struct jpeg_error_mgr jerr;++ FILE * outfile; /* target file */++ JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */++++ cinfo.err = jpeg_std_error(&jerr);++ jpeg_create_compress(&cinfo);++++ if ((outfile = fopen(file, "w")) == NULL) {++ perror(file);++ return;++ }++ jpeg_stdio_dest(&cinfo, outfile);++++ cinfo.image_width = image->width;++ cinfo.image_height = image->height;++++ /* set # of color components per pixel & colospace fo input image */++ switch (image->type) {++ case IBITMAP:++ bytes_per_row = (image->width / 8) + (image->width % 8 ? 1 : 0);++ cinfo.input_components = 1;++ cinfo.in_color_space = JCS_GRAYSCALE;++ row_pointer[0] = lmalloc( cinfo.image_width * cinfo.input_components);++ break;++ case IRGB:++ bytes_per_row = image->width * image->pixlen;++ cinfo.input_components = 3;++ cinfo.in_color_space = JCS_RGB; /* colorspace of input image */++ row_pointer[0] = lmalloc( cinfo.image_width * cinfo.input_components);++ break;++ case ITRUE:++ bytes_per_row = image->width * image->pixlen;++ cinfo.input_components = 3;++ cinfo.in_color_space = JCS_RGB; /* colorspace of input image */++ row_pointer[0] = image->data;++ break;++ }++ /* Now use the library's routine to set default compression parameters.++ * (You must set at least cinfo.in_color_space before calling this,++ * since the defaults depend on the source color space.)++ */++ jpeg_set_defaults(&cinfo);++ /* Now you can set any non-default parameters you wish to.++ * Here we just illustrate the use of quality (quantization table) scaling:++ */++ jpeg_set_quality(&cinfo, 75, TRUE /* limit to baseline-JPEG values */);++ if( cinfo.in_color_space == JCS_GRAYSCALE)++ jpeg_set_colorspace(&cinfo, JCS_GRAYSCALE);++ parseOptions(&cinfo, options, verbose);++++ jpeg_start_compress(&cinfo, TRUE);++ ++ current_row = image->data;++ while (cinfo.next_scanline < cinfo.image_height) {++ /* jpeg_write_scanlines expects an array of pointers to scanlines.++ * Here the array is only one element long, but you could pass++ * more than one scanline at a time if that's more convenient.++ */++ row_pointer[0] = read_row(image, row_pointer[0]);++ (void) jpeg_write_scanlines(&cinfo, row_pointer, 1);++ current_row += bytes_per_row;++ }++++ jpeg_finish_compress(&cinfo);++ fclose(outfile);++ jpeg_destroy_compress(&cinfo);++ if (image->type == IBITMAP || image->type == IRGB) {++ lfree( row_pointer[0]);++ }+ }++++#else /* !HAVE_LIBJPEG */++static int unused;++#endif /* !HAVE_LIBJPEG */+Index: xloadimage.4.1.old/misc.c+===================================================================+--- xloadimage.4.1.old.orig/misc.c++++ xloadimage.4.1.old/misc.c+@@ -10,6 +10,7 @@+ + #include "copyright.h"+ #include "xloadimage.h"++#include "misc.h"+ #ifdef VMS+ #include "patchlevel."+ #else+@@ -32,8 +33,10 @@ static char *signalName(sig)+ switch (sig) {+ case SIGSEGV:+ return("SEGV");++#ifdef SIGBUS+ case SIGBUS:+ return("BUS");++#endif+ case SIGFPE:+ return("FPE");+ case SIGILL:+@@ -149,7 +152,7 @@ int errorHandler(disp, error)+ { char errortext[BUFSIZ];+ + XGetErrorText(disp, error->error_code, errortext, BUFSIZ);+- fprintf(stderr, "xloadimage: X Error: %s on 0x%x\n",++ fprintf(stderr, "xloadimage: X Error: %s on 0x%lx\n",+ errortext, error->resourceid);+ if (_Xdebug) /* if -debug mode is enabled, dump a core when we hit this */+ abort();+Index: xloadimage.4.1.old/niff.c+===================================================================+--- xloadimage.4.1.old.orig/niff.c++++ xloadimage.4.1.old/niff.c+@@ -9,29 +9,32 @@+ */+ + #include "image.h"++#ifdef HAVE_UNISTD_H++#include <unistd.h>++#endif+ #include "niff.h"+ + static void babble(name, header, title)++ char *name;+ struct niff_header *header;+ char *title;+ {+- printf("%s is a %dx%d ", name,++ printf("%s is a %ldx%ld ", name,+ memToVal(header->width, 4),+- memToVal(header->height, 4),+- memToVal(header->depth, 4));++ memToVal(header->height, 4));+ if (memToVal(header->version, 4) != NIFF_VERSION)+- printf("version %d ", memToVal(header->version, 4));++ printf("version %ld ", memToVal(header->version, 4));+ printf("NIFF ");+ switch (header->type) {+ case NIFF_BITMAP:+ printf("bitmap image");+ break;+ case NIFF_RGB:+- printf("%d-bit RGB image with %d colors",++ printf("%ld-bit RGB image with %ld colors",+ memToVal(header->depth, 4), memToVal(header->cmap_size, 4));+ break;+ case NIFF_TRUE:+- printf("%d-bit true color image", memToVal(header->depth, 4));++ printf("%ld-bit true color image", memToVal(header->depth, 4));+ break;+ default:+ printf("image with an unknown type");+@@ -121,8 +124,8 @@ Image *niffLoad(fullname, name, verbose)+ struct niff_header header;+ char *title;+ unsigned int width, height, depth;+- Image *image;+- unsigned int data_size;++ Image *image = NULL;++ unsigned int data_size = 0;+ + if (! (zf= zopen(fullname)))+ return(NULL);+@@ -191,7 +194,7 @@ void niffDump(image, options, filename,+ unsigned int a;+ struct niff_header header;+ struct niff_cmap cmap;+- unsigned int data_size;++ unsigned int data_size = 0;+ + if (verbose)+ printf("Dumping NIFF image to %s.\n", filename);+Index: xloadimage.4.1.old/pbm.c+===================================================================+--- xloadimage.4.1.old.orig/pbm.c++++ xloadimage.4.1.old/pbm.c+@@ -12,6 +12,7 @@+ */+ + #include "image.h"++#include "options.h"+ #include "pbm.h"+ + /* SUPPRESS 558 */+@@ -188,14 +189,14 @@ Image *pbmLoad(fullname, name, verbose)+ char *fullname, *name;+ unsigned int verbose;+ { ZFILE *zf;+- Image *image;++ Image *image = NULL;+ int pbm_type;+ int x, y;+ int width, height, maxval, depth;+ unsigned int linelen;+ byte srcmask, destmask;+ byte *destptr, *destline;+- int src, size;++ int src = 0, size;+ int red, grn, blu;+ + if (! (zf= zopen(fullname)))+Index: xloadimage.4.1.old/rlelib.c+===================================================================+--- xloadimage.4.1.old.orig/rlelib.c++++ xloadimage.4.1.old/rlelib.c+@@ -12,11 +12,11 @@+ + #include <stdio.h>+ #include <math.h>+-#include <varargs.h>+ #include <ctype.h>+ + #include "image.h" /* need ZFILE definition */+ #include "rle.h"++#include "rlelib.h"+ + /* SUPPRESS 530 */+ /* SUPPRESS 558 */+@@ -710,11 +710,12 @@ register char *v;+ {+ for ( ; *n != '\0' && *n != '=' && *n == *v; n++, v++ )+ ;+- if (*n == '\0' || *n == '=')++ if (*n == '\0' || *n == '=') {+ if ( *v == '\0' )+ return v;+ else if ( *v == '=' )+ return ++v;++ }+ + return NULL;+ }+@@ -820,7 +821,7 @@ static void bfill();+ * Algorithm:+ * Read in the setup info and fill in sv_globals.+ */+-rle_get_setup( globals )++int rle_get_setup( globals )+ struct sv_globals * globals;+ {+ struct XtndRsetup setup;+@@ -980,7 +981,8 @@ struct sv_globals * globals;+ * Returns code.+ */+ +-rle_get_error( code, pgmname, fname )++int rle_get_error( code, pgmname, fname )++int code;+ char *pgmname;+ char *fname;+ {+@@ -1099,7 +1101,7 @@ int on_off;+ * decoding the instructions into scanline data.+ */+ +-rle_getrow( globals, scanline )++int rle_getrow( globals, scanline )+ struct sv_globals * globals;+ rle_pixel *scanline[];+ {+@@ -1229,7 +1231,7 @@ rle_pixel *scanline[];+ + scanc += nc;+ scan_x += nc;+- if ( debug_f )++ if ( debug_f ) {+ if ( SV_BIT( *globals, channel ) )+ {+ rle_pixel * cp = scanc - nc;+@@ -1240,6 +1242,7 @@ rle_pixel *scanline[];+ }+ else+ fprintf( stderr, "Pixel data %d (to %d)\n", nc, scan_x );++ }+ break;+ + case RRunDataOp:+@@ -1585,7 +1588,7 @@ int magic16x16[16][16] =+ * Algorithm:+ * Chose sub cell of 16 by 16 magic square+ */+-make_magic( size, magic )++void make_magic( size, magic )+ int size;+ int magic[16][16];+ {+@@ -1595,7 +1598,7 @@ int magic[16][16];+ + total = size * size;+ +- i = 0;++ i = bx = by = 0;+ li = -1;+ for(j=0;j<total;j++) + {+@@ -1629,7 +1632,7 @@ int magic[16][16];+ * Outputs:+ * Changes gamma array entries.+ */+-make_gamma( gamma, gammamap )++void make_gamma( gamma, gammamap )+ double gamma;+ int gammamap[256];+ {+@@ -1666,7 +1669,7 @@ int gammamap[256];+ * Algorithm:+ * see "Note:" in dithermap comment.+ */+-dithergb( x, y, r, g, b, levels, divN, modN, magic )++int dithergb( x, y, r, g, b, levels, divN, modN, magic )+ int divN[256];+ int modN[256];+ int magic[16][16];+@@ -1696,7 +1699,7 @@ int magic[16][16];+ * Algorithm:+ * see "Note:" in bwdithermap comment.+ */+-ditherbw( x, y, val, divN, modN, magic )++int ditherbw( x, y, val, divN, modN, magic )+ int divN[256];+ int modN[256];+ int magic[16][16];+Index: xloadimage.4.1.old/sunraster.c+===================================================================+--- xloadimage.4.1.old.orig/sunraster.c++++ xloadimage.4.1.old/sunraster.c+@@ -42,7 +42,7 @@ static void babble(name, header)+ default:+ printf(" unknown-type");+ }+- printf(" %dx%d", memToVal(header->width, 4), memToVal(header->height, 4));++ printf(" %ldx%ld", memToVal(header->width, 4), memToVal(header->height, 4));+ + switch (memToVal(header->depth, 4)) {+ case 1:+@@ -240,7 +240,8 @@ Image *sunRasterLoad(fullname, name, ver+ case RTIFF: /* sorry, don't even know what these are */+ case RIFF:+ default:+- fprintf(stderr, "%s: Unsupported Sun Rasterfile image type (sorry)\n");++ fprintf(stderr, "%s: Unsupported Sun Rasterfile image type (sorry)\n",++ name);+ return(NULL);+ }+ +@@ -255,7 +256,7 @@ Image *sunRasterLoad(fullname, name, ver+ /*+ * Handle color...+ */+- if (mapsize= memToVal(header.maplen, 4)) {++ if ((mapsize= memToVal(header.maplen, 4))) {+ map= lmalloc(mapsize);+ if (zread(zf, map, mapsize) < mapsize) {+ printf("sunRasterLoad: Bad read on colormap\n");+Index: xloadimage.4.1.old/tiff.c+===================================================================+--- xloadimage.4.1.old.orig/tiff.c++++ xloadimage.4.1.old/tiff.c+@@ -5,10 +5,15 @@+ * jim frost 09.05.93+ */+ +-#ifdef HAS_TIFF+-+ #include "image.h"+-#include "tiff/tiffio.h"++#include "options.h"++#ifdef HAVE_LIBTIFF++++#include <tiffio.h>++++#ifndef TIFF_VERSION_CLASSIC /* libtiff4 or libtiff5? */++#define TIFFHeaderCommon TIFFHeader++#endif+ + /* this structure contains all the information we care about WRT a TIFF+ * image.+@@ -33,14 +38,14 @@ static TIFF *is_tiff(fullname, name, inf+ struct tiff_info *info;+ {+ ZFILE *zf;+- TIFFHeader th;++ TIFFHeaderClassic th;+ TIFF *tiff;+ + zf = zopen(fullname);+ + /* read TIFF header and see if it looks right+ */+- if ((zread(zf, (byte *)&th, sizeof(TIFFHeader)) == sizeof(TIFFHeader)) &&++ if ((zread(zf, (byte *)&th, sizeof(TIFFHeaderClassic)) == sizeof(TIFFHeaderClassic)) &&+ ((th.tiff_magic == TIFF_BIGENDIAN) ||+ (th.tiff_magic == TIFF_LITTLEENDIAN))) {+ +@@ -124,14 +129,14 @@ static char *photometricName(info)+ switch (info->photometric) {+ case PHOTOMETRIC_MINISBLACK:+ if (info->bitspersample > 1) {+- sprintf(buf, "%d-bit greyscale ", info->bitspersample);++ snprintf(buf, 31, "%d-bit greyscale ", info->bitspersample);+ return(buf);+ }+ else+ return "white-on-black ";+ case PHOTOMETRIC_MINISWHITE:+ if (info->bitspersample > 1) {+- sprintf(buf, "%d-bit greyscale ", info->bitspersample);++ snprintf(buf, 31, "%d-bit greyscale ", info->bitspersample);+ return(buf);+ }+ else+@@ -217,7 +222,7 @@ static void babble(name, info)+ compressionName(info->compression));+ }+ if (info->title)+- printf("Titled \"%s\"");++ printf("Titled \"%s\"", info->title);+ printf("\n");+ }+ +@@ -227,14 +232,14 @@ int tiffIdent(fullname, name)+ struct tiff_info info;+ + tiff = is_tiff(fullname, name, &info);+- babble(name, info);+ if (tiff == NULL)+ return(0);++ babble(name, &info);+ if (tiff == (TIFF *)-1) /* is TIFF, but can't open it */+ return(1);+ TIFFClose(tiff);+ +- babble(fullname, name, info);++/* babble(fullname, name, info); */+ return(1);+ }+ +@@ -404,6 +409,7 @@ Image *tiffLoad(fullname, name, verbose)+ if (info.samplesperpixel != 3) {+ fprintf(stderr,+ "%s: Can't handle TIFF RGB images with %d samples per pixel, sorry\n",++ fullname,+ info.samplesperpixel);+ image = NULL;+ break;+@@ -624,6 +630,6 @@ void tiffDump(image, options, file, verb+ TIFFClose(out);+ }+ +-#else /* !HAS_TIFF */++#else /* !HAVE_LIBTIFF */+ static int unused;+-#endif /* !HAS_TIFF */++#endif /* !HAVE_LIBTIFF */+Index: xloadimage.4.1.old/uufilter.c+===================================================================+--- xloadimage.4.1.old.orig/uufilter.c++++ xloadimage.4.1.old/uufilter.c+@@ -11,8 +11,10 @@+ */+ + #include <stdio.h>++#include <string.h>++#include <stdlib.h>+ +-main(argc, argv)++int main(argc, argv)+ int argc;+ char **argv;+ {+@@ -64,7 +66,7 @@ main(argc, argv)+ fprintf(stderr, "Ignoring header line: %s\n", buf);+ }+ if (feof(inf)) {+- fprintf(stderr, "No 'begin' line, sorry.\n", infilename);++ fprintf(stderr, "%s: No 'begin' line, sorry.\n", infilename);+ exit(1);+ }+ +@@ -162,6 +164,7 @@ main(argc, argv)+ */+ bp = &buf[1];+ phase = 0;++ outchar = 0;+ while (len > 0) {+ unsigned char c;+ +Index: xloadimage.4.1.old/vff.c+===================================================================+--- xloadimage.4.1.old.orig/vff.c++++ xloadimage.4.1.old/vff.c+@@ -29,6 +29,7 @@+ */+ + ++#include <ctype.h>+ #include "image.h"+ + #define HEAD_BUF_SIZE 2048+@@ -149,7 +150,7 @@ Image *image;+ op = image->data;+ skip = bands - 3;+ linewidth = bands * width;+- buf = (unsigned char *)malloc((unsigned)linewidth);++ buf = (unsigned char *)lmalloc((unsigned)linewidth);+ if (buf == NULL) {+ memoryExhausted(); + }+@@ -336,7 +337,7 @@ ZFILE *zf;+ return(0);+ }+ +- if ((header[lines] = (char *)malloc((unsigned)count+1)) == NULL) {++ if ((header[lines] = (char *)lmalloc((unsigned)count+1)) == NULL) {+ memoryExhausted(); + }+ bcopy(buf, header[lines], count);+@@ -360,7 +361,7 @@ ZFILE *zf;+ return(0); /* so that we try and see what was wrong */+ }+ +-vffIdent(fullname, name)++int vffIdent(fullname, name)+ char *fullname, *name;+ {+ +Index: xloadimage.4.1.old/window.c+===================================================================+--- xloadimage.4.1.old.orig/window.c++++ xloadimage.4.1.old/window.c+@@ -15,28 +15,24 @@+ #include <X11/Xatom.h>+ #include <signal.h>+ #include <errno.h>+-#include <sys/types.h>++#ifdef HAVE_UNISTD_H++#include <unistd.h>++#endif++#ifdef HAVE_SYS_TIME_H++#include <sys/time.h>++#endif++#ifdef HAVE_SELECT++#define ENABLE_TIMEOUT++#include <sys/select.h>++#else /* !HAVE_SELECT */+ #ifdef HAS_POLL+ #include <poll.h>+-#else /* !HAS_POLL */+-#ifdef HAS_SELECT_INCLUDE+-#include <sys/select.h>+-#endif /* HAS_SELECT_INCLUDE */+-#endif /* !HAS_POLL */+-+-/* we can use timeouts if either select() or poll() are available.+- */+-#if IS_BSD+-#define ENABLE_TIMEOUT+-#endif+-#if defined(HAS_SELECT_INCLUDE) || defined(HAS_POLL)+ #define ENABLE_TIMEOUT+-#endif++#endif /* !HAS_POLL */++#endif /* !HAVE_SELECT */+ + /* SUPPRESS 560 */+ +-extern int errno; /* not defined in errno.h on some systems */+-+ static Window ImageWindow= 0;+ static Window ViewportWin= 0;+ static Colormap ImageColormap;+@@ -229,7 +225,7 @@ void setViewportColormap(disp, scrn, vis+ int scrn;+ Visual *visual;+ { XSetWindowAttributes swa;+- static cmap_atom= None;++ static Atom cmap_atom= None;+ Window cmap_windows[2];+ + if (cmap_atom == None)+@@ -280,7 +276,7 @@ static char *iconName(s)+ * want to change this.+ */+ +- if (t= rindex(buf, '/')) {++ if ((t= rindex(buf, '/'))) {+ for (s= buf, t++; *t; s++, t++)+ *s= *t;+ *s= '\0';+@@ -298,14 +294,14 @@ static struct visual_class_name {+ int class; /* numerical value of class */+ char *name; /* actual name of class */+ } VisualClassName[] = {+- TrueColor, "TrueColor",+- DirectColor, "DirectColor",+- PseudoColor, "PseudoColor",+- StaticColor, "StaticColor",+- GrayScale, "GrayScale",+- StaticGray, "StaticGray",+- StaticGray, "StaticGrey",+- -1, NULL++ {TrueColor, "TrueColor"},++ {DirectColor, "DirectColor"},++ {PseudoColor, "PseudoColor"},++ {StaticColor, "StaticColor"},++ {GrayScale, "GrayScale"},++ {StaticGray, "StaticGray"},++ {StaticGray, "StaticGrey"},++ {-1, NULL}+ };+ + int visualClassFromName(name)+@@ -395,6 +391,7 @@ static void bestVisual(disp, scrn, image+ * have no visuals that support that depth. seems silly to me....+ */+ ++ visual = NULL;+ depth= 0;+ screen= ScreenOfDisplay(disp, scrn);+ for (a= 0; a < screen->ndepths; a++) {+@@ -577,19 +574,21 @@ char imageInWindow(disp, scrn, image, gl+ unsigned int private_cmap;+ int visual_class;+ ++ oldcmap = 0;++ lastx = 0;+ /* get values from options that we'll use a lot+ */+ fit= (getOption(global_options, FIT) != NULL);+ fullscreen= (getOption(global_options, FULLSCREEN) != NULL);+ install= (getOption(global_options, INSTALL) != NULL);+ private_cmap= (getOption(global_options, PRIVATE) != NULL);+- if (opt= getOption(image_options, DELAY))++ if ((opt= getOption(image_options, DELAY)))+ delay= opt->info.delay;+- else if (opt= getOption(global_options, DELAY))++ else if ((opt= getOption(global_options, DELAY)))+ delay= opt->info.delay;+ else+ delay= 0;+- if (opt= getOption(image_options, VISUAL))++ if ((opt= getOption(image_options, VISUAL)))+ visual_class= opt->info.visual;+ else+ visual_class= -1;+@@ -603,7 +602,7 @@ char imageInWindow(disp, scrn, image, gl+ else {+ char def_geom[30];+ +- sprintf(def_geom, "%ux%u+0+0", image->width, image->height);++ snprintf(def_geom, 29, "%ux%u+0+0", image->width, image->height);+ XGeometry(disp, scrn, opt->info.geometry.string, def_geom, 0, 1, 1, 0, 0,+ (int *)&winx, (int *)&winy, (int *)&winwidth, (int *)&winheight);+ }+@@ -616,13 +615,13 @@ char imageInWindow(disp, scrn, image, gl+ lastx= (winwidth || winheight); /* user set size flag */+ if (!winwidth) {+ winwidth= image->width;+- if (winwidth > DisplayWidth(disp, scrn) * 0.9)+- winwidth= DisplayWidth(disp, scrn) * 0.9;++ if (winwidth > DisplayWidth(disp, scrn) * 0.98)++ winwidth= DisplayWidth(disp, scrn) * 0.98;+ }+ if (!winheight) {+ winheight= image->height;+- if (winheight > DisplayHeight(disp, scrn) * 0.9)+- winheight= DisplayHeight(disp, scrn) * 0.9;++ if (winheight > DisplayHeight(disp, scrn) * 0.95)++ winheight= DisplayHeight(disp, scrn) * 0.95;+ }+ }+ +@@ -902,10 +901,25 @@ char imageInWindow(disp, scrn, image, gl+ + switch (event.any.type) {+ case ButtonPress:+- if (event.button.button == 1) {++ switch (event.button.button) {++ case 1:+ lastx= event.button.x;+ lasty= event.button.y;+ break;++ case 3:++ if (delay)++ alarm(0);++ {++ Cursor cursor;++ cursor= swa_view.cursor;++ swa_view.cursor= XCreateFontCursor(disp, XC_watch);++ XChangeWindowAttributes(disp, ViewportWin, CWCursor, &swa_view);++ XFreeCursor(disp, cursor);++ XFlush(disp);++ cleanUpImage(disp, scrn, swa_view.cursor, pixmap,++ image, ximageinfo);++ }++ return(' ');+ }+ break;+ +Index: xloadimage.4.1.old/xbitmap.c+===================================================================+--- xloadimage.4.1.old.orig/xbitmap.c++++ xloadimage.4.1.old/xbitmap.c+@@ -132,7 +132,7 @@ Image *xbitmapLoad(fullname, name, verbo+ char name_and_type[MAX_SIZE];+ char *type;+ int value;+- int v10p;++ int v10p = 0;+ unsigned int linelen, dlinelen;+ unsigned int x, y;+ unsigned int w = 0, h = 0;+@@ -247,7 +247,7 @@ int xbitmapIdent(fullname, name)+ char *fullname, *name;+ { Image *image;+ +- if (image= xbitmapLoad(fullname, name, (unsigned int)1)) {++ if ((image= xbitmapLoad(fullname, name, (unsigned int)1))) {+ freeImage(image);+ return(1);+ }+Index: xloadimage.4.1.old/xloadimage.c+===================================================================+--- xloadimage.4.1.old.orig/xloadimage.c++++ xloadimage.4.1.old/xloadimage.c+@@ -10,16 +10,19 @@+ + #include "copyright.h"+ #include "xloadimage.h"++#include "options.h"++#include "misc.h"+ #ifdef VMS+ #include "patchlevel."+ #define NO_FORK+ #else+ #include "patchlevel"+ #endif++#ifdef HAVE_UNISTD_H++#include <unistd.h>++#endif+ #include <signal.h>+ +-extern double atof();+-+ char *ProgramName= "xloadimage";+ + /* if an image loader needs to have our display and screen, it will get+@@ -120,6 +123,10 @@ static Image *doProcessOnImage(image, op+ case ZOOM:+ retimage= zoom(image, option->info.zoom.x, option->info.zoom.y, verbose);+ break;++++ default:++ /* Nothing to do */++ break;+ }+ return(retimage);+ }+@@ -166,7 +173,7 @@ static Image *processImage(image, global+ /* the real thing+ */+ +-main(argc, argv)++int main(argc, argv)+ int argc;+ char *argv[];+ { Option *opt;+@@ -192,7 +199,9 @@ main(argc, argv)+ */+ + signal(SIGSEGV, internalError);++#ifdef SIGBUS+ signal(SIGBUS, internalError);++#endif+ signal(SIGFPE, internalError);+ signal(SIGILL, internalError);+ #if defined(_AIX) && defined(_IBMR2)+@@ -230,7 +239,7 @@ main(argc, argv)+ + if (getOption(global_options, IDENTIFY)) {+ for (optset= image_options; optset; optset= optset->next) {+- if (opt= getOption(optset, NAME))++ if ((opt= getOption(optset, NAME)))+ identifyImage(opt->info.name);+ }+ exit(0);+@@ -269,7 +278,7 @@ main(argc, argv)+ onroot= (getOption(global_options, ONROOT) != NULL);+ fullscreen= (getOption(global_options, FULLSCREEN) != NULL);+ shrinktofit= (getOption(global_options, SHRINKTOFIT) != NULL);+- if (opt= getOption(global_options, GEOMETRY)) {++ if ((opt= getOption(global_options, GEOMETRY))) {+ winwidth= opt->info.geometry.w;+ winheight= opt->info.geometry.h;+ }+@@ -351,7 +360,7 @@ main(argc, argv)+ + /* retitle the image if we were asked to+ */+- if (opt= getOption(optset, TITLE)) {++ if ((opt= getOption(optset, TITLE))) {+ if (newimage->title)+ lfree((byte *)newimage->title);+ newimage->title= dupString(opt->info.title);+@@ -370,8 +379,8 @@ main(argc, argv)+ if ((newimage->width > DisplayWidth(disp, scrn)) ||+ (newimage->height > DisplayHeight(disp, scrn))) {+ opt->info.zoom.x= opt->info.zoom.y= +- (newimage->width - DisplayWidth(disp, scrn) >+- newimage->height - DisplayHeight(disp, scrn) ?++ ((int)newimage->width - DisplayWidth(disp, scrn) >++ (int)newimage->height - DisplayHeight(disp, scrn) ?+ (float)DisplayWidth(disp, scrn) / (float)newimage->width * 100.0 :+ (float)DisplayHeight(disp, scrn) / (float)newimage->height * 100.0);+ }+@@ -399,6 +408,9 @@ main(argc, argv)+ / (float)newimage->width * 100.0 :+ ((float)DisplayHeight(disp, scrn) * 0.9)+ / (float)newimage->height * 100.0);++ if ((opt->info.zoom.x > 100) || (opt->info.zoom.y > 100))++ opt->info.zoom.x=opt->info.zoom.y=100;+++ addOption(optset, opt);+ }+ +@@ -425,7 +437,7 @@ main(argc, argv)+ + /* handle -at+ */+- if (opt= getOption(optset, AT))++ if ((opt= getOption(optset, AT)))+ tmpimage= merge(dispimage, newimage,+ opt->info.at.x, opt->info.at.y, verbose);+ else+@@ -467,7 +479,7 @@ main(argc, argv)+ exit(0);+ case ' ':+ case 'n': /* next image */+- if (opt= getOption(optset->next, GOTO)) {++ if ((opt= getOption(optset->next, GOTO))) {+ char *tag= opt->info.go_to;+ + for (tmpset= image_options; tmpset; tmpset= tmpset->next) {+@@ -490,6 +502,8 @@ main(argc, argv)+ if (!tmpset)+ goto redisplay_in_window; /* ick */+ optset= tmpset;++ freeImage(dispimage);++ dispimage= NULL;+ goto get_another_image; /* ick */+ case '<':+ if ((opt = getOption(optset,ZOOM)) == NULL) {+@@ -534,7 +548,7 @@ main(argc, argv)+ for (optset= image_options; optset && optset->next; optset= optset->next)+ /* EMPTY */+ ;+- if (opt= getOption(optset, NAME)) {++ if ((opt= getOption(optset, NAME))) {+ if (dispimage->title)+ lfree((byte *)dispimage->title);+ dispimage->title= dupString(opt->info.title);+Index: xloadimage.4.1.old/bright.c+===================================================================+--- xloadimage.4.1.old.orig/bright.c++++ xloadimage.4.1.old/bright.c+@@ -10,6 +10,7 @@+ + #include "copyright.h"+ #include "image.h"++#include "rlelib.h"+ + /* alter an image's brightness by a given percentage+ */+@@ -73,9 +74,10 @@ void gammacorrect(image, disp_gam, verbo+ double disp_gam;+ unsigned int verbose;+ { int a;+- int gammamap[256];+- unsigned int size;++ static int gammamap[256];+ byte *destptr;++ const byte *endptr, *srcptr;++ static double old_gamma = -1.0;+ + goodImage(image, "gammacorrect");+ if (BITMAPP(image)) /* we're AT&T */+@@ -86,7 +88,9 @@ void gammacorrect(image, disp_gam, verbo+ fflush(stdout);+ }+ +- make_gamma(disp_gam,gammamap);++ if( disp_gam != old_gamma)++ make_gamma(disp_gam,gammamap);++ old_gamma = disp_gam;+ + switch (image->type) {+ case IRGB:+@@ -98,12 +102,13 @@ void gammacorrect(image, disp_gam, verbo+ break;+ + case ITRUE:+- size= image->width * image->height * 3;+- destptr= image->data;+- for (a= 0; a < size; a++) {+- *destptr= gammamap[*destptr];+- destptr++;+- }++ srcptr = destptr = image->data;++ endptr = destptr + image->width * image->height * 3;++ do {++ *destptr++ = gammamap[*srcptr++];++ *destptr++ = gammamap[*srcptr++];++ *destptr++ = gammamap[*srcptr++];++ } while (srcptr < endptr);+ break;+ }+ +@@ -146,6 +151,8 @@ Image *normalize(image, verbose)+ byte *srcptr, *destptr;+ byte array[256];+ ++ newimage = NULL;+++ goodImage(image, "normalize");+ if (BITMAPP(image))+ return(image);+@@ -190,11 +197,11 @@ Image *normalize(image, verbose)+ for (x= 0; x < image->width; x++) {+ pixval= memToVal(srcptr, image->pixlen);+ *destptr= array[image->rgb.red[pixval] >> 8];+- *destptr++;++ destptr++;+ *destptr= array[image->rgb.green[pixval] >> 8];+- *destptr++;++ destptr++;+ *destptr= array[image->rgb.blue[pixval] >> 8];+- *destptr++;++ destptr++;+ srcptr += image->pixlen;+ }+ break;+Index: xloadimage.4.1.old/compress.c+===================================================================+--- xloadimage.4.1.old.orig/compress.c++++ xloadimage.4.1.old/compress.c+@@ -30,7 +30,7 @@+ + #define NIL_PIXEL 0xffffffff+ +-void compress(image, verbose)++void compress_cmap(image, verbose)+ Image *image;+ unsigned int verbose;+ { Pixel hash_table[32768];+@@ -136,15 +136,16 @@ void compress(image, verbose)+ lfree((byte *)pixel_table);+ lfree((byte *)pixel_map);+ +- if (badcount)++ if (badcount) {+ if (verbose)+ printf("%d out-of-range pixels, ", badcount);+ else+ fprintf(stderr, "Warning: %d out-of-range pixels were seen\n",+ badcount);++ }+ if (verbose) {+ if ((rgb.used == image->rgb.used) && !badcount)+- printf("no improvment\n");++ printf("no improvement\n");+ else {+ int unused= image->rgb.used - rgb.used - dupcount;+ if (dupcount)+Index: xloadimage.4.1.old/config.c+===================================================================+--- xloadimage.4.1.old.orig/config.c++++ xloadimage.4.1.old/config.c+@@ -15,17 +15,17 @@+ #include <sys/stat.h>+ #ifndef VMS+ #include <pwd.h>++#include <sys/types.h>+ #endif+ #include <errno.h>+-#ifndef IS_BSD++#ifdef HAVE_UNISTD_H+ #include <unistd.h>+ #endif++#include <stdlib.h>+ + /* SUPPRESS 530 */+ /* SUPPRESS 560 */+ +-extern int errno;+-+ struct filter *Filters = (struct filter *)NULL;+ + static unsigned int NumPaths= 0;+@@ -256,7 +256,8 @@ static void readPathsAndExts(name)+ }+ break;+ case parse_filter_name: /* name of filter program */+- strcpy(filter_name, buf);++ strncpy(filter_name, buf, BUFSIZ - 1);++ filter_name[BUFSIZ - 1] = '\0';+ state= parse_filter_extension;+ break;+ case parse_filter_extension:+@@ -433,14 +434,29 @@ void showConfiguration()+ printf("No filters\n");+ }+ ++/* Work out where this user's home directory is, or default to '/' */++/* XXX needs a VMS guru to supply something plausable for VMS */++static char *homedir()++{ char *p;++ struct passwd *pw;++++ p = getenv("HOME");++ if (p) return p;++++ /* try for a password file lookup instead */++ pw = getpwuid(getuid());++ if (!pw)++ return "/"; /* XXX maybe print message? */++ else++ return pw->pw_dir;++}+++ char *expandPath(p)+ char *p;+ { char buf1[BUFSIZ], buf2[BUFSIZ];+ int b1, b2, var;+ char *ptr;+ +- char *getenv();+-+ buf1[0] = '\0';+ buf2[0] = '\0';+ b1 = 0;+@@ -454,7 +470,8 @@ char *expandPath(p)+ #endif+ else if(*p == '~') {+ buf1[b1] = '\0';+- strcat(buf1, getenv("HOME"));++ strncat(buf1, homedir(), BUFSIZ - strlen(buf1) - 1);++ buf1[BUFSIZ - 1] = '\0';+ b1 = strlen(buf1);+ var = 0;+ }+@@ -462,7 +479,8 @@ char *expandPath(p)+ if(var) {+ buf1[b1] = '\0';+ buf2[b2] = '\0';+- strcat(buf1, getenv(buf2));++ strncat(buf1, getenv(buf2), BUFSIZ - strlen (buf1) - 1);++ buf1[BUFSIZ - 1] = '\0';+ b1 = strlen(buf1);+ buf2[0] = '\0';+ b2 = 0;+Index: xloadimage.4.1.old/new.c+===================================================================+--- xloadimage.4.1.old.orig/new.c++++ xloadimage.4.1.old/new.c+@@ -10,6 +10,9 @@+ + #include "copyright.h"+ #include "image.h"++#ifdef HAVE_MALLOC_H++#include <malloc.h>++#endif+ + extern int _Xdebug;+ +@@ -48,8 +51,8 @@ unsigned long DepthToColorsTable[] = {+ /* 28 */ 268435456,+ /* 29 */ 536870912,+ /* 30 */ 1073741824,+- /* 31 */ 2147483648,+- /* 32 */ 2147483648 /* bigger than unsigned int; this is good enough */++ /* 31 */ 2147483648UL,++ /* 32 */ 2147483648UL /* bigger than unsigned int; this is good enough */+ };+ + unsigned long colorsToDepth(ncolors)+@@ -63,6 +66,18 @@ unsigned long colorsToDepth(ncolors)+ }+ + ++static unsigned int ovmul(unsigned int a, unsigned int b)++{++ unsigned int r;++++ r = a * b;++ if (r / a != b) {++ memoryExhausted();++ }++++ return r;++}+++ void goodImage(image, func)+ Image *image;+ char *func;+@@ -128,7 +143,7 @@ Image *newBitImage(width, height)+ image->height= height;+ image->depth= 1;+ linelen= (width / 8) + (width % 8 ? 1 : 0); /* thanx johnh@amcc.com */+- image->data= (unsigned char *)lcalloc(linelen * height);++ image->data= (unsigned char *)lcalloc(ovmul(linelen, height));+ return(image);+ }+ +@@ -149,7 +164,7 @@ Image *newRGBImage(width, height, depth)+ image->height= height;+ image->depth= depth;+ image->pixlen= pixlen;+- image->data= (unsigned char *)lmalloc(width * height * pixlen);++ image->data= (unsigned char *)lmalloc(ovmul(ovmul(width, height), pixlen));+ return(image);+ }+ +@@ -165,6 +180,7 @@ Image *newTrueImage(width, height)+ image->height= height;+ image->depth= 24;+ image->pixlen= 3;++ image->data= (unsigned char *)lmalloc(ovmul(ovmul(width, height), 3));+ image->data= (unsigned char *)lmalloc(width * height * 3);+ return(image);+ }+Index: xloadimage.4.1.old/options.c+===================================================================+--- xloadimage.4.1.old.orig/options.c++++ xloadimage.4.1.old/options.c+@@ -12,6 +12,11 @@+ #include <stdio.h>+ #include "image.h"+ #include "options.h"++#include "misc.h"++#include "xloadimage.h"++++#undef MIN++#define MIN(a, b) (((a) < (b)) ? (a) : (b))+ + extern char *ProgramName;+ /* options array and definitions. If you add something to this you also+@@ -546,6 +551,7 @@ void processOptions(argc, argv, rglobal,+ optionName(FORK));+ continue;+ #else++ killOption(global_options, VERBOSE);+ global_opt= 1;+ break;+ #endif+@@ -701,7 +707,7 @@ void processOptions(argc, argv, rglobal,+ break;+ + case IDELAY:+- fprintf(stderr, "%s has been superceded by %s (translating)\n",++ fprintf(stderr, "%s has been superseded by %s (translating)\n",+ optionName(IDELAY), optionName(DELAY));+ /* FALLTHRU */+ +@@ -731,6 +737,11 @@ void processOptions(argc, argv, rglobal,+ if (++a >= argc)+ optionUsage(GAMMA);+ newopt->info.gamma= getFloat(GAMMA, argv[a]);++ if (newopt->info.gamma < 0.0) {++ fprintf(stderr, "Argument to %s must be over 0.0 (ignored)\n",++ optionName(GAMMA));++ newopt->type= OPT_IGNORE;++ }+ break;+ + case GOTO:+@@ -878,12 +889,13 @@ int getNextTypeOption(opt_string, name,+ */+ p = index(*opt_string, ',');+ if (p != NULL) {+- strncpy(option_name, *opt_string, p - *opt_string);+- option_name[p - *opt_string] = '\0';++ strncpy(option_name, *opt_string, MIN(BUFSIZ - 1, p - *opt_string));++ option_name[MIN(BUFSIZ - 1, p - *opt_string)] = '\0';+ *opt_string = p + 1; /* increment to next option */+ }+ else {+- strcpy(option_name, *opt_string);++ strncpy(option_name, *opt_string, BUFSIZ -1);++ option_name[BUFSIZ - 1] = '\0';+ *opt_string += strlen(*opt_string); /* increment to end of string */+ }+ *name = option_name;+@@ -892,7 +904,8 @@ int getNextTypeOption(opt_string, name,+ */+ p = index(option_name, '=');+ if (p != NULL) {+- strcpy(option_value, p + 1);++ strncpy(option_value, p + 1, BUFSIZ - 1);++ option_value[BUFSIZ - 1] = '\0';+ *p = '\0'; /* stomp equals sign */+ *value = option_value;+ }+Index: xloadimage.4.1.old/png.c+===================================================================+--- /dev/null++++ xloadimage.4.1.old/png.c+@@ -0,0 +1,367 @@++/*++ * PNG - Portable Network Graphics++ *++ * Alpha channle is linear.++ * Color \ Bit Depth 1 2 4 8 16 palette bKGD++ * PNG_COLOR_TYPE_PALETTE O O O O must 8 bit++ * PNG_COLOR_TYPE_GRAY O O O O O 16++ * PNG_COLOR_TYPE_GRAY_ALPHA O O 16++ * PNG_COLOR_TYPE_RGB O O possible 16 * 3++ * PNG_COLOR_TYPE_RGB_ALPHA O O possible 16 * 3++ * ++ * This code is based on jpeg.c and sample code from the libpng-1.0.5.++ * 2000/01/10: YOSHIDA Hiroshi++ *++ * TODO:++ * pngLoad(): Alpha channel, Transparency palette.++ * pngDump(): Dump.++ * ++ */++++++#include "image.h" /* xloadimage declarations */++#ifdef HAVE_LIBPNG++#include "options.h"++#include <png.h>++#include <setjmp.h>++++#undef DEBUG++/* #define DEBUG */++#undef debug++++#ifdef DEBUG++# define debug(xx) fprintf(stderr,xx)++#else++# define debug(xx)++#endif++++#define PNG_BYTES_TO_CHECK 4++++static Image *image; /* xloadimage image being returned */++static ZFILE *zinput_file;++static char *filename;++++int pngIdent(char *fullname, char *name);++Image *pngLoad(char *fullname, char *name, unsigned int verbose);++/* void pngDump(Image *image, char *options, char *file, int verbose); */++++++/*++ * png read handler++ */++static void png_read_data(png_structp png_ptr,++ png_bytep data, png_size_t length)++{++ if (zread(zinput_file, data, length) != length)++ png_error(png_ptr, "Read Error");++}++++++/*++ * png warn handler++ */++static void output_warn(png_structp png_ptr, png_const_charp str)++{++ debug(" #warn ");++ fprintf(stderr, " PNG file: %s - %s\n", filename, str);++ fflush(stderr);++}++++++/*++ * png error handler++ */++static void output_error(png_structp png_ptr, png_const_charp str)++{++ debug(" #error ");++ output_warn( png_ptr, str);++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4++ longjmp(png_jmpbuf((png_ptr)),1);++#else++ longjmp(png_ptr->jmpbuf, 1); /* return control to outer routine */++#endif++}++++++static const char *pngColor(int color_type)++{++ const char *str;++++ switch (color_type) {++ case PNG_COLOR_TYPE_GRAY:++ str = "GRAY";++ break;++ case PNG_COLOR_TYPE_GRAY_ALPHA:++ str = "GRAY_ALPHA";++ break;++ case PNG_COLOR_TYPE_PALETTE:++ str = "PALETTE";++ break;++ case PNG_COLOR_TYPE_RGB:++ str = "RGB";++ break;++ case PNG_COLOR_TYPE_RGB_ALPHA:++ str = "RGB_ALPHA";++ break;++ default:++ str = "UNKNOWN_COLOR_TYPE";++ }++ return str;++}++++++static const char *pngInterlace(int interlace_type)++{++ const char *str;++++ switch (interlace_type) {++ case PNG_INTERLACE_NONE:++ str = "NONE";++ break;++ case PNG_INTERLACE_ADAM7:++ str = "ADAM7";++ break;++ default:++ str = "UNKNOWN_TYPE";++ }++ return str;++}++++++/*++ * Output PNG file infomation.++ */++static void pngInfo( png_uint_32 width, png_uint_32 height,++ int bit_depth, int color_type, int interlace_type,++ double file_gamma)++{++ printf("%s is %ldx%ld PNG image, color type %s, %d bit",++ filename, width, height, pngColor(color_type), bit_depth);++ if( interlace_type != PNG_INTERLACE_NONE)++ printf(", interlace %s", pngInterlace(interlace_type));++ if( file_gamma >= 0.0)++ printf(", file gamma %.4f", file_gamma);++ putchar('\n');++}++++++/*++ * pngIdent(), pngLoad()++ * Read PNG header & allocate png's struct:++ * return 1: success++ */++static int pngHeader(png_structpp png_pp,++ png_infopp info_pp, png_infopp end_pp)++{++ *info_pp = *end_pp = NULL;++ *png_pp = png_create_read_struct(PNG_LIBPNG_VER_STRING,++ NULL, output_error, output_warn);++ if (!*png_pp)++ return 0;++ *info_pp = png_create_info_struct(*png_pp);++ if (!*info_pp) {++ png_destroy_read_struct(png_pp, info_pp, end_pp);++ return 0;++ }++ *end_pp = png_create_info_struct(*png_pp);++ if (!*end_pp) {++ png_destroy_read_struct(png_pp, info_pp, end_pp);++ return 0;++ }++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4++ if (setjmp(png_jmpbuf(*png_pp))) {++#else++ if (setjmp((*png_pp)->jmpbuf)) {++#endif++ /* On error */++ png_destroy_read_struct(png_pp, info_pp, end_pp);++ return 0;++ }++ png_set_sig_bytes(*png_pp, PNG_BYTES_TO_CHECK);++ png_set_read_fn(*png_pp, NULL, png_read_data);++ png_read_info(*png_pp, *info_pp);++++ return 1;++}++++++/*++ * return !0: It is a PNG.++ */++static int is_png(ZFILE *zf)++{++ byte png_read_buff[PNG_BYTES_TO_CHECK];++++ /* Read in some of the signature bytes */++ if (zread(zf, png_read_buff,PNG_BYTES_TO_CHECK) != PNG_BYTES_TO_CHECK)++ return 0;++ return !png_sig_cmp(png_read_buff, (png_size_t)0, PNG_BYTES_TO_CHECK);++}++++++/*++ * Main control routine for identifying PNG without loading++ * return 1: PNG file.++ */++int pngIdent(char *fullname, char *name)++{++ png_structp png_ptr;++ png_infop info_ptr, end_info;++ png_uint_32 width, height;++ int color_type, bit_depth, interlace_type;++ double file_gamma;++++ zinput_file = zopen(fullname);++ if (zinput_file == NULL) {++ zclose(zinput_file);++ return 0;++ }++ /* check at early timing */++ if (is_png(zinput_file) == 0) {++ zclose(zinput_file);++ return 0;++ }++ filename = name;++++ /* read infomation header */++ if (!pngHeader(&png_ptr, &info_ptr, &end_info)) {++ zclose(zinput_file);++ return 0;++ }++++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4++ if (setjmp(png_jmpbuf(png_ptr))) {++#else++ if (setjmp(png_ptr->jmpbuf)) {++#endif++ /* On error */++ freeImage(image);++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);++ zclose(zinput_file);++ return 0;++ }++ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth,++ &color_type, &interlace_type, NULL, NULL);++ if(!png_get_gAMA( png_ptr, info_ptr, &file_gamma))++ file_gamma = -1.0;++ /* print out PNG infomation */++ pngInfo( width, height, bit_depth, color_type, interlace_type, file_gamma);++++ znocache(zinput_file);++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);++ zclose(zinput_file);++ return 1;++}++++++/*++ * Main control routine for loading++ */++Image *pngLoad(char *fullname, char *name, unsigned int verbose)++{++ png_structp png_ptr;++ png_infop info_ptr, end_info;++ png_colorp palette;++ png_color_16p background;++ png_bytep bufp, *row_pointers;++ png_uint_32 width, height;++ int i, row_stride, color_type, bit_depth, num_palette, interlace_type;++ double file_gamma;++++ zinput_file = zopen(fullname);++ if (zinput_file == NULL) {++ zclose(zinput_file);++ return NULL;++ }++ /* check at early timing */++ if (is_png(zinput_file) == 0) {++ zclose(zinput_file);++ return NULL;++ }++ filename = name;++++ /* read infomation header */++ if (!pngHeader(&png_ptr, &info_ptr, &end_info)) {++ zclose(zinput_file);++ return NULL;++ }++ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth,++ &color_type, &interlace_type, NULL, NULL);++ if(!png_get_gAMA( png_ptr, info_ptr, &file_gamma))++ file_gamma = -1.0;++ /* print out PNG infomation */++ if (verbose)++ pngInfo( width, height, bit_depth, color_type, interlace_type, file_gamma);++ znocache(zinput_file);++ image = NULL;++++ if (file_gamma <= 0.0)++ file_gamma = 1.0;++ png_set_gamma(png_ptr, 1.0, file_gamma);++ if (bit_depth > 8)++ png_set_strip_16(png_ptr); /* 16 bit -> 8 bit */++ /* if (color_type & PNG_COLOR_MASK_ALPHA) */++ png_set_strip_alpha(png_ptr);++ if (png_get_bKGD(png_ptr, info_ptr, &background))++ png_set_background(png_ptr, background, file_gamma, 1, 1.0);++ switch (color_type) {++ case PNG_COLOR_TYPE_PALETTE:++ if (bit_depth < 8)++ png_set_packing(png_ptr); /* 1 pixlel 1 byte */++ image = newRGBImage(width, height, 8);++ png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette);++ image->rgb.used = num_palette;++ for (i = 0; i < num_palette; i++) {++ *(image->rgb.red + i) = palette->red << 8;++ *(image->rgb.green + i) = palette->green << 8;++ *(image->rgb.blue + i) = palette->blue << 8;++ palette++;++ }++ break;++ case PNG_COLOR_TYPE_GRAY_ALPHA:++ case PNG_COLOR_TYPE_GRAY:++ if (bit_depth < 8)++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4++ png_set_expand_gray_1_2_4_to_8(png_ptr); /* 1 pixlel 1 byte */++#else++ png_set_gray_1_2_4_to_8(png_ptr); /* 1 pixlel 1 byte */++#endif++ image = newRGBImage(width, height, 8);++ image->rgb.used = 256;++ for (i = 0; i < 256; i++) {++ *(image->rgb.red + i) = ++ *(image->rgb.green + i) = ++ *(image->rgb.blue + i) = i << 8;++ }++ break;++ case PNG_COLOR_TYPE_RGB_ALPHA:++ case PNG_COLOR_TYPE_RGB:++ image = newTrueImage(width, height);++ break;++ default:++ fprintf(stderr, "Unknown color type PNG.");++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);++ zclose(zinput_file);++ return NULL;++ }++ image->title = dupString(filename);++++ bufp = image->data;++ png_read_update_info(png_ptr, info_ptr);++ row_stride = png_get_rowbytes(png_ptr, info_ptr);++ row_pointers = (png_bytep *)lmalloc(sizeof(png_bytep) * height);++ for (i = 0; i < height; i++) {++ *(row_pointers + i) = bufp;++ bufp += row_stride;++ }++ png_read_image(png_ptr, row_pointers);++ lfree((byte *)row_pointers);++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);++ zclose(zinput_file);++++ return image;++}++++#else /* !HAVE_LIBPNG */++static int unused;++#endif /* !HAVE_LIBPNG */+Index: xloadimage.4.1.old/send.c+===================================================================+--- xloadimage.4.1.old.orig/send.c++++ xloadimage.4.1.old/send.c+@@ -21,7 +21,7 @@ static int pixmapErrorTrap(disp, pErrorE+ char buf[MAXERRORLEN+1];+ GotError = 1;+ XGetErrorText(disp, pErrorEvent->error_code, buf, MAXERRORLEN);+- printf("serial #%d (request code %d) Got Error %s\n",++ printf("serial #%ld (request code %d) Got Error %s\n",+ pErrorEvent->serial,+ pErrorEvent->request_code,+ buf);+@@ -166,6 +166,8 @@ XImageInfo *imageToXImage(disp, scrn, vi+ unsigned int redbottom, greenbottom, bluebottom;+ unsigned int redtop, greentop, bluetop;+ ++ redtop = greentop = bluetop = 0;+++ redvalue= (Pixel *)lmalloc(sizeof(Pixel) * 256);+ greenvalue= (Pixel *)lmalloc(sizeof(Pixel) * 256);+ bluevalue= (Pixel *)lmalloc(sizeof(Pixel) * 256);+@@ -255,7 +257,7 @@ imageToXImage: XAllocColor failed on a T+ + default:+ retry: /* this tag is used when retrying because we couldn't get a fit */+- compress(image, verbose);++ compress_cmap(image, verbose);+ + index= (Pixel *)lmalloc(sizeof(Pixel) * image->rgb.used);+ +@@ -300,7 +302,7 @@ imageToXImage: XAllocColor failed on a T+ xcolor.red= *(image->rgb.red + a);+ xcolor.green= *(image->rgb.green + a);+ xcolor.blue= *(image->rgb.blue + a);+- if (! XAllocColor(disp, ximageinfo->cmap, &xcolor))++ if (! XAllocColor(disp, ximageinfo->cmap, &xcolor)) {+ if ((visual->class == StaticColor) ||+ (visual->class == StaticGray) ||+ (visual->class == TrueColor) ||+@@ -319,6 +321,7 @@ imageToXImage: XAllocColor failed on a T+ newmap= 1;+ break;+ }++ }+ *(index + a)= xcolor.pixel;+ }+ }+@@ -602,8 +605,6 @@ void sendXImage(ximageinfo, src_x, src_y+ int src_x, src_y, dst_x, dst_y;+ unsigned int w, h;+ { XGCValues gcv;+- int a, orig_depth;+- char *orig_data;+ + /* build and cache the GC+ */+Index: xloadimage.4.1.old/vicar.c+===================================================================+--- xloadimage.4.1.old.orig/vicar.c++++ xloadimage.4.1.old/vicar.c+@@ -12,7 +12,6 @@+ #define SAMPLES label[6]+ + #include <stdio.h>+-#include <malloc.h>+ #include "image.h"+ #include <sys/types.h>+ +@@ -108,14 +107,12 @@ Image *vicarLoad(fullname, name, verbose+ char *fullname, *name;+ unsigned int verbose;+ {+- char c;+- int i,j;++ int i;+ unsigned int mapsize, size;+ Image *image;+ byte *lineptr;+ byte *map;+ byte *mapred,*mapgreen,*mapblue;+- byte *buf;+ ZFILE *zf;+ + if ( vicarIdent(fullname,name,verbose) == 0 )+Index: xloadimage.4.1.old/xloadimagerc+===================================================================+--- xloadimage.4.1.old.orig/xloadimagerc++++ xloadimage.4.1.old/xloadimagerc+@@ -1,6 +1,9 @@+ # Sample .xloadimagerc file+ +-path = /usr/local/images++# Directories to search for images++path = ~/images /usr/local/images++++# Default extensions to try tacking onto the end of a filename, in order+ extension = .niff # NIFF image+ .jpg .jpeg # JPEG image+ .gif # CompuServe GIF image+@@ -14,6 +17,7 @@ extension = .niff # NIFF ima+ .pbm .pgm .ppm # PBMPLUS+ .img # GEM IMG+ .pcx # PCX image++ .png # PNG image+ + # add uufilter for automatic uudecoding of files ending in .uu or .uue+ filter = "uufilter -s" .uu .uue+Index: xloadimage.4.1.old/faces.c+===================================================================+--- xloadimage.4.1.old.orig/faces.c++++ xloadimage.4.1.old/faces.c+@@ -108,9 +108,15 @@ Image *facesLoad(fullname, name, verbose+ if (! strcmp(buf, "\n"))+ break;+ if (!strncmp(buf, "FirstName:", 10))+- strcpy(fname, buf + 11);++ {++ strncpy(fname, buf + 11, BUFSIZ - 1);++ fname[BUFSIZ - 1] = '\0';++ }+ else if (!strncmp(buf, "LastName:", 9))+- strcpy(lname, buf + 10);++ {++ strncpy(lname, buf + 10, BUFSIZ - 1);++ lname[BUFSIZ - 1] = '\0';++ }+ else if (!strncmp(buf, "Image:", 6)) {+ if (sscanf(buf + 7, "%d%d%d", &iw, &ih, &id) != 3) {+ printf("%s: Bad Faces Project image\n", fullname);+@@ -136,7 +142,7 @@ Image *facesLoad(fullname, name, verbose+ + image= newRGBImage(w, h, d);+ fname[strlen(fname) - 1]= ' ';+- strcat(fname, lname);++ strncat(fname, lname, BUFSIZ - strlen(fname) -1);+ fname[strlen(fname) - 1]= '\0';+ image->title= dupString(fname);+ +@@ -172,7 +178,7 @@ int facesIdent(fullname, name)+ char *fullname, *name;+ { Image *image;+ +- if (image= facesLoad(fullname, name, 1)) {++ if ((image= facesLoad(fullname, name, 1))) {+ freeImage(image);+ return(1);+ }+Index: xloadimage.4.1.old/packtar.c+===================================================================+--- xloadimage.4.1.old.orig/packtar.c++++ xloadimage.4.1.old/packtar.c+@@ -11,8 +11,6 @@+ #include <stdio.h>+ #include <errno.h>+ +-extern int errno;+-+ /* poor-man's varargs. good enough for now.+ */+ int run(a0, a1, a2, a3, a4, a5, a6, a7, a8)+@@ -48,9 +46,12 @@ void link_file(dir, old_file)+ char new_file[1024];+ char *p;+ +- strcpy(new_file, dir); /* target directory */+- strcat(new_file, "/");+- strcat(new_file, old_file);++ strncpy(new_file, dir, 1023); /* target directory */++ new_file[1023] = '\0';++ strncat(new_file, "/", 1023 - strlen(new_file));++ new_file[1023] = '\0';++ strncat(new_file, old_file, 1023 - strlen(new_file));++ new_file[1023] = '\0';+ + for (p = new_file; p = strchr(p, '/'); p++) {+ *p = '\0'; /* stomp directory separator */+Index: xloadimage.4.1.old/xloadimage.man+===================================================================+--- xloadimage.4.1.old.orig/xloadimage.man++++ xloadimage.4.1.old/xloadimage.man+@@ -1,4 +1,4 @@+-.TH XLOADIMAGE 1 "8 May 1991"++.TH XLOADIMAGE 1x "8 May 1991"+ .SH NAME+ xloadimage, xsetbg, xview \- load images into an X11 window or onto+ the root window+@@ -9,7 +9,7 @@ the root window+ .SH DESCRIPTION+ \fIXloadimage\fR displays images in an X11 window, loads them onto the+ root window, or writes them into a file. Many image types are+-recognized; use the \fI-supported\fR option to list them.++recognized; use the \fI\-supported\fR option to list them.+ .PP+ If the filename \fIstdin\fR is given, xloadimage will read the image+ from standard input if this capability is supported by the loader for+@@ -18,38 +18,38 @@ that image type (most types do support r+ If the destination display cannot support the number of colors in the+ image, the image will be dithered (monochrome destination) or have its+ colormap reduced (color destination) as appropriate. This can also be+-done forcibly with the \fI-halftone\fR, \fI-dither\fR, and+-\fI-colors\fR options.++done forcibly with the \fI\-halftone\fR, \fI\-dither\fR, and++\fI\-colors\fR options.+ .PP+ A variety of image manipulations can be specified, including gamma+-correction, brightening, clipping, dithering, depth-reduction,++correction, brightening, clipping, dithering, depth\(hyreduction,+ rotation, and zooming. Most of these manipulations have simple+ implementations; speed was opted for above accuracy.+ .PP+ If you are viewing a large image in a window, the initial window will+ be at most 90% of the size of the display unless the window manager+ does not correctly handle window size requests or if you've used the+-\fI-fullscreen\fR option. You may move the image around in the window++\fI\-fullscreen\fR option. You may move the image around in the window+ by dragging with the first mouse button. The cursor will indicate+ which directions you may drag, if any. You may exit the window by+ typing 'q' or '^C' when the keyboard focus is on the window.+ .PP+ If more than one image file is specified on the command line, each+-image will be shown in order (except if \fI-merge\fR or \fI-goto\fR++image will be shown in order (except if \fI\-merge\fR or \fI\-goto\fR+ are being used).+ .PP+ A wide variety of common image manipulations can be done by mixing and+ matching the available options. See the section entitled \fIHINTS FOR+ GOOD IMAGE DISPLAYS\fR for some ideas.+ .PP+-The \fI-dump\fR option causes an image to be written to a file rather++The \fI\-dump\fR option causes an image to be written to a file rather+ than displayed after processing. This allows you to read an image,+ perform a number of processing operations on it, and save the+ resultant image. This also allows translation from any of the+ recognized image types into any of the formats that support dumping.+ .PP+-\fIXsetbg\fR is equivalent to \fIxloadimage -onroot -quiet\fR and+-\fIxview\fR is equivalent to \fIxloadimage -view -verbose\fR.++\fIXsetbg\fR is equivalent to \fIxloadimage \-onroot \-quiet\fR and++\fIxview\fR is equivalent to \fIxloadimage \-view \-verbose\fR.+ .SH RESOURCE CLASS+ \fIXloadimage\fR uses the resource class name \fIXloadimage\fR for+ window managers which need this resource set. This name changed+@@ -59,61 +59,58 @@ in version 2.00 and 2.01; some previous+ .SH GLOBAL OPTIONS+ The following options affect the global operation of \fIxloadimage\fR.+ They may be specified anywhere on the command line. Additionally the+-\fI-global\fR option can be used to force an image option to apply to++\fI\-global\fR option can be used to force an image option to apply to+ all images.+ .TP 8+--border \fIcolor\fR++\-border \fIcolor\fR+ This sets the background portion of the window which is not covered by+ any images to be \fIcolor\fR.+ .TP+--configuration++\-configuration+ Displays the image path, image suffixes, and supported filters which+ will be used when looking for and reading images. These are loaded+ from ~/.xloadimagerc and optionally from a systemwide file (normally+-/usr/lib/xloadimagerc). This replaces the -path option.++/usr/lib/xloadimagerc). This replaces the \-path option.+ .TP+--default++\-default+ Use the default root weave as the image. This option forces+-\fI-onroot\fR. If \fI-default\fR is used alone, it is the same as++\fI\-onroot\fR. If \fI\-default\fR is used alone, it is the same as+ \fIxsetroot\fR with no arguments. If used in conjunction with+-\fI-tile\fR this option can be used to place images on the default++\fI\-tile\fR this option can be used to place images on the default+ root weave (see \fBEXAMPLES\fR below).+ .TP+--debug++\-debug+ Talk to the X server in synchronous mode. This is useful for+ debugging. If an X error is seen while in this mode, a core will be+ dumped.+ .TP+--delay \fIsecs\fR+-Automatically advance to the next image after \fIsecs\fR seconds.+-.TP+--display \fIdisplay_name\fR++\-display \fIdisplay_name\fR+ X11 display name to send the image(s) to.+ .TP+--dump \fIimage_type[,option[=value]]\fR \fIdump_file\fR++\-dump \fIimage_type[,option[=value]]\fR \fIdump_file\fR+ Rather than displaying the loaded and processed image, dump it into an+ image file of the specified type. For a list of image types that can+-be dumped, use the \fI-supported\fR option. Some image types have++be dumped, use the \fI\-supported\fR option. Some image types have+ options that affect the format of the file that's created. See+ \fBDUMP OPTIONS\fR below. An image can be dumped in any supported+ dump format regardless of the original image type, so image file type+ translation is possible using this option.+ .TP+--fit++\-fit+ Force image to use the default visual and colormap. This is useful if+ you do not want technicolor effects when the colormap focus is inside+ the image window, but it may reduce the quality of the displayed+-image. This is on by default if -onroot or -windowid is specified.++image. This is on by default if \-onroot or \-windowid is specified.+ .TP+--fork++\-fork+ Fork xloadimage. This causes xloadimage to disassociate itself from+-the shell. This option automatically turns on -quiet.++the shell. This option automatically turns on \-quiet.+ .TP+--fullscreen+-Use the entire screen to display images. If combined with -onroot,++\-fullscreen++Use the entire screen to display images. If combined with \-onroot,+ the image will be zoomed to fill the entire rootwindow.+ .TP+--geometry \fIWxH[{+-X}{+-}Y]\fR++\-geometry \fIWxH[{+\-X}{+\-}Y]\fR+ This sets the size of the window onto which the images are loaded to a+ different value than the size of the image. When viewing an image in+ a window, this can be used to reduce the size of the destination+@@ -122,223 +119,226 @@ controls the size of the pixmap which wi+ If the size is smaller than that of the display, the image will be+ replicated.+ .TP+--goto image_name++\-goto image_name+ Forces the next image to be displayed to be the image named+ \fIimage_name\fR. This is useful for generating looped slideshows.+ If more than one image of the same name as the target exists on the+ argument list, the first in the argument list is used.+ .TP+--help [option ...]++\-help [option ...]+ Give information on an option or list of options. If no option is+ given, a simple interactive help facility is invoked.+ .TP+--identify++\-identify+ Identify the supplied images rather than display them.+ .TP+--install++\-install+ Forcibly install the image's colormap when the window is focused.+ This violates ICCCM standards and only exists to allow operation with+ naive window managers. Use this option only if your window manager+ does not install colormaps properly.+ .TP+--list++\-list+ List the images which are along the image path.+ .TP+--onroot++\-onroot+ Load image(s) onto the root window instead of viewing in a window.+-This option automatically sets the -fit option.+-This is the opposite of \fI-view\fR. \fIXSetbg\fR has this option set++This option automatically sets the \-fit option.++This is the opposite of \fI\-view\fR. \fIXSetbg\fR has this option set+ by default.+ .TP+--path++\-path+ Displays miscellaneous information about the program configuration.+-This option is obsolete and has been replaced by -configuration.++This option is obsolete and has been replaced by \-configuration.+ .TP+--pixmap+-Force the use of a pixmap as backing-store. This is provided for+-servers where backing-store is broken (such as some versions of the++\-pixmap++Force the use of a pixmap as backing\(hystore. This is provided for++servers where backing\(hystore is broken (such as some versions of the+ AIXWindows server). It may improve scrolling performance on servers+-which provide backing-store.++which provide backing\(hystore.+ .TP+--private++\-private+ Force the use of a private colormap. Normally colors are allocated+ shared unless there are not enough colors available.+ .TP+--quiet++\-quiet+ Forces \fIxloadimage\fR and \fIxview\fR to be quiet. This is the+ default for \fIxsetbg\fR, but the others like to whistle. + .TP+--supported++\-supported+ List the supported image types. + .TP+--type \fItype_name\fR++\-type \fItype_name\fR+ Forces \fIxloadimage\fR to try to load the image as a particular file+ type rather than trying to guess. This often improves load+-performance noticably.++performance noticeably.+ .TP+--verbose++\-verbose+ Causes \fIxloadimage\fR to be talkative, telling you what kind of+ image it's playing with and any special processing that it has to do. + This is the default for \fIxview\fR and \fIxloadimage\fR. + .TP+--version++\-version+ Print the version number and patchlevel of this version of+ \fIxloadimage\fR.+ .TP+--view+-View image(s) in a window. This is the opposite of \fI-onroot\fR and++\-view++View image(s) in a window. This is the opposite of \fI\-onroot\fR and+ the default for \fIxview\fR and \fIxloadimage\fR. + .TP+--visual \fIvisual_name\fR++\-visual \fIvisual_name\fR+ Force the use of a specific visual type to display an image. Normally+ \fIxloadimage\fR tries to pick the best available image for a+ particular image type. The available visual types are: DirectColor,+ TrueColor, PseudoColor, StaticColor, GrayScale, and StaticGray.+ Nonconflicting names may be abbreviated and case is ignored.+ .TP+--windowid \fIhex_window_id\fR++\-windowid \fIhex_window_id\fR+ Sets the background pixmap of a particular window ID. The argument+-must be in hexadecimal and must be preceeded by "0x" (\fIeg\fR+--windowid 0x40000b. This is intended for setting the background++must be in hexadecimal and must be preceded by "0x" (\fIeg\fR++\-windowid 0x40000b. This is intended for setting the background+ pixmap of some servers which use untagged virtual roots+ (\fIeg\fR HP-VUE), but can have other interesting applications.+ .SH IMAGE OPTIONS+-The following options may preceed each image. These options are+-local to the image they preceed. ++The following options may precede each image. These options are++local to the image they precede. + .TP+--at \fIX\fR,\fIY\fR++\-at \fIX\fR,\fIY\fR+ Indicates coordinates to load the image at on the base image. If+-this is an option to the first image, and the \fI-onroot\fR option is++this is an option to the first image, and the \fI\-onroot\fR option is+ specified, the image will be loaded at the given location on the+ display background. + .TP+--background \fIcolor\fR++\-background \fIcolor\fR+ Use \fIcolor\fR as the background color instead of the default+ (usually white but this depends on the image type) if you are+ transferring a monochrome image to a color display. + .TP+--brighten \fIpercentage\fR++\-brighten \fIpercentage\fR+ Specify a percentage multiplier for a color image's colormap. A value+ of more than 100 will brighten an image, one of less than 100 will+ darken it. + .TP+--center++\-center+ Center the image on the base image loaded. If this is an option to+ the first image, and the \fI-onroot\fR option is specified, the image+ will be centered on the display background. + .TP+--clip \fIX\fR,\fIY\fR,\fIW\fR,\fIH\fR++\-clip \fIX\fR,\fIY\fR,\fIW\fR,\fIH\fR+ Clip the image before loading it. \fIX\fR and \fIY\fR define the+-upper-left corner of the clip area, and \fIW\fR and \fIH\fR define the++upper\(hyleft corner of the clip area, and \fIW\fR and \fIH\fR define the+ extents of the area. A zero value for \fIW\fR or \fIH\fR will be+ interpreted as the remainder of the image. + .TP+--colors \fIn\fR++\-colors \fIn\fR+ Specify the maximum number of colors to use in the image. This is a+ way to forcibly reduce the depth of an image.+ .TP+--dither+-Dither a color image to monochrome using a Floyd-Steinberg dithering++\-delay \fIsecs\fR++Automatically advance to the next image after \fIsecs\fR seconds. You++may want to use the \fI\-global\fR switch with this command to create a++slideshow with multiple images.++.TP++\-dither++Dither a color image to monochrome using a Floyd\(hySteinberg dithering+ algorithm. This happens by default when viewing color images on a+-monochrome display. This is slower than \fI-halftone\fR and affects++monochrome display. This is slower than \fI\-halftone\fR and affects+ the image accuracy but usually looks much better.+ .TP+--foreground \fIcolor\fR++\-foreground \fIcolor\fR+ Use \fIcolor\fR as the foreground color instead of black if you are+ transferring a monochrome image to a color display. This can also be+ used to invert the foreground and background colors of a monochrome+ image. + .TP+--gamma \fIdisplay_gamma\fR++\-gamma \fIdisplay_gamma\fR+ Specify the gamma correction for the display.+ The default value is 1.0, a typical display needs 2.0 to 2.5.+ .TP+--global++\-global+ Force the following option to apply to all images rather than one+ specific image. Local image options will temporarily override any+-option specified with -global.++option specified with \-global.+ .TP+--gray++\-gray+ Convert an image to grayscale. This is very useful when displaying+ colorful images on servers with limited color capability. It can also+ be used to convert a bitmap image into a grayscale image, although the+ resulting image will be smaller than the original. The optional+-spelling \fI-grey\fR may also be used.++spelling \fI\-grey\fR may also be used.+ .TP+--halftone++\-halftone+ Force halftone dithering of a color image when displaying on a+ monochrome display. This option is ignored on monochrome images.+ This dithering algorithm blows an image up by sixteen times; if you+-don't like this, the \fI-dither\fR option will not blow the image up++don't like this, the \fI\-dither\fR option will not blow the image up+ but will take longer to process and will be less accurate.+ .TP+--idelay \fIsecs\fR+-Set the delay to be used for this image to \fIsecs\fR seconds (see+-\fI-delay\fR). If \fI-delay\fR was specified, this overrides it. If+-it was not specified, this sets the automatic advance delay for this+-image while others will wait for the user to advance them.+-.TP+--invert+-Inverts a monochrome image. This is shorthand for \fI-foreground+-white -background black\fR.++\-idelay \fIsecs\fR++This option is no longer supported due to the addition of++\fI\-global\fR. The same functionality can be had with \fI\-delay\fR.++.TP++\-invert++Inverts a monochrome image. This is shorthand for \fI\-foreground++white \-background black\fR.+ .TP+--merge++\-merge+ Merge this image onto the base image after local processing. The base+ image is considered to be the first image specified or the last image+-that was not preceeded by \fI-merge\fR. If used in conjunction with+-\fI-at\fR and \fI-clip\fR, very complex images can be built up. This+-option is on by default for all images if the \fI-onroot\fR or+-\fI-windowid\fR options are specified.++that was not preceded by \fI\-merge\fR. If used in conjunction with++\fI\-at\fR and \fI\-clip\fR, very complex images can be built up. This++option is on by default for all images if the \fI\-onroot\fR or++\fI\-windowid\fR options are specified.+ .TP+--name \fIimage_name\fR++\-name \fIimage_name\fR+ Force the next argument to be treated as an image name. This is+-useful if the name of the image is \fI-dither\fR, for instance. ++useful if the name of the image is \fI\-dither\fR, for instance. + .TP+--newoptions++\-newoptions+ Reset globally-specified options.+ .TP+--normalize++\-normalize+ Normalize a color image.+ .TP+--rotate \fIdegrees\fR++\-rotate \fIdegrees\fR+ Rotate the image by \fIdegrees\fR clockwise. The number must be a+ multiple of 90.+ .TP+--shrink++\-shrink+ Shrink an image down to fit on the display. This is particularly+ useful with servers that do not support window sizes larger than the+ physical screen (eg DECWINDOWS servers).+ .TP+--smooth++\-smooth+ Smooth a color image. This reduces blockiness after zooming an image+ up. If used on a monochrome image, nothing happens. This option can+ take awhile to perform, especially on large images. You may specify+-more than one \fI-smooth\fR option per image, causing multiple++more than one \fI\-smooth\fR option per image, causing multiple+ iterations of the smoothing algorithm.+ .TP+--tile++\-tile+ Tile this image (after any necessary merging or tiling) to create a+ fullscreen image. This is usually used to create a large background+-image on which to merge other images. \fI-geometry\fR can be used to+-set the new image size to something other than -fullscreen.++image on which to merge other images. \fI\-geometry\fR can be used to++set the new image size to something other than \-fullscreen.+ .TP+--title \fItitle\fR++\-title \fItitle\fR+ Change the title of the image. This sets the title bar title if+ displaying in a window or the NIFF file image title if dumping the+ image.+ .TP+--xzoom \fIpercentage\fR++\-xzoom \fIpercentage\fR+ Zoom the X axis of an image by \fIpercentage\fR. A number greater+ than 100 will expand the image, one smaller will compress it. A zero+-value will be ignored. This option, and the related \fI-yzoom\fR are++value will be ignored. This option, and the related \fI\-yzoom\fR are+ useful for correcting the aspect ratio of images to be displayed.+ .TP+--yzoom \fIpercentage\fR+-Zoom the Y axis of an image by \fIpercentage\fR. See \fI-xzoom\fR for++\-yzoom \fIpercentage\fR++Zoom the Y axis of an image by \fIpercentage\fR. See \fI\-xzoom\fR for+ more information. + .TP+--zoom \fIpercentage\fR+-Zoom both the X and Y axes by \fIpercentage\fR. See \fI-xzoom\fR for++\-zoom \fIpercentage\fR++Zoom both the X and Y axes by \fIpercentage\fR. See \fI\-xzoom\fR for+ more information. Technically the percentage actually zoomed is the+ square of the number supplied since the zoom is to both axes, but I+ opted for consistency instead of accuracy.+@@ -347,80 +347,80 @@ To load the rasterfile "my.image" onto t+ it to fill the entire background:+ .sp+ .ti +5+-xloadimage -onroot my.image++xloadimage \-onroot my.image+ .PP+ To center an image on the default root background:+ .sp+ .ti +5+-xloadimage -default -tile my.image++xloadimage \-default \-tile my.image+ .sp+ If using a monochrome display and a color image you will probably want+ to dither the image for a cleaner (and faster) display:+ .sp+ .ti +5+-xloadimage -default -tile -dither my.image++xloadimage \-default \-tile \-dither my.image+ .PP+ To load a monochrome image "my.image" onto the background, using red+ as the foreground color, replicate the image, and overlay+ "another.image" onto it at coordinate (10,10):+ .sp+ .ti +5+-xloadimage -foreground red my.image -at 10,10 another.image++xloadimage \-foreground red my.image \-at 10,10 another.image+ .PP+ To center the rectangular region from 10 to 110 along the X axis and+ from 10 to the height of the image along the Y axis:+ .sp+ .ti +5+-xloadimage -center -clip 10,10,100,0 my.image++xloadimage \-center \-clip 10,10,100,0 my.image+ .PP+ To double the size of an image:+ .sp+ .ti +5+-xloadimage -zoom 200 my.image++xloadimage \-zoom 200 my.image+ .PP+ To halve the size of an image:+ .sp+ .ti +5+-xloadimage -zoom 50 my.image++xloadimage \-zoom 50 my.image+ .PP+ To brighten a dark image:+ .sp+ .ti +5+-xloadimage -brighten 150 my.image++xloadimage \-brighten 150 my.image+ .PP+ To darken a bright image:+ .sp+ .ti +5+-xloadimage -brighten 50 my.image++xloadimage \-brighten 50 my.image+ .SH HINTS FOR GOOD IMAGE DISPLAYS+ Since images are likely to come from a variety of sources, they may be+ in a variety of aspect ratios which may not be supported by your+-display. The \fI-xzoom\fR and \fI-yzoom\fR options can be used to++display. The \fI\-xzoom\fR and \fI\-yzoom\fR options can be used to+ change the aspect ratio of an image before display. If you use these+ options, it is recommended that you increase the size of one of the+ dimensions instead of shrinking the other, since shrinking looses+ detail. For instance, many GIF and G3 FAX images have an X:Y ratio of+ about 2:1. You can correct this for viewing on a 1:1 display with+-either \fI-xzoom 50\fR or \fI-yzoom 200\fR (reduce X axis to 50% of++either \fI\-xzoom 50\fR or \fI\-yzoom 200\fR (reduce X axis to 50% of+ its size and expand Y axis to 200% of its size, respectively) but the+ latter should be used so no detail is lost in the conversion.+ .PP+ When zooming color images up you can reduce blockiness with+-\fI-smooth\fR. For zooms of 300% or more, I recommend two smoothing++\fI\-smooth\fR. For zooms of 300% or more, I recommend two smoothing+ passes (although this can take awhile to do on slow machines). There+-will be a noticable improvement in the image.++will be a noticeable improvement in the image.+ .PP+ You can perform image processing on a small portion of an image by+-loading the image more than once and using the \fI-merge\fR, \fI-at\fR+-and \fI-clip\fR options. Load the image, then merge it with a++loading the image more than once and using the \fI\-merge\fR, \fI\-at\fR++and \fI\-clip\fR options. Load the image, then merge it with a+ clipped, processed version of itself. To brighten a 100x100 rectangular+ portion of an image located at (50,50), for instance, you could type:+ .sp+ .ti +5+-xloadimage my.image -merge -at 50,50 -clip 50,50,100,100 -brighten 150 my.image++xloadimage my.image \-merge \-at 50,50 \-clip 50,50,100,100 \-brighten 150 my.image+ .PP+ If you're using a display with a small colormap to display colorful+-images, try using the \fI-gray\fR option to convert to grayscale.++images, try using the \fI\-gray\fR option to convert to grayscale.+ .SH PATHS AND EXTENSIONS+ The file ~/.xloadimagerc (and optionally a system-wide file) defines a+ number of configuration options that affect xloadimage.+@@ -472,19 +472,19 @@ provided for compressed (.Z) files and G+ \fBFILTERS\fR section for more information on defining your own+ filters.+ .PP+-Any text on a line following a hash-mark (#) is ignored; if you wish+-to use a hash-mark in a path, extension, or filter you can escape it++Any text on a line following a hash\(hymark (#) is ignored; if you wish++to use a hash\(hymark in a path, extension, or filter you can escape it+ using a backslash (\\).+ .PP+ If you wish to include white-space in a filter program name, path, or+-extension you can enclose the entire text in double-quotes. For++extension you can enclose the entire text in double\(hyquotes. For+ example:+ .PP+ .nf+- filter = "gzip -cd" .gz++ filter = "gzip \-cd" .gz+ .fi+ .PP+-Use backslash (\\) characters to allow inclusion of double-quote marks++Use backslash (\\) characters to allow inclusion of double\(hyquote marks+ or newlines.+ .PP+ The following is a sample ~/.xloadimagerc file:+@@ -499,7 +499,7 @@ The following is a sample ~/.xloadimager+ extension = .csun .msun .sun .face .xbm .bm+ + # invoke GNU zip if a .z or .zip extension is found+- filter = "gzip -cd" .z .zip++ filter = "gzip \-cd" .z .zip+ + .fi+ .PP+@@ -507,7 +507,7 @@ The following is a sample ~/.xloadimager+ .PP+ \fIXloadimage\fR currently supports many common and some uncommon+ image types, and can create images in several formats. For a complete+-list use the \fI-supported\fR option.++list use the \fI\-supported\fR option.+ .SH DUMPING IMAGES+ Several image dumpers are included that can be used to create a new+ image after loading and processing. The NIFF (Native Image File+@@ -518,12 +518,12 @@ format.+ Some image dumpers allow options that affect the image output. These+ options are appended to the image type following a comma and are+ separated by commas. If a value is desired it can be specified+-following an equals-sign. For example, to create a monochrome JPEG++following an equals\(hysign. For example, to create a monochrome JPEG+ image file with a quality factor of 80, you would use the following+ command line:+ .PP+ .nf+- xloadimage image_name -dump jpeg,quality=80,grayscale new_image.jpg++ xloadimage image_name \-dump jpeg,quality=80,grayscale new_image.jpg+ .fi+ .PP+ Option names can be abbreviated but if the abbreviation is too short+@@ -537,20 +537,20 @@ The xloadimage distribution includes a s+ called \fIuufilter\fR that can be used to automatically uudecode files+ for processing. \fIUufilter\fR ignores extraneous lines in the file+ so it is particularly useful if the uuencoded file was created by+-concatenating email or news postings that had headers or line-break++concatenating email or news postings that had headers or line\(hybreak+ indicators included.+ .PP+ To make use of \fIuufilter\fR you can add the following to your+ \fI.xloadimagerc\fR file:+ .PP+ .nf+- filter = "uufilter -s" .uu .uue++ filter = "uufilter \-s" .uu .uue+ .fi+ The filter will be automatically invoked on any file with a .uu or+-.uue extension.++\&.uue extension.+ .PP+ For a list of filters automatically recognized by xloadimage use the+-\fI-configuration\fR option.++\fI\-configuration\fR option.+ .PP+ .SH SUPPORTED IMAGE OPTIONS+ .PP+@@ -564,7 +564,7 @@ Force a monochrome (grayscale) image to+ image.+ .TP+ nointerleave+-Create a non-interleaved file.++Create a non\(hyinterleaved file.+ .TP+ optimize+ Enable entropy parameter optimization.+@@ -604,9 +604,9 @@ Image data compression technique. Can b+ \fIrle\fR (CCITT RLE compression),+ \fIg3fax\fR (CCITT Group 3 FAX compression),+ \fIg4fax\fR (CCITT Group 4 FAX compression),+-\fIlzw\fR (Limpel-Ziv-Welsh compression, the default),++\fIlzw\fR (Limpel\(hyZiv\(hyWelsh compression, the default),+ \fIjpeg\fR (JPEG compression),+-\fInext\fR (NeXT run-length compression),++\fInext\fR (NeXT run\(hylength compression),+ \fIrlew\fR (CCITT RLEW compression),+ \fImac\fR (Macintosh PackBits compression),+ \fIpackbits\fR (same as \fImac\fR),+@@ -624,25 +624,25 @@ CenterLine Software+ jimf@centerline.com+ .fi+ .PP+-For a more-or-less complete list of other contributors (there are a++For a more\(hyor\(hyless complete list of other contributors (there are a+ \fIlot\fR of them), please see the README file enclosed with the+ distribution.+ .SH FILES+ .nf+ .in +5+-xloadimage - the image loader and viewer+-xsetbg - pseudonym which quietly sets the background+-xview - pseudonym which views in a window+-/usr/lib/X11/Xloadimage - default system-wide configuration file+-~/.xloadimagerc - user's personal configuration file++xloadimage \- the image loader and viewer++xsetbg \- pseudonym which quietly sets the background++xview \- pseudonym which views in a window++/etc/X11/Xloadimage \- default system-wide configuration file++~/.xloadimagerc \- user's personal configuration file+ .in -5+ .fi+ .SH COPYRIGHT+ Copyright (c) 1989, 1993 Jim Frost and others.+ .PP+-\fIXloadimage\fR is copywritten material with a very loose copyright++\fIXloadimage\fR is copyrighted material with a very loose copyright+ allowing unlimited modification and distribution if the copyright+-notices are left intact. Various portions are copywritten by various++notices are left intact. Various portions are copyrighted by various+ people, but all use a modification of the MIT copyright notice.+ Please check the source for complete copyright information. The+ intent is to keep the source free, not to stifle its distribution, so+@@ -662,7 +662,7 @@ file, but \fIxloadimage\fR will only dis+ Only GIF87a format is supported.+ .PP+ One of the pseudonyms for \fIxloadimage\fR, \fIxview\fR, is the same+-name as Sun uses for their SunView-under-X package. This will be++name as Sun uses for their SunView\(hyunder\(hyX package. This will be+ confusing if you're one of those poor souls who has to use Sun's+ XView.+ .PP+@@ -674,7 +674,7 @@ screen, something which is normally avoi+ also ignore the MaxSize argument's real function, to limit the maximum+ size of the window, and allow the window to be resized larger than the+ image. If this happens, \fIxloadimage\fR merely places the image in+-the upper-left corner of the window and uses the zero-value'ed pixel++the upper\(hyleft corner of the window and uses the zero\(hyvalue'ed pixel+ for any space which is not covered by the image. This behavior is+-less-than-graceful but so are window managers which are cruel enough++less\(hythan\(hygraceful but so are window managers which are cruel enough+ to ignore such details.+Index: xloadimage.4.1.old/cmuwmraster.c+===================================================================+--- xloadimage.4.1.old.orig/cmuwmraster.c++++ xloadimage.4.1.old/cmuwmraster.c+@@ -16,11 +16,11 @@+ + /* SUPPRESS 558 */+ +-int babble(name, headerp)++void babble(name, headerp)+ char *name;+ struct cmuwm_header *headerp;+ {+- printf("%s is a %dx%d %d plane CMU WM raster\n",++ printf("%s is a %ldx%ld %ld plane CMU WM raster\n",+ name,+ memToVal(headerp->width, sizeof(long)),+ memToVal(headerp->height, sizeof(long)),+@@ -108,7 +108,7 @@ unsigned int verbose;+ {+ fprintf(stderr,"CMU WM raster %s is of depth %d, must be 1",+ name,+- header.depth);++ (int) header.depth);+ return(NULL);+ }+ +Index: xloadimage.4.1.old/copyright.h+===================================================================+--- xloadimage.4.1.old.orig/copyright.h++++ xloadimage.4.1.old/copyright.h+@@ -20,7 +20,9 @@+ */+ + #ifndef __SABER__++#ifndef LINT+ static char *Copyright= "Copyright 1989, 1993 Jim Frost";++#endif /* LINT */+ #endif+ #define _JIM_COPYRIGHT_+ #endif+Index: xloadimage.4.1.old/gif.c+===================================================================+--- xloadimage.4.1.old.orig/gif.c++++ xloadimage.4.1.old/gif.c+@@ -468,7 +468,7 @@ static int gifin_push_string(code)+ * add a new string to the string table+ */+ +-static gifin_add_string(p, e)++static void gifin_add_string(p, e)+ int p;+ int e;+ {+@@ -488,7 +488,7 @@ static gifin_add_string(p, e)+ * semi-graceful fatal error mechanism+ */+ +-static gifin_fatal(msg)++static void gifin_fatal(msg)+ char *msg;+ {+ printf("Error reading GIF file: %s\n", msg);+Index: xloadimage.4.1.old/gif.h+===================================================================+--- xloadimage.4.1.old.orig/gif.h++++ xloadimage.4.1.old/gif.h+@@ -50,8 +50,8 @@ static int gifin_load_cmap();+ static int gifin_skip_extension();+ static int gifin_read_data_block();+ static int gifin_push_string();+-static int gifin_add_string();+-static int gifin_fatal();++static void gifin_add_string();++static void gifin_fatal();+ + /* #defines, typedefs, and such+ */+Index: xloadimage.4.1.old/halftone.c+===================================================================+--- xloadimage.4.1.old.orig/halftone.c++++ xloadimage.4.1.old/halftone.c+@@ -130,23 +130,23 @@ unsigned short BlueIntensity[256]= {+ #define GRAYSTEP ((unsigned long)(65536 / GRAYS))+ + static byte DitherBits[GRAYS][4] = {+- 0xf, 0xf, 0xf, 0xf,+- 0xe, 0xf, 0xf, 0xf,+- 0xe, 0xf, 0xb, 0xf,+- 0xa, 0xf, 0xb, 0xf,+- 0xa, 0xf, 0xa, 0xf,+- 0xa, 0xd, 0xa, 0xf,+- 0xa, 0xd, 0xa, 0x7,+- 0xa, 0x5, 0xa, 0x7,+- 0xa, 0x5, 0xa, 0x5,+- 0x8, 0x5, 0xa, 0x5,+- 0x8, 0x5, 0x2, 0x5,+- 0x0, 0x5, 0x2, 0x5,+- 0x0, 0x5, 0x0, 0x5,+- 0x0, 0x4, 0x0, 0x5,+- 0x0, 0x4, 0x0, 0x1,+- 0x0, 0x0, 0x0, 0x1,+- 0x0, 0x0, 0x0, 0x0++ {0xf, 0xf, 0xf, 0xf},++ {0xe, 0xf, 0xf, 0xf},++ {0xe, 0xf, 0xb, 0xf},++ {0xa, 0xf, 0xb, 0xf},++ {0xa, 0xf, 0xa, 0xf},++ {0xa, 0xd, 0xa, 0xf},++ {0xa, 0xd, 0xa, 0x7},++ {0xa, 0x5, 0xa, 0x7},++ {0xa, 0x5, 0xa, 0x5},++ {0x8, 0x5, 0xa, 0x5},++ {0x8, 0x5, 0x2, 0x5},++ {0x0, 0x5, 0x2, 0x5},++ {0x0, 0x5, 0x0, 0x5},++ {0x0, 0x4, 0x0, 0x5},++ {0x0, 0x4, 0x0, 0x1},++ {0x0, 0x0, 0x0, 0x1},++ {0x0, 0x0, 0x0, 0x0}+ };+ + /* simple dithering algorithm, really optimized for the 4x4 array+Index: xloadimage.4.1.old/kljcpyrght.h+===================================================================+--- xloadimage.4.1.old.orig/kljcpyrght.h++++ xloadimage.4.1.old/kljcpyrght.h+@@ -22,7 +22,9 @@+ ****/+ + #ifndef __SABER__++#ifndef LINT+ static char *KLJCopyright = "Copyright 1989, 1990 Kirk L. Johnson";++#endif /* LINT */+ #endif+ #define _KLJ_COPYRIGHT_+ #endif+Index: xloadimage.4.1.old/mcidas.c+===================================================================+--- xloadimage.4.1.old.orig/mcidas.c++++ xloadimage.4.1.old/mcidas.c+@@ -63,7 +63,7 @@ static char *convert_date(time, date)+ minute = (time % 10000) / 100;+ second = (time % 100);+ +- sprintf(buf, "%d:%2.2d:%2.2d %s %d, %d (day %d)",++ snprintf(buf, 29, "%d:%2.2d:%2.2d %s %d, %d (day %d)",+ hour, minute, second, month_info[month].name, day, year,+ (date % 1000));+ return(buf);+@@ -94,7 +94,7 @@ static void babble(name, dir)+ char *name;+ struct area_dir *dir;+ {+- printf("%s is a %dx%d McIDAS areafile from %s at %s (%d, %d) (%d, %d)\n",++ printf("%s is a %ldx%ld McIDAS areafile from %s at %s (%ld, %ld) (%ld, %ld)\n",+ name,+ dir->esiz, dir->lsiz,+ mc_sensor(dir->satid),+@@ -163,7 +163,6 @@ Image *mcidasLoad(fullname, name, verbos+ struct navigation nav;+ Image *image;+ unsigned int y;+- int doswap = 0 ;+ + if (! (zf= zopen(fullname))) {+ perror("mcidasLoad");+@@ -218,7 +217,7 @@ Image *mcidasLoad(fullname, name, verbos+ */+ zread(zf, image->data, dir.esiz * dir.lsiz * dir.zsiz) ;+ if (dir.bands > 1)+- printf("Warning: Only showing first of %d bands\n", dir.bands);++ printf("Warning: Only showing first of %ld bands\n", dir.bands);+ + zclose(zf);+ image->title= dupString(name);+Index: xloadimage.4.1.old/misc.h+===================================================================+--- /dev/null++++ xloadimage.4.1.old/misc.h+@@ -0,0 +1 @@++void usageHelp() __attribute__ ((noreturn));+Index: xloadimage.4.1.old/mit.cpyrght+===================================================================+--- xloadimage.4.1.old.orig/mit.cpyrght++++ xloadimage.4.1.old/mit.cpyrght+@@ -21,8 +21,10 @@+ */+ + #ifndef __SABER__++#ifndef LINT+ static char *MitCopyright=+ "Copyright 1989 Massachusetts Institute of Technology";++#endif /* LINT */+ #endif+ #define _MIT_COPYRIGHT_+ #endif+Index: xloadimage.4.1.old/options.h+===================================================================+--- xloadimage.4.1.old.orig/options.h++++ xloadimage.4.1.old/options.h+@@ -8,6 +8,9 @@+ * copyright information.+ */+ ++#ifndef __OPTIONS_H__++#define __OPTIONS_H__+++ /* enum with the options in it. If you add one to this you also have to+ * add its information to Options[] in options.c before it becomes available.+ */+@@ -98,3 +101,8 @@ int getNextTypeOption();+ Image *loadImage _ArgProto((OptionSet *globalopts, OptionSet *options,+ char *name, unsigned int verbose));+ void identifyImage _ArgProto((char *name));++++void processOptions (int argc, char *argv[], OptionSet **rglobal, OptionSet **rimage);++void addOption (OptionSet *optset, Option *newopt);++++#endif /* __OPTIONS_H__ */+Index: xloadimage.4.1.old/pcx.c+===================================================================+--- xloadimage.4.1.old.orig/pcx.c++++ xloadimage.4.1.old/pcx.c+@@ -259,7 +259,6 @@ static void PCX_LoadImage ( zf ,image )+ ZFILE *zf;+ Image *image;+ {+- int pl;+ switch (PCXH->Zbpp) { /* What kind of plane do we have ? */+ case 1 : /* Bit planes */+ if (PCXH->Znplanes == 1) /* Only one : Read it */+@@ -298,7 +297,7 @@ Image *pcxLoad ( fullname, name, verbose+ unsigned int verbose;+ {+ ZFILE *zf;+- unsigned int i, ret;++ unsigned int i;+ int xmin;+ int xmax;+ int ymin;+Index: xloadimage.4.1.old/pdsuncomp.c+===================================================================+--- xloadimage.4.1.old.orig/pdsuncomp.c++++ xloadimage.4.1.old/pdsuncomp.c+@@ -78,7 +78,6 @@ NODE *huff_tree(hist)+ register NODE **np; /* Node list pointer */+ + register long int num_freq; /* Number non-zero frequencies in histogram */+- long int sum; /* Sum of all frequencies */+ + register short int num_nodes; /* Counter for DN initialization */+ register short int cnt; /* Miscellaneous counter */+@@ -114,6 +113,7 @@ NODE *huff_tree(hist)+ unsigned char *cp = (unsigned char *) hist++;+ unsigned long int j;+ short int i;++ j = 0;+ for (i=4 ; --i >= 0 ; j = (j << 8) | *(cp+i))+ ;+ +@@ -242,6 +242,7 @@ void sort_freq(freq_list,node_list,num_f+ * 16-AUG-89 Kris Becker USGS, Flagstaff Original Version+ */+ ++#ifdef UNUSED_FUNCTIONS+ static void free_tree(nfreed)+ long int *nfreed; /* Return of total count of nodes freed. */+ {+@@ -253,6 +254,7 @@ static void free_tree(nfreed)+ *nfreed = free_node(tree,total_free);+ return;+ }++#endif /* UNUSED_FUNCTIONS */+ + /* free_node - deallocates an allocated NODE pointer+ *+@@ -351,7 +353,6 @@ static int read_var(zf, ibuf)+ char *ibuf;+ {+ int length,result,nlen;+- unsigned int value;+ unsigned char buf[2];+ + length = 0;+@@ -361,7 +362,7 @@ static int read_var(zf, ibuf)+ return(length);+ }+ +-skip_record(zf)++void skip_record(zf)+ ZFILE *zf;+ {+ unsigned int value;+@@ -384,9 +385,6 @@ void pdsInit(zf, type)+ int type;+ {+ if (type == PDSVARIABLE) {+- char buf[2];+- int len;+- char *dummy;+ + Decompressing= 1; /* flag pdsRead() to do decompressions */+ +Index: xloadimage.4.1.old/reduce.c+===================================================================+--- xloadimage.4.1.old.orig/reduce.c++++ xloadimage.4.1.old/reduce.c+@@ -88,7 +88,7 @@ struct color_area {+ /* predicate functions for qsort+ */+ +-static sortRGB(p1, p2)++static int sortRGB(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -115,7 +115,7 @@ static sortRGB(p1, p2)+ return(1);+ }+ +-static sortRBG(p1, p2)++static int sortRBG(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -142,7 +142,7 @@ static sortRBG(p1, p2)+ return(1);+ }+ +-static sortGRB(p1, p2)++static int sortGRB(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -169,7 +169,7 @@ static sortGRB(p1, p2)+ return(1);+ }+ +-static sortGBR(p1, p2)++static int sortGBR(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -196,7 +196,7 @@ static sortGBR(p1, p2)+ return(1);+ }+ +-static sortBRG(p1, p2)++static int sortBRG(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -223,7 +223,7 @@ static sortBRG(p1, p2)+ return(1);+ }+ +-static sortBGR(p1, p2)++static int sortBGR(p1, p2)+ unsigned short *p1, *p2;+ { unsigned int red1, green1, blue1, red2, green2, blue2;+ +@@ -254,7 +254,7 @@ static sortBGR(p1, p2)+ * the color area in the list of color areas.+ */+ +-static insertColorArea(pixel_counts, rlargest, rsmallest, area)++static void insertColorArea(pixel_counts, rlargest, rsmallest, area)+ unsigned long *pixel_counts;+ struct color_area **rlargest, **rsmallest, *area;+ { int a;+@@ -368,7 +368,7 @@ Image *reduce(image, n, verbose)+ { unsigned long pixel_counts[32768]; /* pixel occurrance histogram */+ unsigned short pixel_array[32768];+ unsigned long count, midpoint;+- int x, y, num_pixels, allocated, depth, ncolors;++ int x, y, num_pixels, allocated, depth;+ byte *pixel, *dpixel;+ struct color_area *areas, *largest_area, *smallest_area;+ struct color_area *new_area, *old_area;+@@ -501,7 +501,7 @@ Image *reduce(image, n, verbose)+ + depth= colorsToDepth(n);+ new_image= newRGBImage(image->width, image->height, depth);+- sprintf(buf, "%s (%d colors)", image->title, n);++ snprintf(buf, BUFSIZ - 1, "%s (%d colors)", image->title, n);+ new_image->title= dupString(buf);+ + /* calculate RGB table from each color area. this should really calculate+Index: xloadimage.4.1.old/rle.c+===================================================================+--- xloadimage.4.1.old.orig/rle.c++++ xloadimage.4.1.old/rle.c+@@ -14,6 +14,7 @@+ #include <stdio.h>+ #include "image.h"+ #include "rle.h"++#include "rlelib.h"+ + #undef DEBUG+ #undef debug+@@ -394,7 +395,7 @@ Image *rleLoad(fullname,name,verbose)+ #define DMAP(v,x,y) (modN[v]>magic[x][y] ? divN[v] + 1 : divN[v])+ + /* run the black and white through its map */+-bw_m_line(dp,number)++void bw_m_line(dp,number)+ int number;+ register unsigned char *dp;+ {+@@ -408,7 +409,7 @@ bw_m_line(dp,number)+ }+ + /* convert a colour line with map to 8 bits per pixel */+-c_m_line(dp,number,line)++void c_m_line(dp,number,line)+ int number,line;+ register unsigned char *dp;+ {+Index: xloadimage.4.1.old/rle.h+===================================================================+--- xloadimage.4.1.old.orig/rle.h++++ xloadimage.4.1.old/rle.h+@@ -29,6 +29,9 @@+ * 88/07/13 Graeme W. Gill+ */+ ++#ifndef __RLE_H__++#define __RLE_H__+++ enum sv_dispatch {+ RUN_DISPATCH+ };+@@ -182,3 +185,7 @@ extern int dith_levels; /* target effect+ extern int dith_np2; /* set non-zero to use non-power_of_2 matrix size */+ extern int dith_size; /* effective size of the dither matrix chosen */+ ++void bw_m_line (unsigned char *dp, int number);++void c_m_line(unsigned char *dp, int number, int line);++++#endif /* __RLE_H__ */+Index: xloadimage.4.1.old/rlelib.h+===================================================================+--- /dev/null++++ xloadimage.4.1.old/rlelib.h+@@ -0,0 +1,6 @@++#include "rle.h"++++int rle_get_setup (struct sv_globals *globals);++int rle_getrow (struct sv_globals *globals, rle_pixel *scanline[]);++void make_gamma (double gamma, int gammamap[256]);++void make_magic (int size, int magic[16][16]);+Index: xloadimage.4.1.old/root.c+===================================================================+--- xloadimage.4.1.old.orig/root.c++++ xloadimage.4.1.old/root.c+@@ -16,24 +16,6 @@+ + #define RETAIN_PROP_NAME "_XSETROOT_ID"+ +-void updateProperty(dpy, w, name, type, format, data, nelem)+- Display *dpy;+- Window w;+- char *name;+- Atom type;+- int format;+- int data;+- int nelem;+-{+- /* intern the property name */+- Atom atom = XInternAtom(dpy, name, 0);+-+- /* create or replace the property */+- XChangeProperty(dpy, w, atom, type, format, PropModeReplace, +- (unsigned char *)&data, nelem);+-}+-+-+ /* Sets the close-down mode of the client to 'RetainPermanent'+ * so all client resources will be preserved after the client+ * exits. Puts a property on the default root window containing+@@ -47,9 +29,15 @@ preserveResource(dpy, w)+ {+ /* create dummy resource */+ Pixmap pm= XCreatePixmap(dpy, w, 1, 1, 1);++ unsigned char *data = (unsigned char *) &pm;+ +- /* create/replace the property */+- updateProperty(dpy, w, RETAIN_PROP_NAME, XA_PIXMAP, 32, (int)pm, 1);++ /* intern the property name */++ char *name = RETAIN_PROP_NAME;++ Atom atom = XInternAtom(dpy, name, 0);++++ /* create or replace the property */++ XChangeProperty(dpy, w, atom, XA_PIXMAP, 32, PropModeReplace,++ data, sizeof(Pixmap)/4);+ + /* retain all client resources until explicitly killed */+ XSetCloseDownMode(dpy, RetainPermanent);+@@ -61,35 +49,64 @@ preserveResource(dpy, w)+ */+ + static void+-freePrevious(dpy, w)++freePrevious(dpy, w, verbose)+ Display *dpy;+ Window w;++ unsigned int verbose;+ {+- Pixmap *pm; +- Atom actual_type; /* NOTUSED */++ Pixmap *pm;++ unsigned char *charpm;++ Atom actual_type;+ int format;+- int nitems;+- int bytes_after;++ unsigned long nitems;++ unsigned long bytes_after;++ int returncode;+ + /* intern the property name */+ Atom atom = XInternAtom(dpy, RETAIN_PROP_NAME, 0);+ + /* look for existing resource allocation */+- if ((XGetWindowProperty(dpy, w, atom, 0, 1, 1/*delete*/,+- AnyPropertyType, &actual_type, &format, (unsigned long *)&nitems,+- (unsigned long *)&bytes_after, (unsigned char **)&pm) == Success) &&+- nitems == 1) +- if ((actual_type == XA_PIXMAP) && (format == 32) &&+- (nitems == 1) && (bytes_after == 0)) {+- /* blast it away */+- XKillClient(dpy, (XID) *pm);+- XFree((char *)pm);+- }+- else if (actual_type != None) {+- fprintf(stderr,+- "%s: warning: invalid format encountered for property %s\n",+- RETAIN_PROP_NAME, "xloadimage");+- }++ nitems = sizeof(Pixmap)/4;++ returncode = XGetWindowProperty(dpy, w, atom,++ 0, nitems, 1/*delete*/,++ XA_PIXMAP, &actual_type,++ &format, &nitems,++ &bytes_after, &charpm);++ if (returncode != Success) {++ if (verbose)++ fprintf(stderr, "failed to look for %s with return code %i.\n",++ RETAIN_PROP_NAME, returncode);++ return;++ }++++ /* Check if the property was found */++ if (actual_type == None) {++ if (verbose)++ fprintf(stderr, "didn't find evidence of prior run.\n");++ return;++ }++++ /* Make sure the dummy value is still present */++ if (actual_type != XA_PIXMAP) {++ if (verbose)++ fprintf(stderr, "found wrong data type - skipped.\n");++ return;++ }++++ /* Check size, in case we're a different architecture */++ if ((nitems != sizeof(Pixmap)/4) ||++ (format != 32) ||++ (bytes_after != 0)) {++ if (verbose)++ fprintf(stderr, "saw wrong %li / word size %i / architecture %li.\n",++ bytes_after, format, nitems);++ return;++ }++++ /* blast it away */++ pm = (Pixmap*) charpm;++ XKillClient(dpy, (XID) *pm);++ XFree(charpm);+ }+ + #if FIND_DEC_ROOTWINDOW+@@ -151,9 +168,11 @@ void imageOnRoot(disp, scrn, image, opti+ Window root, rootReturn, parentReturn, *children;+ unsigned int numChildren;+ int i;++#ifdef FIND_DEC_ROOTWINDOW+ char *s;++#endif /* FIND_DEC_ROOTWINDOW */+ +- if (opt= getOption(options, WINDOWID))++ if ((opt= getOption(options, WINDOWID)))+ root= opt->info.windowid;+ else {+ root = RootWindow(disp, scrn);+@@ -182,20 +201,21 @@ void imageOnRoot(disp, scrn, image, opti+ for(i = 0; i < numChildren; i++) {+ Atom actual_type;+ int actual_format;+- long nitems, bytesafter;+- Window *newRoot = NULL;+- +- if (XGetWindowProperty (disp, children[i], __SWM_VROOT,0,1,+- False, XA_WINDOW, &actual_type, &actual_format,+- (unsigned long *)&nitems, (unsigned long *)&bytesafter,+- (unsigned char **) &newRoot) ==+- Success && newRoot) {+- root = *newRoot;++ unsigned long nitems, bytesafter;++ unsigned char *newRoot = 0;++++ if ((XGetWindowProperty (disp, children[i], __SWM_VROOT,0,1,++ False, XA_WINDOW,++ &actual_type, &actual_format,++ &nitems, &bytesafter, &newRoot)++ == Success) &&++ newRoot) {++ root = *((Window*) newRoot);+ break;+ }+ }+ }+- freePrevious(disp, root);++ freePrevious(disp, root, verbose);+ + if (! (ximageinfo= imageToXImage(disp, scrn,+ DefaultVisual(disp, scrn),+Index: xloadimage.4.1.old/rotate.c+===================================================================+--- xloadimage.4.1.old.orig/rotate.c++++ xloadimage.4.1.old/rotate.c+@@ -52,7 +52,6 @@ unsigned int verbose;+ int bit[8]; /* Array of hex values */+ int x, y;+ int i, b;+- int newx, newy;+ int newi, newb;+ byte **yptr;+ +@@ -71,9 +70,10 @@ unsigned int verbose;+ { printf(" Rotating image by %d degrees...", degrees);+ fflush(stdout);+ }+- sprintf(buf, "%s (rotated by %d degrees)", simage->title, degrees);++ snprintf(buf, BUFSIZ - 1, "%s (rotated by %d degrees)", simage->title, degrees);+ + image1 = simage;++ image2 = NULL;+ do {+ degrees -= 90;+ switch (image1->type) {+Index: xloadimage.4.1.old/tgncpyrght.h+===================================================================+--- xloadimage.4.1.old.orig/tgncpyrght.h++++ xloadimage.4.1.old/tgncpyrght.h+@@ -22,7 +22,9 @@+ ****/+ + #ifndef __SABER__++#ifndef LINT+ static char *TGNCopyright = "Copyright (C) 1991 Tim Northrup";++#endif /* LINT */+ #endif+ #define _TGN_COPYRIGHT_+ #endif+Index: xloadimage.4.1.old/xloadimage.h+===================================================================+--- xloadimage.4.1.old.orig/xloadimage.h++++ xloadimage.4.1.old/xloadimage.h+@@ -38,6 +38,7 @@ typedef struct {+ */+ + void supportedImageTypes(); /* imagetypes.c */++void dumpImage();+ + char *tail(); /* misc.c */+ void memoryExhausted();+@@ -47,6 +48,9 @@ void usage();+ void goodImage();+ int errorHandler();+ ++void showConfiguration(); /* config.c */++void listImages();+++ char *expandPath(); /* path.c */+ int findImage();+ void listImages();+Index: xloadimage.4.1.old/xpixmap.c+===================================================================+--- xloadimage.4.1.old.orig/xpixmap.c++++ xloadimage.4.1.old/xpixmap.c+@@ -54,6 +54,8 @@ Image *xpixmapLoad(fullname, name, verbo+ int c;+ byte *dptr;+ ++ cpp = 0;+++ if (! (zf= zopen(fullname)))+ return(NULL);+ +@@ -112,7 +114,7 @@ Image *xpixmapLoad(fullname, name, verbo+ return(NULL);+ }+ +- if (p= rindex(what, '_')) { /* get the name in the image if there is */++ if ((p= rindex(what, '_'))) { /* get the name in the image if there is */+ *p= '\0'; /* one */+ imagetitle= dupString(what);+ }+@@ -190,7 +192,7 @@ Image *xpixmapLoad(fullname, name, verbo+ break;+ }+ +- if (p= rindex(what, '_'))++ if ((p= rindex(what, '_')))+ p++;+ else+ p= what;+@@ -234,7 +236,7 @@ int xpixmapIdent(fullname, name)+ char *fullname, *name;+ { Image *image;+ +- if (image= xpixmapLoad(fullname, name, (unsigned int)1)) {++ if ((image= xpixmapLoad(fullname, name, (unsigned int)1))) {+ freeImage(image);+ return(1);+ }+Index: xloadimage.4.1.old/xwd.c+===================================================================+--- xloadimage.4.1.old.orig/xwd.c++++ xloadimage.4.1.old/xwd.c+@@ -418,6 +418,8 @@ Image *xwdLoad(fullname, name, verbose)+ Image *image;+ int a;+ ++ image = NULL;+++ if (! (zf= zopen(fullname)))+ return(NULL);+ if (! isXWD(name, zf, &header, verbose)) {+Index: xloadimage.4.1.old/zoom.c+===================================================================+--- xloadimage.4.1.old.orig/zoom.c++++ xloadimage.4.1.old/zoom.c+@@ -53,6 +53,8 @@ Image *zoom(oimage, xzoom, yzoom, verbos+ byte srcmask, destmask, bit;+ Pixel value;+ ++ image = NULL;+++ goodImage(oimage, "zoom");+ + if (!xzoom && !yzoom) /* stupid user */+@@ -61,23 +63,23 @@ Image *zoom(oimage, xzoom, yzoom, verbos+ if (!xzoom) {+ if (verbose)+ printf(" Zooming image Y axis by %d%%...", yzoom);+- sprintf(buf, "%s (Y zoom %d%%)", oimage->title, yzoom);++ snprintf(buf, BUFSIZ - 1, "%s (Y zoom %d%%)", oimage->title, yzoom);+ }+ else if (!yzoom) {+ if (verbose)+ printf(" Zooming image X axis by %d%%...", xzoom);+- sprintf(buf, "%s (X zoom %d%%)", oimage->title, xzoom);++ snprintf(buf, BUFSIZ - 1, "%s (X zoom %d%%)", oimage->title, xzoom);+ }+ else if (xzoom == yzoom) {+ if (verbose)+ printf(" Zooming image by %d%%...", xzoom);+- sprintf(buf, "%s (%d%% zoom)", oimage->title, xzoom);++ snprintf(buf, BUFSIZ - 1, "%s (%d%% zoom)", oimage->title, xzoom);+ }+ else {+ if (verbose)+ printf(" Zooming image X axis by %d%% and Y axis by %d%%...",+ xzoom, yzoom);+- sprintf(buf, "%s (X zoom %d%% Y zoom %d%%)", oimage->title,++ snprintf(buf, BUFSIZ - 1, "%s (X zoom %d%% Y zoom %d%%)", oimage->title,+ xzoom, yzoom);+ }+ if (verbose)+Index: xloadimage.4.1.old/merge.c+===================================================================+--- xloadimage.4.1.old.orig/merge.c++++ xloadimage.4.1.old/merge.c+@@ -244,6 +244,7 @@ Image *tile(image, x, y, width, height,+ int x, y;+ unsigned int width, height, verbose;+ { Image *base, *tmp;++ int nx, ny;+ + if (verbose) {+ printf(" Tiling...");+@@ -259,16 +260,14 @@ Image *tile(image, x, y, width, height,+ else+ base = newTrueImage(width, height);+ +- while (x < base->width) {+- while(y < base->height) {+- tmp = merge(base, image, x, y, 0);++ for (nx = x; nx < base->width; nx += image->width) {++ for(ny = y; ny < base->height; ny += image->height) {++ tmp = merge(base, image, nx, ny, 0);+ if (tmp != base) {+ freeImage(base);+ base = tmp;+ }+- y += image->width;+ }+- x += image->width;+ }+ printf("done.\n");+ return(base);+Index: xloadimage.4.1.old/zio.c+===================================================================+--- xloadimage.4.1.old.orig/zio.c++++ xloadimage.4.1.old/zio.c+@@ -210,9 +210,30 @@ ZFILE *zopen(name)+ if ((strlen(name) > strlen(filter->extension)) &&+ !strcmp(filter->extension,+ name + (strlen(name) - strlen(filter->extension)))) {+- debug(("Filtering image through '%s'\n", filter->filter));+- zf->type= ZPIPE;+- sprintf(buf, "%s %s", filter->filter, name);++ char *fname, *t, *s;++ ++ /* meta-char protection from xli.++ *++ * protect in single quotes, replacing single quotes++ * with '"'"', so worst-case expansion is 5x++ */++ ++ s = fname = (char *) lmalloc(1 + (5 * strlen(name)) + 1 + 1);++ *s++ = '\'';++ for (t = name; *t; ++t) {++ if ('\'' == *t) {++ /* 'foo'bar' -> 'foo'"'"'bar' */++ strcpy(s, "'\"'\"'");++ s += strlen(s);++ } else {++ *s++ = *t;++ }++ }++ strcpy (s, "'");++ debug(("Filtering image through '%s'\n", filter->filter));++ zf->type= ZPIPE;++ snprintf(buf, BUFSIZ - 1, "%s %s", filter->filter, fname);++ lfree (fname);+ if (! (zf->stream= popen(buf, "r"))) {+ lfree((byte *)zf->filename);+ zf->filename= NULL;+Index: xloadimage.4.1.old/uufilter.man+===================================================================+--- xloadimage.4.1.old.orig/uufilter.man++++ xloadimage.4.1.old/uufilter.man+@@ -1,8 +1,8 @@+-.TH UUFILTER 1 "21 October 1993"++.TH UUFILTER 1x "21 October 1993"+ .SH NAME+ uufilter - decode uuencoded files to stdout+ .SH SYNOPSIS+-\fIuufilter\fR [-f \fIoutfilename\fR] [-l] [-s] [-v] [\fIinfilename\fR]++\fIuufilter\fR [\-f \fIoutfilename\fR] [\-l] [\-s] [\-v] [\fIinfilename\fR]+ .SH DESCRIPTION+ \fIUufilter\fR is a "smart" uuencoded file decoder that can optionally+ dump the file to stdout.+@@ -12,23 +12,23 @@ If no filename is supplied, input is rea+ \fIUufilter\fR automatically ignores lines that do not appear to be+ part of the uuencoded file. This is particularly useful in uudecoding+ files that have been concatenated from several email or news postings+-without stripping off the headers or otherwise editting extraneous++without stripping off the headers or otherwise editing extraneous+ content.+ .SH OPTIONS+ .TP 8+--f \fIfilename\fR++\-f \fIfilename\fR+ Dump output to \fIfilename\fR rather than the name specified in the+ uuencoded file.+ .TP+--l++\-l+ Lenient mode. This is useful if passed through a mailer that adds+ trailing spaces.+ .TP+--s++\-s+ Dump output to stdout rather than to the filename indicated in the+ uuencoded file.+ .TP+--v++\-v+ Verbose mode; talks about what's going on.+ .SH AUTHOR+ Jim Frost (jimf@centerline.com)+Index: xloadimage.4.1.old/autoconfig.c+===================================================================+--- xloadimage.4.1.old.orig/autoconfig.c++++ xloadimage.4.1.old/autoconfig.c+@@ -5,6 +5,7 @@+ * jim frost 09.05.93+ */+ ++#include <string.h>+ #include <stdio.h>+ #include <sys/types.h>+ #include <sys/stat.h>+Index: xloadimage.4.1.old/build-info+===================================================================+--- xloadimage.4.1.old.orig/build-info++++ xloadimage.4.1.old/build-info+@@ -30,6 +30,12 @@ else+ uname='char *BuildSystem= "<unknown system>";'+ fi+ ++if [ -n "$SOURCE_DATE_EPOCH" ]; then++ date='char *BuildDate= "'$(LC_ALL=C date --utc --date="@${SOURCE_DATE_EPOCH}")'";'++ user='char *BuildUser= (char *)0;'++ uname='char *BuildSystem= (char *)0;'++fi+++ echo '/* THIS FILE IS AUTOMATICALLY GENERATED */' > build.c+ echo $uname >> build.c+ echo $date >> build.cdiff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scmindex 9b663aa158..c300509e78 100644--- a/gnu/packages/xorg.scm+++ b/gnu/packages/xorg.scm@@ -26,6 +26,7 @@ ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;;@@ -6736,3 +6737,70 @@ that Make knows which object files must be recompiled when a dependency has changed.") (home-page "https://gitlab.freedesktop.org/xorg/util/gccmakedep") (license license:x11)))++(define-public xloadimage+ (package+ (name "xloadimage")+ (version "4.1")+ (source+ (origin+ (method url-fetch)+ (uri (string-append "mirror://debian/pool/main/x/xloadimage/xloadimage_"+ version ".orig.tar.gz"))+ (sha256+ (base32 "1i7miyvk5ydhi6yi8593vapavhwxcwciir8wg9d2dcyg9pccf2s0"))+ (patches (search-patches "xloadimage-debian-series-25.patch"))))+ (build-system gnu-build-system)+ (arguments+ `(#:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'patch-paths+ (lambda* (#:key outputs #:allow-other-keys)+ (let ((out (assoc-ref outputs "out")))+ (substitute* "Makefile"+ (("/usr/lib") (string-append out "/lib"))+ (("cp( xloadimagerc)" _ file)+ (string-append "install -D" file)))+ #t)))+ (replace 'configure+ (lambda* (#:key outputs #:allow-other-keys)+ (let ((out (assoc-ref outputs "out")))+ (invoke "chmod" "+x" "./configure")+ (setenv "CONFIG_SHELL" (which "sh"))+ (invoke "./configure"))))+ (replace 'install+ (lambda* (#:key outputs #:allow-other-keys)+ (let* ((out (assoc-ref outputs "out"))+ (etc (string-append out "/etc/X11"))+ (bin (string-append out "/bin"))+ (man1 (string-append out "/share/man/man1")))+ (install-file "xloadimage" bin)+ (symlink "xloadimage" (string-append bin "/xsetbg"))+ (symlink "xloadimage" (string-append bin "/xview"))+ (install-file "uufilter" bin)+ (mkdir-p etc)+ (copy-file "xloadimagerc"+ (string-append etc "/Xloadimage"))+ (mkdir-p man1)+ (copy-file "xloadimage.man"+ (string-append man1 "/xloadimage.1"))+ (symlink "xloadimage.1" (string-append man1 "/xsetbg.1"))+ (symlink "xloadimage.1" (string-append man1 "/xview.1"))+ (copy-file "uufilter.man"+ (string-append man1 "/uufilter.1"))+ #t)))+ ;; No test suite+ (delete 'check))))+ (inputs+ `(("libx11" ,libx11)+ ("libjpeg" ,libjpeg-turbo)+ ("libpng" ,libpng)+ ("libtiff" ,libtiff)))+ (synopsis "Utility to view many different types of images under X11")+ (description "Xloadimage can view png, jpeg, gif, tiff, niff, sunraster,+fbm, cmuraster, pbm, faces, rle, xwd, vff, mcidas, vicar, pcx, gem, macpaint,+xpm and xbm files. Or put them on the root window, or dump them. It also+does a variety of processing, including: clipping, dithering, depth reduction,+zoom, brightening/darkening and merging.")+ (home-page "https://sioseis.ucsd.edu/xloadimage.html")+ (license license:expat)))-- 2.26.2
L
L
Ludovic Courtès wrote on 27 Jun 2020 19:12
(name . Brice Waegeneire)(address . brice@waegenei.re)(address . 42056@debbugs.gnu.org)
87ftagl9fj.fsf@gnu.org
Hi Brice,
Brice Waegeneire <brice@waegenei.re> skribis:
Toggle quote (4 lines)> * gnu/packages/xorg.scm (xloadimage): New variable.> * gnu/packages/patches/xloadimage-debian-series-25.patch: New file …> * gnu/local.mk (dist_patch_DATA): … add it.
[...]
Toggle quote (4 lines)> +++ b/gnu/packages/patches/xloadimage-debian-series-25.patch> @@ -0,0 +1,7665 @@> +Combined patches from Debian: https://sources.debian.org/patches/xloadimage/4.1-25/
We should keep ’em separated, for clarity.
However:
Toggle quote (5 lines)> +Index: xloadimage.4.1.old/Makefile.in> +===================================================================> +--- /dev/null> ++++ xloadimage.4.1.old/Makefile.in
[...]
Toggle quote (9 lines)> +--- /dev/null> ++++ xloadimage.4.1.old/configure> +@@ -0,0 +1,2476 @@> ++#! /bin/sh> ++> ++# Guess values for system-dependent variables and create Makefiles.> ++# Generated automatically using autoconf version 2.13 > ++# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
This adds an Autoconf-generated ‘configure’ file. IOW, it seems we’readding a complete build system that’s not available upstream.
It seems to me that it’s too much. It would be okay to add a couple ofMakefile.in and a minimalist ‘configure.ac’, if they’re small, and fromthere to run the bootstrap phase.
It would be better to try and use upstream’s build system though.
Thoughts?
Ludo’.
L
L
Ludovic Courtès wrote on 18 Dec 2020 16:12
control message for bug #42056
(address . control@debbugs.gnu.org)
871rfnb12n.fsf@gnu.org
tags 42056 + moreinfoquit
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 42056@debbugs.gnu.org