#!/bin/bash

ACTION=$1
ARCHIVE=$2
FILENAME=$3
DESTINATION=$4

case "$ACTION" in
    list)
        # here the awk code converts unsquashfs output
        # to the `ls -l` command output format that mc requires
        unsquashfs -ll -d '' "$ARCHIVE" | awk 'NR != 1 {
            $1 = $1 " 1"
            sub(/\//, " ", $2)
            if ($3 ~ /,$/) { $3 = $3 $4; $4 = $5; $5 = "" }
            $4 = gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2})/, "\\2-\\3-\\1", "1", $4)
            print
        }'
        ;;
    copyout)
        TMPDIR=$(mktemp -d --tmpdir="$MC_TMPDIR" "mc-unsquashfs.XXXXXX") || exit 1
        trap 'rm -fr "$TMPDIR"' EXIT
        unsquashfs -f -d "$TMPDIR" "$ARCHIVE" -e "$FILENAME" &>/dev/null
        mv -f "$TMPDIR"/"$FILENAME" "$DESTINATION"
        ;;
    *)
        exit 1
        ;;
esac
