i.logindevperm revision aecfc01d1bad84e66649703f7fc2926ef70b34ba
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# CDDL HEADER START
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# The contents of this file are subject to the terms of the
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# Common Development and Distribution License (the "License").
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# You may not use this file except in compliance with the License.
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# See the License for the specific language governing permissions
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# and limitations under the License.
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# When distributing Covered Code, include this CDDL HEADER in each
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# If applicable, add the following below this CDDL HEADER, with the
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# fields enclosed by brackets "[]" replaced with your own identifying
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# information: Portions Copyright [yyyy] [name of copyright owner]
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# CDDL HEADER END
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley# Use is subject to license terms.
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ ! -f $dest ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley while read line; do
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # if not an entry, just print as is and move to next record
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley entry=`echo "$line" | egrep "^[# ]*/[a-zA-Z0-9\/]+[ ]+[0-9]+[ ]+"`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$entry" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # extract 'devices' field
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$devices" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # extract 'drivers' field
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley found_driver=`echo "$drivers" | egrep "^driver="`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$found_driver" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley devices=`echo "$devices" | sed 's/\[/\\\[/g' | sed 's/\]/\\\]/g' | sed 's/\+/\\\+/g' | sed 's/\*/\\\*/g'`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # if dest has an entry for these devices and the difference
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # between dest entry and src entry is not only
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # "/dev/console" vs. "/dev/vt/active", preserve dest entry
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley dest_entry=`egrep "^[# ]*/[a-zA-Z0-9\/]+[ ]+[0-9]+[ ]+$devices[ ]*$drivers" $dest | tail -1 2>/dev/null`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley tmp_line=`echo "$line" | sed 's:/dev/vt/active:/dev/console:'`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -n "$dest_entry" ] && [ "$dest_entry" != "$tmp_line" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # now carry over user's own entries
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley while read line; do
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # skip non-entries
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley entry=`echo "$line" | egrep "^[# ]*/[a-zA-Z0-9\/]+[ ]+[0-9]+[ ]+"`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$entry" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # extract 'devices' field
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$devices" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # extract 'drivers' field
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley found_driver=`echo "$drivers" | egrep "^driver="`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$found_driver" ]; then
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley devices=`echo "$devices" | sed 's/\[/\\\[/g' | sed 's/\]/\\\]/g' | sed 's/\+/\\\+/g' | sed 's/\*/\\\*/g'`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley # if dest has an entry for these devices, preserve that
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley dest_entry=`egrep "^[# ]*/[a-zA-Z0-9\/]+[ ]+[0-9]+[ ]+"$devices"[ ]*"$drivers"" $newdest | tail -1 2>/dev/null`
c6dcc4cc989a7aae39ce7263c1d3e1d5758fb91bBob Halley if [ -z "$dest_entry" ]; then