LINUX.ORG.RU

История изменений

Исправление yax123, (текущая версия) :

Решил таки добить открытие squashfs через mc. И вот что получилось.
За основу взял следующее решение:
http://forum.puppyrus.org/index.php?topic=9032.0
правда пришлось его слегка подправить.
Итак:
1. в /usr/libexec/mc/extfs.d кладем файл squashfs следующего содержания

#! /bin/sh

UNSQUASH=/usr/bin/unsquashfs

mcsquashfs_list () {

$UNSQUASH -ll "$1" | awk '
{if (NR == 1) { next }}
{if (NR == 2) { next }}
/^$/ { next }
/^d/ { next }
{
        sub("/", " ", $2)
        date = substr($4, 6, 2) "-" substr($4, 9, 2) "-" substr($4, 1, 4) " " $5
        sub("squashfs-root", "",  $6)
        name = $6
        {if($7 != ""){name = name " " $7}}
        {if($8 != ""){name = name " " $8}}
        printf "%s 1 %s %s %s %s\n", $1, $2, $3, date, name
}'
}

mcsquashfs_copyout () {
        TMP_DIR="/tmp/squashfs_temp"
        [ ! -d $TMP_DIR ] && mkdir $TMP_DIR
        $UNSQUASH -f -d $TMP_DIR $1 -e /$2 > /dev/null
        mv $TMP_DIR/$2 $3
        [ -d $TMP_DIR ] && rm -r $TMP_DIR
}

LC_ALL=C

cmd="$1"
shift

case "$cmd" in
  list)
    mcsquashfs_list "$@";
    exit 0;;
  copyout)
    mcsquashfs_copyout "$@";
    exit 0;;
esac
exit 1
* проверить путь к unsquashfs

2. в mc.ext добавить следующее:

#squashfs
regex/\.(sfs|tcz)$
  Open=%cd %p/squashfs://
  View=%view{ascii} unsquashfs -ll %f
от каноничного варианта отличие в строке Open

Ну и понятно, что в ядре должна быть поддержка и unsquashfs должен быть установлен. Проверял на GNU Midnight Commander, версия 4.8.18

А я пошел все сжимать.

Исходная версия yax123, :

рабочее решение

Решил таки добить открытие squashfs через mc. И вот что получилось.
За основу взял следующее решение:
http://forum.puppyrus.org/index.php?topic=9032.0
правда пришлось его слегка подправить.
Итак:
1. в /usr/libexec/mc/extfs.d кладем файл squashfs следующего содержания

#! /bin/sh

UNSQUASH=/usr/bin/unsquashfs

mcsquashfs_list () {

$UNSQUASH -ll "$1" | awk '
{if (NR == 1) { next }}
{if (NR == 2) { next }}
/^$/ { next }
/^d/ { next }
{
        sub("/", " ", $2)
        date = substr($4, 6, 2) "-" substr($4, 9, 2) "-" substr($4, 1, 4) " " $5
        sub("squashfs-root", "",  $6)
        name = $6
        {if($7 != ""){name = name " " $7}}
        {if($8 != ""){name = name " " $8}}
        printf "%s 1 %s %s %s %s\n", $1, $2, $3, date, name
}'
}

mcsquashfs_copyout () {
        TMP_DIR="/tmp/squashfs_temp"
        [ ! -d $TMP_DIR ] && mkdir $TMP_DIR
        $UNSQUASH -f -d $TMP_DIR $1 -e /$2 > /dev/null
        mv $TMP_DIR/$2 $3
        [ -d $TMP_DIR ] && rm -r $TMP_DIR
}

LC_ALL=C

cmd="$1"
shift

case "$cmd" in
  list)
    mcsquashfs_list "$@";
    exit 0;;
  copyout)
    mcsquashfs_copyout "$@";
    exit 0;;
esac
exit 1
* проверить путь к unsquashfs

2. в mc.ext добавить следующее:

#squashfs
regex/\.(sfs|tcz)$
  Open=%cd %p/squashfs://
  View=%view{ascii} unsquashfs -ll %f
от каноничного варианта отличие в строке Open

Ну и понятно, что в ядре должна быть поддержка и unsquashfs должен быть установлен.

А я пошел все сжимать.