diff options
Diffstat (limited to 'usr/src/cmd/print/scripts/getppds')
-rw-r--r-- | usr/src/cmd/print/scripts/getppds | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/usr/src/cmd/print/scripts/getppds b/usr/src/cmd/print/scripts/getppds new file mode 100644 index 0000000000..de91dadef4 --- /dev/null +++ b/usr/src/cmd/print/scripts/getppds @@ -0,0 +1,104 @@ +#!/usr/bin/ksh +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# + +# +# get a list of the Models for this Model from the ppdcache +# + +# Input: +# make model +# HP OfficeJet 4200 +# Output: +# <label>(<repository letter>): <driver> +# userlabel(U): Foomatic/hpijs (recommended) +# SUNWhpijs(S): Foomatic/hpijs (recommended) + +SaveIFS="$IFS" +NoSpaceTabIFS=' +' +SEP=": " + +# +# Return cache entries matching the specified make +# and model from the specified cache file. +# +# $1 - Make +# $2 - Model +# $3 - cachefile +ppd_make_entries() +{ + for hit in $(/bin/grep "${1}" "${3}" | /bin/grep ":${2}:") + do + echo "${hit#*:*:}" + done +} + +if [[ $# -lt 2 ]]; then + exit 1 +fi + +cachefile=/var/lp/ppd/ppdcache +[[ -f $cachefile ]] || exit 1 +make=$1 +shift +model="$*" +system= +vendor= +admin= +user= + +# +# Ensure each ppdcache entry is processed as a single string +# otherwise it would be split up by spaces. +# +IFS="$NoSpaceTabIFS" +for pentry in $(ppd_make_entries "${make}" "${model}" "${cachefile}") +do + IFS="$SaveIFS" + ppdpath="${pentry##*:}" + ppdlpath="${ppdpath%/*/*}" + ppdlabel="${ppdlpath##*/}" + driver="${pentry%%:*}" + + case "${ppdpath}" in + "/usr/share/ppd/"*) + system="${system}${ppdlabel}(S)${SEP}${driver}\n" + ;; + "/opt/share/ppd/"*) + vendor="${vendor}${ppdlabel}(V)${SEP}${driver}\n" + ;; + "/usr/local/share/ppd/"*) + admin="${admin}${ppdlabel}(A)${SEP}${driver}\n" + ;; + "/var/lp/ppd/"*) + user="${user}${ppdlabel}(U)${SEP}${driver}\n" + ;; + esac + IFS="$NoSpaceTabIFS" +done + +IFS="$SaveIFS" +echo "${user}${admin}${vendor}${system}" +exit 0 |