edit-faxcover.sh.in
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:10k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. #
  3. # $Id: edit-faxcover.sh.in,v 1.1.1.1 2005/11/11 21:32:02 faxguy Exp $
  4. #
  5. # @WARNING@
  6. #
  7. # HylaFAX Facsimile Software
  8. #
  9. # Copyright (c) 2003 Multitalents
  10. # Portions Copyright (c) 1990-1996 Sam Leffler
  11. # Portions Copyright (c) 1991-1996 Silicon Graphics, Inc.
  12. # HylaFAX is a trademark of Silicon Graphics
  13. # Permission to use, copy, modify, distribute, and sell this software and 
  14. # its documentation for any purpose is hereby granted without fee, provided
  15. # that (i) the above copyright notices and this permission notice appear in
  16. # all copies of the software and related documentation, and (ii) the names of
  17. # Sam Leffler and Silicon Graphics may not be used in any advertising or
  18. # publicity relating to the software without the specific, prior written
  19. # permission of Sam Leffler and Silicon Graphics.
  20. # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  21. # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  22. # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  23. # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  24. # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  25. # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  26. # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  27. # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  28. # OF THIS SOFTWARE.
  29. #
  30. #
  31. # edit-faxcover [options]
  32. #
  33. # This script interactively edits the 10 header lines at the top of faxcover.ps
  34. #
  35. PATH=/bin:/usr/bin:/etc
  36. test -d /usr/ucb  && PATH=$PATH:/usr/ucb # Sun and others
  37. test -d /usr/bsd  && PATH=$PATH:/usr/bsd # Silicon Graphics
  38. test -d /usr/5bin && PATH=/usr/5bin:$PATH:/usr/etc # Sun and others
  39. test -d /usr/sbin && PATH=/usr/sbin:$PATH # 4.4BSD-derived
  40. test -d /usr/local/bin && PATH=$PATH:/usr/local/bin # for GNU tools
  41. CAT=@CAT@ # cat command for use below
  42. GREP=@GREP@ # grep command for use below
  43. SED=@SED@ # sed for use below
  44. VERSION="@VERSION@" # configured version
  45. DATE="@DATE@" # data software was configured
  46. TARGET="@TARGET@" # configured target
  47. FAXCOVER=${FAXCOVER:="@LIBDATA@/faxcover.ps"}
  48. QUIET=no
  49. INTERACTIVE=${INTERACTIVE:="yes"}
  50. #
  51. # Error diagnostics that should go to the terminal are
  52. # done with this interface or cat.
  53. #
  54. bitch()
  55. {
  56.     echo "$@" 1>&2
  57. }
  58. #
  59. # This is the preferred interface for
  60. # configure to terminate abnormally.
  61. #
  62. boom()
  63. {
  64.     exit 1
  65. }
  66. usage()
  67. {
  68.     $CAT<<EOF
  69. Usage: edit-faxcover [options]
  70. Options:
  71.   --with-LINEx="string" set variable LINEx for lines 1 - 10
  72.  Warning null strings will not blank out existing lines.
  73.  Use --with-LINE1=" " to blank out line 1 (actually it'll be a single space)
  74.   --with-FAXCOVER=ARG Edit some other faxcover.ps file
  75.   --help print this message
  76.   --nointeractive do not prompt for input [INTERACTIVE=no]
  77.   --quiet do not print 'Using ...' messages
  78.   --verbose opposite of -quiet
  79. EOF
  80. }
  81. #
  82. # Crack command line arguments.  We purposely
  83. # use syntax and options that are compatible
  84. # with GNU autoconf.
  85. #
  86. WITHARGS=no
  87. ac_prev=
  88. for ac_option
  89. do
  90.     if [ -n "$ac_prev" ]; then # assign the argument to previous option
  91. eval "$ac_prev=$ac_option"
  92. ac_prev=
  93. continue
  94.     fi
  95.     case "$ac_option" in # collect optional argument
  96.     -*=*) ac_optarg=`echo "$ac_option" | $SED 's/[-_a-zA-Z0-9]*=//'`;;
  97.     *) ac_optarg=;;
  98.     esac
  99.     case "$ac_option" in
  100.     -with-*|--with-*)
  101. ac_with=`echo $ac_option|$SED -e 's/-*with-//' -e 's/=.*//'`
  102. # Reject names that are not valid shell variable names.
  103. if [ -n "`echo $ac_with| $SED 's/[-_a-zA-Z0-9]//g'`" ]; then
  104.     bitch "configure: $ac_with: invalid parameter name."
  105.     boom
  106. fi
  107. ac_with=`echo $ac_with| $SED 's/-/_/g'`
  108. case "$ac_option" in
  109. *=*) ;;
  110. *) ac_optarg=yes;;
  111. esac
  112. eval "${ac_with}='$ac_optarg'"
  113. WITHARGS=yes
  114. ;;
  115.     -quiet|--quiet) QUIET=yes;;
  116.     -verbose|--verbose) QUIET=no;;
  117.     -nointeractive|--nointeractive) INTERACTIVE=no;;
  118.     -help|--help) usage; exit 0;;
  119.     -*)
  120. bitch "edit-faxcover: $ac_option: invalid option; use -help for usage."
  121. boom
  122. ;;
  123.     esac
  124. done
  125. if [ -n "$ac_prev" ]; then
  126.     bitch "edit-faxcover: missing argument to --`echo $ac_prev | $SED 's/_/-/g'`"
  127.     boom
  128. fi
  129. #
  130. # Descriptor usage:
  131. # 1: ???
  132. # 2: messages that should be seen even if we're in the background.
  133. # 3: [stdout from test runs]
  134. # 4: verbose-style messages (Using ...)
  135. #
  136. if [ "$QUIET" = yes ]; then
  137.     exec 4>/dev/null # chuck messages
  138. else
  139.     exec 4>&1 # messages go to stdout
  140. fi
  141. Note()
  142. {
  143.     echo "$@" 1>&4
  144. }
  145. Note ""
  146. Note "This is a program to edit faxcover.ps"
  147. Note ""
  148. Note "HylaFAX (tm) $VERSION."
  149. Note ""
  150. Note "Created for $TARGET on $DATE."
  151. Note ""
  152. #
  153. # Figure out which brand of echo we have and define prompt
  154. # and printf shell functions accordingly.  Note that we
  155. # assume that if the System V-style echo is not present,
  156. # then the BSD printf program is available.  These functions
  157. # are defined here so that they can be tailored on a per-site,
  158. # etc. basis.
  159. #
  160. if [ `echo foo\c`@ = "foo@" ]; then
  161.     # System V-style echo supports r
  162.     # and c which is all that we need
  163.     prompt()
  164.     {
  165.        echo "$* \c"
  166.     }
  167.     printf()
  168.     {
  169.        echo "$*\c"
  170.     }
  171.     dumpPromptFuncs()
  172.     {
  173. $CAT<<-'EOF'
  174. prompt()
  175. {
  176.    echo "$* \c"
  177. }
  178. printf()
  179. {
  180.    echo "$*\c"
  181. }
  182. EOF
  183.     }
  184. elif [ "`echo -n foo`@" = "foo@" ]; then
  185.     # BSD-style echo; use echo -n to get
  186.     # a line without the trailing newline
  187.     prompt()
  188.     {
  189.        echo -n "$* "
  190.     }
  191.     dumpPromptFuncs()
  192.     {
  193. $CAT<<-'EOF'
  194. prompt()
  195. {
  196.    echo -n "$* "
  197. }
  198. EOF
  199.     }
  200. else
  201.     # something else; do without
  202.     prompt()
  203.     {
  204. echo "$*"
  205.     }
  206.     dumpPromptFuncs()
  207.     {
  208. $CAT<<-'EOF'
  209. prompt()
  210. {
  211. echo "$*"
  212. }
  213. EOF
  214.     }
  215. fi
  216. #
  217. # Prompt the user for a string that can be null.
  218. #
  219. promptForStringParameter()
  220. {
  221.     prompt "$2 [$1]?"
  222.     OIFS=$IFS
  223.     IFS="
  224. "
  225.     read x
  226.     IFS=$OIFS
  227.     case "$x" in
  228. " ") x="" ;;
  229. "") x="$1" ;;
  230. *) # strip leading and trailing white space
  231. x=`echo "$x" | $SED -e 's/^[  ]*//' -e 's/[  ]*$//'`
  232. ;;
  233.     esac
  234.     param="$x"
  235. }
  236. # ed faxcover.ps search_patern replace_this with_that
  237. ed_faxcover() {
  238. ed - ${FAXCOVER} <<_EOF
  239. g~^${1} ~s~(${2})~(${3})~
  240. w
  241. q
  242. _EOF
  243. }
  244. printConfig()
  245. {
  246. $CAT<<EOF
  247. Faxcover header lines are:
  248. [1] Line 1: $LINE1
  249. [2] Line 2: $LINE2
  250. [3] Line 3: $LINE3
  251. [4] Line 4: $LINE4
  252. [5] Line 5: $LINE5
  253. [6] Line 6: $LINE6
  254. [7] Line 7: $LINE7
  255. [8] Line 8: $LINE8
  256. [9] Line 9: $LINE9
  257. [10] Line 10: $LINE10
  258. Enter a single space to clear an existing line.
  259. EOF
  260. }
  261. promptForParameter()
  262. {
  263. case $1 in
  264. 1) promptForStringParameter "$LINE1" 
  265. "Line 1"; LINE1="$param"
  266. ;;
  267. 2) promptForStringParameter "$LINE2" 
  268. "Line 2"; LINE2="$param"
  269. ;;
  270. 3) promptForStringParameter "$LINE3" 
  271. "Line 3"; LINE3="$param"
  272. ;;
  273. 4) promptForStringParameter "$LINE4" 
  274. "Line 4"; LINE4="$param"
  275. ;;
  276. 5) promptForStringParameter "$LINE5" 
  277. "Line 5"; LINE5="$param"
  278. ;;
  279. 6) promptForStringParameter "$LINE6" 
  280. "Line 6"; LINE6="$param"
  281. ;;
  282. 7) promptForStringParameter "$LINE7" 
  283. "Line 7"; LINE7="$param"
  284. ;;
  285. 8) promptForStringParameter "$LINE8" 
  286. "Line 8"; LINE8="$param"
  287. ;;
  288. 9) promptForStringParameter "$LINE9" 
  289. "Line 9"; LINE9="$param"
  290. ;;
  291. 10) promptForStringParameter "$LINE10" 
  292. "Line 10"; LINE10="$param"
  293. ;;
  294. esac
  295. }
  296. # main()
  297. # sanity check
  298. [ -f ${FAXCOVER} ]  ||  {
  299. bitch "${FAXCOVER} not found"
  300. boom
  301. }
  302. [ -w ${FAXCOVER} ]  ||  {
  303. bitch "No write permissions on ${FAXCOVER}"
  304. boom
  305. }
  306. ORIG_LINE1="`$GREP '^/orig-line1 ' $FAXCOVER | $SED -e 's~/orig-line1 (~~' 
  307. -e 's~) def~~'`"
  308. ORIG_LINE2="`$GREP '^/orig-line2 ' $FAXCOVER | $SED -e 's~/orig-line2 (~~' 
  309. -e 's~) def~~'`"
  310. ORIG_LINE3="`$GREP '^/orig-line3 ' $FAXCOVER | $SED -e 's~/orig-line3 (~~' 
  311. -e 's~) def~~'`"
  312. ORIG_LINE4="`$GREP '^/orig-line4 ' $FAXCOVER | $SED -e 's~/orig-line4 (~~' 
  313. -e 's~) def~~'`"
  314. ORIG_LINE5="`$GREP '^/orig-line5 ' $FAXCOVER | $SED -e 's~/orig-line5 (~~' 
  315. -e 's~) def~~'`"
  316. ORIG_LINE6="`$GREP '^/orig-line6 ' $FAXCOVER | $SED -e 's~/orig-line6 (~~' 
  317. -e 's~) def~~'`"
  318. ORIG_LINE7="`$GREP '^/orig-line7 ' $FAXCOVER | $SED -e 's~/orig-line7 (~~' 
  319. -e 's~) def~~'`"
  320. ORIG_LINE8="`$GREP '^/orig-line8 ' $FAXCOVER | $SED -e 's~/orig-line8 (~~' 
  321. -e 's~) def~~'`"
  322. ORIG_LINE9="`$GREP '^/orig-line9 ' $FAXCOVER | $SED -e 's~/orig-line9 (~~' 
  323. -e 's~) def~~'`"
  324. ORIG_LINE10="`$GREP '^/orig-line10 ' $FAXCOVER | $SED -e 's~/orig-line10 (~~' 
  325. -e 's~) def~~'`"
  326. LINE1=${LINE1:="$ORIG_LINE1"}
  327. LINE2=${LINE2:="$ORIG_LINE2"}
  328. LINE3=${LINE3:="$ORIG_LINE3"}
  329. LINE4=${LINE4:="$ORIG_LINE4"}
  330. LINE5=${LINE5:="$ORIG_LINE5"}
  331. LINE6=${LINE6:="$ORIG_LINE6"}
  332. LINE7=${LINE7:="$ORIG_LINE7"}
  333. LINE8=${LINE8:="$ORIG_LINE8"}
  334. LINE9=${LINE9:="$ORIG_LINE9"}
  335. LINE10=${LINE10:="$ORIG_LINE10"}
  336. if [ $QUIET = no ]; then
  337.     ok=skip
  338.     while [ "$ok" != y ] && [ "$ok" != yes ]; do
  339. if [ "$ok" != skip ]; then
  340. for i in 1 2 3 4 5 6 7 8 9 10; do
  341.    promptForParameter $i;
  342. done
  343. fi
  344. printConfig
  345. if [ $INTERACTIVE = no ]; then
  346.     ok=yes
  347. else
  348.     prompt "Are these ok [yes]?"; read ok
  349.     test -z "$ok" && ok=yes
  350.     case "$ok" in
  351.     [1-9]|10) promptForParameter $ok;;
  352.     [yY]*|[nN]*) continue;;
  353.     ?*)
  354.     echo ""
  355.     echo ""y", "yes", or <RETURN> accepts the displayed parameters."
  356.     echo "A number lets you change the numbered parameter."
  357.     echo ""
  358.     ;;
  359.     esac
  360.     ok=skip
  361. fi
  362.     done
  363. fi
  364. # Replace any lines that have changed
  365. [ "$ORIG_LINE1" = "$LINE1" ]  ||  
  366. ed_faxcover /orig-line1 "$ORIG_LINE1" "$LINE1"
  367. [ "$ORIG_LINE2" = "$LINE2" ]  ||  
  368. ed_faxcover /orig-line2 "$ORIG_LINE2" "$LINE2"
  369. [ "$ORIG_LINE3" = "$LINE3" ]  ||  
  370. ed_faxcover /orig-line3 "$ORIG_LINE3" "$LINE3"
  371. [ "$ORIG_LINE4" = "$LINE4" ]  ||  
  372. ed_faxcover /orig-line4 "$ORIG_LINE4" "$LINE4"
  373. [ "$ORIG_LINE5" = "$LINE5" ]  ||  
  374. ed_faxcover /orig-line5 "$ORIG_LINE5" "$LINE5"
  375. [ "$ORIG_LINE6" = "$LINE6" ]  ||  
  376. ed_faxcover /orig-line6 "$ORIG_LINE6" "$LINE6"
  377. [ "$ORIG_LINE7" = "$LINE7" ]  ||  
  378. ed_faxcover /orig-line7 "$ORIG_LINE7" "$LINE7"
  379. [ "$ORIG_LINE8" = "$LINE8" ]  ||  
  380. ed_faxcover /orig-line8 "$ORIG_LINE8" "$LINE8"
  381. [ "$ORIG_LINE9" = "$LINE9" ]  ||  
  382. ed_faxcover /orig-line9 "$ORIG_LINE9" "$LINE9"
  383. [ "$ORIG_LINE10" = "$LINE10" ]  ||  
  384. ed_faxcover /orig-line10 "$ORIG_LINE10" "$LINE10"