i.minorperm_sparc revision 5c1d0199d69216ebefa9ed86940778f6d215a97f
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER START
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# The contents of this file are subject to the terms of the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Common Development and Distribution License (the "License").
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# You may not use this file except in compliance with the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# See the License for the specific language governing permissions
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# and limitations under the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# When distributing Covered Code, include this CDDL HEADER in each
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# If applicable, add the following below this CDDL HEADER, with the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# fields enclosed by brackets "[]" replaced with your own identifying
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# information: Portions Copyright [yyyy] [name of copyright owner]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER END
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Use is subject to license terms.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# ident "%Z%%M% %I% %E% SMI"
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# NOTE: When a change is made to the source file for
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# /etc/minor_perm, a corresponding change must be made to
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# this class-action script.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If an existing entry in minor_perm is having its
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# attributes e.g. permissions, ownership changed,
4ec31c52242ebeacf67a0291c4f100e2b4a8c343Christian Brauner# add it to the list produced by make_chattr_list below.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If an existing entry must be deleted, add it to
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersen# the list produced by make_delete_list below.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If a new entry must be added to the file, add it to the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# list produced by make_add_list.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If a new entry is being added to minor_perm, but there
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# may already be devices of that name on the system (e.g.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# we used the system default permissions in a previous release),
3e4b0221c4a5f4e815fe2fed6ccef90d8df507f0Adrian Reber# and those old devices now need to have their attributes changed,
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# add it to the make_chattr_list AND the make_add_list lists
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber# If an entry in /etc/minor_perm needs to have its attributes
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber# changed, identify the entry in the list copied to /etc/chattr.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# by this function. The fields are:
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# <device>:<minor> <old_attrs> <new_attrs> <optional list of logical
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# devices whose attributes
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# will need to be changed>
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen# where an <attribute list> := <perm> <user> <group>
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenaudio:* 0666 root sys 0600 root sys /dev/sound/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenvol:volctl 0600 root sys 0666 root sys /dev/volctl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensad:user 0600 root sys 0666 root sys /dev/sad/user
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersense:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenzs:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersensu:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenssd:* 0666 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersendad:* 0600 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencpc:* 0600 root sys 0666 root sys /devices/pseudo/cpc*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenlog:conslog 0622 root sys 0666 root sys /dev/conslog
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensy:tty 0666 root sys 0666 root tty /dev/tty
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencvc:* 0666 root sys 0600 root sys
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencvcredir:* 0666 root sys 0600 root sys
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenssm:* 0600 root sys 0640 root sys /devices/ssm*:*
2fdca63d45448ffaa602e696865e456744fc0752Adrian Rebericmp:icmp 0600 root sys 0666 root sys /dev/rawip
2fdca63d45448ffaa602e696865e456744fc0752Adrian Rebericmp6:icmp6 0600 root sys 0666 root sys /dev/rawip6
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberip:ip 0660 root sys 0666 root sys /dev/ip
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenip6:ip6 0660 root sys 0666 root sys /dev/ip6
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenrts:rts 0660 root sys 0666 root sys /dev/rts
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenkeysock:keysock 0600 root sys 0666 root sys /dev/keysock
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenipsecah:ipsecah 0600 root sys 0666 root sys /dev/ipsecah
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenipsecesp:ipsecesp 0600 root sys 0666 root sys /dev/ipsecesp
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenspdsock:spdsock 0600 root sys 0666 root sys /dev/spdsock
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensad:admin 0600 root sys 0666 root sys /dev/sad/admin
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenfssnap:ctl 0600 root sys 0666 root sys /dev/fssnapctl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenfssnap:* 0600 root sys 0640 root sys /dev/fssnap/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:ce 0600 root sys 0666 root sys /dev/ce
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:eri 0600 root sys 0666 root sys /dev/eri
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:ge 0600 root sys 0666 root sys /dev/ge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:hme 0600 root sys 0666 root sys /dev/hme
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:qfe 0600 root sys 0666 root sys /dev/qfe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:bge 0600 root sys 0666 root sys /dev/bge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:rge 0600 root sys 0666 root sys /dev/rge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:xge 0600 root sys 0666 root sys /dev/xge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:nge 0600 root sys 0666 root sys /dev/nge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:e1000g 0666 root root 0666 root sys /dev/e1000g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:chxge 0600 root sys 0666 root sys /dev/chxge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:vsw 0600 root sys 0666 root sys /dev/vsw
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:vnet 0600 root sys 0666 root sys /dev/vnet
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:pcwl 0600 root sys 0666 root sys /dev/pcwl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:pcan 0600 root sys 0666 root sys /dev/pcan
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:afe 0600 root sys 0666 root sys /dev/afe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:mxfe 0600 root sys 0666 root sys /dev/mxfe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:rtls 0600 root sys 0666 root sys /dev/rtls
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenbge:* 0600 root sys 0666 root sys /dev/bge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenrge:* 0600 root sys 0666 root sys /dev/rge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenxge:* 0600 root sys 0666 root sys /dev/xge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersennge:* 0600 root sys 0666 root sys /dev/nge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersene1000g:* 0666 root root 0666 root sys /dev/e1000g*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenchxge:* 0600 root sys 0666 root sys /dev/chxge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenvsw:* 0600 root sys 0666 root sys /dev/vsw*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenvnet:* 0600 root sys 0666 root sys /dev/vnet*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenpcwl:* 0600 root sys 0666 root sys /dev/pcwl*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenpcan:* 0600 root sys 0666 root sys /dev/pcan*
9451eeffb0688b801034d963c455c8b31ccbf28cTycho Andersenclone:dmfe 0600 root sys 0666 root sys /dev/dmfe
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendmfe:* 0600 root sys 0666 root sys /dev/dmfe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenclone:pcelx 0600 root sys 0666 root sys /dev/pcelx
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenpcelx:* 0600 root sys 0666 root sys /dev/pcelx*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenafe:* 0600 root sys 0666 root sys /dev/afe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmxfe:* 0600 root sys 0666 root sys /dev/mxfe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenrtls:* 0600 root sys 0666 root sys /dev/rtls*
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eilingipf:* 0600 root sys 0666 root sys /dev/ipf
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eilingpfil:* 0600 root sys 0666 root sys /dev/pfil
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenscsi_vhci:devctl 0600 root sys 0666 root sys /devices/scsi_vhci:devctl
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenfbt:fbt 0600 root sys 0644 root sys /dev/dtrace/provider/fbt
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenlockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenprofile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersensdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersensystrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen# If an entry in /etc/minor_perm needs to be deleted, identify
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# the entry in the list copied to /etc/delete.$$ by this function.
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersen# The fields are:
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# <device>:<minor> <optional list of logical devices to be deleted>
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenmm:mbio /dev/mbio /devices/pseudo/mm:mbio
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenmm:mbmem /dev/mbmem /devices/pseudo/mm:mbmem
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenclone:amd,0,aux,audio
13389b2963692a51162c703d8a64a79542b18949Tycho Andersenclone:ipsecesp
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenprofile:profile
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# If an entry needs to be added to /etc/minor_perm, add the first
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# field of the entry to the list created by this function. The
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# remainder of the entry will be extracted from the /etc/minor_perm
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen# in the package being installed, so it is not necessary to supply
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,fas:devctl
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendevinfo:devinfo
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenipsecah:ipsecah
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenipsecesp:ipsecesp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenkeysock:keysock
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenspdsock:spdsock
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendevinfo:devinfo,ro
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersencryptoadm:cryptoadm
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenfasttrap:fasttrap
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenprofile:profile
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensystrace:systrace
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho AndersenPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersen# Internal routine to create a sed script which can be used to
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersen# escape all shell globbing metacharacters in a path.
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen# Internal routine to convert an entry in a /tmp/chwhatever.$$ file to
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen# an appropriately escaped pattern which can be used to grep into minor_perm.
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # the first argument is the 'key' field from the change file.
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # entries can contain shell globbing characters to match
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # several devices - hence all the palaver below.
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # the remaining optional arguments are tokens separated by white-space
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen if [ $# = 0 ] ; then
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen if [ ! -f $dest ] ; then
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # Process the list of devices whose attributes are to be
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # changed. Find those that actually need to be
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # applied to the file. For each change that needs
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # to be applied, add an entry for it to the sed
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # script that will eventually be applied to the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # currently-installed /etc/minor_perm file. Also,
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # add an entry to the /tmp/chdevs.$$ file, which
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # contains the list of logical names of devices
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # whose permissions need to be changed.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen while read key oldp oldu oldg newp newu newg chdevs
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # First determine whether the device entry
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen # is already in the file, but with the old
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # permissions. If so, the entry needs to be
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # modified and the devices in the chdevs list
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # need to have their permissions and ownerships
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen if grep "$grepstr" $dest > /dev/null 2>&1; then
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen echo "s/${grepstr}/$key $newp $newu $newg/" \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # Now determine whether the device entry is
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # in the file at all. If not, it is a new
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # entry, but there may already be devices
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # on the system whose permissions need to
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # be changed.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ $? != 0 ] ; then
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Make sure /dev/volctl gets its permissions corrected.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # (systems upgraded from 2.2 to 2.3 may have a correct
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # entry for /dev/volctl in the /etc/minor_perm file
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # but the actual /dev/volctl node may have the wrong
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # permissions.)
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen echo /dev/volctl 0600 root sys 0666 root sys >> /tmp/chdevs.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Process the list of devices to be deleted.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Find those that actually need to be deleted
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # from the file. For each entry to be deleted,
755fa45300ba1dc5da63a1b88cec3e205172f078Tycho Andersen # add an entry for it to the sed script that will
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # eventually be applied to the currently-installed
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # /etc/minor_perm file. Also, add an entry to the
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # /tmp/deldevs.$$ file, which contains the list of
755fa45300ba1dc5da63a1b88cec3e205172f078Tycho Andersen # logical names of devices to be deleted.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if grep "$grepstr" $dest > /dev/null 2>&1; then
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # Apply the sed script built above to the
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # currently-installed /etc/minor_perm file.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Special case code to handle bug in 2.1, 2.2, and
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # early 2.3 releases: the link from /dev/sound/*
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # has one extra set of "../"'s in the link. This
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # doesn't cause problems in normal operation
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # because ".."'s that would take the search path
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # higher than the real root are ignored. However,
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # during upgrade, when the system being upgraded is
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # mounted at /a, the extra ".." in the link causes
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # the link to be unresolvable. The link must be
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # corrected so that the chmod of /dev/sound/*
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ "$PKG_INSTALL_ROOT" != "" -a "$PKG_INSTALL_ROOT" != "/" ]
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ "$i" = "$PKG_INSTALL_ROOT/dev/sound/*" ]
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # if it's not a symlink, continue
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ ! -h $i ] ; then
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ $? = 0 ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # link is already OK
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # otherwise, link can't be followed
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # build the correct link
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # build a test link
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ln -s $link $PKG_INSTALL_ROOT/dev/sound/test.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # test the link
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # it worked, so replace old link with new
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen if [ $? = 0 ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # For all entries in minor_perm whose attributes had
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # to be corrected, correct the relevant attributes of the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # already-existing devices that correspond to those
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen while read device oldp oldu oldg newp newu newg
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # Note that we take pains -only- to change
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # the permission/ownership of devices that
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # have kept their original permissions.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # For all entries in minor_perm that were deleted,
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # remove the /dev entries that point to device nodes
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # that correspond to those entries.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
3d9a5c85fd79e5d564c024063f9396b92989961aTycho Andersen if [ $? != 0 ] ; then