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