#!/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 make/model/nickname as well as the repository/label from ppdfilename # # Input # ppdfilename # /var/lp/ppd/user/HP/foo.ppd.gz # Output # make # model # label(repository letter): driver # # Lexmark # IBM Page Printer 3112 # foomatic(L): Foomatic/hpijs # if [[ $# -lt 1 ]]; then exit 1 fi cachefile=/var/lp/ppd/ppdcache [[ -f $cachefile ]] || exit 1 cacheentry=$(/bin/grep "$1" $cachefile) [[ -n "$cacheentry" ]] || exit 1 # # Retrieve the manufacturer (make) # Use only the first word in manufacturer entry # manuf=$(echo "$cacheentry" | nawk '{FS=":"; print $1}' | nawk '{print $1}') # Retrieve the model model=$(echo "$cacheentry" | nawk '{FS=":"; print $2}') # Retrieve the driver driver=$(echo "$cacheentry" | nawk '{FS=":"; print $3}') # # Retrieve the PPD path. Parse the PPD path to get the # label path and to figure out the repository letter # associated with the label path. Note: # the PPD file name is the 6th colon separated entry # in the cache entry. This is may need to be modified if the # format changes. # ppdpath=$(echo "$cacheentry" | /bin/nawk '{FS=":"; print $6}' ) manupath=$(/bin/dirname "$ppdpath") labelpath=$(/bin/dirname "$manupath") case "$labelpath" in /usr/share/ppd/*) repltr=S ;; /opt/share/ppd/*) repltr=V ;; /usr/local/share/ppd/*) repltr=A ;; /var/lp/ppd/*) repltr=U ;; esac [[ -n "${repltr}" ]] || exit 1 echo "${manuf}\n${model}" echo "$(/bin/basename "$labelpath")(${repltr}): $driver" exit 0