diff options
Diffstat (limited to 'tools/ota/add-data-wipe')
-rwxr-xr-x | tools/ota/add-data-wipe | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/tools/ota/add-data-wipe b/tools/ota/add-data-wipe new file mode 100755 index 000000000..8d2626ffe --- /dev/null +++ b/tools/ota/add-data-wipe @@ -0,0 +1,118 @@ +#!/bin/bash +# +# Copyright (C) 2007 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +PROGNAME=`basename $0` + +function cleantmp +{ + if [ ! -z "$TMPDIR" ] + then + rm -rf "$TMPDIR" + TMPDIR= + fi +} + +function println +{ + if [ $# -gt 0 ] + then + echo "$PROGNAME: $@" + fi +} + +function fail +{ + println "$@" + cleantmp + exit 1 +} + +function usage +{ + println "$@" + echo "Usage: $PROGNAME <input file> <output file>" + fail +} + +OTATOOL=`which otatool` +if [ -z "$OTATOOL" ] +then + OTATOOL="`dirname $0`/otatool" + if [ ! -x "$OTATOOL" ] + then + fail "Can't find otatool" + fi +fi + + +if [ $# -ne 2 ] +then + usage +fi + +INFILE="$1" +OUTFILE="$2" + +if [ ! -f "$INFILE" ] +then + fail "$INFILE doesn't exist or isn't a file" +fi + +if [ -z "$OUTFILE" ] +then + usage "Output file not specified" +fi + +if [ -d "$OUTFILE" ] +then + usage "Output file may not be a directory" +fi + +if [ "$INFILE" -ef "$OUTFILE" ] +then + fail "Refusing to use the input file as the output file" +fi + +TMPDIR=`mktemp -d "/tmp/$PROGNAME.XXXXXX"` +if [ $? -ne 0 ] +then + TMPDIR= + fail "Can't create temporary directory" +fi + +ORIGSCRIPT="$TMPDIR/orig" +NEWSCRIPT="$TMPDIR/new" + +"$OTATOOL" --dump-script "$INFILE" | +awk ' + { print } + /^format SYSTEM:$/ { + print "delete_recursive DATA:" + } +' > "$NEWSCRIPT" +if [ $? -ne 0 ] +then + fail "Couldn't modify script" +fi + +"$OTATOOL" --replace-script "$NEWSCRIPT" -o "$OUTFILE" "$INFILE" +if [ $? -ne 0 ] +then + fail "Couldn't replace script" +fi + +cleantmp |