scripts/kernel_bump: Delete merge commit
[openwrt/staging/nbd.git] / scripts / functions.sh
index 9a7fcde6277b11da43916564df823d20619de45a..ec0618c2728881860354d52081c7bfc49be8ccfd 100644 (file)
@@ -5,6 +5,19 @@ get_magic_word() {
        dd if=$1 bs=4 count=1 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' '
 }
 
+get_post_padding_word() {
+       local rootfs_length="$(stat -c%s "$1")"
+       [ "$rootfs_length" -ge 4 ] || return
+       rootfs_length=$((rootfs_length-4))
+
+       # the JFFS2 end marker must be on a 4K boundary (often 64K or 256K)
+       local unaligned_bytes=$((rootfs_length%4096))
+       [ "$unaligned_bytes" = 0 ] || return
+
+       # skip rootfs data except the potential EOF marker
+       dd if="$1" bs=1 skip="$rootfs_length" 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' '
+}
+
 get_fs_type() {
        local magic_word="$(get_magic_word "$1")"
 
@@ -13,7 +26,16 @@ get_fs_type() {
                echo "ubifs"
                ;;
        "68737173")
-               echo "squashfs"
+               local post_padding_word="$(get_post_padding_word "$1")"
+
+               case "$post_padding_word" in
+               "deadc0de")
+                       echo "squashfs-jffs2"
+                       ;;
+               *)
+                       echo "squashfs"
+                       ;;
+               esac
                ;;
        *)
                echo "unknown"