1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#! /bin/sh 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# $NetBSD: mkinit.sh,v 1.2 2004/06/15 23:09:54 dsl Exp $ 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Copyright (c) 2003 The NetBSD Foundation, Inc. 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# All rights reserved. 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# This code is derived from software contributed to The NetBSD Foundation 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# by David Laight. 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Redistribution and use in source and binary forms, with or without 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# modification, are permitted provided that the following conditions 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# are met: 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 1. Redistributions of source code must retain the above copyright 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# notice, this list of conditions and the following disclaimer. 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 2. Redistributions in binary form must reproduce the above copyright 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# notice, this list of conditions and the following disclaimer in the 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# documentation and/or other materials provided with the distribution. 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 3. Neither the name of The NetBSD Foundation nor the names of its 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# contributors may be used to endorse or promote products derived 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# from this software without specific prior written permission. 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# POSSIBILITY OF SUCH DAMAGE. 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectsrcs="$*" 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnl=' 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project' 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectopenparen='(' 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectbackslash='\' 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectincludes=' "shell.h" "mystring.h" "init.h" ' 42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdefines= 43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdecles= 44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectevent_init= 45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectevent_reset= 46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectevent_shellproc= 47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectfor src in $srcs; do 49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project exec <$src 50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decnl="$nl" 51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while IFS=; read -r line; do 52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$line" = x ] 53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project case "$line " in 54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project INIT["{ "]* ) event=init;; 55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project RESET["{ "]* ) event=reset;; 56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project SHELLPROC["{ "]* ) event=shellproc;; 57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project INCLUDE[\ \ ]* ) 58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project IFS=' ' 59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project set -- $line 60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # ignore duplicates 61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "${includes}" != "${includes%* $2 }" ] && continue 62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project includes="$includes$2 " 63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project continue 64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ;; 65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project MKINIT\ ) 66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # struct declaration 67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decles="$decles$nl" 68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project read -r line 70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decles="${decles}${line}${nl}" 71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$line" != "};" ] 72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project : 74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decnl="$nl" 76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project continue 77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ;; 78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project MKINIT["{ "]* ) 79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # strip initialiser 80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project def=${line#MKINIT} 81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project comment="${def#*;}" 82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project def="${def%;$comment}" 83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project def="${def%%=*}" 84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project def="${def% }" 85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decles="${decles}${decnl}extern${def};${comment}${nl}" 86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project decnl= 87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project continue 88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ;; 89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project \#define[\ \ ]* ) 90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project IFS=' ' 91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project set -- $line 92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # Ignore those with arguments 93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$2" = "${2##*$openparen}" ] || continue 94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # and multiline definitions 95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$line" = "${line%$backslash}" ] || continue 96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project defines="${defines}#undef $2${nl}${line}${nl}" 97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project continue 98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ;; 99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * ) continue;; 100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project esac 101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # code for events 102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ev="${nl} /* from $src: */${nl} {${nl}" 103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project read -r line 105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$line" != "}" ] 106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # The C program indented by an extra 6 chars using 108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project # tabs then spaces. I need to compare the output :-( 109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project indent=6 110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project l=${line# } 112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$l" != "$line" ] 113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project indent=$(($indent + 8)) 115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project line="$l" 116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project l=${line# } 119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ "$l" != "$line" ] 120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project indent=$(($indent + 1)) 122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project line="$l" 123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ -z "$line" -o "$line" != "${line###}" ] && indent=0 125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ $indent -ge 8 ] 127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ev="$ev " 129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project indent="$(($indent - 8))" 130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while 132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project [ $indent -gt 0 ] 133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project do 134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ev="$ev " 135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project indent="$(($indent - 1))" 136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ev="${ev}${line}${nl}" 138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ev="${ev} }${nl}" 140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project eval event_$event=\"\$event_$event\$ev\" 141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project done 142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdone 143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectexec >init.c.tmp 145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "/*" 147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " * This file was generated by the mkinit program." 148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " */" 149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectIFS=' ' 152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectfor f in $includes; do 153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project echo "#include $f" 154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdone 155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 159dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "$defines" 160dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "$decles" 162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 163dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 164dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "/*" 165dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " * Initialization code." 166dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " */" 167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "void" 169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "init() {" 170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "${event_init%$nl}" 171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "}" 172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "/*" 176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " * This routine is called when an error or an interrupt occurs in an" 177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " * interactive shell and control is returned to the main command loop." 178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " */" 179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "void" 181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "reset() {" 182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "${event_reset%$nl}" 183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "}" 184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "/*" 188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " * This routine is called to initialize the shell to run a shell procedure." 189dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho " */" 190dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "void" 192dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "initshellproc() {" 193dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "${event_shellproc%$nl}" 194dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "}" 195dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 196dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectexec >&- 197dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectmv init.c.tmp init.c 198