waynet@mongo.UUCP (Wayne Thompson) (12/03/88)
Posting-number: Volume 5, Issue 65 Submitted-by: "Wayne Thompson" <waynet@mongo.UUCP> Archive-name: nnscript [enscript appears to be a program for translating ASCII files into PostScript code for printing on a PS printer. ++bsa] If you don't have enscript(1-local) then ignore this (or file for future reference). Buggestions, comments. flames? welcome. Wayne #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # nnscript # This archive created: Wed Nov 30 08:16:07 1988 export PATH; PATH=/bin:/usr/bin:$PATH echo shar: "extracting 'nnscript'" '(4406 characters)' if test -f 'nnscript' then echo shar: "will not over-write existing file 'nnscript'" else sed 's/^ X//' << \SHAR_EOF > 'nnscript' X#! /bin/sh X# X# @(#)nnscript 1.0 (sun!waynet) 11/29/88 X# XPATHNAME=oculus:/HOME/waynet/bin/nnscript X# X# Author: Wayne Thompson X# X# Description: X# This is a wrapper for enscript(1). X# 1. It prints an expanded Gaudy header. The header has X# a. full pathname X# b. file size in bytes X# c. user name in internet format X# d. '(folded)' if so X# 2. It prints using the least number of sheets (within reason) X# by fooling with the number of columns, rotation, and font X# size. X# 3. It prevents character lossage due to line length by X# fooling with the rotation, font size, and by folding as X# a last resort. X# X# enscript - Line & Page lengths for various options w/Gaudy X# X# font = Courier X# lnlen 2r R r pglen r R X# f10 62c 90c 125c f10 47l 64l X# f9 69c 101c 139c f9 52l 70l X# f8 77c 113c 156c f8 58l 78l X# f7 89c 129c 179c f7 65l 88l X# f6 209c X# f5 250c X# X# Options: X# -s Single column only. X# Anything that enscript understands. X# X# Files: X# X# Diagnostics: X# X# Dependencies: X# Above table applies only to Courier type face and Gaudy mode. X# X# Bugs: X# Each file is filtered through expand(1) and read by awk(1) to X# determine longest line, this can be slow for large files. X# A banner page is produced for each file. X# X Xfont=Courier # mono space typeface Xuser=${USER}@`hostname` X Xfor i Xdo X case $i in X -d) debug=true; shift;; X -s) sgl_col=true; shift;; # single column X -*) hard_opts="${hard_opts} \"$i\""; shift;;# buffer opts X *) break;; X esac Xdone X Xfor file Xdo X cd `dirname ${file}` X file=`basename ${file}` X pathname=`pwd`/${file} X if [ ! -f $pathname ] X then X echo "$pathname: No such file" X continue X fi X X cmd=`expand ${file} | awk ' X { X l = length ($0); X if (l > ll) X ll = l; # longest line in file X } X X END { X opts = "-1Rf'"${font}"'10"; # default - 1col portrait 10pt X dp = int (NR / 64); if (NR % 64 > 0) dp++; # pgs for default X X if (ll > 179) { X cmd = "fold -176 '"${file}"' | "; X } X else { X cmd = "cat '"${file}"' | "; X } X cmd = cmd "enscript -GJ'"${file}"' "; X X if (ll > 156) { X opts = "-1rf'"${font}"'7"; # 1col landscape 7pt X } X else if (ll > 139) { X opts = "-1rf'"${font}"'8"; # 1col landscape 8pt X } X else if (ll > 125) { X opts = "-1rf'"${font}"'9"; # 1col landscape 9pt X } X else if (ll > 113) { X opts = "-1rf'"${font}"'10"; # 1col landscape 10pt X } X else if (ll > 101) { X opts = "-1Rf'"${font}"'8"; # 1col portrait 8pt X } X else if (ll > 90) { X opts = "-1Rf'"${font}"'9"; # 1col portrait 9pt X } X else if (ll > 89) { X opts = "-1Rf'"${font}"'10"; # 1col portrait 10pt X } X else if (ll > 77 && ll < 90 && "'"${sgl_col}"'" == "") { X np = int (NR / 130); if (NR % 130 > 0) np++; X if (dp > np) X opts = "-2rf'"${font}"'7"; # 2col landscape 7pt X } X else if (ll > 69 && "'"$sgl_col"'" == "") { X np = int (NR / 116); if (NR % 116 > 0) np++; X if (dp > np) X opts = "-2rf'"${font}"'8"; # 2col landscape 8pt X } X else if (ll > 62 && "'"$sgl_col"'" == "") { X np = int (NR / 104); if (NR % 104 > 0) np++; X if (dp > np) X opts = "-2rf'"${font}"'9"; # 2col landscape 9pt X } X else if ("'"$sgl_col"'" == "") { X np = int (NR / 94); if (NR % 94 > 0) np++; X if (dp > np) X opts = "2rf'"${font}"'10"; # 2col landscape 10pt X } X X if ("'"${debug}"'" == "true") { X printf ("ll = %d, NR = %d ,dp = %d, np = %d, cmd = ",\ X ll, NR, dp, np); X } X print cmd opts; X } X '` X X size=`ls -l ${file} | awk '{ print $4 }'` X note=`echo ${cmd} | awk '/^fold/ { print " - (folded)"; }'` X header="${pathname}, ${size} bytes, ${user}${note}" X X if [ -n "$debug" ] X then X echo ${cmd} -b\"${header}\" ${hard_opts} X else X echo -n "${pathname} " X eval ${cmd} -b\"${header}\" ${hard_opts} X fi Xdone SHAR_EOF if test 4406 -ne "`wc -c < 'nnscript'`" then echo shar: "error transmitting 'nnscript'" '(should have been 4406 characters)' fi chmod +x 'nnscript' fi exit 0 # End of shell archive