[Pkg-mc-devel] Bug#500693: [VFS] UPDATED: Some errors solved. Now it is realy running fast

Michelle Konzack linux4michelle at tamay-dogan.net
Thu Oct 2 09:01:08 UTC 2008


Merde...

Sorry I have found an error...

Am 2008-09-28 21:25:49, schrieb Michelle Konzack:

>   if [ -f "${HOME}/mc/${EXENAME}" ] ; then
                     ^^
>     TIMEOUT=$(cat ${HOME}/mc/${EXENAME})
                            ^^

Updated file attached...


Greetings, Nice Day and Happy Maintaining/Coding
    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.4

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 [ -f "${HOME}/.mc/${EXENAME}" ] ; then
  TIMEOUT=$(cat ${HOME}/.mc/${EXENAME})
else
  TIMEOUT=120
fi

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

if [ -n "$(echo ",list,copyout,copyin,rm,mkdir,rmdir," |grep ",$1,")" ] ; then
  MD5=`echo "$2" |md5sum |sed 's|\ .*||'`
  ARCHIVENAME=${TDMC_CACHE}/${MD5}_${PPID}
  if [ -n "$(find ${TDMC_CACHE} -maxdepth 1 -mindepth 1 -mmin +${TIMEOUT} -name ${MD5}_${PPID} 2>/dev/null)" ] ; 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 ",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

TIMEOUT=$((TIMEOUT+1))
find ${TDMC_CACHE} -type f -mmin +${TIMEOUT} -exec rm --force {} ';'
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-mc-devel/attachments/20081002/596b7e1a/attachment-0001.pgp 


More information about the Pkg-mc-devel mailing list