#!/bin/bash PROGNAME=`basename $0` || exit 1 QUIET=0 DEBUG=0 function debug { if [ "$DEBUG" = "1" ]; then echo "${PROGNAME}:debug:$1" 1>&2; fi } function warning { if [ "$QUIET" = "0" ]; then echo "${PROGNAME}:warning:$1" 1>&2; fi } TMPDIR= function cleanup { debug "cleanup called, arg=$1" trap - EXIT HUP INT TERM ERR if [ "$TMPDIR" != "" -a -d "$TMPDIR" ]; then debug "removing $TMPDIR" rm -f -r $TMPDIR fi exit $1 } function fatal { echo "${PROGNAME}:${1:-"unknown error"}" 1>&2 cleanup 1 } function sig_handler_HUPINTTERM { fatal "cought HUP, INT or TERM signal, exiting" } function sig_handler_ERR { cleanup 1 } function sig_handler_EXIT { cleanup 0 } trap sig_handler_HUPINTTERM HUP INT TERM trap sig_handler_ERR ERR trap sig_handler_EXIT EXIT TMPDIR=`mktemp -d -p /tmp .$PROGNAME.XXXXXX` if [ ! -f ./head.tex ]; then echo "required file ./head.tex missing" exit 1 fi #if [ ! -x ./gif2rgb ]; then # echo "required file ./gif2rgb missing" # exit 1 #fi #if [ ! -x ./convert ]; then # echo "required file ./convert missing" # exit 1 #fi if [ -f ./out.tex ]; then echo "tempfile existing, will not overwrite" exit 1 fi if [ -f ./out.pdf ]; then echo "outputfile existing, will not overwrite" exit 1 fi cat ./head.tex > $TMPDIR/out.tex for i in "$@"; do NAME=${i%.} NAME=${NAME%.gif} BNAME=`basename "$NAME"` if ! file "$i" | grep -e ": GIF image data" > /dev/null; then echo $i is not a .gif file exit 1 fi RES=`file "$i" | sed "s/^.*, \([[:digit:]]\+\) x \([[:digit:]]\+\)\$/\1 \2/"` echo P6 > "$TMPDIR/$BNAME.pnm" echo $RES >> "$TMPDIR/$BNAME.pnm" echo 255 >> "$TMPDIR/$BNAME.pnm" #./gif2rgb "$i" >> "$TMPDIR/$BNAME.pnm" #pnmtopng "$TMPDIR/$BNAME.pnm" > "$TMPDIR/$BNAME.png" 2> /dev/null convert "$i" $TMPDIR/$BNAME.png #rm "$TMPDIR/$BNAME.pnm" echo "\\page{$BNAME.png}" >> $TMPDIR/out.tex done echo "\\bye" >> $TMPDIR/out.tex OLDDIR=$PWD cd $TMPDIR pdftex out.tex cp out.pdf $OLDDIR/out.pdf #rm out.tex