[VFS] UPDATED [WAS: Bug#479549: [VFS] NEW: tar files (even compreessed with bzip2/gzip) can now be updated]

Michelle Konzack linux4michelle at tamay-dogan.net
Wed Jun 18 15:00:21 UTC 2008


Hello Patrick,

I was working arround the file and now it allow "mkdir" and "rmdir".

So I have updated the POT and PO file.

OK, I do currently not know, what Pavel (upstream) think about  it,  but
I suggest you for now uncompress the orig.tar.gz and make a subdirectory
debian/tdmc/ where you put my files.

If you create the diff.gz, the files would be for  NOW  Debian  specific
and easier to maintain.  If upstream include  it,  you  can  remove  the
directory and a makefile call and it is done.

The Makefile shold be as simpel as posibel.

The  stuff  from  "/usr/share/mc/extfs/extfs.ini"  and  "/etc/mc/mc.ext"
should be unified patches like the two attached ones.

Thanks, Greetings and nice Day/Evening
    Michelle Konzack
    Systemadministrator
    24V Electronic Engineer
    Tamay Dogan Network
    Debian GNU/Linux Consultant


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
+49/177/9351947    50, rue de Soultz         MSN LinuxMichi
+33/6/61925193     67100 Strasbourg/France   IRC #Debian (irc.icq.com)
-------------- next part --------------
#!/bin/bash
#                                                                    #
# Copyright 2008, Michelle Konzack All rights reserved.              #
#                                                                    #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions #
# are met:                                                           #
#                                                                    #
# 1. Redistributions of source code  must retain the above copyright #
#    notice, this list of conditions and the following disclaimer.   #
#                                                                    #
# 2. Redistributions  in  binary  form   must  reproduce  the  above #
#    copyright  notice, this  list of  conditions and  the following #
#    disclaimer in the documentation and/or other materials provided #
#    with the distribution.                                          #
#                                                                    #
# 3. Neither  the name  of Michelle Konzack  nor the  names of  its  #
#    contributors may be used to endorse or promote products derived #
#    from this software without specific prior written permission.   #
#                                                                    #
# THIS  SOFTWARE IS  PROVIDED BY  MICHELLE KONZACK  AND CONTRIBUTORS #
# ``AS IS'  AND ANY  EXPRESS OR  IMPLIED WARRANTIES,  INCLUDING, BUT #
# NOT  LIMITED TO,  THE  IMPLIED WARRANTIES  OF MERCHANTABILITY  AND #
# FITNESS  FOR A  PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT #
# SHALL MICHELLE KONZACK OR  CONTRIBUTORS  BE LIABLE FOR ANY DIRECT, #
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES #
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR #
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #
# HOWEVER  CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN #
# CONTRACT,  STRICT  LIABILITY,  OR TORT  (INCLUDING  NEGLIGENCE  OR #
# OTHERWISE) ARISING  IN ANY WAY  OUT OF  THE USE OF  THIS SOFTWARE, #
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                 #
#                                                                    #

EXENAME=tdmc_tar
PKGNAME=tdmc

if [ -n "$(which gettext.sh)" ] ; then
  . gettext.sh
else
  gettext()
  {
    echo "$1"
  }
  eval_gettext()
  {
    eval 'echo $1'
  }
fi
export TEXTDOMAIN=${PKGNAME}
export TEXTDOMAINDIR=/usr/share/locale

VERSION=0.0.3

AUTHORNAME="Michelle Konzack"
AUTHORMAIL="linux4michelle at freenet.de"
LICENSE=$(gettext 'This tool is under GNU GPL version 3.0')
LICENSE_LONG=/usr/share/common-licenses/GPL-3

########################################################################

if [ "${MCVFS_DEBUG}" = "true" ] ; then
  gettext 'Input parameters:' 1>&2
  echo -e "0: $0\n1: $1\n2: $2\n3: $3\n4: $4\n\n" 1>&2
fi

########################################################################

TDMC_CACHE=/tmp/tdmc_cache-${LOGNAME}
if [ ! -d ${TDMC_CACHE} ] ; then
  mkdir -p ${TDMC_CACHE}
  chmod -R 700 ${TDMC_CACHE}
fi

########################################################################

if [ -n "$(echo ",list,copyout,copyin,rm,mkdir,rmdir," |grep ",$1,")" ] ; then
  MD5=`echo "$2" |md5sum |sed 's|\ .*||'`
  ARCHIVENAME=${TDMC_CACHE}/${MD5}
  find ${TDMC_CACHE} -name ${MD5} -mmin -30 -maxdepth 1 -mindepth 1 >/dev/null 2>&1
  if [ $? -ne 0 ] ; then
    rm --force ${ARCHIVENAME}
  fi
  if [ ! -f ${ARCHIVENAME} ] ; then
    if   [ -n "$(echo "$2" |grep '.tar.bz2$' )" ] ; then
      bzcat "$2" >${ARCHIVENAME}
    elif [ -n "$(echo "$2" |grep '.tar.gz$' )" ] ; then
      zcat "$2" >${ARCHIVENAME}
    else
      cat "$2" >${ARCHIVENAME}
    fi
  fi
fi

########################################################################

if   [ "$1" = "list" ] ; then
  TMPFILE=`mktemp -t tdmc.XXXXXX || exit 1`
  (tar --list --numeric-owner --verbose --file ${ARCHIVENAME} |tr -s ' ') |
  while read LINE
  do
    VAL_mode=`echo "${LINE}" |cut -d ' ' -f1`
    VAL_ugid=`echo "${LINE}" |cut -d ' ' -f2`
    VAL_uid=`echo ${VAL_ugid} |cut -d '/' -f1`
    VAL_gid=`echo ${VAL_ugid} |cut -d '/' -f2`
    VAL_size=`echo "${LINE}" |cut -d ' ' -f3`
    VAL_date=`echo "${LINE}" |cut -d ' ' -f4`
    VAL_time=`echo "${LINE}" |cut -d ' ' -f5`
    VAL_dati=`date --date="${VAL_date} ${VAL_time}" +"%b %d %Y %H:%M"`
    VAL_path=`echo "${LINE}" |cut -d ' ' -f6- |sed 's|/$||g'`
    VAL_links=1
    echo "${VAL_path} 0 ${VAL_mode} ${VAL_links} ${VAL_uid} ${VAL_gid} ${VAL_size} ${VAL_dati}" >>${TMPFILE}
  done
  fnc_foo1()
  {
    (cat ${TMPFILE}) |
    while read LINE
    do
      if [ -n "`echo "${LINE}" |cut -d ' ' -f3- |grep '^d'`" ] ; then
        echo "${LINE}"
      fi
    done     
  }
  DIRS=`fnc_foo1`
  fnc_foo2()
  {
    (cat ${TMPFILE}) |
    while read LINE
    do
      if [ -z "`echo "${LINE}" |cut -d ' ' -f3 |grep --regexp='^d'`" ] ; then
        echo "${LINE}"
      fi
    done
    (echo "${DIRS}") |
    while read LINE
    do
      DIR1="`echo "${LINE}" |cut -d ' ' -f1 |sed 's|$|/|'`"
      if [ -z "`grep --regexp="${DIR1}" ${TMPFILE}`" ] ; then
        echo "${LINE}"
      fi
    done
  }
  fnc_foo2 |
    sort |
    sed 's|\(.*\) 0 \(.*\) \(.*\) \(.*\) \(.*\) \(.*\) \(.*\) \(.*\) \(.*\)$|\2 \3 \4 \5 \6 \7 \8 \9 \1|g'
  rm --force ${TMPFILE}

#=======================================================================
elif [ "$1" = "copyout" ] ; then
  TMPFILE=`mktemp -t tdmc.XXXXXX || exit 1`
  echo "$3" >${TMPFILE}
  tar --extract --numeric-owner --to-stdout --files-from ${TMPFILE} --file ${ARCHIVENAME} >"$4"
  rm --force ${TMPFILE}

#=======================================================================
elif [ "$1" = "copyin" ] ; then
  TMP_DIR=`mktemp -t -d tdmc.XXXXXX || exit 1`
  DIRNAME=${TMP_DIR}/`dirname "$3"`
  DIRNAME=`echo "${DIRNAME}" |sed 's|/\.$||'`
  FILENAME=`basename "$3"`
  mkdir -p ${DIRNAME}
  ln -s ${PWD}/${FILENAME} ${DIRNAME}/${FILENAME}
  FN=`dirname "$3"`/${FILENAME}
  FN=`echo "${FN}" |sed 's|\./||'`
  tar --update --numeric-owner --dereference --directory ${TMP_DIR} --file ${ARCHIVENAME} ${FN}
  rm --force ${DIRNAME}/*
  BN=`basename ${TMP_DIR}`
  cd ${TMP_DIR} && cd .. && rmdir --parents `echo "${DIRNAME}" |sed "s|.*${BN}|${BN}|" |sed 's|\.$||'`

#=======================================================================
elif [ "$1" = "rm" ] ; then
  tar --delete --file "${ARCHIVENAME}" "$3" 2>/dev/null
  if [ $? -ne 0 ] ; then
    tar --delete --file "${ARCHIVENAME}" "./$3" 2>/dev/null
  fi

#=======================================================================
elif [ "$1" = "mkdir" ] ; then
  TMP_DIR=`mktemp -t -d tdmc.XXXXXX || exit 1`
  mkdir -p ${TMP_DIR}/"$3"
  tar --update --numeric-owner --directory ${TMP_DIR} --file "${ARCHIVENAME}" "$3"
  cd ${TMP_DIR} && rmdir --parents "$3"

#=======================================================================
elif [ "$1" = "rmdir" ] ; then
  tar --delete --file "${ARCHIVENAME}" "$3" 2>/dev/null
  if [ $? -ne 0 ] ; then
    tar --delete --file "${ARCHIVENAME}" "./$3" 2>/dev/null
  fi

#=======================================================================
elif [ "$1" = "run" ] ; then
  gettext 'VFS#tar: what is "run"?\n\n' 1>&2
  echo -e "0: $0\n1: $1\n2: $2\n3: $3\n4: $4\n\n" 1>&2

#=======================================================================
else
  T0=$(gettext 'Usage:  ${libdir}/extfs/prefix command [arguments]')
  T1=$(gettext '    list    archivename')
  T2=$(gettext '    copyout archivename storedfilename extractto')
  T3=$(gettext '    copyin  archivename storedfilename sourcefile')
  T4=$(gettext '    rm      archivename storedfilename')
  T5=$(gettext '    mkdir   archivename dirname')
  T6=$(gettext '    rmdir   archivename dirname')
  T6=$(gettext '    run     ???')
  echo -e "${T0}\n\n${T1}\n${T2}\n${T3}\n${T4}\n${T5}\n${T6}"
  exit 1
fi

########################################################################

if [ -n "$(echo ",copyout,copyin,rm,mkdir,rmdir," |grep ",$1,")" ] ; then
  if   [ -n "$(echo "$2" |grep '.tar.bz2$')" ] ; then
    bzip2 <${ARCHIVENAME} >"$2"
  elif [ -n "$(echo "$2" |grep '.tar.gz$')" ] ; then
    gzip <${ARCHIVENAME} >"$2"
  else
    cat ${ARCHIVENAME} >"$2"
  fi
fi

find ${TDMC_CACHE} -type f -mmin +31 -exec rm --force {} ';'
-------------- next part --------------
A non-text attachment was scrubbed...
Name: extfs.ini.diff
Type: text/x-c++
Size: 375 bytes
Desc: not available
URL: <http://lists.midnight-commander.org/pipermail/mc/attachments/20080618/f8a1405e/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mc.ext.diff
Type: text/x-c++
Size: 367 bytes
Desc: not available
URL: <http://lists.midnight-commander.org/pipermail/mc/attachments/20080618/f8a1405e/attachment-0001.bin>
-------------- next part --------------
# Translation of the VFS (tar)
# Copyright (C) 2008 Michelle Konzack <linux4michelle at tamay-dogan.net>
# This file is distributed under the same license as the tdmc package.
# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: tdmc 0.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-06-10 17:17+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: tdmc_tar:57
msgid "This tool is under GNU GPL version 3.0"
msgstr ""

#: tdmc_tar:196
msgid "VFS#tar: what is \"run\"?"
msgstr ""

#: tdmc_tar:200
#, sh-format
msgid "Usage:  ${libdir}/extfs/prefix command [arguments]"
msgstr ""

#: tdmc_tar:202
msgid "    list    archivename"
msgstr ""

#: tdmc_tar:203
msgid "    copyout archivename storedfilename extractto"
msgstr ""

#: tdmc_tar:204
msgid "    copyin  archivename storedfilename sourcefile"
msgstr ""

#: tdmc_tar:205
msgid "    rm      archivename storedfilename"
msgstr ""

#: tdmc_tar:206
msgid "    mkdir   archivename dirname"
msgstr ""

#: tdmc_tar:207
msgid "    rmdir   archivename dirname"
msgstr ""

#: tdmc_tar:208
msgid "    run     ???"
msgstr ""
-------------- next part --------------
# Translation of the VFS (tar)
# Copyright (C) 2008 Michelle Konzack <linux4michelle at tamay-dogan.net>
# This file is distributed under the same license as the tdmc package.
# Michelle Konzack <linux4michelle at tamay-dogan.net>, 2008.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: tdmc 0.0.2\n"
"Report-Msgid-Bugs-To: Michelle Konzack <linux4michelle at tamay-dogan.net>\n"
"POT-Creation-Date: 2008-06-10 17:17+0200\n"
"PO-Revision-Date: 2008-06-10 17:17+0200\n"
"Last-Translator: Michelle Konzack <linux4michelle at tamay-dogan.net>\n"
"Language-Team: german <debian-l10n-german at list.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: tdmc_tar:57
msgid "This tool is under GNU GPL version 3.0"
msgstr "Dieses Util ist unter GNU GPL Version 3.0"

#: tdmc_tar:196
msgid "VFS#tar: what is \"run\"?"
msgstr "VFS#tar: Was ist \"run\"?"

#: tdmc_tar:200
#, sh-format
msgid "Usage:  ${libdir}/extfs/prefix command [arguments]"
msgstr "Benutzung: ${libdir}/extfs/prefix befehl [argumente]"

#: tdmc_tar:202
msgid "    list    archivename"
msgstr "    list    archivname"

#: tdmc_tar:203
msgid "    copyout archivename storedfilename extractto"
msgstr "    copyout archivname gespeichertername speichenals"

#: tdmc_tar:204
msgid "    copyin  archivename storedfilename sourcefile"
msgstr "    copyin archivname gespeichertername quelldatei"

#: tdmc_tar:205
msgid "    rm      archivename storedfilename"
msgstr "    rm     archivname gespeichertername"

#: tdmc_tar:206
msgid "    mkdir   archivename dirname"
msgstr "    mkdir  archivname verzeichnisname"

#: tdmc_tar:207
msgid "    rmdir   archivename dirname"
msgstr "    rmdir  archivname verzeichnisname"

#: tdmc_tar:208
msgid "    run     ???"
msgstr "    run     ???"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.pgp
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.midnight-commander.org/pipermail/mc/attachments/20080618/f8a1405e/attachment.pgp>


More information about the mc mailing list