[Comm] iso9660 vfs for mc (was: раскраска mc)

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Чт Май 15 10:43:17 MSD 2003


On Tue, May 13, 2003 at 10:35:51PM +0300, Michael Shigorin wrote:
> PS: если кто не заметил -- в альтовский mc недавно добавилось
> умение лазать по .iso от пользователя :)

А.  Вспомнил.  После того, как письмо ушло, я понял, что ушло-то
оно лично, а надо бы в рассылку (и заодно доцепить vfs :).

Сделал bounce to community@ вдогонку :) [ пользователям не-mutt
можно в общем случае не беспокоиться :) ]

Аттач можно положить в /usr/share/mc/extfs/iso, сделать 

chmod +x /usr/share/mc/extfs/iso
echo "iso" >> /usr/share/mc/extfs/extfs.ini

и добавить куда-то (у меня это был существующий ~/.mc/bindings)
привязку на манер, скажем, tar:

# .iso  
shell/.iso
        Open=%cd %p#iso

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#! /bin/sh

# ISO9660 VFS for MC by Michael Shigorin <mike на altlinux.org>,
#   modifications by Grigory Milev <week на altlinux.org>
#   and Kachalov Anton <mouse на linux.ru.net>   April 2003
# based on lslR by Tomas Novak <tnovak на ipex.cz>   April 2000
# -- look there for additional parsing comments if needed

# tested to comply with isoinfo 2.0's output

test_iso () {
    CHARSET=`echo $save_ctype | sed -n -e 's/.*\.\(.*\)"$/\1/p' |tr '[A-Z]' '[a-z]'`
    if test -n "$CHARSET"; then
	isoinfo -j $CHARSET 2>&1 | grep "Unknown charset" >/dev/null && CHARSET=
    fi
    if test -n "$CHARSET"; then
	JOLIET_OPT="-j $CHARSET -J"
    else
	JOLIET_OPT="-J"
    fi
    ISOINFO="isoinfo -R"
    isoinfo -d -i "$1" | grep "NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT"
}

mcisofs_list () {
# left as a reminder to implement compressed image support =)
case "$1" in
  *.bz2) MYCAT="bzip2 -dc";;
  *.gz)  MYCAT="gzip -dc";;
  *.z)   MYCAT="gzip -dc";;
  *.Z)   MYCAT="gzip -dc";;
  *)     MYCAT="cat";;
esac

$ISOINFO -l -i "$1" | @AWK@ '
BEGIN {
  dir="";
  # Pattern to match 8 first fields.
  rx = "[^ 	]+[ 	]+";
  rx = "^" rx rx rx rx rx rx rx rx;
  irx = "^. *[0-9]+.  ";
}
/^$/ { next }
/^d---------/ { next }
/^Directory listing of [^ 	].*$/ {
  dir=substr($0, 23);
  next;
}
{ $11 != "" } {
  name=$0
  sub(rx, "", name)
  attr=substr($0, 1, length($0)-length(name))
  # strip inodes and extra dir entries; fix perms
  sub(irx, "", name)
  sub("^----------   0    0    0", "-r--r--r--   1 root root", attr)
  sub(" $", "", name)
  ## sub(";[0-9]+$", "", name) ## would break copyout
  # skip . and ..
  if (name ~ /^\.\.?/) next;
  printf "%s%s%s\n", attr, dir, name
}' 
}

mcisofs_copyout () {
	$ISOINFO -i "$1" -x "/$2" > "$3" 
}

save_ctype=`locale | grep LC_CTYPE`
LC_ALL=C

cmd="$1"
shift

case "$cmd" in
  list)
    test_iso "$@";
    mcisofs_list "$@";
    exit 0;;
  copyout)
    test_iso "$@";
    mcisofs_copyout "$@";
    exit 0;;
esac
exit 1
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20030515/ac95125b/attachment-0004.bin>


Подробная информация о списке рассылки community