#! /bin/bash TEMP="/tmp/ffi.$$" mkdir -p "$TEMP/PART-1-" "$TEMP/PART-2-" "$TEMP/PART-3-" "$TEMP/PART-4-" \ "$TEMP/PART-5-" "$TEMP/PART-6-" "$TEMP/PART-7-" "$TEMP/PART-8-" \ "$TEMP/PART-9-" "$TEMP/PART-10-" "$TEMP/PART-11-" "$TEMP/PART-12-" \ "$TEMP/PART-13-" "$TEMP/PART-14-" "$TEMP/PART-15-" "$TEMP/PART-16-" \ "$TEMP/PART-17-" "$TEMP/PART-18-" "$TEMP/PART-19-" "$TEMP/PART-20-" \ "$TEMP/PART-21-" "$TEMP/PART-22-" "$TEMP/PART-23-" "$TEMP/PART-24-" \ "$TEMP/PART-25-" "$TEMP/PART-26-" "$TEMP/PART-27-" "$TEMP/PART-28-" \ "$TEMP/PART-29-" "$TEMP/PART-30-" "$TEMP/PART-31-" "$TEMP/PART-32-" fdisk -lu "$1" 2>/dev/null | grep "$1" | grep -vi " bytes *$\| extended *$\| swap *$" | sed "s/ [*?] / /" | \ while [ 1 ] ; do read name sector junk || break mount -o ro,offset=$[$sector*512] "$1" "$TEMP/PART-${name:${#1}}-" || \ echo "ffidisk: Can't mount -o ro,offset=$[$sector*512] \"$1\" on partition #${name:${#1}}" >&2 done if grep " $TEMP/PART-" /proc/mounts >/dev/null 2>&1 ; then for i in "$TEMP"/PART-?- "$TEMP"/PART-1?- "$TEMP"/PART-2?- "$TEMP"/PART-3?- ; do ./ffi "$i" | sed "s? $TEMP/? $1/?" done umount "$TEMP/"* 2>/dev/null fi rm -r "$TEMP"