Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2:Test
enscript
enscript.sh
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File enscript.sh of Package enscript
#!/bin/bash # # enscript.sh: Workaround for getting enscript handling # UTF-8 partly. Partly means that iconv is # used to get the UTF-8 encoding into the # natural laint encoding of the base language # provided by the enviroment variable LANG. # # Author: Werner Fink <werner@suse.de> # declare -i err cnt opt isf declare -a CMDLINE FILES unset ${!LC_*} ENC=$(LANG=${LANG%.*}; locale charmap 2> /dev/null) test "$ENC" = "ISO-8859-1" && ENC=ISO-8859-15 test "${LANG%.*}" = "en_US" && ENC=ISO-8859-1 case "$@" in *-X[[:blank:]]UTF-8*|*--encoding=UTF-8*) ;; *) case "${ENC%-*}" in ISO-8859|KOI8) ;; *) exec -a enscript enscript.bin -X $ENC ${1+"$@"} ;; esac ;; esac # # All long options of enscript # LONG="columns:,pages:,file-align:,header:,no-header,truncate-lines,line-numbers::,\ setpagedevice:,escapes::,highlight::,font:,header-font:,print-anyway,fancy-header::,\ no-job-header,highlight-bars:,indent:,filter:,borders,page-prefeed,no-page-prefeed,\ lineprinter,lines-per-page:,mail,media:,copies:,newline:,missing-characters,output:,\ printer:,quiet,silent,landscape,portrait,baselineskip:,statusdict:,title:,tabsize:,\ underlay::,nup:,verbose,version,language:,options:,encoding:,no-formfeed,pass-through,\ color::,continuous-page-numbers,download-font:,extended-return-values,filter-stdin:,\ footer:,h-column-height:,help,help-highlight,highlight-bar-gray:,list-media,margins:,\ non-printable-format:,nup-columnwise,nup-xpad:,nup-ypad:,page-label-format:,ps-level:,\ printer-options:,rotate-even-pages,slice:,style:,swap-even-page-margins,toc,ul-angle:,\ ul-font:,ul-gray:,ul-position:,ul-style:,word-wrap" # # All normal options of enscript # SHORT="#:,1,2,a:,A:,b:,B,c,C::,d,D:,e::,E::,f:,F:,g,G,h,H:,i:,I:,j,J:,k,K,l,L:,m,M:,\ o:,O,p:,P:,q,r,R,s:,S:,t:,T:,u::,U:,v,V,w:,W:,X:,z,Z" # # We need the file names provided on the command line # or the information if we read from stdin. # # Why sed? Just to get the `=' back instead of ` ' the empty space # which are inserted by getopt(1) and also the empty space on the # short options -C, -e, -E, -H, and -u. # OIFS="$IFS"; IFS=$'\n' CMDLINE=($(getopt -o $SHORT -l $LONG -s bash -q -- "$@" | \ LC_ALL=POSIX sed -r ' s|--([a-z-]+)[[:blank:]]?([^-])|--\1=\2|g s|-([CeEHu])[[:blank:]]?([^-])|-\1\2|g s|=([[:punct:]]*[[:blank:]]+[[:punct:]]*)|\1|g s|-X[[:blank:]]*[[:punct:]]UTF-8[[:punct:]]||g s|[[:punct:]]-[[:punct:]]|-|g s|--[[:blank:]]|--\n| s|[[:blank:]]-|\n-|g ' test ${PIPESTATUS[0]} -eq 0 || exit 1 )) let err=$? IFS="$OIFS" if test $err -ne 0 ; then # Let enscript do the error message exec -a enscript enscript.bin ${1+"$@"} fi let isf=0 let opt=0 while ((opt<${#CMDLINE[@]})) ; do arg="${CMDLINE[$opt]}" if test $isf -ne 0 ; then CMDLINE[$opt]= FILES[$isf]="$arg" let isf++ fi if test "$arg" = -- ; then CMDLINE[$opt]= let isf++ fi let opt++ done test "${FILES[*]}" = "-" && FILES=() # # New command line # eval set -- ${CMDLINE[@]} ${FILES[@]} # # Just for encoding given on command line: # allow the user to overwrite autodetection # case "$@" in *-X*|*--encoding=*|*--version*|*--help*|*-V*|*--list-media*) exec -a enscript enscript.bin ${1+"$@"} ;; *-I*|*--filter=*) exec -a enscript enscript.bin ${1+"$@"} ;; esac if test ${#FILES[@]} -gt 0 ; then # # We have real files, maybe with spaces in their path name # exec -a enscript enscript.bin -X $ENC --filter="[[ \$(file -b %s 2>/dev/null) =~ 'UTF-8 Unicode text' ]] && iconv -c -f UTF-8 -t $ENC %s || cat %s" ${1+"$@"} fi # # Just handle stdin at last but not least # tmpfile=$(mktemp /tmp/en_2.XXXXXXXXXX) || exit 1 trap 'rm -f $tmpfile' EXIT SIGTERM SIGQUIT SIGHUP SIGPIPE cat > $tmpfile exec 0< $tmpfile if [[ $(file -b $tmpfile 2>/dev/null) =~ 'UTF-8 Unicode text' ]] ; then enscript.bin -X $ENC --filter="iconv -c -f UTF-8 -t $ENC" ${1+"$@"} else enscript.bin -X $ENC ${1+"$@"} fi exit $?
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor