foomatic-db-engine.postinst 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. case "$1" in
  2. configure)
  3. # Do the following only if CUPS is running and the needed CUPS tools
  4. # are available
  5. if which lpstat > /dev/null 2>&1 && \
  6. which lpinfo > /dev/null 2>&1 && \
  7. which lpadmin > /dev/null 2>&1 && \
  8. lpstat -r > /dev/null 2>&1; then
  9. # Update the PPD files of all already installed print queues
  10. driverregexp='^foomatic:'
  11. gennicknameregexp=''
  12. [ ! -z "$gennicknameregexp" ] && \
  13. gennicknameregexp="; $gennicknameregexp"
  14. gennicknameregexp='s/\s*\(recommended\)//'"$gennicknameregexp"
  15. tempfiles=
  16. trap 'rm -f $tempfiles; exit 0' 0 1 2 13 15
  17. tmpfile1=`mktemp -t updateppds.XXXXXX`
  18. tempfiles="$tempfiles $tmpfile1"
  19. lpinfo -m | grep -E $driverregexp > $tmpfile1
  20. cd /etc/cups/ppd
  21. for ppd in `ls -1 *.ppd 2>/dev/null`; do
  22. queue=${ppd%.ppd}
  23. nickname=`grep '\*NickName:' $ppd | cut -d '"' -f 2 | perl -p -e 's/\n$//' | perl -p -e "$gennicknameregexp" | perl -p -e 's/(\W)/\\\\$1/g'`
  24. lang=`grep '\*LanguageVersion:' $ppd | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
  25. ppdfound="0"
  26. englishppduri=""
  27. tmpfile2=`mktemp -t updateppds.XXXXXX`
  28. tempfiles="$tempfiles $tmpfile2"
  29. cat $tmpfile1 | perl -p -e "$gennicknameregexp" | grep -E '^\S+\s+.*'"$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2
  30. while read newppduri; do
  31. [ "$ppdfound" = "0" ] && lpadmin -p $queue -m $newppduri
  32. newlang=`grep '\*LanguageVersion:' $ppd | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
  33. [ "$newlang" = "$lang" ] && ppdfound="1"
  34. [ "$newlang" = "english" ] && englishppduri="$newppduri"
  35. done < $tmpfile2
  36. [ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -p $queue -m $englishppduri && ppdfound="1"
  37. [ "$ppdfound" = "1" ] && echo PPD for printer $queue updated >&2
  38. done
  39. fi
  40. ;;
  41. abort-upgrade|abort-remove|abort-deconfigure)
  42. ;;
  43. *)
  44. echo "postinst called with unknown argument \`$1'" >&2
  45. exit 1
  46. ;;
  47. esac
  48. # dh_installdeb will replace this with shell code automatically
  49. # generated by other debhelper scripts.
  50. #DEBHELPER#
  51. exit 0