60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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")
 |