File: check_printcap

package info (click to toggle)
tiger 2.2.4-22
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,188 kB
  • ctags: 240
  • sloc: sh: 8,388; ansic: 2,109; makefile: 141; perl: 106
file content (157 lines) | stat: -rwxr-xr-x 3,048 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/sh
#
#     tiger - A UN*X security checking system
#     Copyright (C) 1993 Douglas Lee Schales, David K. Hess, David R. Safford
#
#     Please see the file `COPYING' for the complete copyright notice.
#
# check_printcap - 06/28/93
#
#-----------------------------------------------------------------------------
#
TigerInstallDir='.'

#
# Set default base directory.
# Order or preference:
#      -B option
#      TIGERHOMEDIR environment variable
#      TigerInstallDir installed location
#
basedir=${TIGERHOMEDIR:=$TigerInstallDir}

for parm
do
   case $parm in
   -B) basedir=$2; break;;
   esac
done

#
# Verify that a config file exists there, and if it does
# source it.
#
[ ! -r $basedir/config ] && {
  echo "--ERROR-- [init002e] No 'config' file in \`$basedir'."
  exit 1
}

. $basedir/config

. $BASEDIR/initdefs

#
# If run in test mode (-t) this will verify that all required
# elements are set.
#
[ "$Tiger_TESTMODE" = 'Y' ] && {
  haveallcmds AWK CAT SED LS RM || exit 1
  haveallfiles BASEDIR WORKDIR || exit 1
  haveallvars TESTLINK HOSTNAME
  
  echo "--CONFIG-- [init003c] $0: Configuration ok..."
  exit 0
}

#------------------------------------------------------------------------

echo
echo "# Checking printer configuration files..."

haveallcmds AWK CAT LS SED || exit 1

saveifs=$IFS
realpath="$REALPATH -d"
[ ! -n "$REALPATH" -o ! $TESTEXEC "$REALPATH" ] && realpath=echo

dirname()
{
  _path="$1"
  echo "$_path" |
  $SED -e 's%/[^/][^/]*/*$%/%'
}

check_filter()
{
  __pr="$1"
  __f="$2"
  __fcmd="$3"
  __source="$4"

  set X $__fcmd
  shift
  pass=1
  for __comp
  do
    case "$__comp" in
      /*/*) {
	if [ ! -f "$__comp" -a ! -d "$__comp" ]; then
	  [ $pass -eq 1 ] && {
	    message INFO xxxx "" "Printer control $__f's file \`$__comp' for printer \`$__pr' does not exist."
	    echo
	  }
	  
	  while [ -n "$__comp" -a \( ! -f "$__comp" -a ! -d "$__comp" \) ]
	  do
	    __comp="`dirname \"$__comp\"`"
	  done
	fi

	[ -n "$__comp" ] && {
	  lgetpermit "$__comp" |
	  pathmsg pcap002w pcap003w "$__comp" root "Print control \`$__f' for printer \`$__pr' uses" ""

	  [ ! -d "$__comp" -a "$ux" = '1' ] && {
	    [ -n "$TigerCheckEmbedded" ] && {
	      echo "$__comp $__source" >> $TigerCheckEmbedded
	    }
	  }
	}
      }
      ;;
    esac
    pass=2
  done
}

src=/etc/printcap
infile=/etc/printcap

$SED -e 's/^#.*$//' -e '/^$/d' $infile |
$AWK '
/\\$/ {printf("%s", substr($0, 1, length($0)-1));}
!/\\$/
' |
$SED -e 's/[ 	]*=[ 	]*/=/g' |
while read entry
do
  IFS=:
  set X $entry
  IFS=$saveifs
  shift
  pnames="$1"
  shift
  printer="`echo \"$pnames\" | $SED -e 's/^\([^|]*\)|.*$/\1/'`"
  for setting
  do
    case "$setting" in
      *=*) {
	IFS="="
	set X $setting
	IFS=$saveifs
	shift
	keyword=$1
	shift
	value="$*"
	case "$keyword" in
	  ff|sf) ;;
          lp);;
          ?f) check_filter "$printer" "$keyword" "$value" "$src";;
           *) case "$value" in
	        /*/*) check_filter "$printer" "$keyword" "$value" "$src";;
              esac;;
        esac
      };;
    esac
  done
done