UnixTools/jffs2unpack.sh
2015-06-01 22:41:23 +02:00

60 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Needs mtd-tools with jffs2reader
if [ ! -f "$1" ]; then
echo "Syntax: $0 JFFS2IMAGE"
exit 1
fi
BASENAME=`basename "$1"`
OUTDIR="./${BASENAME}_unpack/"
mkdir $OUTDIR
while read -u3 line; do
# echo "Line: $line"
PERMS=`echo $line | cut -d" " -f1`
SIZE=`echo $line | cut -d" " -f5`
FILE=`echo $line | cut -d" " -f6`
TYPE=${PERMS:0:1}
PERMS=${PERMS:1}
# echo "P:$PERMS S:$SIZE F:$FILE T:$TYPE"
if [ "${FILE:0:1}" == "/" ]; then
FILE=${FILE:1}
fi
PERMSU=`echo "${PERMS:0:3}" | sed 's/-//g'`
PERMSG=`echo "${PERMS:3:3}" | sed 's/-//g'`
PERMSO=`echo "${PERMS:6:3}" | sed 's/-//g'`
FULLPERMS="u=$PERMSU,g=$PERMSG,o=$PERMSO"
OUTFILE="$OUTDIR$FILE"
case "$TYPE" in
"d")
OUTFILE="$OUTDIR$FILE"
echo "DIR: $FILE ($FULLPERMS) --> $OUTFILE"
mkdir "$OUTFILE"
chmod $FULLPERMS "$OUTFILE"
;;
"l")
LINKTARGET=`echo $line | cut -d" " -f8`
echo "Symlink: $FILE --> $LINKTARGET"
ln -s $LINKTARGET "$OUTFILE"
;;
"-")
echo "FILE: $FILE ($SIZE bytes, $FULLPERMS)"
jffs2reader "$1" -f "$FILE" > $OUTFILE
chmod $FULLPERMS "$OUTFILE"
;;
*)
echo "UNKNOWN!!!!!!! ($line)"
;;
esac
done 3< <(jffs2reader "$1")