#!/usr/local/bin/bash ## ############################################################# ## Shellscript to extract Mailadresses ## also adds a section with ICQ numbers ## ## Synopsis: ## Creating a list of email addresses ## ## Relies on: ## ~/.mailrc ## ~/.nick_translate ## ~/.icq_numbers ## ## ------------------------------------------------------------- ## $Id: printmailads,v 1.10 2004/10/18 04:18:40 oli Exp $ ## ------------------------------------------------------------- ## §TABLE OF CONTENTS: [TOCD: 21:12 17 Oct 2004] ## ## [1] -- FUNCTIONS ------------------------------------------------- ## [1.1] SORTING ACCORDING TO REAL NAMES (if given) ## [2] -- READ OPTIONS ----------------------------------------------- ## [2.1] -- SANITY CHECKS ---------------------------------------- ## [3] == START ====================================================== ## ############################################################# ## @FILE: printmailads ## §PLACE: Linux Homestation ## @FORMAT: bash script ## @AUTHOR: M. Oliver M"oller ## @BEGUN: Summer 1999 ## @VERSION: V2.3 Sun Oct 17 21:18:23 2004 ## ############################################################# ## SHELL=/usr/local/bin/bash ## -- ELEMENTARIES -------------------------------------------------------- ## ## Shell settings TMP_DIRECTORY=/tmp TMP_PREFIX=tmp.mailalias_file.$$; ADD_ICQ_SECTION=false; PRESERVE_TMP_FILE=false GHOSTVIEW=gv ## FILE=""; CALL_PWD=${PWD}; VERBOSE=false; QUIET=false; MAIL_FILE="${HOME}/.mailrc" NICK_FILE="${HOME}/.nick_translate" ICQ_FILE="${HOME}/.icq_numbers" DELAY_SECONDS="10"; ## delay before printing HERE=`dirname $0`; N_PAGES=-1; HEIGHT_ONE_PAGE="11.2cm" ## -- printer ----------------------------------------- if [ -z ${DUPLEX_PRINTER} ]; then USED_PRINTER=${PRINTER}; else USED_PRINTER=${DUPLEX_PRINTER} fi; PRINT_COMMAND="xlpr -P "; PRINTER_TUMBLE="-F"; PRINTER_TUMBLE_ARG="*PageSize A4,*Duplex DuplexNoTumble"; #,*Manual Feed True"; PRINTER_LINEEND="-g"; ## -- derived ----------------------------------------- TMP_TXT_FILE=${TMP_PREFIX}.txt TMP_TEX_FILE=${TMP_PREFIX}.tex TMP_POST_PREFIX=${TMP_PREFIX}.postprocess ## ---------------------------------------------------- BACKSLASH="\\" ## ---------------------------------------------------- VERSION_NUMBER="V2.3 "; VERSION_DATE="Sun Oct 17 21:18:23 2004" ; Date="Date"; EMPTY=""; VERSION="${VERSION_NUMBER} ${VERSION_DATE} ($Date: 2004/10/18 04:18:40 ${EMPTY}:)"; ## -- WORKAROUNDS ---------------------------------------------------------- if [ "${LOCATION}" == "uu" ]; then BACKSLASH="\\\\"; fi; ## -- fix options ------------------------------------- if [ "$LOCATION" == "uu" ]; then ## -- Uppsala -------- USED_PRINTER="pr1424_duplex2"; PRINT_COMMAND="lpr -P "; PRINTER_LINEEND=""; PRINTER_TUMBLE=""; PRINTER_TUMBLE_ARG=""; fi; if [ "$LOCATION" == "sri" ]; then ## -- SRI ----------- # duplex simplex 2up landscape PRINT_MEDIA="letter"; PRINT_COMMAND="lp -oduplex -onobanner -d"; PRINTER_LINEEND=""; PRINTER_TUMBLE=""; PRINTER_TUMBLE_ARG=""; OFIXPS_VERSION=$(get_version_number_of_script ofixps); if [ $(compute_minus 0$OFIXPS_VERSION 1.5) -lt 0 ]; then echo "$0: Need ofixps 1.5 or higher. " 1>&2; echo "Sorry. " 1>&2; exit 1; fi; ## later: FLIP_COMMAND="ofixps -q -t -a -e ${EVEN_OFFSET} - - "; fi; if [ "$LOCATION" == "aalborg" ]; then ## -- AALBORG -------- # duplex simplex 2up landscape PRINT_COMMAND="lp -oduplex -d"; PRINTER_LINEEND=""; PRINTER_TUMBLE=""; PRINTER_TUMBLE_ARG=""; OFIXPS_VERSION=$(get_version_number_of_script ofixps); if [ $(compute_minus 0$OFIXPS_VERSION 1.5) -lt 0 ]; then echo "$0: Need ofixps 1.5 or higher. " 1>&2; echo "Sorry. " 1>&2; exit 1; fi; ## later: FLIP_COMMAND="ofixps -q -t -a -e ${EVEN_OFFSET} - - "; fi; if [ "$LOCATION" == "gaia" ]; then ## -- AALBORG -------- # duplex simplex 2up landscape PRINT_COMMAND="lpr "; PRINTER_LINEEND=""; PRINTER_TUMBLE=""; PRINTER_TUMBLE_ARG=""; fi; ## ################################################################### ## [1] -- FUNCTIONS ------------------------------------------------- ## ################################################################### function print_usage { echo "printmailads (${VERSION})" 1>&2; echo "" 1>&2; echo "usage: printmailads [hipv] [-W DIR] [-f FILE]" 1>&2; echo " -h : print help" 1>&2; echo " --icq-file -c FILE : use FILE to retrieve icq numbers (default: ${ICQ_FILE})" 1>&2; echo " --height -h LEN : use LEN to determine height of one virtual page (default: sleep ${HEIGHT_ONE_PAGE})" 1>&2; echo " -i : print immediately (default: sleep ${DELAY_SECONDS} sec)" 1>&2; echo " --add-icq -I : add ICQ section at end (default: no)" echo " --mail-file -m FILE : use FILE to retrieve alias definitions (default: ${MAIL_FILE})" 1>&2; echo " --nick-file -n FILE : use FILE to retrieve nick names (default: ${NICK_FILE})" 1>&2; echo " --preserve -p : preserve temporary files" echo " -v : verbose on" 1>&2; echo " -f FILE : no printing, save output to FILE" 1>&2; echo " --work-dir -W DIR : working DIR for temporary files (default: $TMP_DIRECTORY)" 1>&2; echo " --verbose -v : set output to verbose" 1>&2; echo " --version : print version and exit" 1>&2; } function print_help { print_usage; echo "description:"; echo " extract email addresses to postscript file;"; echo " can also adds a section with ICQ numbers. "; echo " starting point are the three files"; echo " [--mail-file / -m ] ${MAIL_FILE}" ; echo " [--nick-file / -n ] ${NICK_FILE} " ; echo " [--icq-file / -c ] ${ICQ_FILE} " ; echo ""; echo " In ./mailrc, all lines of the form "; echo " alias (,)*"; echo " are relevant. "; echo " Nicks containing the substrings -OLD or -ALL are ignored. "; echo " For those s that correspond to a single email address you can" echo " a full name in ${NICK_FILE} using the format:"; echo " ,"; echo " In the name entry, all characters ':' are replaced by spaces."; echo " This is consistent with the java utility Nicky."; echo ""; echo " If existent, the optional file ${ICQ_FILE} "; echo " can contain entries of the format "; echo " "; echo ""; echo "relies on: psselect "; echo ""; echo "author: M. Oliver M'o'ller "; exit 1; } function abort { ## -- clear the temp files -- echo "$0: ERROR: $1" 1>&2; echo "** printmailads aborted." 1>&2; exit 1; } function assert_file_exists { if [ ! -f ${1} ]; then echo "ERROR: required input file '${1}' does not exist."; abort; fi; } function confirm() { echo -n "$1 (y/N)? " >&2 read CONFIRM_QUERY_ANSWER case $CONFIRM_QUERY_ANSWER in y ) true;; Y ) true;; yes ) true;; YES ) true;; * ) false;; esac } function blurt { if ${VERBOSE}; then echo "$@"; fi; } function get_version_number_of_script { ## 0.00: nonexistent! PROG=$(which $1 2>/dev/null); if [ ! -z "${PROG}" ] && [ -x "${PROG}" ]; then $PROG --version 2>/dev/null |sed -e "s/@//g" |sed -e "s/\\./@/1" | sed -e "s/[^0123456789@]//g" | sed -e "s/@/./g" ; else echo "0.00"; fi } function compute_minus { ## minus, scaled (used for comparison of floats) echo "10000000.0*(($1)-($2))" | bc -l | cut -d'.' -f 1; } ## -- other aux functions: function get_all_alias { cat ${1} \ | grep -e "^alias[ \t]" \ | grep -v "[,]" \ | grep -v -e "^alias[ \t][ \t]*[a-zA-Z0-9_-]*[-]OLD" \ | grep -v -e "^alias[ \t][ \t]*[a-zA-Z0-9_-]*[-]ALL" \ | sed "s/\&/{\\\\&}/g" \ | sed "s/[\t]/ /g" \ | sort \ > ${TMP_DIRECTORY}/${TMP_TXT_FILE}; blurt "## wrote ${TMP_DIRECTORY}/${TMP_TXT_FILE} $(wc -l ${TMP_DIRECTORY}/${TMP_TXT_FILE} | cut -d'/' -f 1) lines"; } ## ############################################### ## [1.1] SORTING ACCORDING TO REAL NAMES (if given) ## ############################################### function create_tex_file_head { echo "\\documentclass{article}" > ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\usepackage{fullpage}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\usepackage{longtable}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\newfont{\\ttt }{cmtt10 at 4 pt}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\newfont{\\verytiny }{cmr10 at 4 pt}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} ## echo "\\vspace*{-20mm}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} ## was: echo "\\setlength{\\textheight}{12.2cm}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\setlength{\\textheight}{${HEIGHT_ONE_PAGE}}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\begin{document}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\pagestyle{empty}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\verytiny" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE}; ## -- DISCLAIMER -------------------------------------------------------- echo "\\noindent" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE}; echo "\\hspace*{40mm}CREATED: `date`${BACKSLASH}${BACKSLASH}[-3mm]" \ >> ${TMP_DIRECTORY}/${TMP_TEX_FILE}; >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "\\hspace*{40mm}WITH: printmailads ${VERSION}${BACKSLASH}${BACKSLASH}[-10mm]" \ >> ${TMP_DIRECTORY}/${TMP_TEX_FILE}; ## ---------------------------------------------------- echo "\\begin{center}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\begin{longtable}{|l|l|l|} \\hline" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} ## if ! ${QUIET}; then echo "** matching entries with nick names..." fi; nickv="NOONE" mailv="NONE" TMP2_PREFIX=${TMP_PREFIX}.additional TMP_NICK_FILE=${TMP_DIRECTORY}/${TMP_PREFIX}.nick ; TMP_NAME_TO_NICK_FILE=${TMP_DIRECTORY}/${TMP_PREFIX}.name_to_nick ; cat ${NICK_FILE} \ | grep -v -e "^#" \ | sed 's/[\t]/ /g' \ | sed 's/[ ][ ]*/ /g' \ > ${TMP_NICK_FILE} ; echo "" > ${TMP2_PREFIX}.tex rm -f ${TMP_NAME_TO_NICK_FILE}; for name in $(cat ${TMP_DIRECTORY}/${TMP_TXT_FILE} \ | cut -d' ' -f 2 \ | sed -e 's/^[ \t]*//g' \ ); do fullname=$(grep -e "^${name} " ${TMP_NICK_FILE} \ | cut -d' ' -f 2- \ | sed 's/ /:/g' \ | sed "s/\&/{\\\\&}/g" \ ); if [ -z $fullname ]; then fullname="_UNKNOWN" ; fi; blurt "### >>$name<< -> $fullname" ; echo "$fullname $name" >> ${TMP_NAME_TO_NICK_FILE}; done; fullname="_NONE"; for entry in $(sort ${TMP_NAME_TO_NICK_FILE}); do if [ "$fullname" == "_NONE" ]; then fullname=${entry}; if [ "$fullname" == "_UNKNOWN" ]; then fullname=""; fi; else nick=${entry}; email=$(grep -e "^alias ${nick} " ${TMP_DIRECTORY}/${TMP_TXT_FILE} \ | cut -d' ' -f3- \ ); echo "\\raisebox{1.5mm}{$fullname} & \\raisebox{1.5mm}{$nick} & \\raisebox{1.5mm}{\ttt $email}\\vspace*{-2.3mm}\\\\ \\hline" \ >> ${TMP2_PREFIX}.tex fullname="_NONE"; fi; done; ## ---------------------------------------------------- cat ${TMP2_PREFIX}.tex \ | sed -e 's/ß/\\ss{}/g' | sed -e 's/ö/{\\"o}/g' | sed -e 's/ä/{\\"a}/g' \ | sed -e 's/ü/{\\"u}/g' | sed -e 's/Ö/{\\"O}/g' | sed -e 's/Ä/{\\"A}/g' \ | sed -e 's/Ü/{\\"U}/g' \ | sed -e 's/:/{ }/g' \ | sed -e 's/_/\\_/g' \ |sort >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} ## ---------------------------------------------------- echo "\\end{longtable}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} } function finalize_tex_file { echo "\\end{center}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\end{document}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} } function add_icq_section { echo "" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\begin{tabular}{|l|l||l|l||l|l||l|l|}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\hline" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="0" for icqname in $(cat ${ICQ_FILE} \ | grep -v -e "^#" \ | sort \ ); do echo "\\raisebox{1.5mm}{$icqname}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} if [ $count = "7" ]; then echo "\\vspace*{-2.3mm}\\\\" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="0" else if [ $count = "6" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="7" fi if [ $count = "5" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="6" fi if [ $count = "4" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="5" fi if [ $count = "3" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="4" fi if [ $count = "2" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="3" fi if [ $count = "1" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="2" fi if [ $count = "0" ]; then echo "&" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} count="1" fi fi done if [ $count = "2" ]; then echo "&&&&&\\vspace*{-2.3mm}\\\\" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} fi if [ $count = "4" ]; then echo "&&&\\vspace*{-2.3mm}\\\\" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} fi if [ $count = "6" ]; then echo "&\\vspace*{-2.3mm}\\\\" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} fi echo "\\hline" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} echo "\\end{tabular}" >> ${TMP_DIRECTORY}/${TMP_TEX_FILE} } function create_postprocess_file { echo "%% postprocessing mail file " > ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}documentclass{article}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}usepackage{fullpage}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}usepackage{epsfig}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}pagestyle{empty}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}setlength{${BACKSLASH}textheight}{40cm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}setlength{${BACKSLASH}parindent}{0cm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}newcommand{${BACKSLASH}FourInOnePage}[4]{%%-" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}thispagestyle{empty}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}vspace*{-35mm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}hspace*{-75mm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}begin{minipage}{7.5cm}${BACKSLASH}epsfig{file=#1}${BACKSLASH}end{minipage}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}hspace*{1cm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}begin{minipage}{7.5cm}${BACKSLASH}epsfig{file=#2}${BACKSLASH}end{minipage}${BACKSLASH}${BACKSLASH}[-170mm]" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}hspace*{-75mm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}begin{minipage}{7.5cm}${BACKSLASH}epsfig{file=#3}${BACKSLASH}end{minipage}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}hspace*{1cm}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}begin{minipage}{7.5cm}${BACKSLASH}epsfig{file=#4}${BACKSLASH}end{minipage}${BACKSLASH}${BACKSLASH}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}newpage" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "}%% ------------------------------" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}begin{document}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; PAGE=1; echo "### LAYOUT FOR ${N_PAGES} PAGES:"; echo "%% LAYOUT FOR ${N_PAGES} PAGES:" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; while [ ${PAGE} -le ${N_PAGES} ]; do if [ $((${PAGE}+4)) -le ${N_PAGES} ]; then echo "${BACKSLASH}FourInOnePage{./${TMP_PREFIX}.$((${PAGE}+0)).ps}{./${TMP_PREFIX}.$((${PAGE}+0)).ps}{./${TMP_PREFIX}.$((${PAGE}+7)).ps}{./${TMP_PREFIX}.$((${PAGE}+4)).ps}%-" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; echo "${BACKSLASH}FourInOnePage{./${TMP_PREFIX}.$((${PAGE}+1)).ps}{./${TMP_PREFIX}.$((${PAGE}+2)).ps}{./${TMP_PREFIX}.$((${PAGE}+5)).ps}{./${TMP_PREFIX}.$((${PAGE}+6)).ps}%-" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; PAGE=$((PAGE+8)); else echo "${BACKSLASH}FourInOnePage{./${TMP_PREFIX}.$((${PAGE})).ps}{./${TMP_PREFIX}.$((${PAGE}+1)).ps}{./${TMP_PREFIX}.$((${PAGE}+2)).ps}{./${TMP_PREFIX}.$((${PAGE}+3)).ps}%-" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; PAGE=$((PAGE+4)); fi; done echo "${BACKSLASH}end{document}" >> ${TMP_DIRECTORY}/${TMP_POST_PREFIX}.tex; } ## ################################################################### ## [2] -- READ OPTIONS ----------------------------------------------- ## ################################################################### AWAIT=""; for switch in $@; do case $AWAIT in -W ) AWAIT=""; TMP_DIRECTORY=$switch;; -f ) AWAIT=""; FILE=$switch;; -m ) AWAIT=""; MAIL_FILE=$switch;; -n ) AWAIT=""; NICK_FILE=$switch;; -c ) AWAIT=""; ICQ_FILE=$switch;; -h ) AWAIT=""; HEIGHT_ONE_PAGE=$switch;; * ) case $switch in --help ) print_help;; -help ) print_help;; -h ) print_help;; -c ) AWAIT="-c";; --icq-file ) AWAIT="-c";; -m ) AWAIT="-m";; --mail-file ) AWAIT="-m";; -n ) AWAIT="-n";; --nick-file ) AWAIT="-n";; -h ) AWAIT="-h";; --height ) AWAIT="-h";; -i ) DELAY_SECONDS=0;; --add-icq ) ADD_ICQ_SECTION=true;; -I ) ADD_ICQ_SECTION=true;; -icq ) ADD_ICQ_SECTION=true;; -ICQ ) ADD_ICQ_SECTION=true;; --preserve ) PRESERVE_TMP_FILE=true;; -p ) PRESERVE_TMP_FILE=true;; --verbose ) VERBOSE=true;; -v ) VERBOSE=true;; --work-dir ) AWAIT="-W";; -W ) AWAIT="-W";; -f ) AWAIT="-f";; -q ) QUIET=true;; --version ) echo "Version: $VERSION";exit 0;; -* ) echo "Unknown switch: $switch";print_usage;exit 1;; * ) print_help;; esac esac done; ## -- REQUIRED SUB-SCRIPTS and UNIX FUNCTIONS ------------------------------ #SCRIPT_VERSION=$(get_version_number_of_script fig2eps); #if [ $(compute_minus $SCRIPT_VERSION 1.0) -lt 0 ]; then # echo "$0: Need SCRIPT 1.0 or higher. " 1>&2; # echo "Sorry. " 1>&2; # exit 1; #fi; ## -- PROPAGATE ------------------------------------------------------------ ## -- SPAM ----------------------------------------------------------------- if $VERBOSE; then echo "QUIET: ${QUIET}" ; echo "MAIL_FILE: ${MAIL_FILE}" ; echo "NICK_FILE: ${NICK_FILE}" ; echo "IQC_FILE: ${ICQ_FILE}" ; echo "FILE: ${FILE}" ; echo "CALL_PWD: ${CALL_PWD}" ; echo "VERBOSE: ${VERBOSE}" ; echo "ADD_ICQ_SECTION: ${ADD_ICQ_SECTION}"; echo "PRESERVE_TMP_FILE: ${PRESERVE_TMP_FILE}" ; echo "DELAY_SECONDS: ${DELAY_SECONDS}"; echo "USED_PRINTER: ${USED_PRINTER}" ; echo "PRINT_COMMAND: ${PRINT_COMMAND}"; echo "PRINTER_TUMBLE: ${PRINTER_TUMBLE}"; echo "PRINTER_TUMBLE_ARG: ${PRINTER_TUMBLE_ARG}"; echo "VERSION: ${VERSION}" ; fi; ## ############################################### ## [2.1] -- SANITY CHECKS ---------------------------------------- ## ############################################### assert_file_exists ${MAIL_FILE} ; assert_file_exists ${NICK_FILE} ; if ${ADD_ICQ_SECTION}; then assert_file_exists ${ICQ_FILE} ; fi; ## ################################################################### ## [3] == START ====================================================== ## ################################################################### pushd ${TMP_DIRECTORY} get_all_alias ${MAIL_FILE}; if ! ${QUIET}; then echo "** extracted all alias."; fi; create_tex_file_head; if ! ${QUIET}; then echo "** head of LaTeX file ${TMP_TEX_FILE} created."; fi; if ${ADD_ICQ_SECTION}; then add_icq_section; fi; finalize_tex_file; if ! ${QUIET}; then echo "** LaTeX file ${TMP_TEX_FILE} created."; fi; ## ---------------------------------------------------- #latex ${TMP_DIRECTORY}/${TMP_TEX_FILE} latex ${TMP_DIRECTORY}/${TMP_TEX_FILE} dvips -o ${TMP_DIRECTORY}/${TMP_PREFIX}.ps ${TMP_DIRECTORY}/${TMP_PREFIX}.dvi sleep 1; if ! ${QUIET}; then echo "** Postscript file ${TMP_DIRECTORY}/${TMP_PREFIX}.ps created."; fi; ## -- postprocessing I=1 N_PAGES=0; SUCCESS=true; ## always round up to the next full 4 pages while ${SUCCESS} || [ 1 -ne $(($I % 4)) ]; do if psselect -p$I ${TMP_PREFIX}.ps ${TMP_PREFIX}.$I.ps 2>&1 \ | grep "rote 1 pages" \ ; then : else if ${SUCCESS}; then SUCCESS=false; export N_PAGES=$I; fi fi; #sleep 1; #ps2epsi ${TMP_PREFIX}.$I.ps ${TMP_PREFIX}.$I.crop.ps I=$(($I+1)); done; if ! ${QUIET}; then echo "** Extracted ${N_PAGES} pages ${TMP_DIRECTORY}/${TMP_PREFIX}.N.ps"; fi; create_postprocess_file; if ! ${QUIET}; then echo "** LaTeX file ${TMP_POST_PREFIX}.tex created."; fi; ## ---------------------------------------------------- echo "" > ${TMP_PREFIX}.newlines echo "" >> ${TMP_PREFIX}.newlines echo "" >> ${TMP_PREFIX}.newlines echo "" >> ${TMP_PREFIX}.newlines echo "" >> ${TMP_PREFIX}.newlines echo "" >> ${TMP_PREFIX}.newlines if latex ${TMP_POST_PREFIX}.tex < ${TMP_PREFIX}.newlines; then dvips -o ${TMP_POST_PREFIX}.ps ${TMP_POST_PREFIX}.dvi ; else abort "compiling ${TMP_POST_PREFIX}.tex failed." ; fi; if ! ${QUIET}; then echo "** Compiled re-organized pages in ${TMP_POST_PREFIX}.ps "; fi; sleep 1; if [ -z "$FILE" ]; then echo "** ****************************************" echo "** * print by closing gv; abort with ^C *" echo "** ****************************************" ${GHOSTVIEW} ${TMP_POST_PREFIX}.ps sleep 1; echo "** Printing on $DUPLEX_PRINTER in ${DELAY_SECONDS} seconds... " echo "** ****************************************" sleep ${DELAY_SECONDS}; #xlpr -P${USED_PRINTER} -g -F "*PageSize A4,*Duplex DuplexNoTumble" ${TMP_POST_PREFIX}.ps ${PRINT_COMMAND} ${USED_PRINTER} ${PRINTER_TUMBLE} "${PRINTER_TUMBLE_ARG}" ${PRINTER_LINEEND}; ## ------------------------------------------------------------------------- sleep 5; else echo "** directed output to file ${FILE}."; mv ${TMP_POST_PREFIX}.ps ${CALL_PWD}/${FILE}; fi; #cp ${TMP_DIRECTORY}/${TMP_TEX_FILE} maf.tex if ! ${PRESERVE_TMP_FILE}; then rm ${TMP_DIRECTORY}/${TMP_PREFIX}.* fi; ## ------------------------------------------------------------------------- popd ## ---------------------------------------------------- if ! ${QUIET}; then echo "** $0: done."; fi; exit 0; ## --- OK ------------------------------------- ### Local Variables: *** ### mode: lisp *** ### eval: (defun update-global-date () (let ((pos (point-marker))) (goto-char (point-min)) (if (search-forward-regexp "^VERSION_DATE=" (point-max) t) (progn (kill-line) (insert (format "\"%s\" ;" (current-time-string))) (basic-save-buffer) (message "** Version Date Updated."))) (goto-char pos))) *** ### eval: (defun new-global-hh-insert-disclaimer () (interactive) (insert-disclaimer) (update-global-date) ) *** ### eval: (progn (shell-script-mode) (call-my-sh-init) (font-lock-mode) (local-set-key [f4] #'new-global-hh-insert-disclaimer)) *** ### comment-column:0 *** ### comment-start: "### " *** ### comment-end:"***" *** ### End: ***