#!/bin/sh # # 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 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # write_comment() { cat > /tmp/services.cmt.$$ << EOF # # The following customer-specific entries were found in the ${filename} file # prior to an upgrade. Note that ${thing} names and their corresponding # ${number} numbers must be registered with ${registrar}, ${regurl}, and # entries not registered as such may not be preserved automatically by # future upgrades. # EOF } while read src dest do if [ ! -f $dest ] ; then cp $src $dest else # Adjust message as appropriate to target file. d=`basename $dest` # Assume english plural of word not ending in s. # no need for heroic natural language processing, we can # tweak things in the case statement below. t=`basename $d s` filename=${d} thing=${t} number=${t} registrar=IANA regurl=http://www.iana.org # Override cases we know about. case ${d} in services) number="port" ;; esac grep -v "^#" $dest | \ while read service port rest_of_line; do grep "^$service[ ]*$port[ ]*" \ $src > /dev/null 2>&1 if [ $? != 0 ]; then # not in the new source grep "^$service[ ]*$port[ ]*" \ /tmp/services.$$ > /dev/null 2>&1 if [ $? != 0 ]; then # also not a duplicate, get ONE line here grep "^$service[ ]*$port[ ]*" \ $dest | line >> /tmp/services.$$ fi fi done cat $src > /tmp/d.$$ if [ -f /tmp/services.$$ ]; then write_comment cat /tmp/services.cmt.$$ >> /tmp/d.$$ cat /tmp/services.$$ >> /tmp/d.$$ rm -f /tmp/services.$$ /tmp/services.cmt.$$ fi cp /tmp/d.$$ $dest rm -f /tmp/d.$$ # Set correct permissions on services file chmod 0644 $dest fi done exit 0