OpenSolaris_b135/cmd/print/scripts/getppdfile

#!/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 2007 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident	"%Z%%M%	%I%	%E% SMI"
#

#
# Get the path/ppdfilename for this ppd NickName
# Input:
#	make: model: ppdlabel: ppd:
#	PrintersRus: ABC Model 1234: SUNWfoomatic(S): Foomatic/Postscript (recommended):
#

#
# Returns the full path to the repository associated with
# the repository letter found between parenthesis in the
# extended PPD label.
#
# $1	- Extended PPD label
#
rep_path()
{
	case "$(expr \"$1\" : ".*(\(.*\)).*")" in
	"S")
		echo "/usr/share/ppd"
		;;
	"V")
		echo "/opt/share/ppd"
		;;
	"A")
		echo "/usr/local/share/ppd"
		;;
	"U")
		echo "/var/lp/ppd"
		;;
	esac
}

if [[ $# -lt 4 ]]; then
        exit 1
fi

[[ -f /var/lp/ppd/ppdcache ]] || exit 1
make=$(echo $* | /usr/bin/nawk '{FS=":"; print $1}')
# strip leading blanks
model=$(echo $* | /usr/bin/nawk '{FS=":"; print $2}' |
    /bin/sed -e 's/^[ ]*//')
extppdlabel=$(echo $* | /usr/bin/nawk '{FS=":"; print $3}' |
    /bin/sed -e 's/^[ ]*//')
ppd=$(echo $* | /usr/bin/nawk '{FS=":"; print $4}' |
    /bin/sed -e 's/^[ ]*//')

#
# Do not use ":" with $make. printmgr collapses manufacturer name
# to first word, ie PrintersRus and PrintersRus International become
# PrintersRus.  The full path to the PPD file will be the 6th
# colon separated entry in the ppdcache entry.  If the format
# of a ppdcache entry changes, then this will need to be modified
# also.
#
/bin/grep "${make}" /var/lp/ppd/ppdcache | 
    /bin/grep "${model}:" |
    /bin/grep "${ppd}:"  |
    /bin/grep "$(rep_path ${extppdlabel})/${extppdlabel%\(*}" |
    /usr/bin/nawk '{FS=":"; print $6}' 

exit 0