#!/bin/sh

  ##########################################################################
  #                                                                        #
  #  Copyright (C) 2002-2003 Luc Cottyn                                    #
  #                          Michael G. Manry <linuxsneaker@users.sf.net>  #
  #                                                                        #
  #  SWARET is free software; you can redistribute it and/or modify        #
  #  it under the terms of the GNU General Public License as published by  #
  #  the Free Software Foundation; either version 2 of the License, or     #
  #  (at your option) any later version.                                   #
  #                                                                        #
  #  SWARET is distributed in the hope that it will be useful,             #
  #  but WITHOUT ANY WARRANTY; without even the implied warranty of        #
  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #
  #  GNU General Public License for more details.                          #
  #                                                                        #
  #  You should have received a copy of the GNU General Public License     #
  #  along with this program; if not, write to the Free Software           #
  #  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.             #
  #                                                                        #
  ##########################################################################

SVERSION="1.6.3-2"
SSVERSION="1.6.3"
SWARET="swaret $SVERSION"
EMAIL="info@swaret.sourceforge.net"
WWW="swaret.sourceforge.net"
USERPWD="$PWD"
# These are the current possible package extensions
PKG_EXTS="tbz|tgz|tlz|txz"
# Wildcard for the current possible package extensions
PKG_EXTS_WCARD="*.t[bglx]z"
export SVERSION SWARET EMAIL WWW USERPWD

HEADER()
{
  echo "$SWARET"
  if [[ "$1" != "--version" ]]; then
    echo
  fi
}

rivar()
{
  eval "$1=''"
  eval `grep "^$1=" /usr/share/swaret-$SSVERSION/swaret.lang.$LANGUAGE 2>/dev/null`
}

init_env_vars()
{
  if [ -z "$PAGER" ]; then
    export PAGER="more"
  fi
}

initialize()
{
  youneedshort()
  {
    MSG_NSHORT=`echo "$MSG_NSHORT" | sed s/'%X'/''${1}''/\g | sed s/'%Y'/''${2}''/\g`
    printf "$MSG_NSHORT"
    exit 10
  }

  youneedlong()
  {
    MSG_NLONG=`echo "$MSG_NLONG" | sed s/'%X'/''${1}''/\g | sed s/'%Y'/''${2}''/\g | sed s/'%Z'/''${3}''/\g`
    printf "$MSG_NLONG"
    exit 10
  }

  if [ ! -f /etc/swaret.conf ]; then
    printf "$MSG_CONF_NFOUND"
    exit 10
  fi
  if [ ! "`id -u`" = "0" ]; then
    echo "$MSG_ROOT $SVERSION"
    exit
  fi
  if test `ls /var/log/packages/*-*-*-* 2>/dev/null | wc -l` -eq 0; then
    echo "$MSG_NOTSW"
    echo "$MSG_CONFAQ"
    exit
  fi
  if test `which upgradepkg 2>/dev/null | wc -l` -eq 0; then
    youneedshort "pkgtools" "a"
  fi
  if test `which bash 2>/dev/null | wc -l` -eq 0; then
    youneedshort "bash" "a"
  fi
  if test `which gawk 2>/dev/null | wc -l` -eq 0; then
    youneedshort "gawk" "a"
  fi
  if test `which sed 2>/dev/null | wc -l` -eq 0; then
    youneedshort "sed" "a"
  fi
  if test `which grep 2>/dev/null | wc -l` -eq 0; then
    youneedshort "grep" "a"
  fi
  if test `which pgrep 2>/dev/null | wc -l` -eq 0; then
    youneedlong "pgrep" "procps" "a"
  fi
  if test `which cut 2>/dev/null | wc -l` -eq 0; then
    youneedlong "cut" "coreutils $MSG_OR fileutils $MSG_OR textutils" "a"
  fi
  if test `which cat 2>/dev/null | wc -l` -eq 0; then
    youneedlong "cat" "coreutils $MSG_OR fileutils $MSG_OR textutils" "a"
  fi
  if test `which sort 2>/dev/null | wc -l` -eq 0; then
    youneedlong "sort" "coreutils $MSG_OR fileutils $MSG_OR textutils" "a"
  fi
  if test `which md5sum 2>/dev/null | wc -l` -eq 0; then
    youneedlong "md5sum" "coreutils $MSG_OR fileutils $MSG_OR textutils" "a"
  fi
  if test `which more 2>/dev/null | wc -l` -eq 0; then
    youneedlong "more" "util-linux" "a"
  fi
  if test `which gzip 2>/dev/null | wc -l` -eq 0; then
    youneedshort "gzip" "a"
  fi
  if test `which bzip2 2>/dev/null | wc -l` -eq 0; then
    youneedshort "bzip2" "a"
  fi
  if test `which bc 2>/dev/null | wc -l` -eq 0; then
    youneedshort "bc" "ap"
  fi
  if test `which ldd 2>/dev/null | wc -l` -eq 0; then
    youneedlong "ldd" "glibc" "l"
  fi
  
}

help()
{
echo "  $MSG_USAGE: swaret --$MSG_ACTION [$MSG_KEYWORD] [$MSG_OPTION]

  --update
  --upgrade [$MSG_KEYWORD]     [-a]
  --install [$MSG_KEYWORD]     [-a|-p|-ap]
  --reinstall [$MSG_KEYWORD]   [-a|-p|-ap]
  --remove $MSG_KEYWORD        [-a]
  --get [$MSG_KEYWORD]         [-a|-p|-ap|-s|-as|-u|-au]
  --compile $MSG_KEYWORD
  --dep [$MSG_KEYWORD]         [-a]
  --resume                [-p|-s]
  --list                  [-p|-s|-i|-u|-n|-np]
  --search $MSG_KEYWORD        [-p|-s|-i|-u|-n|-np]
  --show [$MSG_KEYWORD]        [-p|-i]
  --changelog
  --set $MSG_KEYWORD
  --extra
  --rollback NUMBER
  --gpg                   [-i]
  --log                   [-t|-c]
  --purge                 [-s|-d #|-ds #|-w #|-ws #|-v]
  --config
  --faq [$MSG_KEYWORD]
  --htus [$MSG_KEYWORD]
  --manual                [-c]
  --help
  --morehelp
  --version

$MSG_EMAIL: $EMAIL  -  $MSG_WWW: $WWW"
}

config()
{
  if [ ! -f /usr/doc/swaret-$SSVERSION/swaret.conf ]; then
    echo "$MSG_SWARET_CONF_NF"
    exit
  else
    $PAGER /usr/doc/swaret-$SSVERSION/swaret.conf
  fi
}

faq()
{
  if [ ! -f /usr/doc/swaret-$SSVERSION/FAQ ]; then
    echo "$MSG_SWARET_FAQ_NF"
    exit
  else
    if [ -z $1 ]; then
      cat /usr/doc/swaret-$SSVERSION/FAQ | grep -v "%%%" | $PAGER
    else
      if test `cat -n /usr/doc/swaret-$SSVERSION/FAQ | grep -wa "Q:" | awk '{if(NR==1)print$1}' | wc -l` -ge 1; then
        rm -f /tmp/FAQ.tmp 2>/dev/null
        for i in `cat -n /usr/doc/swaret-$SSVERSION/FAQ | grep -wa "Q:" | awk '{print$1}'`; do
          if test `sed -n "$i,/^%%%/p" /usr/doc/swaret-$SSVERSION/FAQ | grep -i -E -e "$1" | wc -l` -ge 1; then
            sed -n "$i,/^%%%/p" /usr/doc/swaret-$SSVERSION/FAQ | grep -v "%%%" >> /tmp/FAQ.tmp 2>/dev/null
          fi
        done
        if [ ! -f /tmp/FAQ.tmp ]; then
          echo "$MSG_NOTHING_FOUND $1!"
        else
          $PAGER /tmp/FAQ.tmp
        fi
      else
        echo "$MSG_NOTHING_FOUND $1!"
        exit
      fi
    fi
  fi
}

htus()
{
  if [ -f /usr/doc/swaret-$SSVERSION/HOW-TO-USE-SWARET/htus.$LANGUAGE ]; then
    cp /usr/doc/swaret-$SSVERSION/HOW-TO-USE-SWARET/htus.$LANGUAGE /var/swaret/.tmp/htus
  else
    if [ -f /usr/doc/swaret-$SSVERSION/HOW-TO-USE-SWARET/htus.ENGLISH ]; then
      cp /usr/doc/swaret-$SSVERSION/HOW-TO-USE-SWARET/htus.ENGLISH /var/swaret/.tmp/htus
    else
      echo "$MSG_SWARET_HTUS_NF"
      exit 1
    fi
  fi
  if [ -z $1 ]; then
    cat /var/swaret/.tmp/htus | grep -v "%%%" | $PAGER
  else
    if test `cat -n /var/swaret/.tmp/htus | grep -wa "<>" | awk '{if(NR==1)print$1}' | wc -l` -ge 1; then
      rm -f /tmp/HOW-TO-USE-SWARET.tmp 2>/dev/null
      for i in `cat -n /var/swaret/.tmp/htus | grep -wa "<>" | awk '{print$1}'`; do
        if test `sed -n "$i,/^%%%/p" /var/swaret/.tmp/htus | grep -i -E -e "$1" | wc -l` -ge 1; then
          sed -n "$i,/^%%%/p" /var/swaret/.tmp/htus | grep -v "%%%" >> /tmp/HOW-TO-USE-SWARET.tmp 2>/dev/null
        fi
      done
      if [ ! -f /tmp/HOW-TO-USE-SWARET.tmp ]; then
        echo "$MSG_NOTHING_FOUND $1!"
      else
        $PAGER /tmp/HOW-TO-USE-SWARET.tmp
      fi
    else
      echo "$MSG_NOTHING_FOUND $1!"
      exit
    fi
  fi

}

morehelp()
{
  if [ ! -f /usr/doc/swaret-$SSVERSION/HELP ]; then
    echo "$MSG_SWARET_HELP_NF"
    exit
  else
    $PAGER /usr/doc/swaret-$SSVERSION/HELP
  fi
}

cleanup_quick()
{
  if [ -f .cache/.slock ]; then
    LIST=`ls 2>/dev/null | grep -v -E "($PKG_EXTS|gz|bz2)$"`
    rm -f `echo $LIST` 2>/dev/null
    LIST=`ls repos/*/* 2>/dev/null | grep -v -E "CHECKSUMS.md5|FILELIST.TXT|PACKAGES.TXT|MANIFEST.bz2$" | grep -v -E "($PKG_EXTS)$"`
    rm -f `echo $LIST` 2>/dev/null
    rm -f .* 2>/dev/null
    rm -f .tmp/* 2>/dev/null
    rm -f .cache/buildscripts 2> /dev/null
    rm -f $PACKAGES_LOGDIR/*:* 2>/dev/null
  fi
}

cleanupp()
{
  if [ -f .cache/.slock ]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      if test `ls 2>/dev/null | grep -E "($PKG_EXTS|gz|bz2)" | wc -l` -ge 1; then
        rm -f * 2>/dev/null
        MSG "--purge" "$MSG_PURGING_PACCDIR $CDIR... $MSG_DONE!"
      fi
    fi
  fi
}

cleanupr()
{
  if [ -f .cache/.slock ]; then
    for r in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'=' | cut -f1 -d%`; do
      if test `ls repos/$r/$PKG_EXTS_WCARD 2>/dev/null | grep -E "($PKG_EXTS)$" | wc -l` -ge 1; then
        rm -f repos/$r/$PKG_EXTS_WCARD 2>/dev/null
        MSG "--purge" "$MSG_PURGING_RPACCDIR $CDIR/repos/$r... $MSG_DONE!"
      fi
    done
  fi
}

cleanups()
{
  if [ -f .cache/.slock ]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      if test `ls sources/* 2>/dev/null | wc -l` -ge 1; then
        rm -f sources/* 2>/dev/null
        MSG "--purge" "$MSG_PURGING_SRCCDIR $CDIR/sources... $MSG_DONE!"
      fi
    fi
  fi
}

MSG()
{
  echo "$2"
  logme "$1" "$2"
}

MSGERR()
{
  echo "$2"
  logme "$1" "$2"
  cleanup_quick
  exit 1
}

MSGp()
{
  printf "$2"
  logme "$1" "$2"
}

MSGERRp()
{
  printf "$2"
  logme "$1" "$2"
  cleanup_quick
  exit
}

check_wget()
{
  if test `which wget 2>/dev/null | wc -l` -eq 0; then
    MSG_NSHORT=`echo "$MSG_NSHORT" | sed s/'%X'/wget/\g | sed s/'%Y'/n/\g`
    MSGERRp "check_wget()" "$MSG_NSHORT" 
  fi
}

check_rsync()
{
  if test `which rsync 2>/dev/null | wc -l` -eq 0; then
    MSG_NSHORT=`echo "$MSG_NSHORT" | sed s/'%X'/rsync/\g | sed s/'%Y'/n/\g`
    MSGERRp "check_rsync()" "$MSG_NSHORT"
  fi
}

check_find()
{
  if test `which find 2>/dev/null | wc -l` -eq 0; then
    MSG_NSHORT=`echo "$MSG_NSHORT" | sed s/'%X'/find/\g | sed s/'%Y'/a/\g`
    MSGERRp "check_find()" "$MSG_NSHORT"
  fi
}

check_slocate()
{
  if test `which slocate 2>/dev/null | wc -l` -eq 0; then
    MSG_NSHORT=`echo "$MSG_NSHORT" | sed s/'%X'/slocate/\g | sed s/'%Y'/a/\g`
    MSGERRp "check_slocate()" "$MSG_NSHORT"
  fi
}

check_gnupg()
{
  if test `which gpg 2>/dev/null | wc -l` -eq 0; then
    MSG_NLONG=`echo "$MSG_NLONG" | sed s/'%X'/gpg/\g | sed s/'%Y'/gnupg/\g | sed s/'%Z'/n/\g`
    MSGERRp "check_gnupg()" "$MSG_NLONG"
  fi
  GNUPGHOME=/root/.gnupg
}

log()
{
  if [[ "$LOG" == "1" ]]; then
    if test `cat $LF 2>/dev/null | wc -l` -eq 0; then
      echo
      MSGERR "log()" "$MSG_LOGF1"
    else
      if [[ "$1" == "-c" ]]; then
        echo > $LF 2>/dev/null
        echo
        MSGERR "log()" "$MSG_LOGF2"
      else
        if [[ "$1" == "-t" ]]; then
          echo
          tail -n15 -f $LF 2>/dev/null
          echo
          exit
        else
          echo
          cat $LF 2>/dev/null | $PAGER 
          echo
          exit
        fi
      fi
    fi
  else
    MSGERR "log()" "$MSG_LOGF3"
  fi
}

progress()
{
  check_procs()
  {
    PROCS=`ps auxw | grep -E "wget|rsync" | grep "$1" | grep -v grep | awk '{print$2}'`
    for z in $PROCS; do 
      cmdlineTMP=`cat /proc/$z/cmdline 2>/dev/null | grep "$1" | wc -l`
      if [ -z $cmdlineTMP ]; then cmdlineTMP=0; fi
      if test $cmdlineTMP -ge 1; then SECRET=1; fi
    done
    if test $SECRET -eq 0; then
      SIZE=`ls -alL .$1* 2>/dev/null | awk '{print$5}'`
      if [ -z $SIZE ]; then
        SIZE=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      fi
      if [ -z $SIZE ]; then
        i=0
      else
        touch $1.tmp 2>/dev/null
        i=0
      fi
    fi
    SECRET=0
  }
  x=0
  i=1
  SIZECHECK=0
  SECRET=0
  printf " "
  while test $i -ne 0; do 
    if test $x -eq 0; then
      printf "\b\\"
    fi
    if test $x -eq 1; then
      printf "\b|"
    fi
    if test $x -eq 2; then
      printf "\b/"
    fi
    if test $x -eq 3; then
      printf "\b-"
    fi
    sleep 1
    check_procs $1
    x=`expr $x + 1`
    if test $x -eq 4; then
      x=0
    fi
  done
  printf "\b"
  printf " "
  printf "\b"
}

size_total()
{
  if [ -z "$SIZE_TOTAL" ]; then SIZE_TOTAL=0; fi
  SIZE_TOTAL=`echo "$SIZE_TOTAL + $1" | bc`
}

count_size_total()
{
  if [ -z "$COUNT_SIZE_TOTAL" ]; then COUNT_SIZE_TOTAL=0; fi
  COUNT_SIZE_TOTAL=`echo "$COUNT_SIZE_TOTAL + $1" | bc`
}

rsize_total()
{
  SIZE_TOTAL=`echo "$SIZE_TOTAL - $1" | bc`
}

count_size()
{
  rm -f $1.tmp 2>/dev/null
  rm -f $1.pmt 2>/dev/null
  COUNT=0
  SIZE=0
  TOTAL=0
  CHECK=0
  SWAPME=0
  SECRET=0
  SIZECHECK=0
  PROCS=0
  if [[ "$3" == "-p" || "$3" == "-ap" ]]; then
    SIZE=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
    SWAPME=1
  fi
  if [[ "$3" == "-s" || "$3" == "-as" ]]; then
    SIZE=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
    SWAPME=1
  fi
  if test $SWAPME -eq 0; then
    if [ -z $4 ]; then
      eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
      SIZE=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
    else
      SIZE=`grep "$1$" repos/$4/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
    fi
  fi
  if [ -z "$SIZE" ]; then SIZE=0; fi
  if [[ "$SIZE_TOTAL" == "0" ]]; then
    size_total "$SIZE"
  fi

  if ! check_hd_space $SIZE_TOTAL; then
    exit 1
  fi

  OLDSIZE=0
  NEWSIZE=0
  DIFFKB=0
  if [ -f $1 ]; then
    ECOUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
  else
    ECOUNT=0
  fi
  printf "\n"
  COUNTSWAP=0
  while test $COUNT -ne $SIZE; do
    if [ -f $1.tmp ]; then
      break
    fi
    if [[ "$PROGRESS" == "1" ]]; then
      COUNTKB=`echo "$COUNT / 1024" | bc`
      SIZEKB=`echo "$SIZE / 1024" | bc`
      OLDSIZE=$COUNTKB
    fi
    sleep 1
    PROCS=`ps auxw | grep -E "wget|rsync" | grep "$1" | grep -v grep | awk '{print$2}'`
    for z in $PROCS; do
      if test `cat /proc/$z/cmdline 2>/dev/null | grep -c "$1"` -ge 1; then
        SECRET=1
      fi
    done
    if test $SECRET -eq 0; then
      COUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      if [ -z $COUNT ]; then
        COUNT=0
      fi
      if [ -z $PLUSCOUNTSIZETOTALTMP ]; then
        PLUSCOUNTSIZETOTALTMP=0
      fi
      PLUSCOUNTSIZETOTALTMP=`echo "($COUNT + $SIZE) - ($SIZE + $ECOUNT) + $COUNT_SIZE_TOTAL" | bc`
      PLUSCOUNTSIZETOTAL=`echo "$PLUSCOUNTSIZETOTALTMP * 100 / $SIZE_TOTAL" | bc`
      SIZECHECK=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      if [ -z "$SIZECHECK" ]; then
        SIZECHECK=0
      fi
      if test $SIZE -ne $SIZECHECK; then
        if [[ "$PROGRESS" == "1" ]]; then
          if [ -z $PLUSCOUNTSIZETOTALTMP ];then
            CSTKB=0
          else
            CSTKB=`echo "$PLUSCOUNTSIZETOTALTMP / 1024" | bc`
          fi
          if [ -z $SIZE_TOTAL ]; then
            STKB=0
          else
            STKB=`echo "$SIZE_TOTAL / 1024" | bc`
          fi
          s=""
          sc=""
          if test $COUNTSWAP -eq 1; then
            for((START=$y;START>0;START--)); do 
              s="$s""\b"
              sc="$sc"" "
            done
            printf "$s"
            printf "$sc"
            printf "$s"
          fi
          COUNTSWAP=1
          [[ "$SIZEKB" < "0" ]] && SIZEKB="$MSG_UNKNOWN"
          [[ "$CSTKB" < "0" ]] && CSTKB="$MSG_UNKNOWN"
          [[ "$STKB" < "0" ]] && STKB="$MSG_UNKNOWN"
          echo -n "--- 0 $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ 0 $MSG_KILOBYTES/$MSG_SECONDS"
          yTMP=`echo "--- 0 $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ 0 $MSG_KILOBYTES/$MSG_SECONDS" | wc -c`
          y=`echo "$yTMP - 1" | bc`
          touch $1.pmt 2>/dev/null
          COUNT=$SIZE
        else
          s=""
          sc=""
          if test $COUNTSWAP -eq 1; then
            for((START=$y;START>0;START--)); do 
              s="$s""\b"
              sc="$sc"" "
            done
            printf "$s"
            printf "$sc"
            printf "$s"
          fi
          COUNTSWAP=1
          echo -n "--- [                    ] 0%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]"
          yTMP=`echo "--- [                    ] 0%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]" | wc -c`
          y=`echo "$yTMP - 1" | bc`
          touch $1.pmt 2>/dev/null
          COUNT=$SIZE
        fi
      fi
    fi
    if [ ! -f $1.pmt ]; then
      CHECKIT=`ls -alL .$1* 2>/dev/null | awk '{print$5}' | wc -c`
      if test $CHECKIT -eq 0; then
        CHECKIT=`ls -alL $1 2>/dev/null | wc -l`
      fi
      if test $CHECKIT -ne 0; then
        COUNT=`ls -alL .$1* 2>/dev/null | awk '{print$5}'`
        if [ -z "$COUNT" ]; then
          COUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
        fi
        if [ -z $COUNT ]; then
          COUNT=0
        fi
        if [ -z $PLUSCOUNTSIZETOTALTMP ]; then
          PLUSCOUNTSIZETOTALTMP=0
        fi
        PLUSCOUNTSIZETOTALTMP=`echo "($COUNT + $SIZE) - ($SIZE + $ECOUNT) + $COUNT_SIZE_TOTAL" | bc`
        PLUSCOUNTSIZETOTAL=`echo "$PLUSCOUNTSIZETOTALTMP * 100 / $SIZE_TOTAL" | bc`
        if [[ "$PROGRESS" == "1" ]]; then
          if [ -z $PLUSCOUNTSIZETOTALTMP ];then
            CSTKB=0
          else
            CSTKB=`echo "$PLUSCOUNTSIZETOTALTMP / 1024" | bc`
          fi
          if [ -z $SIZE_TOTAL ]; then
            STKB=0
          else
            STKB=`echo "$SIZE_TOTAL / 1024" | bc`
          fi
          COUNTKB=`echo "$COUNT / 1024" | bc`
          NEWSIZE=$COUNTKB
          if [ ! -z $OLDSIZE ] && [ ! -z $NEWSIZE ]; then
            if test $OLDSIZE -lt $NEWSIZE; then
              if test $OLDSIZE -ne 0; then
                DIFFKB=`echo "$NEWSIZE - $OLDSIZE" | bc`
              fi
            fi
          fi
          s=""
          sc=""
          if test $COUNTSWAP -eq 1; then
            for((START=$y;START>0;START--)); do 
              s="$s""\b"
              sc="$sc"" "
            done
            printf "$s"
            printf "$sc"
            printf "$s"
          fi
          COUNTSWAP=1
          [[ "$COUNTKB" < "0" ]] && COUNTKB="$MSG_UNKNOWN"
          [[ "$SIZEKB" < "0" ]] && SIZEKB="$MSG_UNKNOWN"
          [[ "$CSTKB" < "0" ]] && CSTKB="$MSG_UNKNOWN"
          [[ "$STKB" < "0" ]] && STKB="$MSG_UNKNOWN"
          echo -n "--- $COUNTKB $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ $DIFFKB $MSG_KILOBYTES/$MSG_SECONDS"
          yTMP=`echo "--- $COUNTKB $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ $DIFFKB $MSG_KILOBYTES/$MSG_SECONDS" | wc -c`
          y=`echo "$yTMP - 1" | bc`
          if [[ "$COUNT" == "$SIZE" ]]; then
            COUNT=$SIZE
            touch $1.tmp 2>/dev/null
          fi
        else
          TOTAL=`echo "$COUNT * 100 / $SIZE" | bc`
          POSITION=`echo "$TOTAL / 5" | bc`
          s=""
          sc=""
          if test $COUNTSWAP -eq 1; then
            for((START=$y;START>0;START--)); do 
              s="$s""\b"
              sc="$sc"" "
            done
            printf "$s"
            printf "$sc"
            printf "$s"
          fi
          COUNTSWAP=1
          echo -n "--- ["
          case $POSITION in
            "0")
              echo -n "                    "
              ;;
            "1")
              echo -n "*                   "
              ;;
            "2")
              echo -n "**                  "
              ;;
            "3")
              echo -n "***                 "
              ;;
            "4")
              echo -n "****                "
              ;;
            "5")
              echo -n "*****               "
              ;;
            "6")
              echo -n "******              "
              ;;
            "7")
              echo -n "*******             "
              ;;
            "8")
              echo -n "********            "
              ;;
            "9")
              echo -n "*********           "
              ;;
            "10")
              echo -n "**********          "
              ;;
            "11")
              echo -n "***********         "
              ;;
            "12")
              echo -n "************        "
              ;;
            "13")
              echo -n "*************       "
              ;;
            "14")
              echo -n "**************      "
              ;;
            "15")
              echo -n "***************     "
              ;;
            "16")
              echo -n "****************    "
              ;;
            "17")
              echo -n "*****************   "
              ;;
            "18")
              echo -n "******************  "
              ;;
            "19")
              echo -n "******************* "
              ;;
            "20")
              echo -n "********************"
            ;;
          esac
          echo -n "] $TOTAL%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]"
          yTMP=`echo "--- [********************] $TOTAL%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]" | wc -c`
          y=`echo "$yTMP - 1" | bc`
          if [[ "$COUNT" == "$SIZE" ]]; then
            COUNT=$SIZE
            touch $1.tmp 2>/dev/null
          fi
        fi
      fi
    fi
    SECRET=0
  done
}

wget_file()
{
  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q -c "$1/$2" 2>/dev/null &
}

wget_file_s()
{
  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q -c "$1/$2"
}

wget_file_gpg()
{
  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q -c "$1/$2" 2>/dev/null
}

wget_file_buildscript()
{
  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q -c "$1/$2" 2>/dev/null
}

rsync_file()
{
  PKGNAME=`echo $2 | sed -e "s/.*\///g"`
  if [ -f $PKGNAME ]; then
    EX="--existing"
  else
    EX=""
  fi
  rsync --timeout=$TIMEOUT $Q $EX --partial "$1/$2" . 2>/dev/null &
}

rsync_file_s()
{
  PKGNAME=`echo $2 | sed -e "s/.*\///g"`
  if [ -f $PKGNAME ]; then
    EX="--existing"
  else
    EX=""
  fi
  rsync --timeout=$TIMEOUT --progress -vv $Q $EX --partial "$1/$2" .
}

rsync_file_gpg()
{
  PKGNAME=`echo $2 | sed -e "s/.*\///g"`
  if [ -f $PKGNAME ]; then
    EX="--existing"
  else
    EX=""
  fi
  rsync --timeout=$TIMEOUT $Q $EX --partial "$1/$2" . 2>/dev/null
}

rsync_file_buildscript()
{
  PKGNAME=`echo $2 | sed -e "s/.*\///g"`
  if [ -f $PKGNAME ]; then
    EX="--existing"
  else
    EX=""
  fi
  rsync --timeout=$TIMEOUT $Q $EX --partial "$1/$2" . 2>/dev/null
}

copy_file()
{
  cp "$1/$2" . 2>/dev/null
}

touch_it()
{
  if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
  if test `ls -alL $1 2>/dev/null | wc -l` -eq 1; then
    if test `ls -alL $1 2>/dev/null | awk '{print$5}'` -eq $SIZEFILETMP; then
      touch $1.tmp 2>/dev/null
    else
      rm -f $1.tmp 2>/dev/null
    fi
  else
    rm -f $1.tmp 2>/dev/null
  fi
}

show_pw()
{
  s=""
  sc=""
  yTMP=`echo "$MSG_PLEASE_WAIT" | wc -c`
  y=`echo "$yTMP - 1 + 3" | bc`
  for((START=$y;START>0;START--)); do 
    s="$s""\b"
    sc="$sc"" "
  done
  printf "$s"
  printf "$sc"
  printf "$s"
}

checksum()
{
  if [[ "$MD5CHECK" == "1" ]]; then
    if [ ! -f $1.md5.lock ]; then
      SHORT=`echo $2 | sed -e "s/.*\///g"`
      SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
      if test $3 -eq 1; then
        if [ -z $4 ]; then
          eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
          CHKSM_FILE=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/CHECKSUMS.md5 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
        else
          CHKSM_FILE=`grep "$1$" repos/$4/CHECKSUMS.md5 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
        fi
      fi
      if test $3 -eq 2; then
        CHKSM_FILE=`grep "./patches.*$1$" .cache/CHECKSUMS.md5 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
      fi
      if test $3 -eq 3; then
        CHKSM_FILE=`grep "./source.*$1$" .cache/CHECKSUMS.md5 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
      fi
      if [ -z $CHKSM_FILE ]; then
        if test $3 -eq 1; then
          rivar "MSG_MD5_PAC_NF"
          MSG_MD5_PAC_NF=`echo "$MSG_MD5_PAC_NF" | sed s/'%X'/''${SHORT}''/\g`
          MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAC_NF"
        fi
        if test $3 -eq 2; then
          rivar "MSG_MD5_PAT_NF"
          MSG_MD5_PAT_NF=`echo "$MSG_MD5_PAT_NF" | sed s/'%X'/''${SHORT}''/\g`
          MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAT_NF"
        fi
        if test $3 -eq 3; then
          rivar "MSG_MD5_SRC_NF"
          MSG_MD5_SRC_NF=`echo "$MSG_MD5_SRC_NF" | sed s/'%X'/''${SHORT}''/\g`
          MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_SRC_NF"
        fi
        touch $1.md5.lock 2>/dev/null
        rm -f $1.corrupted 2>/dev/null
      fi
      CHK_CHKSM_FILE=`md5sum $1 2>/dev/null | awk '{if(NR==1)print$1}'`
      if [ ! -f $1.md5.lock ]; then
        if [[ "$CHKSM_FILE" != "$CHK_CHKSM_FILE" ]]; then
          if test $3 -eq 1; then
            rivar "MSG_MD5_PAC_CORR"
            MSG_MD5_PAC_CORR=`echo "$MSG_MD5_PAC_CORR" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAC_CORR"
          fi
          if test $3 -eq 2; then
            rivar "MSG_MD5_PAT_CORR"
            MSG_MD5_PAT_CORR=`echo "$MSG_MD5_PAT_CORR" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAT_CORR"
          fi
          if test $3 -eq 3; then
            rivar "MSG_MD5_SRC_CORR"
            MSG_MD5_SRC_CORR=`echo "$MSG_MD5_SRC_CORR" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_SRC_CORR"
          fi
          touch $1.md5.lock 2>/dev/null
          touch $1.corrupted 2>/dev/null
          rm -f $1* 2>/dev/null
        else
          if test $3 -eq 1; then
            rivar "MSG_MD5_PAC_OK"
            MSG_MD5_PAC_OK=`echo "$MSG_MD5_PAC_OK" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAC_OK"
          fi
          if test $3 -eq 2; then
            rivar "MSG_MD5_PAT_OK"
            MSG_MD5_PAT_OK=`echo "$MSG_MD5_PAT_OK" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_PAT_OK"
          fi
          if test $3 -eq 3; then
            rivar "MSG_MD5_SRC_OK"
            MSG_MD5_SRC_OK=`echo "$MSG_MD5_SRC_OK" | sed s/'%X'/''${SHORT}''/\g`
            MSG "checksum()" "=> <MD5CHECK> $MSG_MD5_SRC_OK"
          fi
          touch $1.md5.lock 2>/dev/null
          rm -f $1.corrupted 2>/dev/null
        fi
      fi
    fi
  fi
}

rfile()
{
  if [ -z $4 ]; then
    rm -f rfile.lock 2>/dev/null
    RESWAP=0
    if [ -f $1 ]; then
      RECOUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      if [[ "$5" != "1" ]]; then
        count_size_total "$RECOUNT"
      else
        checkcom "$1" "$2"
        if [ -f $1.incomplete ]; then
          count_size_total "$RECOUNT"
        fi
      fi
    fi
    if [[ "$RANDOMR" == "1" ]]; then
      RFILEROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
    else
      RFILEROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
    fi
    for RFILER in $RFILEROOTS; do
      if [ ! -f rfile.lock ]; then
        rm -f $1.tmp 2>/dev/null
        if test `echo $RFILER | grep -c "file:"` -ge 1; then
          rTMP=`echo $RFILER | sed s/'file:'//`
        fi
        SHORT=`echo $1 | sed -e "s/.*\///g"`
        SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
        COUNT=0
        CHECKME=0
        COUNT=`ls *.*z* 2>/dev/null | wc -l | awk '{if(NR==1)print$1}'`
        if [ ! -z $RFILER ]; then
          if test $COUNT -ge 1; then
            CHECK2=`ls -alL $1 2>/dev/null | awk '{print$5}'`
            if test $3 -eq 1; then
              eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
              CHECK1=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
              CHECKCOUNT=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep -c "$2"`
            fi
            if test $3 -eq 2; then
              CHECK1=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
              CHECKCOUNT=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep -c "$2"`
            fi
            if test $3 -eq 3; then
              CHECK1=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
              CHECKCOUNT=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -c "$2"`
            fi
            if test $CHECKCOUNT -ne 0; then
              if [ -z "$CHECK1" ]; then CHECK1=0; fi
              if [ -z "$CHECK2" ]; then CHECK2=0; fi
              if test $CHECK1 -ne $CHECK2; then
                if [[ "$5" == "1" ]]; then
                  if [[ "$SWAPME" == "0" ]]; then
                    s=""
                    sc=""
                    yTMP=`echo "$MSG_PLEASE_WAIT" | wc -c`
                    y=`echo "$yTMP - 1 + 3" | bc`
                    for((START=$y;START>0;START--)); do
                      s="$s""\b"
                      sc="$sc"" "
                    done
                    printf "$s"
                    printf "$sc"
                    printf "$s"
                    SWAPME=1
                  fi
                fi
                if test $3 -eq 1; then
                  eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
                  SIZEFILETMP=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
                fi
                if test $3 -eq 2; then
                  SIZEFILETMP=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
                fi
                if test $3 -eq 3; then
                  SIZEFILETMP=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
                fi
                if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
                SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
                export ACHK=1
                MSG "rfile()" "[ $RFILER ]"
                if [ -z $Q ]; then
                  if test `echo "$RFILER" | grep -c "file:"` -ge 1; then
                    QS="-n"
                  else
                    QS=""
                  fi
                fi
                if test $3 -eq 1; then
                  rivar "MSG_RESUMING_PAC"
                  MSG_RESUMING_PAC=`echo "$MSG_RESUMING_PAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                  echo $QS "### $MSG_RESUMING_PAC "
                fi
                if test $3 -eq 2; then
                  rivar "MSG_RESUMING_PAT"
                  MSG_RESUMING_PAT=`echo "$MSG_RESUMING_PAT" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                  echo $QS "### $MSG_RESUMING_PAT "
                fi
                if test $3 -eq 3; then
                  rivar "MSG_RESUMING_SRC"
                  MSG_RESUMING_SRC=`echo "$MSG_RESUMING_SRC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                  echo $QS "### $MSG_RESUMING_SRC "
                fi
                if test `echo $RFILER | grep -c "rsync:"` -ge 1; then
                  if [ ! -z $Q ]; then
                    rsync_file "$RFILER" "$2"
                    if test $3 -eq 1; then
                      count_size "$1" "$2" ""
                    fi
                    if test $3 -eq 2; then
                      count_size "$1" "$2" "-p"
                    fi
                    if test $3 -eq 3; then
                      count_size "$1" "$2" "-s"
                    fi
                  else
                    rsync_file_s "$RFILE" "$2"
                    touch_it "$1"
                  fi
                else
                  if test `echo $RFILER | grep -c "file:"` -ge 1; then
                    if [ -f $RFILER/$2 ]; then
                      copy_file "$RFILER" "$2"
                      touch_it "$1"
                    fi
                  else
                    if [ ! -z $Q ]; then
                      wget_file "$RFILER" "$2"
                      if test $3 -eq 1; then
                        count_size "$1" "$2" ""
                      fi
                      if test $3 -eq 2; then
                        count_size "$1" "$2" "-p"
                      fi
                      if test $3 -eq 3; then
                        count_size "$1" "$2" "-s"
                      fi
                    else
                      wget_file_s "$RFILER" "$2"
                      touch_it "$1"
                    fi
                  fi
                fi
                if test $RESWAP -eq 0; then
                  RECOUNTNEW=`ls -alL $1 2>/dev/null | awk '{print$5}'`
                  RECOUNTDIFF=`echo "$RECOUNTNEW - $RECOUNT" | bc`
                  RECOUNT="$RECOUNTNEW"
                  count_size_total "$RECOUNTDIFF"
                else
                  RESWAP=1
                fi
                if [ -f $1.tmp ]; then
                  if test $3 -eq 1; then
                    eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
                    CHECK1=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
                  fi
                  if test $3 -eq 2; then
                    CHECK1=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
                  fi
                  if test $3 -eq 3; then
                    CHECK1=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
                  fi
                  CHECK2=`ls -alL $1 2>/dev/null | awk '{print$5}'`
                  if [ "$CHECK1" == "$CHECK2" ]; then
                    if test `echo $RFILER | grep -c "file:"` -ge 1; then
                      echo "$MSG_DONE!"
                    else
                      if [ ! -z $Q ]; then
                        echo " $MSG_DONE!"
                      fi
                    fi
                    if test $3 -eq 1; then
                      rivar "MSG_RESUMING_PAC"
                      MSG_RESUMING_PAC=`echo "$MSG_RESUMING_PAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_PAC $MSG_DONE!"
                    fi
                    if test $3 -eq 2; then
                      rivar "MSG_RESUMING_PAT"
                      MSG_RESUMING_PAT=`echo "$MSG_RESUMING_PAT" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_PAT $MSG_DONE!"
                    fi
                    if test $3 -eq 3; then
                      rivar "MSG_RESUMING_SRC"
                      MSG_RESUMING_SRC=`echo "$MSG_RESUMING_SRC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_SRC $MSG_DONE!"
                    fi
                    touch $1.tmp 2>/dev/null
                    CHECKME=1
                    touch rfile.lock 2>/dev/null
                    rivar "MSG_XHSAVED"
                    MSG_XHSAVED=`echo "$MSG_XHSAVED" | sed s/'%X'/$SHORT/\g`
                    MSG "rfile()" "=> $MSG_XHSAVED: $CDIR/repos/$4!"
                  else
                    if test `echo $RFILER | grep -c "file:"` -ge 1; then
                      echo "$MSG_FAILED!"
                    else
                      if [ ! -z $Q ]; then
                        echo " $MSG_FAILED!"
                      fi
                    fi
                    if test $3 -eq 1; then
                      rivar "MSG_RESUMING_PAC"
                      MSG_RESUMING_PAC=`echo "$MSG_RESUMING_PAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_PAC $MSG_FAILED!"
                    fi
                    if test $3 -eq 2; then
                      rivar "MSG_RESUMING_PAT"
                      MSG_RESUMING_PAT=`echo "$MSG_RESUMING_PAT" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_PAT $MSG_FAILED!"
                    fi
                    if test $3 -eq 3; then
                      rivar "MSG_RESUMING_SRC"
                      MSG_RESUMING_SRC=`echo "$MSG_RESUMING_SRC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                      logme "rfile()" "### $MSG_RESUMING_SRC $MSG_FAILED!"
                    fi
                    rm -f $1.tmp 2>/dev/null
                  fi
                else
                  if test `echo $RFILER | grep -c "file:"` -ge 1; then
                    echo "$MSG_FAILED!"
                  else
                    if [ ! -z $Q ]; then
                      echo " $MSG_FAILED!"
                    fi
                  fi
                  if test $3 -eq 1; then
                    rivar "MSG_RESUMING_PAC"
                    MSG_RESUMING_PAC=`echo "$MSG_RESUMING_PAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                    logme "rfile()" "### $MSG_RESUMING_PAC $MSG_FAILED!"
                  fi
                  if test $3 -eq 2; then
                    rivar "MSG_RESUMING_PAT"
                    MSG_RESUMING_PAT=`echo "$MSG_RESUMING_PAT" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                    logme "rfile()" "### $MSG_RESUMING_PAT $MSG_FAILED!"
                  fi
                  if test $3 -eq 3; then
                    rivar "MSG_RESUMING_SRC"
                    MSG_RESUMING_SRC=`echo "$MSG_RESUMING_SRC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                    logme "rfile()" "### $MSG_RESUMING_SRC $MSG_FAILED!"
                  fi
                  rm -f $1.tmp 2>/dev/null
                fi
              else
                touch $1.tmp 2>/dev/null
              fi
            fi
          fi
        fi
      fi
      if [[ "$CHECKME" == "1" ]]; then
        CHECK2=`ls -alL $1 2>/dev/null | awk '{print$5}'`
        if test $3 -eq 1; then
          eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
          CHECK1=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
        fi
        if test $3 -eq 2; then
          CHECK1=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
        fi
        if test $3 -eq 3; then
          CHECK1=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
        fi
        if [ "$CHECK1" == "$CHECK2" ]; then
          if test $3 -eq 1; then
            checksum "$1" "$2" 1
            if [ -f $1 ]; then
              gpg_check "$1" "$2" ""
            fi
          fi
          if test $3 -eq 2; then
            checksum "$1" "$2" 2
            if [ -f $1 ]; then
              gpg_check "$1" "$2" "-p"
            fi
          fi
          if test $3 -eq 3; then
            checksum "$1" "$2" 3
            if [ -f $1 ]; then
              mv $1 sources/ 2>/dev/null
            fi
          fi
          touch rfile.lock 2>/dev/null
          break
        fi
      fi
    done
    if [ "$CHECK1" == "$CHECK2" ]; then
      touch $1.tmp 2>/dev/null
      touch rfile.lock 2>/dev/null
    else
      rm -f $1.tmp 2>/dev/null
    fi
  fi
}

update_lists()
{
  if [[ "$RANDOMR" == "1" ]]; then
    ROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
  else
    ROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/ | cut -f2 -d'='`
  fi
  for R in $ROOTS; do
    if [ ! -f URL.lock ]; then
      if test `echo $R | grep -c "file:"` -ge 1; then
        rTMP=`echo $R | sed s/'file:'//`
      fi
      BSWAP=0
      SIZE=0
      COUNTER=0
      if [ ! -z $R ]; then
        CHECKSUMS_URL="$R/CHECKSUMS.md5"
        FILELIST_URL="$R/FILELIST.TXT"
        DESCRIPTIONS_PAC_URL="$R/PACKAGES.TXT"
        DESCRIPTIONS_EXT_URL="$R/extra/PACKAGES.TXT"
        DESCRIPTIONS_PAT_URL="$R/patches/PACKAGES.TXT"
        MSG "update_lists()" "[ $R ]"
        if [ -z $Q ]; then
          if test `echo "$R" | grep -c "file:"` -ge 1; then
            QS="-n"
          else
            QS=""
          fi
        fi
        echo $QS "### $MSG_FETCHING_CLF "
        if test `echo $R | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync --timeout=$TIMEOUT $Q $CHECKSUMS_URL CHECKSUMS.md5 2>/dev/null &
            progress CHECKSUMS.md5
          else
            rsync --progress -vv --timeout=$TIMEOUT $Q $CHECKSUMS_URL CHECKSUMS.md5
          fi
          if [ -f CHECKSUMS.md5 ]; then
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
            logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_DONE!"
          else
            rm -f CHECKSUMS.md5* 2>/dev/null
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
            BSWAP=1
            logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_FAILED!"
          fi
        else
          if test `echo $R | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/CHECKSUMS.md5 ]; then
              cp -f $rTMP/CHECKSUMS.md5 CHECKSUMS.md5 2>/dev/null
            fi
            if [ -f CHECKSUMS.md5 ]; then
              echo "$MSG_DONE!"
              logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_DONE!"
            else
              rm -f CHECKSUMS* 2>/dev/null
              echo "$MSG_FAILED!"
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_FAILED!"
            fi
          else
            if [ ! -z $Q ]; then
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $CHECKSUMS_URL 2>/dev/null &
              progress CHECKSUMS.md5
            else
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $CHECKSUMS_URL
            fi
            if [ -f CHECKSUMS.md5 ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_DONE!"
            else
              rm -f CHECKSUMS* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_CLF $MSG_FAILED!"
            fi
          fi
        fi
        if [ -f CHECKSUMS.md5 ]; then
          if test `cat CHECKSUMS.md5 2>/dev/null | grep -c "./FILELIST.TXT"` -ge 1; then
            if [ -f .cache/.slock.FILELIST.TXT ]; then
              AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep "./FILELIST.TXT" | awk '{if(NR==1)print$1}'`
              CFILELIST=`md5sum .cache/.slock.FILELIST.TXT 2>/dev/null | awk '{print$1}'`
              if [[ "$AFILELIST" == "$CFILELIST" ]]; then
                MSG "update_lists()" "$MSG_FLFUTD"
              else
                rm -f .cache/.slock.FILELIST.TXT 2>/dev/null
                rm -f .cache/FILELIST.TXT 2>/dev/null
              fi
            fi
          else
            rm -f .cache/.slock.FILELIST.TXT 2>/dev/null
            rm -f .cache/FILELIST.TXT 2>/dev/null
          fi
        else
          rm -f .cache/.slock.FILELIST.TXT 2>/dev/null
          rm -f .cache/FILELIST.TXT 2>/dev/null
        fi
        if [ ! -f .cache/.slock.FILELIST.TXT ]; then
          echo $QS "### $MSG_FETCHING_FLF "
          if test `echo $R | grep -c "rsync:"` -ge 1; then
            if [ ! -z $Q ]; then
              rsync --timeout=$TIMEOUT $Q $FILELIST_URL FILELIST.TXT 2>/dev/null &
              progress FILELIST.TXT
            else
              rsync --progress -vv --timeout=$TIMEOUT $Q $FILELIST_URL FILELIST.TXT
            fi
            if [ -f FILELIST.TXT ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_DONE!"
            else
              rm -f FILELIST* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_FAILED!"
            fi
          else
            if test `echo $R | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/FILELIST.TXT ]; then
                cp -f $rTMP/FILELIST.TXT FILELIST.TXT 2>/dev/null
              fi
              if [ -f FILELIST.TXT ]; then
                echo "$MSG_DONE!"
                logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_DONE!"
              else
                rm -f FILELIST* 2>/dev/null
                echo "$MSG_FAILED!"
                BSWAP=1
                logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_FAILED!"
              fi
            else
              if [ ! -z $Q ]; then
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $FILELIST_URL 2>/dev/null &
                progress FILELIST.TXT
              else
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $FILELIST_URL
              fi
              if [ -f FILELIST.TXT ]; then
                if [ ! -z $Q ]; then
                  echo "$MSG_DONE!"
                fi
                logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_DONE!"
              else
                rm -f FILELIST* 2>/dev/null
                if [ ! -z $Q ]; then
                  echo "$MSG_FAILED!"
                fi
                BSWAP=1
                logme "update_lists()" "### $MSG_FETCHING_FLF $MSG_FAILED!"
              fi
            fi
          fi
        fi
        if [ -f CHECKSUMS.md5 ]; then
          if test `cat CHECKSUMS.md5 2>/dev/null | grep -c -w "./PACKAGES.TXT"` -ge 1; then
            if [ -f .cache/.slock.PACKAGES.TXT ]; then
              AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep -w "./PACKAGES.TXT" | awk '{if(NR==1)print$1}'`
              CFILELIST=`md5sum .cache/.slock.PACKAGES.TXT 2>/dev/null | awk '{print$1}'`
              if [[ "$AFILELIST" == "$CFILELIST" ]]; then
                MSG "update_lists()" "$MSG_PACDUTD"
              else
                rm -f .cache/.slock.PACKAGES.TXT 2>/dev/null
                rm -f .cache/PACKAGES.TXT 2>/dev/null
              fi
            fi
          else
            rm -f .cache/.slock.PACKAGES.TXT 2>/dev/null
            rm -f .cache/PACKAGES.TXT 2>/dev/null
          fi
        else
          rm -f .cache/.slock.PACKAGES.TXT 2>/dev/null
          rm -f .cache/PACKAGES.TXT 2>/dev/null
        fi
        if [ ! -f .cache/.slock.PACKAGES.TXT ]; then
          echo $QS "### $MSG_FETCHING_PLFPAC "
          if test `echo $R | grep -c "rsync:"` -ge 1; then
            if [ ! -z $Q ]; then
              rsync --timeout=$TIMEOUT $Q $DESCRIPTIONS_PAC_URL .cache/PACKAGES.TXT 2>/dev/null &
              progress ./cache/PACKAGES.TXT
            else
              rsync --progress -vv --timeout=$TIMEOUT $Q $DESCRIPTIONS_PAC_URL .cache/PACKAGES.TXT
            fi
            if [ -f .cache/PACKAGES.TXT ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_DONE!"
            else
              rm -f PACKAGES* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_FAILED!"
            fi
          else
            if test `echo $R | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/slackware/PACKAGES.TXT ]; then
                cp -f $rTMP/slackware/PACKAGES.TXT .cache/ 2>/dev/null
              fi
              if [ -f .cache/PACKAGES.TXT ]; then
                echo "$MSG_DONE!"
                logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_DONE!"
              else
                rm -f PACKAGES* 2>/dev/null
                echo "$MSG_FAILED!"
                logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_FAILED!"
              fi
            else
              if [ ! -z $Q ]; then
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_PAC_URL 2>/dev/null &
                progress PACKAGES.TXT
              else
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_PAC_URL
              fi
              if [ -f PACKAGES.TXT ]; then
                if [ ! -z $Q ]; then
                  echo "$MSG_DONE!"
                fi
                mv PACKAGES.TXT .cache/ 2>/dev/null
                cp .cache/PACKAGES.TXT .cache/.slock.PACKAGES.TXT 2>/dev/null
                logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_DONE!"
              else
                rm -f PACKAGES.TXT* 2>/dev/null
                if [ ! -z $Q ]; then
                  echo "$MSG_FAILED!"
                fi
                logme "update_lists()" "### $MSG_FETCHING_PLFPAC $MSG_FAILED!"
              fi
            fi
          fi
        fi
        if [ -f CHECKSUMS.md5 ]; then
          if test `cat CHECKSUMS.md5 2>/dev/null | grep -c -w "./extra/PACKAGES.TXT"` -ge 1; then
            if [ -f .cache/.slock.PACKAGES.TXT.extra ]; then
              AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep -w "./extra/PACKAGES.TXT" | awk '{if(NR==1)print$1}'`
              CFILELIST=`md5sum .cache/.slock.PACKAGES.TXT.extra 2>/dev/null | awk '{print$1}'`
              if [[ "$AFILELIST" == "$CFILELIST" ]]; then
                MSG "update_lists()" "$MSG_EXTDUTD"
              else
                rm -f .cache/.slock.PACKAGES.TXT.extra 2>/dev/null
                rm -f .cache/PACKAGES.TXT.extra 2>/dev/null
              fi
            fi
          else
            rm -f .cache/.slock.PACKAGES.TXT.extra 2>/dev/null
            rm -f .cache/PACKAGES.TXT.extra 2>/dev/null
          fi
        else
          rm -f .cache/.slock.PACKAGES.TXT.extra 2>/dev/null
          rm -f .cache/PACKAGES.TXT.extra 2>/dev/null
        fi
        if [ ! -f .cache/.slock.PACKAGES.TXT.extra ]; then
          echo $QS "### $MSG_FETCHING_PLFEXT "
          if test `echo $R | grep -c "rsync:"` -ge 1; then
            if [ ! -z $Q ]; then
              rsync --timeout=$TIMEOUT $Q $DESCRIPTIONS_EXT_URL .cache/PACKAGES.TXT.extra 2>/dev/null &
              progress .cache/PACKAGES.TXT.extra
            else
              rsync --progress -vv --timeout=$TIMEOUT $Q $DESCRIPTIONS_EXT_URL .cache/PACKAGES.TXT.extra
            fi
            if [ -f .cache/PACKAGES.TXT.extra ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_DONE!"
            else
              rm -f PACKAGES* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_FAILED!"
            fi
          else
            if test `echo $R | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/extra/PACKAGES.TXT ]; then
                cp -f $rTMP/extra/PACKAGES.TXT .cache/PACKAGES.TXT.extra 2>/dev/null
              fi
              if [ -f .cache/PACKAGES.TXT.extra ]; then
                echo "$MSG_DONE!"
                logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_DONE!"
             else
                rm -f PACKAGES* 2>/dev/null
                echo "$MSG_FAILED!"
                logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_FAILED!"
              fi
            else
              if [ ! -z $Q ]; then
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_EXT_URL 2>/dev/null &
                progress PACKAGES.TXT
              else
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_EXT_URL
              fi
              if [ -f PACKAGES.TXT ]; then
                if [ ! -z $Q ]; then
                  echo "$MSG_DONE!"
                fi
                mv PACKAGES.TXT .cache/PACKAGES.TXT.extra 2>/dev/null
                logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_DONE!"
              else
                rm -f PACKAGES.TXT* 2>/dev/null
                if [ ! -z $Q ]; then
                  echo "$MSG_FAILED!"
                fi
                logme "update_lists()" "### $MSG_FETCHING_PLFEXT $MSG_FAILED!"
              fi
            fi
          fi
        fi
        if [[ "$VERSION" != "current" ]]; then
          if [ -f CHECKSUMS.md5 ]; then
            if test `cat CHECKSUMS.md5 2>/dev/null | grep -c -w "./patches/PACKAGES.TXT"` -ge 1; then
              if [ -f .cache/.slock.PACKAGES.TXT.patches ]; then
                AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep -w "./patches/PACKAGES.TXT" | awk '{if(NR==1)print$1}'`
                CFILELIST=`md5sum .cache/.slock.PACKAGES.TXT.patches 2>/dev/null | awk '{print$1}'`
                if [[ "$AFILELIST" == "$CFILELIST" ]]; then
                  MSG "update_lists()" "$MSG_PATDUTD"
                else
                  rm -f .cache/.slock.PACKAGES.TXT.patches 2>/dev/null
                  rm -f .cache/PACKAGES.TXT.patches 2>/dev/null
                fi
              fi
            else
              rm -f .cache/.slock.PACKAGES.TXT.patches 2>/dev/null
              rm -f .cache/PACKAGES.TXT.patches 2>/dev/null
            fi
          else
            rm -f .cache/.slock.PACKAGES.TXT.patches 2>/dev/null
            rm -f .cache/PACKAGES.TXT.patches 2>/dev/null
          fi
          if [ ! -f .cache/.slock.PACKAGES.TXT.patches ]; then
            echo $QS "### $MSG_FETCHING_PLFPAT "
            if test `echo $R | grep -c "rsync:"` -ge 1; then
              if [ ! -z $Q ]; then
                rsync --timeout=$TIMEOUT $Q $DESCRIPTIONS_PAT_URL .cache/PACKAGES.TXT.patches 2>/dev/null &
                progress .cache/PACKAGES.TXT.patches
              else
                rsync --progress -vv --timeout=$TIMEOUT $Q $DESCRIPTIONS_PAT_URL .cache/PACKAGES.TXT.patches
              fi
              if [ -f .cache/PACKAGES.TXT.patches ]; then
                if [ ! -z $Q ]; then
                  echo "$MSG_DONE!"
                fi
                logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_DONE!"
              else
                rm -f PACKAGES* 2>/dev/null
                if [ ! -z $Q ]; then
                  echo "$MSG_FAILED!"
                fi
                logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_FAILED!"
              fi
            else
              if test `echo $R | grep -c "file:"` -ge 1; then
                if [ -f $rTMP/patches/PACKAGES.TXT ]; then
                  cp -f $rTMP/patches/PACKAGES.TXT .cache/PACKAGES.TXT.patches 2>/dev/null
                fi
                if [ -f .cache/PACKAGES.TXT.patches ]; then
                  echo "$MSG_DONE!"
                  logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_DONE!"
                else
                  rm -f PACKAGES* 2>/dev/null
                  echo "$MSG_FAILED!"
                  logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_FAILED!"
                fi
              else
                if [ ! -z $Q ]; then
                  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_PAT_URL 2>/dev/null &
                  progress PACKAGES.TXT
                else
                  wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_PAT_URL
                fi
                if [ -f PACKAGES.TXT ]; then
                  if [ ! -z $Q ]; then
                    echo "$MSG_DONE!"
                  fi
                  mv PACKAGES.TXT .cache/PACKAGES.TXT.patches 2>/dev/null
                  logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_DONE!"
                else
                  rm -f PACKAGES.TXT* 2>/dev/null
                  if [ ! -z $Q ]; then
                    echo "$MSG_FAILED!"
                  fi
                  logme "update_lists()" "### $MSG_FETCHING_PLFPAT $MSG_FAILED!"
                fi
              fi
            fi
          fi
        fi
        if [ -f CHECKSUMS.md5 ]; then
          if test `cat CHECKSUMS.md5 2>/dev/null | grep -c -w "./ChangeLog.txt"` -ge 1; then
            if [ -f .cache/.slock.ChangeLog.txt ]; then
              AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep -w "./ChangeLog.txt" | awk '{if(NR==1)print$1}'`
              CFILELIST=`md5sum .cache/.slock.ChangeLog.txt 2>/dev/null | awk '{print$1}'`
              if [[ "$AFILELIST" == "$CFILELIST" ]]; then
                MSG "update_lists()" "$MSG_CLOGUTD"
              else
                rm -f .cache/.slock.ChangeLog.txt 2>/dev/null
                rm -f .cache/ChangeLog.txt 2>/dev/null
              fi
            fi
          else
            rm -f .cache/.slock.ChangeLog.txt 2>/dev/null
            rm -f .cache/ChangeLog.txt 2>/dev/null
          fi
        else
          rm -f .cache/.slock.ChangeLog.txt 2>/dev/null
          rm -f .cache/ChangeLog.txt 2>/dev/null
        fi
        if [ ! -f .cache/.slock.ChangeLog.txt ]; then
          echo $QS "### $MSG_FETCHING_CLOG "
          if test `echo $R | grep -c "rsync:"` -ge 1; then
            if [ -z $Q ]; then
              rsync --timeout=$TIMEOUT --progress -vv "$R/ChangeLog.txt" .
            else
              rsync --timeout=$TIMEOUT -q "$R/ChangeLog.txt" . 2>/dev/null
            fi
            if [ -f ChangeLog.txt ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_DONE!"
            else
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              BSWAP=1
              logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_FAILED!"
            fi
          else
            if test `echo $R | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/ChangeLog.txt ]; then
                cp -f $rTMP/ChangeLog.txt . 2>/dev/null
              fi
              if [ -f ChangeLog.txt ]; then
                echo "$MSG_DONE!"
                logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_DONE!"
              else
                echo "$MSG_FAILED!"
                BSWAP=1
                logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_FAILED!"
              fi
            else
              if [ -z $Q ]; then
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT -c "$R/ChangeLog.txt"
              else
                wget $PROXY $PF -t $RETRIES -T $TIMEOUT -q -c "$R/ChangeLog.txt" 2>/dev/null
              fi
              if [ -f ChangeLog.txt ]; then
                if [ ! -z $Q ]; then
                  echo "$MSG_DONE!"
                fi
                logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_DONE!"
              else
                if [ ! -z $Q ]; then
                  echo "$MSG_FAILED!"
                fi
                BSWAP=1
                logme "--changelog" "### $MSG_FETCHING_CLOG $MSG_FAILED!"
              fi
            fi
          fi
        fi
        if [ -f CHECKSUMS.md5 ] && [ -f FILELIST.TXT ]; then
          echo -n "=> $MSG_GENLF "
          if [ -f CHECKSUMS.md5 ]; then
            cat CHECKSUMS.md5 2>/dev/null | grep "./slackware" | grep -v "/source/" | grep -E "($PKG_EXTS)$" > CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep "./extra" | grep -v "/source/" | grep -E "($PKG_EXTS)$" >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep "./patches" | grep -v "/source/" | grep -E "($PKG_EXTS)$" >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./source" | grep gz$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./source" | grep bz2$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./extra/source" | grep gz$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./extra/source" | grep bz2$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./patches/source" | grep gz$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5 2>/dev/null | grep -v "lrwx" | grep "./patches/source" | grep bz2$ >> CHECKSUMS.md5.pmt
            cat CHECKSUMS.md5.pmt 2>/dev/null | grep "_" | grep -v "-" > CHECKSUMS.md5.tmp
            cat CHECKSUMS.md5.pmt 2>/dev/null | grep "-" | grep -v "_" >> CHECKSUMS.md5.tmp
            cat CHECKSUMS.md5.pmt 2>/dev/null | grep "-" | grep "_" >> CHECKSUMS.md5.tmp
            cat CHECKSUMS.md5.tmp 2>/dev/null | grep -i -v "\.sh" | awk -F'/' '{print $NF " " $0}' | sed s:""::\g | sort | uniq | awk '{print$2" "$3}' > CHECKSUMS.md5
          fi
          if [ -f FILELIST.TXT ]; then
            cp FILELIST.TXT .cache/.slock.FILELIST.TXT 2>/dev/null
            cat FILELIST.TXT 2>/dev/null | grep "./slackware" | grep -v "/source/" | grep -E "($PKG_EXTS|bz2)$" | awk '{print $5" "$NF}' > FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./extra" | grep -v "/source/" | grep -E "($PKG_EXTS|bz2)$" | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./patches" | grep -v "/source/" | grep -E "($PKG_EXTS|bz2)$" | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./source" | grep -v "lrwx" | grep gz$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./source" | grep -v "lrwx" | grep bz2$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./extra/source" | grep -v "lrwx" | grep gz$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./extra/source" | grep -v "lrwx" | grep bz2$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./patches/source" | grep -v "lrwx" | grep gz$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep "./patches/source" | grep -v "lrwx" | grep bz2$ | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT 2>/dev/null | grep -i -v "lrwx" | grep "source" | grep -i build | awk '{print $5" "$NF}' >> FILELIST.TXT.pmt
            cat FILELIST.TXT.pmt 2>/dev/null | grep -E "(gz|bz2)$" | grep -E "./slackware|./extra|./patches|./source" > FILELIST.TXT.tmp
            cat FILELIST.TXT.pmt 2>/dev/null | grep "./slackware.*MANIFEST.bz2$|./extra.*MANIFEST.bz2$|./patches.*MANIFEST.bz2$" >> FILELIST.TXT.tmp
            cat FILELIST.TXT.pmt 2>/dev/null | grep "_" | grep -v "-" >> FILELIST.TXT.tmp
            cat FILELIST.TXT.pmt 2>/dev/null | grep "-" | grep -v "_" >> FILELIST.TXT.tmp
            cat FILELIST.TXT.pmt 2>/dev/null | grep "-" | grep "_" >> FILELIST.TXT.tmp
            cat FILELIST.TXT.pmt 2>/dev/null | grep -i build >> FILELIST.TXT.tmp
            cat FILELIST.TXT.tmp 2>/dev/null | grep -i -v "\.sh" | awk -F'/' '{print $NF " " $0}' | sed s:""::\g | sort | uniq | awk '{print$2" "$3}' > FILELIST.TXT
          fi
          echo "$MSG_DONE!"
          logme "update_lists()" "=> $MSG_GENLF $MSG_DONE!"
          cp CHECKSUMS.md5 .cache/ 2>/dev/null
          cp FILELIST.TXT .cache/ 2>/dev/null
          cp ChangeLog.txt .cache/ 2>/dev/null
          cp ChangeLog.txt .cache/.slock.ChangeLog.txt 2>/dev/null 
          cp .cache/PACKAGES.TXT .cache/.slock.PACKAGES.TXT 2>/dev/null
          cp .cache/PACKAGES.TXT.extra .cache/.slock.PACKAGES.TXT.extra 2>/dev/null
          cp .cache/PACKAGES.TXT.patches .cache/.slock.PACKAGES.TXT.patches 2>/dev/null
        fi
      fi
      if [ "$BSWAP" = "0" ]; then
        if [ ! -f URL.lock ]; then
          rm -f .exclude/.elock 2>/dev/null
          touch URL.lock 2>/dev/null
          touch .cache/.slock 2>/dev/null
          ROOTS=""
          break
        fi
      fi
    fi
  done
  RROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'='`
  for R in $RROOTS; do
    cleanup_quick
    RNAME=`echo "$R" | cut -f1 -d%`
    R=`echo "$R" | cut -f2 -d%`
    if test `echo $R | grep -c "file:"` -ge 1; then
      rTMP=`echo $R | sed s/'file:'//`
    fi
    CHECKSUMS_URL="$R/CHECKSUMS.md5"
    FILELIST_URL="$R/FILELIST.TXT"
    DESCRIPTIONS_URL="$R/PACKAGES.TXT"
    MSG "update_lists()" "[ $R ]"
    if [ -z $Q ]; then
      if test `echo "$R" | grep -c "file:"` -ge 1; then
        QS="-n"
      else
        QS=""
      fi
    fi
    rivar "MSG_FETCHING_RCLF"
    MSG_FETCHING_RCLF=`echo "$MSG_FETCHING_RCLF" | sed s:"%X":"$RNAME":\g`
    echo $QS "### $MSG_FETCHING_RCLF "
    if test `echo $R | grep -c "rsync:"` -ge 1; then
      if [ ! -z $Q ]; then
        rsync --timeout=$TIMEOUT $Q $CHECKSUMS_URL CHECKSUMS.md5 2>/dev/null &
          progress CHECKSUMS.md5
        else
          rsync --progress -vv --timeout=$TIMEOUT $Q $CHECKSUMS_URL CHECKSUMS.md5
        fi
        if [ -f CHECKSUMS.md5 ]; then
          if [ ! -z $Q ]; then
            echo "$MSG_DONE!"
          fi
          logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_DONE!"
        else
          rm -f CHECKSUMS* 2>/dev/null
          if [ ! -z $Q ]; then
            echo "$MSG_FAILED!"
          fi
          BSWAP=1
          logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_FAILED!"
        fi
      else
        if test `echo $R | grep -c "file:"` -ge 1; then
          if [ -f $rTMP/CHECKSUMS.md5 ]; then
            cp -f $rTMP/CHECKSUMS.md5 . 2>/dev/null
          fi
          if [ -f CHECKSUMS.md5 ]; then
            echo "$MSG_DONE!"
            logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_DONE!"
          else
            rm -f CHECKSUMS* 2>/dev/null
            echo "$MSG_FAILED!"
            BSWAP=1
            logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_FAILED!"
          fi
        else
          if [ ! -z $Q ]; then
            wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $CHECKSUMS_URL 2>/dev/null &
            progress CHECKSUMS.md5
          else
            wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $CHECKSUMS_URL
          fi
          if [ -f CHECKSUMS.md5 ]; then
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
            logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_DONE!"
          else
            rm -f CHECKSUMS* 2>/dev/null
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
            logme "update_lists()" "### $MSG_FETCHING_RCLF $MSG_FAILED!"
            BSWAP=1
          fi
        fi
      fi
      if [ -f CHECKSUMS.md5 ]; then
        if test `cat CHECKSUMS.md5 2>/dev/null | grep -c "./FILELIST.TXT"` -ge 1; then
          if [ -f repos/$RNAME/.slock.FILELIST.TXT ]; then
            AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep "./FILELIST.TXT" | awk '{if(NR==1)print$1}'`
            CFILELIST=`md5sum repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null | awk '{print$1}'`
            if [[ "$AFILELIST" == "$CFILELIST" ]]; then
              rivar "MSG_RFLFUTD"
              MSG_RFLFUTD=`echo "$MSG_RFLFUTD" | sed s:"%X":"$RNAME":\g`
              MSG "update_lists()" "$MSG_RFLFUTD"
            else
              rm -f repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null
              rm -f repos/$RNAME/FILELIST.TXT 2>/dev/null
            fi
          fi
        else
          rm -f repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null
          rm -f repos/$RNAME/FILELIST.TXT 2>/dev/null
        fi
      else
        rm -f repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null
        rm -f repos/$RNAME/FILELIST.TXT 2>/dev/null
      fi
      if [ ! -f repos/$RNAME/.slock.FILELIST.TXT ]; then
        rivar "MSG_FETCHING_RFLF"
        MSG_FETCHING_RFLF=`echo "$MSG_FETCHING_RFLF" | sed s:"%X":"$RNAME":\g`
        echo $QS "### $MSG_FETCHING_RFLF "
        if test `echo $R | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync --timeout=$TIMEOUT $Q $FILELIST_URL FILELIST.TXT 2>/dev/null &
            progress FILELIST.TXT
          else
            rsync --progress -vv --timeout=$TIMEOUT $Q $FILELIST_URL FILELIST.TXT
          fi
          if [ -f FILELIST.TXT ]; then
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
            logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_DONE!"
          else
            rm -f FILELIST* 2>/dev/null
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
            BSWAP=1
            logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_FAILED!"
          fi
        else
          if test `echo $R | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/FILELIST.TXT ]; then
              cp -f $rTMP/FILELIST.TXT . 2>/dev/null
            fi
            if [ -f FILELIST.TXT ]; then
              echo "$MSG_DONE!"
              logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_DONE!"
            else
              rm -f FILELIST* 2>/dev/null
              echo "$MSG_FAILED!"
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_FAILED!"
            fi
          else
            if [ ! -z $Q ]; then
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $FILELIST_URL 2>/dev/null &
              progress FILELIST.TXT
            else
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $FILELIST_URL
            fi
            if [ -f FILELIST.TXT ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_DONE!"
            else
              rm -f FILELIST* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_RFLF $MSG_FAILED!"
            fi
          fi
        fi
      fi
      if [ -f CHECKSUMS.md5 ]; then
        if test `cat CHECKSUMS.md5 2>/dev/null | grep -c "./PACKAGES.TXT"` -ge 1; then
          if [ -f repos/$RNAME/.slock.PACKAGES.TXT ]; then
            AFILELIST=`cat CHECKSUMS.md5 2>/dev/null | grep "./PACKAGES.TXT" | awk '{if(NR==1)print$1}'`
            CFILELIST=`md5sum repos/$RNAME/.slock.PACKAGES.TXT 2>/dev/null | awk '{print$1}'`
            if [[ "$AFILELIST" == "$CFILELIST" ]]; then
              rivar "MSG_RPACDUTD"
              MSG_RPACDUTD=`echo "$MSG_RPACDUTD" | sed s:"%X":"$RNAME":\g`
              MSG "update_lists()" "$MSG_RPACDUTD"
            else
              rm -f repos/$RNAME/.slock.PACKAGES.TXT 2>/dev/null
              rm -f repos/$RNAME/PACKAGES.TXT 2>/dev/null
            fi
          fi
        else
          rm -f repos/$RNAME/.slock.PACKAGES.TXT 2>/dev/null
          rm -f repos/$RNAME/PACKAGES.TXT 2>/dev/null
        fi
      else
        rm -f repos/$RNAME/.slock.PACKAGES.TXT 2>/dev/null
        rm -f repos/$RNAME/PACKAGES.TXT 2>/dev/null
      fi
      if [ ! -f repos/$RNAME/.slock.PACKAGES.TXT ]; then
        rivar "MSG_FETCHING_RPLFPAC"
        MSG_FETCHING_RPLFPAC=`echo "$MSG_FETCHING_RPLFPAC" | sed s:"%X":"$RNAME":\g`
        echo $QS "### $MSG_FETCHING_RPLFPAC "
        if test `echo $R | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync --timeout=$TIMEOUT $Q $DESCRIPTIONS_URL PACKAGES.TXT 2>/dev/null &
            progress PACKAGES.TXT
          else
            rsync --progress -vv --timeout=$TIMEOUT $Q $DESCRIPTIONS_URL PACKAGES.TXT
          fi
          if [ -f PACKAGES.TXT ]; then
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
            logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_DONE!"
          else
            rm -f PACKAGES* 2>/dev/null
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
            BSWAP=1
            logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_FAILED!"
          fi
        else
          if test `echo $R | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/PACKAGES.TXT ]; then
              cp -f $rTMP/PACKAGES.TXT . 2>/dev/null
            fi
            if [ -f PACKAGES.TXT ]; then
              echo "$MSG_DONE!"
              logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_DONE!"
            else
              rm -f PACKAGES* 2>/dev/null
              echo "$MSG_FAILED!"
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_FAILED!"
            fi
          else
            if [ ! -z $Q ]; then
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_URL 2>/dev/null &
              progress PACKAGES.TXT
            else
              wget $PROXY $PF -t $RETRIES -T $TIMEOUT $Q $DESCRIPTIONS_URL
            fi
            if [ -f PACKAGES.TXT ]; then
              if [ ! -z $Q ]; then
                echo "$MSG_DONE!"
              fi
              logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_DONE!"
            else
              rm -f PACKAGES* 2>/dev/null
              if [ ! -z $Q ]; then
                echo "$MSG_FAILED!"
              fi
              BSWAP=1
              logme "update_lists()" "### $MSG_FETCHING_RPLFPAC $MSG_FAILED!"
            fi
          fi
        fi
      fi
      if [ -f CHECKSUMS.md5 ] && [ -f FILELIST.TXT ]; then
        if [ ! -d repos/$RNAME ]; then
          echo -n "=> $MSG_CLREPOS '$RNAME'... "
          mkdir -p repos/$RNAME 2>/dev/null
          if [ -d repos/$RNAME ]; then
            echo "$MSG_DONE!"
          else
            echo "$MSG_FAILED!"
          fi
        else
          rmu -f repos/$RNAME/CHECKSUMS* 2>/dev/null
          rm -f repos/$RNAME/FILELIST* 2>/dev/null
          rm -f repos/$RNAME/PACKAGES* 2>/dev/null
        fi
        cp FILELIST.TXT repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null
        rivar "MSG_GENRLF"
        MSG_GENRLF=`echo "$MSG_GENRLF" | sed s:"%X":"$RNAME":\g`
        echo -n "=> $MSG_GENRLF "
        cat CHECKSUMS.md5 2>/dev/null | grep -E "($PKG_EXTS)$" | awk -F'/' '{print $NF " " $0}' | sed s:""::\g | sort | uniq | awk '{print$2" "$3}' > CHECKSUMS.md5.tmp
        mv CHECKSUMS.md5.tmp repos/$RNAME/CHECKSUMS.md5 2>/dev/null
        if test `cat FILELIST.TXT 2>/dev/null | grep -E "($PKG_EXTS)$" | awk '{print$6}' | grep "-" | wc -l` -eq 0; then
          cat FILELIST.TXT 2>/dev/null | grep -E "(MANIFEST.bz2|$PKG_EXTS)$" | awk -F'/' '{print $NF " " $0}' | sed s:""::\g | sort | uniq | awk '{print$6" "$10}' > FILELIST.TXT.tmp
        else
          cat FILELIST.TXT 2>/dev/null | grep -E "(MANIFEST.bz2|$PKG_EXTS)$" | awk -F'/' '{print $NF " " $0}' | sed s:""::\g | sort |uniq | awk '{print$6" "$9}' > FILELIST.TXT.tmp
        fi
        mv FILELIST.TXT.tmp repos/$RNAME/FILELIST.TXT 2>/dev/null
        cp PACKAGES.TXT repos/$RNAME/ 2>/dev/null
        cp PACKAGES.TXT repos/$RNAME/.slock.PACKAGES.TXT 2>/dev/null
        echo "$MSG_DONE!"
      fi
  done
}

check_for_settings()
{
  if [ ! -f /etc/swaret.conf ]; then
    MSGERRp "$MSG_CONF_NFOUND"
  else
    eval $( grep -v "^#" /etc/swaret.conf | grep "=" | cut -f1 -d'#' | sed s/'"'//\g | sed s/''\'//\g | sed 's/=\(.*\)$/="\1"/' | sed s/'  '//\g | sed s/' \"'/'\"'/\g )
    export PACKAGES_LOGDIR="/var/log/packages/"
    export REMOVED_PACKAGES_LOGDIR="/var/log/removed_packages/"
    export PATH="$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
    if [ -z $VERSION ]; then
      export VERSION=current
    fi
    if [ -z $LANGUAGE ]; then
      export LANGUAGE=ENGLISH
    fi
    if [ -z $RANDOMR ]; then
      export RANDOMR=0
    fi
    if [ -z $USEPKGDESC ]; then
      export USEPKGDESC=0
    fi
    if [ -z $DEPENDENCY ]; then
      export VDEPENDENCY="1"
    else
      export VDEPENDENCY="$DEPENDENCY"
    fi
    if [ -z $ROLLBACK ]; then
      export VROLLBACK="0"
    else
      export VROLLBACK="$ROLLBACK"
    fi
    if [ -z $DSEARCHLIB ]; then
      export DSEARCHLIB="0"
    fi
    if [ -z $DSEARCHM ]; then
      export DSEARCHM="0"
    fi
    if [[ "$DEP_ROOT" == "" && "$VDEPENDENCY" == "1" ]]; then
      export VMANIFEST="1"
    else
      export VMANIFEST="0"
    fi
    if [ -z $MD5CHECK ]; then
      export MD5CHECK="1"
    fi
    if [ -z $GPGCHECK ]; then
      export GPGCHECK="0"
    fi
    if [ -z $DESC ]; then
      export DESC="0"
    else
      if [[ "$DESC" == "1" ]]; then
        export QD=1
      fi
    fi
    if [ -z $CACHE_DIR ]; then
      export CDIR="/var/swaret/"
    else
      export CDIR="$CACHE_DIR"
    fi
    if [ -z $LOG ]; then
      export LOG="1"
    fi
    if [ -z $LOG_FILE ]; then
      export LF="/var/log/swaret"
    else
      export LF="$LOG_FILE"
    fi
    if [ -z $WARNINGS ]; then
      export WARNINGS="1"
    fi
    if [ -z $INFORMATION ]; then
      export INFORMATION="1"
    fi
    if [ -z $NIC ]; then
      export NIC="eth0"
    fi
    if [ -z $PROGRESS ]; then
      export Q="-q"
      export QS="-n"
      export PROGRESS="1"
    else
      if [[ "$PROGRESS" == "2" ]]; then
        export Q=""
        export QS=""
      else
        if [[ "$PROGRESS" != "0" ]] && [[ "$PROGRESS" != "1" ]]; then
          PROGRESS=0
        fi
        export Q="-q"
        export QS="-n"
      fi
    fi
    if [ -z $TIMEOUT ]; then
      export TIMEOUT="35"
    fi
    if [ -z $RETRIES ]; then
      export RETRIES="5"
    fi
    if [ -z $PASSIVE_FTP ]; then
      export PF="--passive-ftp"
    else
      if [[ "$PASSIVE_FTP" == "1" ]]; then
        export PF="--passive-ftp"
      else
        export PF=""
      fi
    fi
    if [ -z $WGET_PROXY ]; then
      export PROXY="--proxy=off"
      export http_proxy=""
    else
      export PROXY="--proxy=on"
      export http_proxy=$WGET_PROXY
    fi
    if [ ! -z $RSYNC_PROXY ]; then
      export RSYNC_PROXY=$RSYNC_PROXY
    fi
    if [ ! -d $CDIR ]; then
      mkdir -p $CDIR/ 2>/dev/null
    fi
    cd $CDIR/
    if [ ! -d .cache ]; then
      mkdir .cache 2>/dev/null
    fi
    if [ ! -d .exclude ]; then
      mkdir .exclude 2>/dev/null
    fi
    if [ ! -d .tmp ]; then
      mkdir .tmp 2>/dev/null
    fi
    if [ ! -d repos ]; then
      mkdir repos 2>/dev/null
    fi
    if [ ! -d sources ]; then
      mkdir sources 2>/dev/null
    fi
    if [ ! -d rollback ]; then
      mkdir rollback 2>/dev/null
    fi
    if [[ "$GPGCHECK" = "1" ]]; then
      check_gnupg
    fi
    if [[ "$1" != "--purge" ]] && [[ "$1" != "--log" ]] && [[ "$1" != "--gpg" ]] && [[ "$1" != "--set" ]] && [[ "$1" != "--changelog" ]]; then
      trap "pkill -P$$ 2>/dev/null; echo; echo; cleanup_quick; exit" INT
    fi
  fi
}

#check_for_network()
#{
#  if test `ifconfig | grep -c $NIC` -eq 0; then
#    MSGERRp "check_for_network()" "$MSG_NDOWN"
#  fi
#}

check_for_network()
{
   ip_address=`ifconfig | grep "inet addr" | grep -v 127.0.0.1 | tee | awk '{ print $2 }' | awk -F":" '{ print $2 }' | head -1`
   
   if [ ! $ip_address ] || [ ! `expr match $ip_address [0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]` ] ; then
      MSGERRp "check_for_network()" "$MSG_NDOWN"
   fi
}

check_hd_space()
{
  TO_UPGRADE=$1
  if [[ "$ROLLBACK" = "1" ]]; then
    TO_UPGRADE=`echo "$TO_UPGRADE * 2" | bc`
  fi
  if [[ "$CACHE_DIR" = "/var/swaret" ]]; then
    if test `df | awk {'print $6'} | grep ^/var/swaret`; then
      AV_SP=`df -B 1 | grep /var/swaret$ | awk {'print $4'}`
    elif test `df | awk {'print $6'} | grep ^/var`; then
      AV_SP=`df -B 1 | grep /var$ | awk {'print $4'}`
    else
      AV_SP=`df -B 1 | grep /$ | awk {'print $4'}`
    fi
    if test $TO_UPGRADE -gt $AV_SP; then
      echo
      MSG "check_hd_space" "Insufficient hard drive space."
      echo -n "Additional space needed: "
      SP_NEEDED=`echo "$TO_UPGRADE-$AV_SP" | bc`
      if test $SP_NEEDED -le 1024; then
        echo "$SP_NEEDED"B
      elif test $SP_NEEDED -le 1048576; then
        echo `echo "scale=1;$SP_NEEDED/1024" | bc`k
      else
        echo `echo "scale=1;$SP_NEEDED/1048576" | bc`M
      fi
      return 1 
    else
      return 0  
    fi
  fi
}

check_size_pkg()
{
  if [ -z $2 ]; then
    CACHED_PKG_SIZE=`ls -alL $1 2>/dev/null | awk '{print$5}'`
    if test `grep -c "/$1$" .cache/FILELIST.TXT 2>/dev/null` -ge 1; then
      REAL_PKG_SIZE=`grep "/$1$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
    fi
  else
    CACHED_PKG_SIZE=`ls -alL $1 2>/dev/null | awk '{print$5}'`
    if test `grep -c "$1$" $CDIR/repos/$2/FILELIST.TXT 2>/dev/null` -ge 1; then
      REAL_PKG_SIZE=`grep "$1$" $CDIR/repos/$2/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
    fi
  fi
  if [[ "$CACHED_PKG_SIZE" != "$REAL_PKG_SIZE" ]]; then
    touch $1.corrupted 2>/dev/null
  fi
}

checkcom()
{
  rm -f $1*.*complete 2>/dev/null
  if [ -f sources/$1 ]; then
    touch $1.complete 2>/dev/null
  fi
  if [ -z $3 ]; then
    if [ -f $1 ]; then
      COMCACHED_PKG_SIZE=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      if test `grep "/$1$" .cache/FILELIST.TXT 2>/dev/null | grep -c "$2"` -ge 1; then
        COMREAL_PKG_SIZE=`grep "/$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
      fi
      if [[ "$COMCACHED_PKG_SIZE" == "$COMREAL_PKG_SIZE" ]]; then
        touch $1.complete 2>/dev/null
      else
        touch $1.incomplete 2>/dev/null
        REMAINSIZE=`echo "$COMREAL_PKG_SIZE - $COMCACHED_PKG_SIZE" | bc`
      fi
    fi
  else
    if [ -f $1 ]; then
      COMCACHED_PKG_SIZE=`ls -alL $1 2>/dev/null | awk '{print$5}'`
      if test `grep "$1$" repos/$3/FILELIST.TXT 2>/dev/null | grep -c "$2"` -ge 1; then
        COMREAL_PKG_SIZE=`grep "$1$" repos/$3/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
      fi
      if [[ "$COMCACHED_PKG_SIZE" == "$COMREAL_PKG_SIZE" ]]; then
        touch $1.complete 2>/dev/null
      else
        touch $1.incomplete 2>/dev/null
        REMAINSIZE=`echo "$COMREAL_PKG_SIZE - $COMCACHED_PKG_SIZE" | bc`
      fi
    fi
  fi
}

sortandcount()
{
  exclude
  cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | sort | uniq | awk '{print$2}' > PKGLIST.tmp 2>/dev/null
  mv PKGLIST.tmp PKGLIST 2>/dev/null
  PKGLIST=`cat PKGLIST 2>/dev/null`
  COUNT=`echo "$PKGLIST" | wc -w | awk '{if(NR==1)print$1}'`
}

exclude()
{
  if [ -f .exclude/.elock ]; then
    if [[ `cat /etc/swaret.conf 2>/dev/null | grep "^EXCLUDE"` != "`cat .exclude/.elock 2>/dev/null`" ]]; then
      rm -f .exclude/.elock 2>/dev/null
    fi
  fi
  if [ ! -f .exclude/.elock ]; then
    rm -f .exclude/* 2>/dev/null
    rm -f .tmp/* 2>/dev/null
    echo -n "=> $MSG_CELIST"
    if test `cat /etc/swaret.conf 2>/dev/null | grep "^EXCLUDE" | cut -f2 -d'=' | wc -w` -ge 1; then
      for EXF in `cat /etc/swaret.conf 2>/dev/null | grep "^EXCLUDE" | cut -f2 -d'='`; do 
        if test `echo "$EXF" | grep "\[" | grep "]" | grep "," | wc -l` -ge 1; then
          KEYWORD=`echo "$EXF" | cut -f1 -d'['`
          NOTLIST=`echo "$EXF" | cut -f2 -d'[' | sed s/']'// | sed s/','/'|'/\g`
          if test `ls .cache/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
            NLF1=`grep -i -E -e "$NOTLIST" .cache/FILELIST.TXT 2>/dev/null | grep -i -E -e "$NOTLIST" | sed -e "s/.*\///g"`
            for X in `grep -i -E -e "$KEYWORD" .cache/FILELIST.TXT 2>/dev/null | sed -e "s/.*\///g"`; do 
              touch .exclude/$X.exclude 2>/dev/null
            done
          fi
          if test `ls repos/*/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
            NLF2=`grep -i -E -e "$KEYWORD" repos/*/FILELIST.TXT 2>/dev/null | grep -i -E -e "$NOTLIST" | sed -e "s/.*\///g"`
            for X in `grep -i -E -e "$KEYWORD" repos/*/FILELIST.TXT 2>/dev/null | sed -e "s/.*\///g"`; do 
              touch .exclude/$X.exclude 2>/dev/null
            done
          fi
          NIL=`ls $PACKAGES_LOGDIR/*$KEYWORD* 2>/dev/null | sed -e "s/.*\///g" | grep -i -E -e "$NOTLIST"`
          for X in `ls $PACKAGES_LOGDIR/*$KEYWORD* 2>/dev/null | sed -e "s/.*\///g"`; do 
            if test `ls .exclude/$X.exclude.installed 2>/dev/null | wc -l` -eq 0; then
              touch .exclude/$X.exclude.installed 2>/dev/null
            fi
          done
          if [ ! -z "$NLF1" ]; then
            NOTLISTFILES="$NLF1"
          fi
          if [ ! -z "$NLF2" ]; then
            if [ ! -z "$NLF1" ]; then
              NOTLISTFILES="|$NLF1|$NLF2"
            else
              NOTLISTFILES="$NLF2"
            fi
          fi
          NOTLISTFILES=`echo "$NOTLISTFILES" | sed s/'|'/' '/`
          for X in $NOTLISTFILES; do 
            rm -f .exclude/$X.exclude 2>/dev/null
          done
          if [ ! -z "$NIL" ]; then
            for X in $NIL; do 
              rm -f .exclude/$X.exclude.installed 2>/dev/null
            done
          fi
        else
          if test `ls .cache/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
            for X in `grep -i -E -e "$EXF" .cache/FILELIST.TXT 2>/dev/null | sed -e "s/.*\///g"`; do
              touch .exclude/$X.exclude 2>/dev/null
            done
          fi
          if test `ls repos/*/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
            for X in `grep -i -E -e "$EXF" repos/*/FILELIST.TXT 2>/dev/null | sed -e "s/.*\///g"`; do
              touch .exclude/$X.exclude 2>/dev/null
            done
          fi
        fi
        for X in `ls $PACKAGES_LOGDIR/*-*-*-* 2>/dev/null | grep -i -E -e "$EXF" | sed -e "s/.*\///g"`; do 
          if test `ls .exclude/$X.exclude 2>/dev/null | wc -l` -eq 0; then
            touch .exclude/$X.exclude.installed 2>/dev/null
          fi
        done
      done
    fi
    echo -n "."
    SWAPME=0
    EXFLIST="UNKNOWN"
    if test `ls .cache/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
      for i in `grep -i -E -e "\./slackware.*($PKG_EXTS)$|\./patches.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | sed -e "s/.*\///g" | sed -e s/-[0-9].*// | sort | uniq -d | uniq`; do
        EXFLIST="$EXFLIST""|$i"
      done
      for i in `grep -E "\./slackware.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep -i -E -e "$EXFLIST" | sed -e "s/.*\///g"`; do
        touch .exclude/$i.exclude.upgrade 2>/dev/null
      done
      echo -n "."
      EXFLIST="UNKNOWN"
      for i in `grep -i -E -e "\./slackware.*($PKG_EXTS)$|\./extra.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | sed -e "s/.*\///g" | sed -e s/-[0-9].*// | sort | uniq -d`; do
        EXFLIST="$EXFLIST""|$i"
      done
      for i in `grep -i -E -e "\./extra.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep -i -E -e "$EXFLIST" | sed -e "s/.*\///g"`; do
        touch .exclude/$i.exclude.extra 2>/dev/null
      done
    fi
    echo " $MSG_DONE!"
    touch .exclude/.elock 2>/dev/null
    cat /etc/swaret.conf 2>/dev/null | grep "^EXCLUDE" > .exclude/.elock 2>/dev/null
    if [ -z "$1" ]; then
      echo
    fi
  fi
}

logme()
{
  if [[ "$LOG" = "1" ]]; then
    date=`date`
    echo "$date: [ $1 ] - $2" >> $LF 2>/dev/null
  fi
}

gbs()
{
  SHORT=`echo $1 | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
  BSPATH=`grep "/$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | sed s:"$1":: | awk '{print$2}'`
  BSLIST=`grep $BSPATH .cache/FILELIST.TXT 2>/dev/null | grep -i build | awk '{print$2}'`
  BUILDSLIST="$BSLIST"
  for b in $BUILDSLIST; do
    if [[ "$RANDOMR" == "1" ]]; then
      BROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
    else
      BROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
    fi
    rm -f b.lock 2>/dev/null
    for BR in $BROOTS; do
      if [ ! -f b.lock ]; then
        if test `echo $BR | grep -c "file:"` -ge 1; then
          rTMP=`echo $BR | sed s/'file:'//`
        fi
        MSG "gbs()" "[ $BR ]"
        if [ -z $Q ]; then
          if test `echo "$BR" | grep -c "file:"` -ge 1; then
            QS="-n"
          else
            QS=""
          fi
        fi
        rivar "MSG_FETCHING_BS"
        MSG_FETCHING_BS=`echo "$MSG_FETCHING_BS" | sed s/'%X'/''${SHORT}''/\g`
        echo $QS "### $MSG_FETCHING_BS "
        BFILENAME=`echo $b | sed -e "s/.*\///g"`
        if [ -f $BFILENAME ]; then
          break 2
        fi
        rm -f $BFILENAME 2>/dev/null
        if test `echo $BR | grep -c "rsync:"` -ge 1; then
          rsync_file_buildscript "$BR" "$b"
        else
          if test `echo $BR | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/$b ]; then
              copy_file "$rTMP" "$b"
            fi
          else
            wget_file_buildscript "$BR" "$b"
          fi
        fi
        if [ -f $BFILENAME ]; then
          if test `echo $BR | grep -c "file:"` -ge 1; then
            echo "$MSG_DONE!"
          else
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
          fi
          touch b.lock 2>/dev/null
          logme "gbs()" "### $MSG_FETCHING_BS $MSG_DONE!"
          mv $BFILENAME sources/ 2>/dev/null
          echo "$BFILENAME" >> .cache/buildscripts 2> /dev/null 
          break
        else
          if test `echo $BR | grep -c "file:"` -ge 1; then
            echo "$MSG_FAILED!"
          else
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
          fi
          logme "gbs()" "### $MSG_FETCHING_BS $MSG_FAILED!"
        fi
      fi
    done
  done
}

gpg_check()
{
  if [[ "$GPGCHECK" = "1" ]]; then
    SHORT=`echo $1 | sed -r "s/.($PKG_EXTS)$//"`
    if [ ! -f $SHORT.gpg.lock ]; then
      rm -f $1.asc
      if [ -z $4 ]; then
        if [[ "$RANDOMR" == "1" ]]; then
          GPGROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
        else
          GPGROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
        fi
      else
        GPGROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | sed s/'$VERSION'/''${VERSION}''/\g | grep "$4" | cut -f2 -d'=' | cut -f2 -d%`
      fi
      for GPGR in $GPGROOTS; do
        if test `echo $GPGR | grep -c "file:"` -ge 1; then
          rTMP=`echo $GPGR | sed s/'file:'//`
        fi
        MSG "gpg_check()" "[ $GPGR ]"
        if [ -z $Q ]; then
          if test `echo "$GPGR" | grep -c "file:"` -ge 1; then
            QS="-n"
          else
            QS=""
          fi
        fi
        rivar "MSG_FETCHING_GPG"
        MSG_FETCHING_GPG=`echo "$MSG_FETCHING_GPG" | sed s/'%X'/''${SHORT}''/\g`
        echo $QS "### $MSG_FETCHING_GPG "
        if test `echo $GPGR | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync_file_gpg "$GPGR" "$2.asc"
          else
            rsync_file_s "$GPGR" "$2.asc"
          fi
        else
          if test `echo $GPGR | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/$2.asc ]; then
              copy_file "$rTMP" "$2.asc"
              touch_it "$1"
            fi
          else
            if [ ! -z $Q ]; then
              wget_file_gpg "$GPGR" "$2.asc"
            else
              wget_file_s "$GPGR" "$2.asc"
            fi
          fi
        fi
        if [ -f $1.asc ]; then
          if test `echo $GPGR | grep -c "file:"` -ge 1; then
            echo "$MSG_DONE!"
          else
            if [ ! -z $Q ]; then
              echo "$MSG_DONE!"
            fi
          fi
          break
        else
          if test `echo $GPGR | grep -c "file:"` -ge 1; then
            echo "$MSG_FAILED!"
          else
            if [ ! -z $Q ]; then
              echo "$MSG_FAILED!"
            fi
          fi
        fi
      done
      if [ -f $1.asc ]; then
        logme "gpg_check()" "### $MSG_FETCHING_GPG $MSG_DONE!"
        rivar "MSG_VGPGSIG"
        MSG_VGPGSIG=`echo "$MSG_VGPGSIG" | sed s/'%X'/''${SHORT}''/\g`
        echo -n "%%% $MSG_VGPGSIG "
        if test `gpg --verify --status-fd 1 $1.asc $1 2>&1 | grep -i "^\[GNUPG:\] NO_PUBKEY" | wc -l` -ne 0; then
          echo "$MSG_DONE!"
          logme "gpg_check()" "%%% $MSG_VGPGSIG $MSG_DONE!"
          if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
            rivar "MSG_GPGCHECK1_PAT"
            MSG_GPGCHECK1_PAT=`echo "$MSG_GPGCHECK1_PAT" | sed s/'%X'/''${SHORT}''/\g`
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK1_PAT $MSG_FAILED!"
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK2"
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK3"
            touch $SHORT.gpg.lock 2>/dev/null
            rm -f $1.corrupted 2>/dev/null
          else
            rivar "MSG_GPGCHECK1_PAC"
            MSG_GPGCHECK1_PAC=`echo "$MSG_GPGCHECK1_PAC" | sed s/'%X'/''${SHORT}''/\g`
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK1_PAC $MSG_FAILED!"
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK2"
            MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCHECK3"
            touch $SHORT.gpg.lock 2>/dev/null
            rm -f $1.corrupted 2>/dev/null
          fi
        else
          if test `gpg --verify --status-fd 1 $1.asc $1 2>&1 | egrep "^\[GNUPG:\] GOODSIG" | wc -l` -eq 0; then 
            echo "$MSG_DONE!"
            logme "gpg_check()" "%%% $MSG_VGPGSIG $MSG_DONE!"
            if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
              rivar "MSG_GPGCORR_PAT"
              MSG_GPGCORR_PAT=`echo "$MSG_GPGCORR_PAT" | sed s/'%X'/''${SHORT}''/\g`
              MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCORR_PAT"
              touch $1.corrupted 2>/dev/null
              rm -f $SHORT.gpg.lock 2>/dev/null 
              rm -f $1* 2>/dev/null
            else
              rivar "MSG_GPGCORR_PAC"
              MSG_GPGCORR_PAC=`echo "$MSG_GPGCORR_PAC" | sed s/'%X'/''${SHORT}''/\g`
              MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGCORR_PAC"
              touch $1.corrupted 2>/dev/null
              rm -f $SHORT.gpg.lock 2>/dev/null
              rm -f $1* 2>/dev/null
            fi
          else
            echo "$MSG_DONE!"
            logme "gpg_check()" "%%% $MSG_VGPGSIG $MSG_DONE!"
            if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
              rivar "MSG_GPGOK_PAT"
              MSG_GPGOK_PAT=`echo "$MSG_GPGOK_PAT" | sed s/'%X'/''${SHORT}''/\g`
              MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGOK_PAT"
              touch $SHORT.gpg.lock 2>/dev/null
              rm -f $1.corrupted 2>/dev/null
            else
              rivar "MSG_GPGOK_PAC"
              MSG_GPGOK_PAC=`echo "$MSG_GPGOK_PAC" | sed s/'%X'/''${SHORT}''/\g`
              MSG "gpg_check()" "=> <GPGCHECK> $MSG_GPGOK_PAC"
              touch $SHORT.gpg.lock 2>/dev/null
              rm -f $1.corrupted 2>/dev/null
            fi
          fi
        fi
      else
        logme "gpg_check()" "### $MSG_FETCHING_GPG... $MSG_FAILED!"
        logme "gpg_check()" "%%% $MSG_VGPGSIG $MSG_FAILED!"
        if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
          rivar "MSG_GPGCHECK_PAT"
          MSG_GPGCHECK_PAT=`echo "$MSG_GPGCHECK_PAT" | sed s/'%X'/''${SHORT}''/\g`
          MSG "gpg_check()" "=> $MSG_GPGCHECK_PAT $MSG_SKIPPED!"
          touch $SHORT.gpg.lock 2>/dev/null
          rm -f $1.corrupted 2>/dev/null
        else
          rivar "MSG_GPGCHECK_PAC"
          MSG_GPGCHECK_PAC=`echo "$MSG_GPGCHECK_PAC" | sed s/'%X'/''${SHORT}''/\g`
          MSG "gpg_check()" "=> $MSG_GPGCHECK_PAC $MSG_SKIPPED!"
          touch $SHORT.gpg.lock 2>/dev/null
          rm -f $1.corrupted 2>/dev/null
        fi
      fi
    fi
  fi
}

gfile()
{
  if [ -z $4 ]; then
    rm -f gfile.lock 2>/dev/null
    if [[ "$RANDOMR" == "1" ]]; then
      GFILEROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
    else
      GFILEROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
    fi
    for GFILER in $GFILEROOTS; do
      if [ -f gfile.lock ]; then
        break
      else
        if [ -z $Q ]; then
          if test `echo "$GFILER" | grep -c "file:"` -ge 1; then
            QS="-n"
          else
            QS=""
          fi
        fi
        if test `echo $GFILER | grep -c "file:"` -ge 1; then
          rTMP=`echo $GFILER | sed s/'file:'//`
        fi
        rm -f $1.tmp 2>/dev/null
        SHORT=`echo $1 | sed -e "s/.*\///g"`
        SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
        if [ -f $1 ]; then
          SIZEFILETMP=`ls -alL $1 2>/dev/null | awk '{print$5}'`
          SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
          SWAPME=0
          if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
            rivar "MSG_FOUNDPAT"
            MSG_FOUNDPAT=`echo "$MSG_FOUNDPAT" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
            MSG "gfile()" "$MSG_FOUNDPAT $CDIR!"
            checkcom "$1" "$2"
            if [ ! -f $1.complete ]; then
              rfile "$1" "$2" "2"
            fi
            SWAPME=1
          fi
          if [[ "$3" = "-s" || "$3" = "-as" ]]; then
            if test $SIZEFILE -eq 0; then
              rivar "MSG_FOUNDSRC_B"
              MSG_FOUNDSRC_B=`echo "$MSG_FOUNDSRC_B" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILETMP/\g`
              MSG "gfile()" "$MSG_FOUNDSRC_B $CDIR!"
            else
              rivar "MSG_FOUNDSRC_KB"
              MSG_FOUNDSRC_KB=`echo "$MSG_FOUNDSRC_KB" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
              MSG "gfile()" "$MSG_FOUNDSRC_KB $CDIR!"
            fi
            checkcom "$1" "$2"
            if [ ! -f $1.complete ]; then
              rfile "$1" "$2" "3"
              checkcom "$1" "$2"
              if [ -f $1.complete ]; then
                mv $1 sources/ 2>/dev/null
              fi
            else
              mv $1 sources/ 2>/dev/null
            fi
            SWAPME=1
          fi
          if test $SWAPME -eq 0; then
            rivar "MSG_FOUNDPAC"
            MSG_FOUNDPAC=`echo "$MSG_FOUNDPAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g` 
            MSG "gfile()" "$MSG_FOUNDPAC $CDIR!"
            checkcom "$1" "$2"
            if [ ! -f $1.complete ]; then
              rfile "$1" "$2" "1"
            fi
          fi
          touch gfile.lock 2>/dev/null
        else
          if [[ "$3" = "-s" || "$3" = "-as" ]]; then
            if [ -f sources/$1 ]; then
              SIZEFILETMP=`ls -alL sources/$1 2>/dev/null | awk '{print$5}'`
              SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
              if test $SIZEFILE -eq 0; then
                rivar "MSG_FOUNDSRC_B"
                MSG_FOUNDSRC_B=`echo "$MSG_FOUNDSRC_B" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILETMP/\g`
                MSG "gfile()" "$MSG_FOUNDSRC_B $CDIR/sources!"
              else
                rivar "MSG_FOUNDSRC_KB"
                MSG_FOUNDSRC_KB=`echo "$MSG_FOUNDSRC_KB" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
                MSG "gfile()" "$MSG_FOUNDSRC_KB $CDIR/sources!"
              fi
              break
            fi
          fi
          SWAPME=0
          if [[ "$3" == "-p" || "$3" == "-ap" ]]; then
            SIZEFILETMP=`grep "./patches.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
            SWAPME=1
          fi
          if [[ "$3" == "-s" || "$3" == "-as" ]]; then
            SIZEFILETMP=`grep "./source.*$1$" .cache/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
            SWAPME=1
          fi
          if test $SWAPME -eq 0; then
            if [ -z $4 ]; then
              eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
              SIZEFILETMP=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$|./patches.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | grep "$2" | awk '{if(NR==1)print$1}'`
            else
              SIZEFILETMP=`grep "$1" repos/$4/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
            fi
          fi
          if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
#
#
          SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
          MSG "gfile()" "[ $GFILER ]"
          if test $SIZEFILE -eq 0; then
            rivar "MSG_FETCHING_PKG_BYTES"
            MSG_FETCHING_PKG_BYTES=`echo "$MSG_FETCHING_PKG_BYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILETMP/\g`
            echo $QS "### $MSG_FETCHING_PKG_BYTES "
          else
            rivar "MSG_FETCHING_PKG_KILOBYTES"
            MSG_FETCHING_PKG_KILOBYTES=`echo "$MSG_FETCHING_PKG_KILOBYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
            echo $QS "### $MSG_FETCHING_PKG_KILOBYTES "
          fi
          if test `echo $GFILER | grep -c "rsync:"` -ge 1; then
            if [ ! -z $Q ]; then
              rsync_file "$GFILER" "$2"
              count_size "$1" "$2" "$3"
            else
              rsync_file_s "$GFILER" "$2"
              touch_it "$1"
            fi
          else
            if test `echo $GFILER | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/$2 ]; then
                copy_file "$rTMP" "$2"
                touch_it "$1"
              fi
            else
              if [ ! -z $Q ]; then
                wget_file "$GFILER" "$2"
                count_size "$1" "$2" "$3"
              else
                wget_file_s "$GFILER" "$2"
                touch_it "$1"
              fi
            fi
          fi
          if [ -f $1.tmp ]; then
            if test `echo $GFILER | grep -c "file:"` -ge 1; then
              echo "$MSG_DONE!"
            else
              if [ ! -z $Q ]; then
                echo " $MSG_DONE!"
              fi
            fi
            SWAPME=0
            if test $SIZEFILE -eq 0; then
              rivar "MSG_FETCHING_PKG_BYTES"
              MSG_FETCHING_PKG_BYTES=`echo "$MSG_FETCHING_PKG_BYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILETMP/\g`
              logme "gfile()" "### $MSG_FETCHING_PKG_BYTES $MSG_DONE!"
            else
              rivar "MSG_FETCHING_PKG_KILOBYTES"
              MSG_FETCHING_PKG_KILOBYTES=`echo "$MSG_FETCHING_PKG_KILOBYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
              logme "gfile()" "### $MSG_FETCHING_PKG_KILOBYTES $MSG_DONE!"
            fi
            if [[ "$3" = "-p" || "$3" = "-ap" ]]; then
              checksum "$1" "$2" 2
              SWAPME=1
            fi
            if [[ "$3" = "-s" || "$3" = "-as" ]]; then
              checksum "$1" "$2" 3
              SWAPME=1
            fi
            if test $SWAPME -eq 0; then
              checksum "$1" "$2" 1 "$4"
            fi
            if [[ "$3" == "-s" || "$3" == "-as" ]]; then
              if [ -f $1 ]; then
                gbs "$1" "$2"
                count_size_total "$SIZEFILETMP"
                mv $1 sources/ 2>/dev/null
              fi
            else
              if [ -f $1 ]; then
                gpg_check "$1" "$2" "$3"
                if [ -f $1 ]; then
                  count_size_total "$SIZEFILETMP" 
                fi
              fi
            fi
            touch gfile.lock 2>/dev/null
            break
          else
            if test `echo $GFILER | grep -c "file:"` -ge 1; then
              echo "$MSG_FAILED!"
            else
              if [ ! -z $Q ]; then
                echo " $MSG_FAILED!"
              fi
            fi
            if test $SIZEFILE -eq 0; then
              rivar "MSG_FETCHING_PKG_BYTES"
              MSG_FETCHING_PKG_BYTES=`echo "$MSG_FETCHING_PKG_BYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILETMP/\g`
              logme "gfile()" "### $MSG_FETCHING_PKG_BYTES $MSG_FAILED!"
            else
              rivar "MSG_FETCHING_PKG_KILOBYTES"
              MSG_FETCHING_PKG_KILOBYTES=`echo "$MSG_FETCHING_PKG_KILOBYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
              logme "gfile()" "### $MSG_FETCHING_PKG_KILOBYTES $MSG_FAILED!"
            fi
            rm -f $1.tmp 2>/dev/null
          fi
        fi
      fi
    done
  else
    RROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | grep "=$4%" | cut -f2 -d'=' | cut -f2 -d%`
    for R in $RROOTS; do
      if [ -z $Q ]; then
        if test `echo "$R" | grep -c "file:"` -ge 1; then
          QS="-n"
        else
          QS=""
        fi
      fi
      rm -f $1 2>/dev/null
      if test `echo $R | grep -c "file:"` -ge 1; then
        rTMP=`echo $R | sed s/'file:'//`
      fi
      SHORT=`echo $1 | sed -e "s/.*\///g"`
      SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)$//"`
      if [ -f repos/$4/$1 ]; then
        SIZEFILETMP=`ls -alL repos/$4/$1 2>/dev/null | awk '{print$5}'`
        SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
        rivar "MSG_FOUNDRPAC"
        MSG_FOUNDRPAC=`echo "$MSG_FOUNDRPAC" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
        MSG "gfile()" "$MSG_FOUNDRPAC $CDIR/repos/$4!"
        rsize_total "$SIZEFILETMP"
      else
        SIZEFILETMP=`grep "$1$" repos/$4/FILELIST.TXT 2>/dev/null | grep "$2" | awk '{if(NR==1)print$1}'`
        if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
        SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
        rivar "MSG_FETCHING_PKG_KILOBYTES"
        MSG_FETCHING_PKG_KILOBYTES=`echo "$MSG_FETCHING_PKG_KILOBYTES" | sed s/'%X'/''${SHORT}''/\g | sed s/'%Y'/$SIZEFILE/\g`
        MSG "gfile()" "[ $R ]"
        echo $QS "### $MSG_FETCHING_PKG_KILOBYTES "
        if test `echo $R | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync_file "$R" "$2"
            count_size "$1" "$2" "$3" "$4"
          else
            rsync_file_s "$R" "$2"
            touch_it "$1"
          fi
        else
          if test `echo $R | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/$2 ]; then
              copy_file "$rTMP" "$2"
              touch_it "$1"
            fi
          else
            if [ ! -z $Q ]; then
              wget_file "$R" "$2"
              count_size "$1" "$2" "$3" "$4"
            else
              wget_file_s "$R" "$2"
              touch_it "$1"
            fi
          fi
        fi
        if [ -f $1.tmp ]; then
          if test `echo $R | grep -c "file:"` -ge 1; then
            echo "$MSG_DONE!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_DONE!"
            fi
          fi
          SWAPME=0
          if test $SIZEFILE -eq 0; then
            logme "gfile()" "### $MSG_FETCHING_PKG_BYTES $MSG_DONE!"
          else
            logme "gfile()" "### $MSG_FETCHING_PKG_KILOBYTES $MSG_DONE!"
          fi
          checksum "$1" "$2" 1 "$4"
          if [ -f $1 ]; then
            gpg_check "$1" "$2" "$3" "$4"
            if [ -f $1 ]; then
              count_size_total "$SIZEFILETMP"
              mv $1 repos/$4/ 2>/dev/null
              rivar "MSG_XHSAVED"
              MSG_XHSAVED=`echo "$MSG_XHSAVED" | sed s:"%X":"$SHORT":\g`
              MSG "gfile()" "=> $MSG_XHSAVED $CDIR/repos/$4!"
            fi
          fi
          break
        else
          if test `echo $R | grep -c "file:"` -ge 1; then
            echo "$MSG_FAILED!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_FAILED!"
            fi
          fi
          if test $SIZEFILE -eq 0; then
            logme "gfile()" "### $MSG_FETCHING_PKG_BYTES $MSG_FAILED!"
          else
            logme "gfile()" "### $MSG_FETCHING_PKG_KILOBYTES $MSG_FAILED!"
          fi
        fi
      fi
      rm -f $1.tmp 2>/dev/null
    done
  fi
}

libmaker()
{
  rm -f MANIFEST* 2>/dev/null
  if [ -z $2 ]; then
    if [[ "$RANDOMR" == "1" ]]; then
      LROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
    else
      LROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
    fi
  else
    LROOTS="$2"
  fi
  for LR in $LROOTS; do
    if [ ! -f libmaker.lock ]; then
      if [ -z $Q ]; then
        if test `echo "$LR" | grep -c "file:"` -ge 1; then
          QS="-n"
        else
          QS=""
        fi
      fi
      if test `echo $LR | grep -c "file:"` -ge 1; then
        rTMP=`echo $LR | sed s/'file:'//`
      fi
      MSWAP=0
      if [ -z $2 ]; then
        if [ -f .cache/MANIFEST.slackware.bz2 ]; then
          MSIZE=`grep "./slackware.*MANIFEST.bz2$" .cache/.slock.FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$5}'`
          FMSIZE=`ls -al .cache/MANIFEST.slackware.bz2 | awk '{print$5}'`
          if [[ "$MSIZE" != "$FMSIZE" ]]; then
            rm -f .cache/MANIFEST.slackware.bz2 2>/dev/null
            MSWAP=0
          else
            MSG "libmaker()" "$MSG_LIBPPAC"
            MSWAP=1
          fi
        else
          MSWAP=0
        fi
      fi
      if test $MSWAP -eq 0; then
        MSG "libmaker()" "[ $LR ]"
        echo $QS "### $MSG_FETCHING_LPPAC "
        if test `echo $LR | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync_file "$LR" "/slackware/MANIFEST.bz2"
            progress "MANIFEST.bz2"
          else
            rsync_file_s "$LR" "/slackware/MANIFEST.bz2"
          fi
        else
          if test `echo "$LR" | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/slackware/MANIFEST.bz2 ]; then
              copy_file "$rTMP" "/slackware/MANIFEST.bz2"
            fi
          else
            if [ ! -z $Q ]; then
              wget_file "$LR" "/slackware/MANIFEST.bz2"
              progress "MANIFEST.bz2"
            else
              wget_file_s "$LR" "/slackware/MANIFEST.bz2"
            fi
          fi
        fi
        if [ -f MANIFEST.bz2 ]; then
          if test `echo $LR | grep -c "file:"` -ge 1; then
            echo "$MSG_DONE!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_DONE!"
            fi
          fi
          logme "libmaker()" "### $MSG_FETCHING_LPPAC $MSG_DONE!"
          mv MANIFEST.bz2 .cache/MANIFEST.slackware.bz2 2>/dev/null
        else
          if test `echo $LR | grep -c "file:"` -ge 1; then
            echo "$MSG_FAILED!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_FAILED!"
            fi
          fi
          logme "libmaker()" "### $MSG_FETCHING_LPPAC $MSG_FAILED!"
        fi
      fi
      MSWAP=0
      if [ -z $2 ]; then
        if [ -f .cache/MANIFEST.extra.bz2 ]; then
          MSIZE=`grep "./extra.*MANIFEST.bz2$" .cache/.slock.FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$5}'`
          FMSIZE=`ls -al .cache/MANIFEST.extra.bz2 | awk '{print$5}'`
          if [[ "$MSIZE" != "$FMSIZE" ]]; then
            rm -f .cache/MANIFEST.extra.bz2 2>/dev/null
            MSWAP=0
          else
            MSG "libmaker()" "$MSG_LIBPEXT"
            MSWAP=1
          fi
        else
          MSWAP=0
        fi
      fi
      if test $MSWAP -eq 0; then
        echo $QS "### $MSG_FETCHING_LPEXT "
        if test `echo $LR | grep -c "rsync:"` -ge 1; then
          if [ ! -z $Q ]; then
            rsync_file "$LR" "/extra/MANIFEST.bz2"
            progress "MANIFEST.bz2"
          else
            rsync_file_s "$LR" "/extra/MANIFEST.bz2"
          fi
        else
          if test `echo $LR | grep -c "file:"` -ge 1; then
            if [ -f $rTMP/extra/MANIFEST.bz2 ]; then
              copy_file "$rTMP" "/extra/MANIFEST.bz2"
            fi
          else
            if [ ! -z $Q ]; then
              wget_file "$LR" "/extra/MANIFEST.bz2"
              progress "MANIFEST.bz2"
            else
              wget_file_s "$LR" "/extra/MANIFEST.bz2"
            fi
          fi
        fi
        if [ -f MANIFEST.bz2 ]; then
          if test `echo $LR | grep -c "file:"` -ge 1; then
            echo "$MSG_DONE!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_DONE!"
            fi
          fi
          logme "libmaker()" "### $MSG_FETCHING_LPEXT $MSG_DONE!"
            mv MANIFEST.bz2 .cache/MANIFEST.extra.bz2 2>/dev/null
        else
          if test `echo $LR | grep -i "file:" | wc -l` -ge 1; then
            echo "$MSG_FAILED!"
          else
            if [ ! -z $Q ]; then
              echo " $MSG_FAILED!"
            fi
          fi
          logme "libmaker()" "### $MSG_FETCHING_LPEXT $MSG_FAILED!"
        fi
      fi
      if [[ "$VERSION" != "current" ]]; then
        MSWAP=0
        if [ -z $2 ]; then
          if [ -f .cache/MANIFEST.patches.bz2 ]; then
            MSIZE=`grep "./patches.*MANIFEST.bz2$" .cache/.slock.FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$5}'`
            FMSIZE=`ls -al .cache/MANIFEST.patches.bz2 | awk '{print$5}'`
            if [[ "$MSIZE" != "$FMSIZE" ]]; then
              rm -f .cache/MANIFEST.patches.bz2 2>/dev/null
              MSWAP=0
            else
              MSG "libmaker()" "$MSG_LIBPPAT"
              MSWAP=1
            fi
          else
            MSWAP=0
          fi
        fi
        if test $MSWAP -eq 0; then
          echo $QS "### $MSG_FETCHING_LPPAT "
          if test `echo $LR | grep -c "rsync:"` -ge 1; then
            if [ ! -z $Q ]; then
              rsync_file "$LR" "/patches/MANIFEST.bz2"
              progress "MANIFEST.bz2"
            else
              rsync_file_s "$LR" "/patches/MANIFEST.bz2"
            fi
          else
            if test `echo $LR | grep -c "file:"` -ge 1; then
              if [ -f $rTMP/patches/MANIFEST.bz2 ]; then
                copy_file "$rTMP" "/patches/MANIFEST.bz2"
              fi
            else
              if [ ! -z $Q ]; then
                wget_file "$LR" "/patches/MANIFEST.bz2"
                progress "MANIFEST.bz2"
              else
                wget_file_s "$LR" "/patches/MANIFEST.bz2"
              fi
            fi
          fi
          if [ -f MANIFEST.bz2 ]; then
            if test `echo $LR | grep -c "file:"` -ge 1; then
              echo "$MSG_DONE!"
            else
              if [ ! -z $Q ]; then
                echo " $MSG_DONE!"
              fi
            fi
            logme "libmaker()" "### $MSG_FETCHING_LPPAT $MSG_DONE!"
            mv MANIFEST.bz2 .cache/MANIFEST.patches.bz2 2>/dev/null
          else
            if test `echo $LR | grep -c "file:"` -ge 1; then
              echo "$MSG_FAILED!"
            else
              if [ ! -z $Q ]; then
                echo " $MSG_FAILED!"
              fi
            fi
            logme "libmaker()" "### $MSG_FETCHING_LPPAT $MSG_FAILED!"
          fi
        fi
      fi
    fi
    LSWAP=0
    if [ ! -f .cache/MANIFEST.slackware.bz2 ]; then
      LSWAP=1
    fi
    if test $LSWAP -eq 0; then
      touch libmaker.lock 2>/dev/null
      break
    fi
  done
  SWAPME=0
  if [ -z $2 ]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -eq 0; then
      SWAPME=1
    fi
  fi
  if test $SWAPME -eq 0; then
    if test `ls .cache/MANIFEST.slackware.bz2 2>/dev/null | wc -l` -eq 0; then
      echo
      MSGERR "libmaker()" "$MSG_UNABLEFLIBPKG"
    fi
    echo -n "=> $MSG_UNCLIBPPAC "
    cp .cache/MANIFEST.slackware.bz2 MANIFEST.slackware.bz2 2>/dev/null
    bunzip2 MANIFEST.slackware.bz2 2>/dev/null
    if [ -f MANIFEST.slackware ]; then
      echo "$MSG_DONE!"
      logme "libmaker()" "=> $MSG_UNCLIBPPAC $MSG_DONE!"
    else
      echo "$MSG_FAILED!"
      logme "libmaker()" "=> $MSG_UNCLIBPPAC $MSG_FAILED!"
    fi
    echo -n "=> $MSG_UNCLIBPEXT "
    cp .cache/MANIFEST.extra.bz2 MANIFEST.extra.bz2 2>/dev/null
    bunzip2 MANIFEST.extra.bz2 2>/dev/null
    if [ -f MANIFEST.extra ]; then
      echo "$MSG_DONE!"
      logme "libmaker()" "=> $MSG_UNCLIBPEXT $MSG_DONE!"
    else
      echo "$MSG_FAILED!"
      logme "libmaker()" "=> $MSG_UNCLIBPEXT $MSG_FAILED!"
    fi
    if [[ "$VERSION" != "current" ]]; then
      echo -n "=> $MSG_UNCLIBPPAT "
      cp .cache/MANIFEST.patches.bz2 MANIFEST.patches.bz2 2>/dev/null
      bunzip2 MANIFEST.patches.bz2 2>/dev/null
      if [ -f MANIFEST.patches ]; then
        echo "$MSG_DONE!"
        logme "libmaker()" "=> $MSG_UNCLIBPPAT $MSG_DONE!"
      else
        echo "$MSG_FAILED!"
        logme "libmaker()" "=> $MSG_UNCLIBPPAT $MSG_FAILED!"
      fi
    fi
  fi
}

rlibmaker()
{
  if [[ "$1" == "1" ]]; then
    if [ -z $Q ]; then
      if test `echo "$RURL" | grep -c "file:"` -ge 1; then
        QS="-n"
      else
        QS=""
      fi
    fi
    if test `echo $RURL | grep -c "file:"` -ge 1; then
      rTMP=`echo $RURL | sed s/'file:'//`
    fi
    MSWAP=0
    if [ -f $CDIR/repos/$RNAME/MANIFEST.bz2 ]; then
      MSIZE=`grep "MANIFEST.bz2$" $CDIR/repos/$RNAME/.slock.FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$5}'`
      FMSIZE=`ls -al $CDIR/repos/$RNAME/MANIFEST.bz2 | awk '{print$5}'`
      if [[ "$MSIZE" != "$FMSIZE" ]]; then
        rm -f $CDIR/repos/$RNAME/MANIFEST.bz2 2>/dev/null
        MSWAP=0
      else
        rivar "MSG_LIBRPAC"
        MSG_LIBRPAC=`echo "$MSG_LIBRPAC" | sed s:"%X":"$RNAME":\g`
        MSG "rlibmaker()" "$MSG_LIBRPAC"
        MSWAP=1
      fi
    else
      MSWAP=0
    fi
    if test $MSWAP -eq 0; then
      MSG "rlibmaker()" "[ $RURL ]"
      rivar "MSG_FETCHING_RLPPAC"
      MSG_FETCHING_RLPPAC=`echo "$MSG_FETCHING_RLPPAC" | sed s:"%X":"$RNAME":\g`
      echo $QS "### $MSG_FETCHING_RLPPAC "
      if test `echo $RURL | grep -c "rsync:"` -ge 1; then
        if [ ! -z $Q ]; then
          rsync_file "$RURL" "/MANIFEST.bz2"
          progress "MANIFEST.bz2"
        else
          rsync_file_s "$RURL" "/MANIFEST.bz2"
        fi
      else
        if test `echo $RURL | grep -c "file:"` -ge 1; then
          if [ -f $rTMP/MANIFEST.bz2 ]; then
            copy_file "$rTMP" "/MANIFEST.bz2"
          fi
        else
          if [ ! -z $Q ]; then
            wget_file "$RURL" "/MANIFEST.bz2"
            progress "MANIFEST.bz2"
          else
            wget_file_s "$RURL" "/MANIFEST.bz2"
          fi
        fi
      fi
      if [ -f MANIFEST.bz2 ]; then
        if test `echo $RURL | grep -c "file:"` -ge 1; then
          echo "$MSG_DONE!"
        else
          if [ ! -z $Q ]; then
            echo "$MSG_DONE!"
          fi
        fi
        mv MANIFEST.bz2 $CDIR/repos/$RNAME/MANIFEST.bz2 2>/dev/null
        logme "rlibmaker()" "### $MSG_FETCHING_RLPPAC $MSG_DONE"
      else
        if test `echo $RURL | grep -c "file:"` -ge 1; then
          echo "$MSG_FAILED!"
        else
          if [ ! -z $Q ]; then
            echo "$MSG_FAILED!"
          fi
        fi
        logme "rlibmaker()" "### $MSG_FETCHING_RLPPAC $MSG_FAILED"
      fi
    fi
  fi
  if [[ "$1" == "2" ]]; then
    if [ -f repos/$RNAME/MANIFEST.bz2 ]; then
      rivar "MSG_UNCLIBPRPAC"
      MSG_UNCLIBPRPAC=`echo "$MSG_UNCLIBPRPAC" | sed s:"%X":"$RNAME":\g`
      echo -n "=> $MSG_UNCLIBPRPAC "
      cp repos/$RNAME/MANIFEST.bz2 $CDIR/MANIFEST.$RNAME.bz2 2>/dev/null
      bunzip2 $CDIR/MANIFEST.$RNAME.bz2 2>/dev/null
      if [ -f $CDIR/MANIFEST.$RNAME ]; then
        echo "$MSG_DONE!"
        logme "rlibmaker()" "=> $MSG_UNCLIBPRPAC $MSG_DONE!"
      else
        echo "$MSG_FAILED!"
        logme "rlibmaker()" "=> $MSG_UNCLIBPRPAC $MSG_FAILED!"
      fi
    fi
  fi
}

createliblist()
{
  rm -f MANIFEST.tmp 2>/dev/null
  if test `ls MANIFEST* 2>/dev/null | grep -vc "bz2$"` -ne 0; then
    echo -n "%%% $MSG_DPACLIBN "
    for i in `ls MANIFEST* 2>/dev/null | grep -v "bz2$"`; do
      cat $i >> MANIFEST.tmp 2>/dev/null
    done
    if [ -f MANIFEST.tmp ]; then
      echo "$MSG_DONE!"
      logme "createliblist()" "%%% $MSG_DPACLIBN $MSG_DONE!"
    else
      echo "$MSG_FAILED!"
      logme "createliblist()" "%%% $MSG_DPACLIBN $MSG_FAILED!"
    fi
  fi
  if [ -f MANIFEST.tmp ]; then
    egrep -i '[.]so[.]|Package:' MANIFEST.tmp > MANIFEST2.tmp 2>/dev/null
    TOTALLINES=`wc -l MANIFEST2.tmp 2>/dev/null | awk {'print $1'}`
    echo -n "%%% $MSG_APACNLIBS "
    TOTAL=0
    echo -n "+++++++++++"
    COUNTER=0
    SWAPME=0
    COUNTME=0
    for i in 0 1 2 3 4 5 6 7 8 9; do
      PSWAP[$i]=0
    done
    for((COUNT=1; COUNT <= TOTALLINES ; COUNT++)); do
      COUNTER=`expr $COUNTER + 1`
      TCOUNTER=`expr $COUNTER \* 10 / $TOTALLINES`
      if test $TCOUNTER -ge 0; then
        if test $TCOUNTER -le 10; then
          case $TCOUNTER in
            "0")
                if test ${PSWAP[0]} -eq 0; then
                  printf "\b "
                  PSWAP[0]=1;
                fi
                ;;
            "1")
                if test ${PSWAP[1]} -eq 0; then
                  printf "\b\b  "
                  PSWAP[1]=1;
                fi
                ;;
            "2")
                if test ${PSWAP[2]} -eq 0; then
                  printf "\b\b\b   "
                  PSWAP[2]=1;
                fi
                ;;
            "3")
                if test ${PSWAP[3]} -eq 0; then
                  printf "\b\b\b\b    "
                  PSWAP[3]=1;
                fi
                ;;
            "4")
                if test ${PSWAP[4]} -eq 0; then
                  printf "\b\b\b\b\b     "
                  PSWAP[4]=1;
                fi
                ;;
            "5")
                if test ${PSWAP[5]} -eq 0; then
                  printf "\b\b\b\b\b\b      "
                  PSWAP[5]=1;
                fi
                ;;
            "6")
                if test ${PSWAP[6]} -eq 0; then
                  printf "\b\b\b\b\b\b\b       "
                  PSWAP[6]=1;
                fi
                ;;
            "7")
                if test ${PSWAP[7]} -eq 0; then
                  printf "\b\b\b\b\b\b\b\b        "
                  PSWAP[7]=1;
                fi
                ;;
            "8")
                if test ${PSWAP[8]} -eq 0; then
                  printf "\b\b\b\b\b\b\b\b\b         "
                  PSWAP[8]=1;
                fi
                ;;
            "9")
                if test ${PSWAP[9]} -eq 0; then
                  printf "\b\b\b\b\b\b\b\b\b\b          "
                  PSWAP[9]=1;
                fi
                ;;
          esac
        fi
      fi
      if test $COUNTME -eq 0; then
        printf "\b\\"
      fi
      if test $COUNTME -eq 1; then
        printf "\b|"
      fi
      if test $COUNTME -eq 2; then
        printf "\b/"
      fi
      if test $COUNTME -eq 3; then
        printf "\b-"
      fi
      LINE=`sed -n $(echo $COUNT)p MANIFEST2.tmp  2>/dev/null`
      if [[ "`echo $LINE | awk {'print $2'}`" == "Package:" ]]; then
        PACKAGE=`basename "$LINE"`
      else
        echo $LINE | awk {'print $6'} | sed -e 's/.*/'$PACKAGE': &/' >> output.tmp
      fi
      if test $COUNTME -eq 4; then
        COUNTME=0
      else
        COUNTME=`expr $COUNTME + 1`
      fi
    done
    printf "\b\b\b\b\b\b\b\b\b\b\b"
    echo -n "           "
    printf "\b\b\b\b\b\b\b\b\b\b\b"
    echo -n "$MSG_DONE!"
    logme "createliblist()" "$MSG_APACNLIBS $MSG_DONE!"
    if [ -f output.tmp ]; then
      cat output.tmp 2>/dev/null | sort -t : -k 1 -r >> libraries-list 2>/dev/null
      rm -f output.tmp 2>/dev/null
    fi
  fi
}

getliblist()
{
  if [[ "$RANDOMR" == "1" ]]; then
    LROOTS=`for o in $(grep ^DEP_ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
  else
    LROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^DEP_ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
  fi
  for i in $LROOTS; do
    if [ -z $Q ]; then
      if test `echo "$i" | grep -c "file:"` -ge 1; then
        QS="-n"
      else
        QS=""
      fi
    fi
    if test `echo $i | grep -c "file:"` -ge 1; then
      rTMP=`echo $i | sed s/'file:'//`
    fi
    MSG "getliblist()" "[ $i ]"
    echo $QS "### $MSG_FETCHING_LLL "
    if test `echo $i | grep -c "rsync:"` -ge 1; then
      if [ ! -z $Q ]; then
        rsync --timeout=$TIMEOUT -q $i/libraries-$VERSION libraries-$VERSION 2>/dev/null &
        progress "libraries-$VERSION"
      else
        rsync --timeout=$TIMEOUT --progress -vv $i/libraries-$VERSION libraries-$VERSION
      fi
    else
      if test `echo $i | grep -c "file:"` -ge 1; then
        if [ -f $rTMP/libraries-$VERSION ]; then
          copy_file "$rTMP" "libraries-$VERSION"
        fi
      else
        if [ ! -z $Q ]; then
          wget $PROXY $PF -t $RETRIES -T $TIMEOUT -q $i/libraries-$VERSION 2>/dev/null &
          progress "libraries-$VERSION"
        else
          wget $PROXY $PF -t $RETRIES -T $TIMEOUT $i/libraries-$VERSION
        fi
      fi
    fi
    if [ -f libraries-$VERSION ]; then
      if [ ! -z $Q ]; then
        echo "$MSG_DONE!"
      else
        if test `echo $i | grep -c "file:"` -ge 1; then
          echo "$MSG_DONE!"
        fi
      fi
      logme "getliblist()" "### $MSG_FETCHING_LLL $MSG_DONE"
      break
    else
      if [ ! -z $Q ]; then
        echo "$MSG_FAILED!"
      else
        if test `echo $i | grep -c "file:"` -ge 1; then
          echo "$MSG_FAILED!"
        fi
      fi
      logme "getliblist()" "### $MSG_FETCHING_LLL $MSG_FAILED!"
    fi
  done
}

getrliblist()
{
  if [ -z $Q ]; then
    if test `echo "$RURL" | grep -c "file:"` -ge 1; then
      QS="-n"
    else
      QS=""
    fi
  fi
  if test `echo $RURL | grep -c "file:"` -ge 1; then
    rTMP=`echo $RURL | sed s/'file:'//`
  fi
  MSG "getrliblist()" "[ $RURL ]"
  rivar "MSG_FETCHING_RLLL"
  MSG_FETCHING_RLLL=`echo "$MSG_FETCHING_RLLL" | sed s:'%X':"$RNAME":\g`
  echo $QS "### $MSG_FETCHING_RLLL "
  if test `echo $RURL | grep -c "rsync:"` -ge 1; then
    if [ ! -z $Q ]; then
      rsync --timeout=$TIMEOUT -q $RURL/libraries-repository libraries-repository 2>/dev/null &
      progress "libraries-repository"
    else
      rsync --timeout=$TIMEOUT --progress -vv $RURL/libraries-repository libraries-repository
    fi
  else
    if test `echo $RURL | grep -c "file:"` -ge 1; then
      if [ -f $rTMP/libraries-repository ]; then
        copy_file "$rTMP" "libraries-repository"
      fi
    else
      if [ ! -z $Q ]; then
        wget $PROXY $PF -t $RETRIES -T $TIMEOUT -q $RURL/libraries-repository 2>/dev/null &
        progress "libraries-repository"
      else
        wget $PROXY $PF -t $RETRIES -T $TIMEOUT $RURL/libraries-repository
      fi
    fi
  fi
  if [ -f libraries-repository ]; then
    if [ ! -z $Q ]; then
      echo "$MSG_DONE!"
    else
      if test `echo $RURL | grep -c "file:"` -ge 1; then
        echo "$MSG_DONE!"
      fi
    fi
    logme "getrliblist()" "### $MSG_FETCHING_RLLL $MSG_DONE"
    break
  else
    if [ ! -z $Q ]; then
      echo "$MSG_FAILED!"
    else
      if test `echo $RURL | grep -c "file:"` -ge 1; then
        echo "$MSG_FAILED!"
      fi
    fi
    logme "getrliblist()" "### $MSG_FETCHING_RLLL $MSG_FAILED!"
  fi
}

createpatchlist()
{
  TRIGVAR="$MSG_PATCHES"
  rm -f PKGLIST 2>/dev/null
  echo -n "$MSG_PLEASE_WAIT..."
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
    for i in `echo "$KW" | sed s/','/' '/\g`; do
      grep -i -E "\./patches.*$i.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}' | sed s/.// >> PKGLIST
      if [[ "$KW" != "." ]]; then
        getpkgbydesc_pat "$i"
      fi
    done
  fi
  show_pw
  sortandcount
}

createsrclist()
{
  TRIGVAR="$MSG_SOURCES"
  rm -f PKGLIST 2>/dev/null
  echo -n "$MSG_PLEASE_WAIT..."
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
    for i in `echo "$KW" | sed s/','/' '/\g`; do
      grep -i "./source/" .cache/FILELIST.TXT 2>/dev/null | grep $i | grep -vi build | awk '{print$2}' | sed s/.// >> PKGLIST
    done
  fi
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^REPOS_ROOT=.*%.*"` -ge 1; then
    for i in `echo "$KW" | sed s/','/' '/\g`; do
      RROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'='`
      for R in $RROOTS; do
        RNAME=`echo "$R" | cut -f1 -d'%'`
        RPKGS=`grep -i "/source/" repos/$RNAME/FILELIST.TXT 2>/dev/null | grep $i | awk '{print$2}' | sed s/.//`
        for x in $RPKGS; do
          echo "$RNAME%$x" >> PKGLIST 2>/dev/null
        done
      done
      if [[ "$KW" != "." ]]; then
        getpkgbydesc_rpac "$i"
      fi
    done
  fi

  show_pw
  sortandcount
}

createpkglist()
{
  TRIGVAR="$MSG_PACKAGES"
  rm -f PKGLIST 2>/dev/null
  echo -n "$MSG_PLEASE_WAIT..."
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
    if [ -z $1 ];then
      for i in `echo "$KW" | sed s/','/' '/\g`; do
        eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
        grep -i -E "\./slackware.*$eTMP.*($PKG_EXTS)$|\./extra.*$eTMP.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}' | sed s/.// >> PKGLIST 2>/dev/null
        if [[ "$KW" != "." ]]; then
          getpkgbydesc_pac "$i"
        fi
      done
    else
      for i in `echo "$KW" | sed s/','/' '/\g`; do
        eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
        grep -i -E "\./slackware.*$eTMP.*($PKG_EXTS)$|\./extra.*$eTMP.*($PKG_EXTS)$|\./patches.*$eTMP.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}' | sed s/.// >> PKGLIST 2>/dev/null
        if [[ "$KW" != "." ]]; then
          getpkgbydesc_pacall "$i"
        fi
      done
    fi
  fi
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^REPOS_ROOT=.*%.*"` -ge 1; then
    for i in `echo "$KW" | sed s/','/' '/\g`; do
      RROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'='`
      for R in $RROOTS; do
        RNAME=`echo "$R" | cut -f1 -d'%'`
        RPKGS=`grep -i -E ".*$i.*($PKG_EXTS)$" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{print$2}' | sed s/.//`
        for x in $RPKGS; do
          echo "$RNAME%$x" >> PKGLIST 2>/dev/null
        done
      done
      if [[ "$KW" != "." ]]; then
        getpkgbydesc_rpac "$i"
      fi
    done
  fi
  show_pw
  sortandcount
}

createilist()
{
  rm -f PKGLIST 2>/dev/null
  echo -n "$MSG_PLEASE_WAIT..."
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
    for i in `echo "$KW" | sed s/','/' '/\g`; do
      eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
      ls $PACKAGES_LOGDIR/*-*-*-* 2>/dev/null | grep -i ".*$eTMP.*" | grep -v ":" | sed -e "s/.*\///g" >> PKGLIST 2>/dev/null
    done
    if [[ "$KW" != "." ]]; then
      getpkgbydesc_ipac "$i"
    fi
  fi
  show_pw
  sortandcount
}

makelist()
{
  rm -f PKGLIST 2>/dev/null
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
    if test `ls .exclude/$SHORTPKG.exclude 2>/dev/null | wc -l` -eq 0; then
      CSWAP=1
      echo "$i" >> PKGLIST 2>/dev/null
      if test `echo "$i" | grep -c "%"` -ge 1; then
        RNAME=`echo $i | cut -f1 -d'%'`
        RPKG=`echo $i | cut -f2 -d'%'`
        SIZEFILETMP=`grep "$RPKG$" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
        SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
        iTMP="$RPKG"
        i=`echo $i | sed -e "s/.*\///g"`
        if [ ! -z "$1" ]; then
          if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -ge 1; then
            EXTRA="[$MSG_STATUS: $MSG_SINSTALLED]"
          else
            if test `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | wc -l` -ge 1; then
              SUBEXTRA=" ($MSG_UCASEINSTALLED: `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | sort -r | awk '{if(NR==1)print$1}'`)"
            else
              SUBEXTRA=""
            fi
            EXTRA="[$MSG_STATUS: $MSG_SNOTINSTALLED$SUBEXTRA]"
          fi
        fi
        if test $SIZEFILE -eq 0; then
          echo "$SHORT ($SIZEFILETMP $MSG_BYTES) ($RNAME) $EXTRA"
        else
          echo "$SHORT ($SIZEFILE $MSG_KILOBYTES) ($RNAME) $EXTRA"
        fi
        checkcom "$i" "$iTMP" "$RNAME"
        if [ ! -f $i.complete ]; then
          size_total "$SIZEFILETMP"
        fi
      else
        SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
        SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
        iTMP="$i"
        i=`echo $i | sed -e "s/.*\///g"`
        if [ ! -z "$1" ]; then
          if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -ge 1; then
            EXTRA="[$MSG_STATUS: $MSG_SINSTALLED]"
          else
            if test `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | wc -l` -ge 1; then
              SUBEXTRA=" ($MSG_UCASEINSTALLED: `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | sort -r | awk '{if(NR==1)print$1}'`)"
            else
              SUBEXTRA=""
            fi
            EXTRA="[$MSG_STATUS: $MSG_SNOTINSTALLED$SUBEXTRA]"
          fi
        fi
        if test $SIZEFILE -eq 0; then
          echo "$SHORT ($SIZEFILETMP $MSG_BYTES) $EXTRA"
        else
          echo "$SHORT ($SIZEFILE $MSG_KILOBYTES) $EXTRA"
        fi
        checkcom "$i" "$iTMP"
        if [ ! -f $i.complete ]; then
          size_total "$SIZEFILETMP"
        fi
      fi
    fi
  done
  sortandcount
}

makenlist()
{
  rm -f PKGLIST 2>/dev/null
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    sTMP=`echo $SHORTPKG | sed -e s/-[0-9].*//`
    if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -eq 0; then
      if test `ls .exclude/$SHORTPKG.exclude 2>/dev/null | wc -l` -eq 0; then
        CSWAP=1
        echo "$i" >> PKGLIST 2>/dev/null
        if test `echo "$i" | grep -c "%"` -ge 1; then
          RNAME=`echo $i | cut -f1 -d'%'`
          RPKG=`echo $i | cut -f2 -d'%'`
          SIZEFILETMP=`grep "$RPKG$" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
          SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
          iTMP="$RPKG"
          i=`echo $i | sed -e "s/.*\///g"`
          if test `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | wc -l` -ge 1; then
            EXTRA="($MSG_UCASEINSTALLED: `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | sort -r | awk '{if(NR==1)print$1}'`)"
          else
            EXTRA=""
          fi
          if test $SIZEFILE -eq 0; then
            echo "$SHORT ($SIZEFILETMP $MSG_BYTES) ($RNAME) $EXTRA"
          else
            echo "$SHORT ($SIZEFILE $MSG_KILOBYTES) ($RNAME) $EXTRA"
          fi
          checkcom "$i" "$iTMP" "$RNAME"
          if [ ! -f $i.complete ]; then
            size_total "$SIZEFILETMP"
          fi
        else
          SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
          SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
          iTMP="$i"
          i=`echo $i | sed -e "s/.*\///g"`
          if test `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | wc -l` -ge 1; then
            EXTRA="($MSG_UCASEINSTALLED: `ls $PACKAGES_LOGDIR/$sTMP-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | sort -r | awk '{if(NR==1)print$1}'`)"
          else
            EXTRA=""
          fi
          if test $SIZEFILE -eq 0; then
            echo "$SHORT ($SIZEFILETMP $MSG_BYTES) $EXTRA"
          else
            echo "$SHORT ($SIZEFILE $MSG_KILOBYTES) $EXTRA"
          fi
          checkcom "$i" "$iTMP"
          if [ ! -f $i.complete ]; then
            size_total "$SIZEFILETMP"
          fi
        fi
      fi
    fi
  done
  sortandcount
}

makeslist()
{
  rm -f PKGLIST 2>/dev/null
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    if test `ls .exclude/$SHORTPKG.exclude 2>/dev/null | wc -l` -eq 0; then
      echo "$i" >> PKGLIST 2>/dev/null
      CSWAP=1
      SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
      if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
      SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
      if test $SIZEFILE -eq 0; then
        echo "$SHORT ($SIZEFILETMP $MSG_BYTES) "
      else
        echo "$SHORT ($SIZEFILE $MSG_KILOBYTES) "
      fi
    fi
  done
  sortandcount
}

makeilist()
{
  rm -f PKGLIST 2>/dev/null
  for i in $PKGLIST; do
    if [ -f $PACKAGES_LOGDIR/$i ]; then
      if test `ls .exclude/$i.exclude.installed 2>/dev/null | wc -l` -eq 0; then
        echo "$i" >> PKGLIST 2>/dev/null
        CSWAP=1
        echo "$i"
      fi
    fi
  done
  sortandcount
}

makeulist()
{
  rm -f PKGLIST 2>/dev/null
  for x in $PKGLIST; do
    PKG_EXT=`echo $x | sed 's/.*\.//'`
    SHORT=`echo $x | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    xTMP=`echo $SHORT | sed -e s/-[0-9].*//`
    if test `ls $PACKAGES_LOGDIR/$xTMP-* 2>/dev/null | grep -c "$xTMP-[0-9].*"` -ge 1; then
      iSHORT=`ls $PACKAGES_LOGDIR/$xTMP-* 2>/dev/null | grep "$xTMP-[0-9].*" | sed -e "s/.*\///g" | sort -r | uniq | awk '{if(NR==1)print$1}'`
      if test `ls .exclude/$SHORTPKG.exclude* 2>/dev/null | wc -l` -eq 0 && test `ls .exclude/$iSHORT.exclude.installed 2>/dev/null | wc -l` -eq 0; then
        iTMP=`echo $iSHORT | sed -e s/-[0-9].*//`
        if [[ "$iTMP" == "$xTMP" ]]; then
          if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -eq 0 && test `echo "$SHORT" | grep -c "$iSHORT"` -eq 0; then
            RSHORT="$SHORT"
            iRSHORT="$iSHORT"
            lRSHORTPART=`echo "$SHORT" | awk -F- '{print$NF}'`
            liRSHORTPART=`echo "$iSHORT" | awk -F- '{print$NF}'`
            lSHORTPART=`echo "$SHORT" | awk -F- '{print$NF}' | sed -e "s:[[:alpha:]]\+::g;s:[\_\-]::g"`
            liSHORTPART=`echo "$iSHORT" | awk -F- '{print$NF}' | sed -e "s:[[:alpha:]]\+::g;s:[\_\-]::g"`
            SHORT=`echo "$SHORT" | sed s/''${lRSHORTPART}''/''${lSHORTPART}''/\g`
            iSHORT=`echo "$iSHORT" | sed s/''${liRSHORTPART}''/''${liSHORTPART}''/\g`
            [[ $SHORT > $iSHORT ]] && UFLAG=1 || UFLAG=0
            PACKAGE_NAME=`echo "$SHORT" | sed -e s/-[0-9].*//`
            PACKAGEA_CUT=`echo "$SHORT" | sed s/$PACKAGE_NAME-//`
            PACKAGEI_CUT=`echo "$iSHORT" | sed s/$PACKAGE_NAME-//`
            VERSIONA=`echo "$PACKAGEA_CUT" | cut -f1 -d-`
            VERSIONI=`echo "$PACKAGEI_CUT" | cut -f1 -d-`
            ASWAP=0
            ISWAP=0
            if test `echo "$PACKAGEA_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
              ASWAP=1
            fi
            if test `echo "$PACKAGEI_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
              ISWAP=1
            fi
            if test $ASWAP -ne $ISWAP; then
              VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
              VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
              if test $ASWAP -eq 0; then
                if [[ $VERSIONA = $VERSIONI ]]; then
                  UFLAG=1
                fi
              else
                if [[ $VERSIONA = $VERSIONI ]]; then
                  UFLAG=2
                fi
              fi
            fi
            if test $UFLAG -eq 0; then
              ASWAP=0
              ISWAP=0
              if test `echo "$PACKAGEA_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                ASWAP=1
              fi
              if test `echo "$PACKAGEI_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                ISWAP=1
              fi
              if test $ASWAP -ne $ISWAP; then
                VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                if test $ASWAP -eq 0; then
                  if [[ $VERSIONA = $VERSIONI ]]; then
                    UFLAG=0
                  fi
                fi
              fi
              if test $UFLAG -eq 0; then
                N=`echo $VERSIONA | awk '{print split($0,tmp,".")}'`
                APKGARCH=`echo "$SHORT" | awk -F'-' '{print$(NF-1)}' | sed s:\_::\g | sed s:-::\g`
                IPKGARCH=`echo "$iSHORT" | awk -F'-' '{print$(NF-1)}' | sed s:\_::\g | sed s:-::\g`
                APKGREV=`echo "$SHORT" | awk -F'-' '{print$NF}' | sed s:[a-zA-Z]::\g | sed s:\_::\g | sed s:-::\g`
                IPKGREV=`echo "$iSHORT" | awk -F'-' '{print$NF}' | sed s:[a-zA-Z]::\g | sed s:\_::\g | sed s:-::\g`
                if [[ "$VERSIONA" == "$VERSIONI" ]]; then
                  ((36#"$APKGARCH$APKGREV">36#"$IPKGARCH$IPKGREV")) && UFLAG=1 || UFLAG=0
                else
                  ASWAP=0
                  ISWAP=0
                  if test `echo "$VERSIONA" | grep -c "[[:alpha:]]"` -ge 1; then
                    ASWAP=1
                  fi
                  if test `echo "$VERSIONI" | grep -c "[[:alpha:]]"` -ge 1; then
                    ISWAP=1
                  fi
                  if test $ASWAP -eq 1 && test $ISWAP -eq 1; then
                    VERSIONA=`echo "$VERSIONA" | sed s/'[\_\+]'//\g`
                    VERSIONI=`echo "$VERSIONI" | sed s/'[\_\+]'//\g`
                  else
                    if test $ASWAP -eq 0 && test $ISWAP -eq 0; then
                      VERSIONA=`echo "$VERSIONA" | sed s/'[\_\+]'//\g`
                      VERSIONI=`echo "$VERSIONI" | sed s/'[\_\+]'//\g`
                    else
                      if test `echo "$VERSIONA" | grep -c "_"` -ge 1; then
                        VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]_'//\g`
                        VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]_'//\g`
                      else
                        VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                        VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g` 
                      fi
                      ASWAP=0
                      if test `echo "$VERSIONA" | grep -c "[[:alpha:]]"` -ge 1; then
                        ASWAP=1
                      fi
                      if test `echo "$VERSIONI" | grep -c "[[:alpha:]]"` -ge 1; then
                        ISWAP=1
                      fi
                      if test $ASWAP -ne $ISWAP; then
                        VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]'//\g`
                        VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]'//\g`
                      fi
                    fi
                  fi
                  for((z=1;z<$N+1;z++)); do
                    VERSIONAPART=`echo $VERSIONA | awk '{split($0,tmp,"."); print tmp['$z']}' | sed s:\_::\g | sed s:-::\g`
                    VERSIONIPART=`echo $VERSIONI | awk '{split($0,tmp,"."); print tmp['$z']}' | sed s:\_::\g | sed s:-::\g`
                    if [[ "$VERSIONIPART" != "$VERSIONAPART" ]]; then
                      ((36#"$VERSIONAPART">36#"$VERSIONIPART")) && UFLAG=1 || UFLAG=0
                      if test $UFLAG -eq 0; then
                        ((36#"$VERSIONIPART">36#"$VERSIONAPART")) && UFLAG=0 || UFLAG=1
                        if test $UFLAG -eq 0; then
                          z=$N
                          break
                        fi
                      else
                        z=$N
                        break
                      fi
                    fi
                  done
                fi
              fi
            fi
            if test $UFLAG -eq 1; then
              CSWAP=1
              if test `echo "$x" | grep -c "%"` -ge 1; then
                RNAME=`echo "$x" | cut -f1 -d%`
                RPATH=`echo "$x" | cut -f2 -d%`
                SIZEFILETMP=`grep "$RPATH$" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
                RRNAME="$RNAME"
                RNAME="($RNAME) "
              else
                SIZEFILETMP=`grep "$x$" .cache/FILELIST.TXT | awk '{if(NR==1)print$1}'`
                RRNAME=""
                RNAME=""
              fi
              if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
              SIZEFILE=`echo "$SIZEFILETMP / 1024" | bc`
              if [ -z $1 ]; then
                echo "$MSG_UCASENEW: $RSHORT ($SIZEFILE $MSG_KILOBYTES) $RNAME- $MSG_UCASEINSTALLED: $iRSHORT"
                echo "$x" >> NEWPKGS.list 2>/dev/null
                echo "$iRSHORT" >> INSTALLEDPKGS.list 2>/dev/null
                touch $RSHORT.$PKG_EXT.tmp 2>/dev/null
                checkcom "$RSHORT.$PKG_EXT" "$x" "$RRNAME"
                if [ ! -f $RSHORT.$PKG_EXT.complete ]; then
                  size_total "$SIZEFILETMP"
                fi
              else
                echo "$MSG_UCASENEW: $RSHORT ($SIZEFILE $MSG_KILOBYTES) $RNAME- $MSG_UCASEINSTALLED: $iRSHORT"
                echo "$MSG_UCASENEW: $RSHORT ($SIZEFILE $MSG_KILOBYTES) $RNAME- $MSG_UCASEINSTALLED: $iRSHORT" >> PKGLIST 2>/dev/null
              fi
            fi
          fi
        fi
      fi
    fi
  done
}

getpkgbydesc_pat()
{
  if [[ "$USEPKGDESC" == "1" ]]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | wc -l` -ge 1; then
      eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
      if test `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | wc -l` -ge 1; then
        for i in `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | awk '{print$1}' | cut -f1 -d':' | sort | uniq`; do
          grep -i -E "\./patches.*$i.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}' | sed s/.// >> PKGLIST 2>/dev/null
        done
      fi
    fi
  fi
}

getpkgbydesc_pac()
{
  if [[ "$USEPKGDESC" == "1" ]]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
      if test `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | wc -l` -ge 1; then
        for i in `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | awk '{print$1}' | cut -f1 -d':' | sort | uniq`; do
          ieTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
          grep -i -E "\./slackware.*$ieTMP.*($PKG_EXTS)$|\./extra.*$ieTMP.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}' | sed s/.// >> PKGLIST 2>/dev/null
        done
      fi
    fi
  fi
}

getpkgbydesc_pacall()
{
  if [[ "$USEPKGDESC" == "1" ]]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
      if test `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | grep "^[[:alnum:]]\+:" | wc -l` -ge 1; then
        for i in `grep -i -E -e "$eTMP" .cache/PACKAGES.TXT 2>/dev/null | grep "^[[:alnum:]]\+:" | awk '{print$1}' | cut -f1 -d':' | sort | uniq`; do
          ieTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
          grep -i -E "\./slackware.*$ieTMP.*($PKG_EXTS)$|\./extra.*$ieTMP.*($PKG_EXTS)$|\./patches.*$ieTMP.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | sed s/.// >> PKGLIST 2>/dev/null
        done
      fi
    fi
  fi
}

getpkgbydesc_rpac()
{
  if [[ "$USEPKGDESC" == "1" ]]; then
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^REPOS_ROOT=.*%.*"` -ge 1; then
      for i in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d= | cut -f1 -d%`; do
        eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
        for rpkg in `grep -i -E -e "$eTMP" repos/$i/PACKAGES.TXT 2>/dev/null | grep "^[[:alnum:]]\+:" | awk '{print$1}' | cut -f1 -d':' | sort | uniq`; do
          PKGSFOUND=`grep -i -E "\.*$rpkg.*($PKG_EXTS)$" repos/$i/FILELIST.TXT 2>/dev/null | awk '{print$2}' | sed s/.//`
          for p in $PKGSFOUND; do
            echo "$i%$p" >> PKGLIST 2>/dev/null
          done
        done
      done
    fi
  fi
}

getpkgbydesc_ipac()
{
  if [[ "$USEPKGDESC" == "1" ]]; then
    eTMP=`echo "$1" | sed s:'+':'\\\\+':\g`
    for i in `grep -i -E -e "$eTMP" $PACKAGES_LOGDIR/*-*-*-* 2>/dev/null |  cut -f1 -d: | sort | uniq | sed -e "s/.*\///g"`; do
      echo "$i" >> PKGLIST 2>/dev/null
    done
  fi
}

getfile()
{
  RNAME=""
  iTMP="$i"
  if test `echo $i | grep -c "%"` -ge 1; then
    RNAME=`echo $i | cut -f1 -d%`
    iTMP=`echo $i | cut -f2 -d%`
  fi
  i=`echo $i | sed -e "s/.*\///g"`
  gfile "$i" "$iTMP" "$1" "$RNAME"
}

dependency_check()
{
  if [[ "$DSEARCHLIB" == "1" ]]; then
    if [[ "$DSEARCHM" == "0" ]]; then
      check_find
    else
      check_slocate
    fi
  fi
  echo -n "%%% $MSG_DEPVER "
  if [[ "$DSEARCHLIB" == "1" ]]; then
    cp TARFILES.tmp LIBS.TARFILES.tmp.list 2>/dev/null
  fi
  TARFILES=`cat TARFILES.tmp 2>/dev/null`
  TARFILESN=`cat TARFILES.tmp 2>/dev/null | wc -l`
  echo -n "+++++++++++"
  COUNTER=0
  SWAPME=0
  COUNTME=0
  PARAM="$1"
  for i in 0 1 2 3 4 5 6 7 8 9; do
    PSWAP[$i]=0
  done
  for i in $TARFILES; do 
    COUNTER=`expr $COUNTER + 1`
    TCOUNTER=`expr $COUNTER \* 10 / $TARFILESN`
    if test $TCOUNTER -ge 0; then
      if test $TCOUNTER -le 10; then
        case $TCOUNTER in
          "0")
            if test ${PSWAP[0]} -eq 0; then
              printf "\b "
              PSWAP[0]=1;
            fi
            ;;
          "1")
            if test ${PSWAP[1]} -eq 0; then
              printf "\b\b  "
              PSWAP[1]=1;
            fi
            ;;
          "2")
            if test ${PSWAP[2]} -eq 0; then
              printf "\b\b\b   "
              PSWAP[2]=1;
            fi
            ;;
          "3")
            if test ${PSWAP[3]} -eq 0; then
              printf "\b\b\b\b    "
              PSWAP[3]=1;
            fi
            ;;
          "4")
            if test ${PSWAP[4]} -eq 0; then
              printf "\b\b\b\b\b     "
              PSWAP[4]=1;
            fi
            ;;
          "5")
            if test ${PSWAP[5]} -eq 0; then
              printf "\b\b\b\b\b\b      "
              PSWAP[5]=1;
            fi
            ;;
          "6")
            if test ${PSWAP[6]} -eq 0; then
              printf "\b\b\b\b\b\b\b       "
              PSWAP[6]=1;
            fi
            ;;
          "7")
            if test ${PSWAP[7]} -eq 0; then
              printf "\b\b\b\b\b\b\b\b        "
              PSWAP[7]=1;
            fi
            ;;
          "8")
            if test ${PSWAP[8]} -eq 0; then
              printf "\b\b\b\b\b\b\b\b\b         "
              PSWAP[8]=1;
            fi
            ;;
          "9")
            if test ${PSWAP[9]} -eq 0; then
              printf "\b\b\b\b\b\b\b\b\b\b          "
              PSWAP[9]=1;
            fi
            ;;
        esac
      fi
    fi
    if test $COUNTME -eq 0; then
      printf "\b\\"
    fi
    if test $COUNTME -eq 1; then
      printf "\b|"
    fi
    if test $COUNTME -eq 2; then
      printf "\b/"
    fi
    if test $COUNTME -eq 3; then
      printf "\b-"
    fi
    PKG=`echo $i | awk -F : '{print $1}' | sed -r "s/.($PKG_EXTS)//"`
    FILEP=`echo $i | awk -F : '{print$2}'`
    if [ `ldd /$FILEP 2>/dev/null | grep -c "not found"` -gt 0 ]; then
      SWAPME=1
      ldd /$FILEP 2>/dev/null | grep "not found" | awk '{print$1}' | sort -u | sed -e 's/.*/'${PKG}':&/' >> MISSINGDEPS.tmp 2>/dev/null
    fi
    if test $COUNTME -eq 4; then
      COUNTME=0
    else
      COUNTME=`expr $COUNTME + 1`
    fi
  done
  rm -f TARFILES.tmp 2>/dev/null
  if [ "$SWAPME" = "0" ]; then
    printf "\b\b\b\b\b\b\b\b\b\b\b"
    echo "$MSG_DEPVER_RESSUC"
    logme "dependency_check()" "%%% $MSG_DEPVER $MSG_DEPVER_RESSUC"
    echo
  else
    printf "\b\b\b\b\b\b\b\b\b\b\b"
    echo "$MSG_DEPVER_MISLIB"
    logme "dependency_check()" "%%% $MSG_DEPVER $MSG_DEPVER_MISLIB"
    echo
    rm -f libraries-* 2>/dev/null
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c -E "^ROOT=.*|^DEP_ROOT=.*"` -ge 1; then
      if [[ "$VMANIFEST" != "1" ]]; then
        getliblist
        if [ -f libraries-$VERSION ]; then
          mv libraries-$VERSION .cache/libraries-$VERSION 2>/dev/null
        fi
        if [ ! -f .cache/libraries-$VERSION ]; then
          libmaker
        fi
      else
        libmaker
      fi
      if [ -f .cache/libraries-$VERSION ]; then
        cat .cache/libraries-$VERSION >> libraries-list 2>/dev/null
      fi
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^REPOS_ROOT=.*%.*"` -ge 1; then
      for i in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d=`; do
        RNAME=`echo $i | cut -f1 -d%`
        RURL=`echo $i | cut -f2 -d%`
        getrliblist
        if [ -f libraries-repository ]; then
          mv libraries-repository repos/$RNAME/libraries-repository 2>/dev/null
        fi
        if [ ! -f repos/$RNAME/libraries-repository ]; then
          rlibmaker "1"
        fi
        if [ -f repos/$RNAME/libraries-repository ]; then
          cat repos/$RNAME/libraries-repository >> libraries-list 2>/dev/null
        fi
      done
      for RNAME in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'=' | cut -f1 -d%`; do
        if [ ! -f repos/$RNAME/libraries-repository ]; then
          if [ -f repos/$RNAME/MANIFEST.bz2 ]; then
            rlibmaker "2"
          fi
        fi
      done
    fi
    echo
    createliblist
    echo
    MISSINGDEPENDENCIES=`cat MISSINGDEPS.tmp 2>/dev/null | sort -u`
    rm -f LIBS.list 2>/dev/null
    for i in $MISSINGDEPENDENCIES; do
      PKG=`echo $i | awk -F : '{print$1}'`
      LIB=`echo $i | awk -F : '{print$2}'`
      echo "$LIB" >> LIBS.list 2>/dev/null
      PACKAGE=`grep $LIB libraries-list 2>/dev/null | cut -f1 -d':' | sed -r "s/.($PKG_EXTS)//"`
      if [ "$PACKAGE" = "" ]; then
        rivar "MSG_LIBPKG_NF"
        MSG_LIBPKG_NF=`echo "$MSG_LIBPKG_NF" | sed s:"%X":"$LIB":\g | sed s:"%Y":"$PKG":\g`
        rivar "MSG_LIBPKG_SEARCH"
        MSG_LIBPKG_SEARCH=`echo "$MSG_LIBPKG_SEARCH" | sed s:"%X":"$LIB":\g | sed s:"%Y":"$PKG":\g`
        MSG "dependency_check()" "$MSG_LIBPKG_NF"
        logme "dependency_check()" "$MSG_LIBPKG_SEARCH"
        echo "$MSG_LIBPKG_SEARCH" >> MPKGS.list 2>/dev/null
      else
        for x in $i; do
          for z in $PACKAGE; do
            RSWAP=0
            SHORTME=`echo $z | sed -e s/-[0-9].*//`
            rivar "MSG_LIBPKG_REQ"
            MSG_LIBPKG_REQ=`echo "$MSG_LIBPKG_REQ" | sed s:"%X":"$PKG":\g | sed s:"%Y":"$LIB":\g | sed s:"%Z":"$z":\g`
            MSG "dependency_check()" "$MSG_LIBPKG_REQ"
            if test `grep -E "\./slackware.*$SHORTME-.*($PKG_EXTS)$|\./extra.*$SHORTME-.*($PKG_EXTS)$|\./patches.*$SHORTME-.*($PKG_EXTS)$" .cache/FILELIST.TXT 2>/dev/null| grep -v "/source/" | wc -l` -ge 1; then
              for M in `grep -E "\./slackware.*$SHORTME-.*($PKG_EXTS)$|\./extra.*$SHORTME-.*($PKG_EXTS)$|\./patches.*$SHORTME-.*($PKX_EXTS)$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}'`; do
                basename $M >> MISSINGPACKAGES.tmp 2>/dev/null
                RSWAP=1
              done
            fi
            if test `grep "$SHORTME-" repos/*/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
              for M in `grep "$SHORTME-" repos/*/FILELIST.TXT 2>/dev/null | awk '{print$2}'`; do
                basename $M >> MISSINGPACKAGES.tmp 2>/dev/null
                RSWAP=1
              done
            fi
            if test $RSWAP -eq 0; then
              touch $z.omp 2>/dev/null
            fi
          done
        done
      fi
    done
    echo
    rm -f MISSINGDEPS.tmp 2>/dev/null
    sort -u MISSINGPACKAGES.tmp 2>/dev/null > PKGLIST 2>/dev/null
    sortandcount
    PACKAGES="$PKGLIST"
    if test `echo "$PACKAGES" | wc -w` -ge 1; then
      echo "$MSG_LISTALLAPACGET"
      for i in $PACKAGES; do
        iSHORT=`echo $i | sed -e "s/.*\///g"`
        iSHORTPKG="$iSHORT"
        iSHORT=`echo $iSHORT | sed -r "s/.($PKG_EXTS)//"`
        if test `ls .exclude/$iSHORTPKG.exclude 2>/dev/null | wc -l` -eq 0; then
          eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
          SIZEFILETMP=`grep -i -E -e "./slackware.*$eTMP$.*|./extra.*$eTMP$.*|./patches.*$eTMP$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
          if [ -z $SIZEFILETMP ]; then
            for x in `ls repos/ 2>/dev/null`; do
              RLINE=`grep "$i$" repos/$x/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$0}'`
              if [ ! -z "$RLINE" ]; then
                RNAME=" ($x)"
                SIZEFILETMP=`echo "$RLINE" | awk '{print$1}'`
                break
              fi
            done
          else
            RNAME=""
          fi
          if [ ! -z $SIZEFILETMP ]; then
            SIZEFILE=`echo $SIZEFILETMP / 1024 | bc`
          fi
          if [ -z "$SIZEFILETMP" ]; then SIZEFILE=0; fi
          echo "$iSHORT ($SIZEFILE $MSG_KILOBYTES)$RNAME"
          if [ ! -z $SIZEFILE ]; then
            size_total "$SIZEFILETMP"
          fi
        fi
      done
      echo
      for x in $PACKAGES; do
        DSHORTPKG=`echo $x | sed -r "s/.($PKG_EXTS)//"`
        sTMP=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
        if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
          if [ ! -f $DSHORTPKG.mmx ]; then
            xTMP=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
            if test `ls $PACKAGES_LOGDIR/$xTMP-* 2>/dev/null | grep -c "$xTMP-[0-9].*"` -ge 1; then
              iSHORT=`ls $PACKAGES_LOGDIR/$xTMP-* 2>/dev/null | grep "$xTMP-[0-9].*" | sed -e "s/.*\///g" | sort -r | uniq | awk '{if(NR==1)print$1}'`
              iTMP=`echo $i | sed -e s/-[0-9].*//`
              if [[ "$xTMP" == "$iTMP" ]]; then
                if test `ls .exclude/$x.exclude* 2>/dev/null | wc -l` -eq 0 && test `ls .exclude/$iSHORT.exclude.installed 2>/dev/null | wc -l` -eq 0; then
                  if test `ls $PACKAGES_LOGDIR/$DSHORTPKG* 2>/dev/null | wc -l` -eq 0 && test `echo "$DSHORTPKG" | grep -c "$iSHORT"` -eq 0; then
                    SHORTPKG="$x"
                    SHORT=`echo $SHORTPKG | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
                    if [ ! -f $SHORT.lock ]; then
                      if test `cat PKGLIST 2>/dev/null | sed -e "s/.*\///g" | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | wc -l` -gt 1; then
                        rm -f ldiffp.list 2>/dev/null
                        LSWAP=0
                        for j in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
                          jSHORT=`echo "$j" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
                          if [ ! -f $PACKAGES_LOGDIR/$jSHORT ]; then
                            if test $LSWAP -eq 0; then
                              echo "$MSG_LDIFFP '$sTMP'..."
                              LSWAP=1
                            fi
                            if test `echo "$j" | grep -c "%"` -ge 1; then
                              RNAME=`echo "$j" | cut -f1 -d%`
                              RNAME=" ($RNAME)"
                            else
                              RNAME=""
                            fi
                            echo " > $jSHORT$RNAME"
                            touch $jSHORT.lock
                            echo "$j" >> ldiffp.list 2>/dev/null
                          else
                            RNAME=""
                          fi
                        done
                      fi
                    fi
                    eTMP=`echo "$x" | sed s:'+':'\\\\+':\g`
                    SIZEFILE=`grep -E "./slackware.*$eTMP$.*|./extra.*$eTMP$.*|./patches.*$eTMP$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
                    if [ -z $SIZEFILE ]; then
                      for x in `ls repos/ 2>/dev/null`; do
                        RLINE=`grep "$i$" repos/$x/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$0}'`
                        if [ ! -z "$RLINE" ]; then
                          RRNAME="$x"
                          RNAME=" ($x)"
                          SIZEFILE=`echo "$RLINE" | awk '{print$1}'`
                          break
                        fi
                      done
                    else
                      RRNAME=""
                      RNAME=""
                    fi
                    if [ -z "$SIZEFILE" ]; then SIZEFILE=0; fi
                    PKG_EXT=`echo $DSHORTPKG | sed 's/.*\.//'`
                    RSHORT="$DSHORTPKG"
                    iRSHORT="$iSHORT"
                    lRSHORTPART=`echo "$DSHORTPKG" | awk -F- '{print$NF}'`
                    liRSHORTPART=`echo "$iSHORT" | awk -F- '{print$NF}'`
                    lSHORTPART=`echo "$DSHORTPKG" | awk -F- '{print$NF}' | sed -e "s:[[:alpha:]]\+::g;s:[\_\-]::g"`
                    liSHORTPART=`echo "$iSHORT" | awk -F- '{print$NF}' | sed -e "s:[[:alpha:]]\+::g;s:[\_\-]::g"`
                    SHORT=`echo "$DSHORTPKG" | sed s/''${lRSHORTPART}''/''${lSHORTPART}''/\g`
                    iSHORT=`echo "$iSHORT" | sed s/''${liRSHORTPART}''/''${liSHORTPART}''/\g`
                    [[ $SHORT > $iSHORT ]] && UFLAG=1 || UFLAG=0
                    PACKAGE_NAME=`echo "$DSHORTPKG" | sed -e s/-[0-9].*//`
                    PACKAGEA_CUT=`echo "$DSHORTPKG" | sed s/$PACKAGE_NAME-//`
                    PACKAGEI_CUT=`echo "$iSHORT" | sed s/$PACKAGE_NAME-//`
                    VERSIONA=`echo "$PACKAGEA_CUT" | cut -f1 -d-`
                    VERSIONI=`echo "$PACKAGEI_CUT" | cut -f1 -d-`
                    ASWAP=0
                    ISWAP=0
                    if test `echo "$PACKAGEA_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                      ASWAP=1
                    fi
                    if test `echo "$PACKAGEI_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                      ISWAP=1
                    fi
                    if test $ASWAP -ne $ISWAP; then
                      VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                      VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                      if test $ASWAP -eq 0; then
                        if [[ $VERSIONA = $VERSIONI ]]; then
                          UFLAG=1
                        fi
                      else
                        if [[ $VERSIONA = $VERSIONI ]]; then
                          UFLAG=2
                        fi
                      fi
                    fi
                    if test $UFLAG -eq 0; then
                      ASWAP=0
                      ISWAP=0
                      if test `echo "$PACKAGEA_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                        ASWAP=1
                      fi
                      if test `echo "$PACKAGEI_CUT" | cut -f1 -d- | grep -ce "[[:alpha:]]\+"` -ge 1; then
                        ISWAP=1
                      fi
                      if test $ASWAP -ne $ISWAP; then
                        VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                        VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                        if test $ASWAP -eq 0; then
                          if [[ $VERSIONA = $VERSIONI ]]; then
                            UFLAG=0
                          fi
                        fi
                      fi
                      if test $UFLAG -eq 0; then
                        N=`echo $VERSIONA | awk '{print split($0,tmp,".")}'`
                        APKGARCH=`echo "$DSHORTPKG" | awk -F'-' '{print$(NF-1)}' | sed s:\_::\g | sed s:-::\g`
                        IPKGARCH=`echo "$iSHORT" | awk -F'-' '{print$(NF-1)}' | sed s:\_::\g | sed s:-::\g`
                        APKGREV=`echo "$SHORTPKG" | awk -F'-' '{print$NF}' | sed s:[a-zA-Z]::\g | sed s:\_::\g | sed s:-::\g`
                        IPKGREV=`echo "$iSHORT" | awk -F'-' '{print$NF}' | sed s:[a-zA-Z]::\g | sed s:\_::\g | sed s:-::\g`
                        if [[ "$VERSIONA" == "$VERSIONI" ]]; then
                          ((36#"$APKGARCH$APKGREV">36#"$IPKGARCH$IPKGREV")) && UFLAG=1 || UFLAG=0
                        else
                          ASWAP=0
                          ISWAP=0
                          if test `echo "$VERSIONA" | grep -c "[[:alpha:]]"` -ge 1; then
                            ASWAP=1
                          fi
                          if test `echo "$VERSIONI" | grep -c "[[:alpha:]]"` -ge 1; then
                            ISWAP=1
                          fi
                          if test $ASWAP -eq 1 && test $ISWAP -eq 1; then
                            VERSIONA=`echo "$VERSIONA" | sed s/'[\_\+]'//\g`
                            VERSIONI=`echo "$VERSIONI" | sed s/'[\_\+]'//\g`
                          else
                            if test $ASWAP -eq 0 && test $ISWAP -eq 0; then
                              VERSIONA=`echo "$VERSIONA" | sed s/'[\_\+]'//\g`
                              VERSIONI=`echo "$VERSIONI" | sed s/'[\_\+]'//\g`
                            else
                              if test `echo "$VERSIONA" | grep -c "_"` -ge 1; then
                                VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]_'//\g`
                                VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]_'//\g`
                              else
                                VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                                VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]\+[[:digit:]]\+'//\g`
                              fi
                              ASWAP=0
                              if test `echo "$VERSIONA" | grep -c "[[:alpha:]]"` -ge 1; then
                                ASWAP=1
                              fi
                              if test `echo "$VERSIONI" | grep -c "[[:alpha:]]"` -ge 1; then
                                ISWAP=1
                              fi
                              if test $ASWAP -ne $ISWAP; then
                                VERSIONA=`echo "$VERSIONA" | sed s/'[a-zA-Z]'//\g`
                                VERSIONI=`echo "$VERSIONI" | sed s/'[a-zA-Z]'//\g`
                              fi
                            fi
                          fi
                          for((z=1;z<$N+1;z++)); do
                            VERSIONAPART=`echo $VERSIONA | awk '{split($0,tmp,"."); print tmp['$z']}' | sed s:\_::\g | sed s:-::\g`
                            VERSIONIPART=`echo $VERSIONI | awk '{split($0,tmp,"."); print tmp['$z']}' | sed s:\_::\g | sed s:-::\g`
                            if [[ "$VERSIONIPART" != "$VERSIONAPART" ]]; then
                              ((36#"$VERSIONAPART">36#"$VERSIONIPART")) && UFLAG=1 || UFLAG=0
                              if test $UFLAG -eq 0; then
                                ((36#"$VERSIONIPART">36#"$VERSIONAPART")) && UFLAG=0 || UFLAG=1
                                if test $UFLAG -eq 0; then
                                  z=$N
                                  break
                                fi
                              else
                                z=$N
                                break
                              fi
                            fi
                          done
                        fi
                      fi
                    fi
                    if test $UFLAG -eq 1; then
                      if [[ "$PARAM" == "-a" ]]; then
                        touch $RSHORT.uux 2>/dev/null
                        touch $RSHORT.aax 2>/dev/null
                        echo "$RSHORT.$PKG_EXT" >> DPKGSLIST.list
			answer="$MSG_ALL"
                      else
                        rivar "MSG_UPGRADEXTOY"
                        MSG_UPGRADEXTOY=`echo "$MSG_UPGRADEXTOY" | sed s/'%X'/$iRSHORT/\g | sed s/'%Y'/$RSHORT/\g`
                        echo -n "$MSG_UPGRADEXTOY$RNAME ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
                        while true
                        do
                          read answer
                          if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
                           then
                            break
                          fi
                          echo $MSG_YICHARZ
                        done 

                        if [ -z "$answer" ]; then
                          answer="$MSG_Y"
                          touch $RSHORT.uux 2>/dev/null
                          touch $RSHORT.aax 2>/dev/null
                        else
                          if [[ "$answer" == "$MSG_ALL" ]]; then
                            PARAM="-a"
                            touch $RSHORT.uux 2>/dev/null
                            touch $RSHORT.aax 2>/dev/null
                            echo "$RSHORT.$PKG_EXT" >> DPKGSLIST.list
                          fi
                          if [[ "$answer" == "$MSG_EXIT" ]]; then
                            echo
                            cleanup_quick
                            exit
                          fi
                          if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
                            answer="$MSG_N"
                          else
                            touch $RSHORT.uux 2>/dev/null
                            touch $RSHORT.aax 2>/dev/null
                          fi
                        fi
                      fi
                      if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
                        case $answer in
                          "$MSG_Y")
                            echo "$RSHORT.$PKG_EXT" >> DPKGSLIST.list 2>/dev/null
                            touch $RSHORT.ssx 2>/dev/null
                            if [ -f ldiffp.list ]; then
                              for l in `cat ldiffp.list 2>/dev/null | grep -v "^$x"`; do
                                if test `echo "$l" | grep -c "%"` -ge 1; then
                                  RNAME=`echo "$l" | cut -f1 -d%`
                                  RPATH=`echo "$l" | cut -f2 -d%`
                                  SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                                  if [ ! -z "$SIZEFILETMP" ]; then
                                    rsize_total "$SIZEFILETMP"
                                  fi
                                else
                                  SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                                  if [ ! -z "$SIZEFILETMP" ]; then
                                    rsize_total "$SIZEFILETMP"
                                  fi
                                fi
                              done
                              rm -f ldiffp.list 2>/dev/null
                            fi
                            ;;
                          "$MSG_N")
                            checkcom "$RSHORT.$PKG_EXT" "$RRNAME"
                            if [ -f ldiffp.list ]; then
                              cat ldiffp.list 2>/dev/null | grep -v "^$x" > ldiffp.list.tmp 2>/dev/null
                              mv ldiffp.list.tmp ldiffp.list 2>/dev/null
                            fi
                            if [ ! -f $RSHORT.$PKG_EXT.complete ]; then
                              rsize_total "$SIZEFILE"
                            fi
                            ;;
                          *)
                            invalid_charz "dependency_check()"
                            ;;
                        esac
                      fi
                      logme "dependency_check()" "$MSG_UPGRADEXTOY$RNAME ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
                    fi
                  fi
                fi
              fi
            fi
          fi
        fi
      done
      for i in $PACKAGES; do
        PKG_EXT=`echo $i | sed 's/.*\.//'`
        DSHORTPKG=`echo $i | sed -r s/".($PKG_EXTS)"//`
        sTMP=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
        if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
          if [ ! -f $DSHORTPKG.uux ]; then
            if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
              SHORTPKG="$i"
              SHORT=`echo $SHORTPKG | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
              if [ ! -f $SHORT.lock ]; then
                if test `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | wc -l` -gt 1; then
                  rm -f ldiffp.list 2>/dev/null
                  LSWAP=0
                  for j in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
                    jSHORT=`echo "$j" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
                    if [ -f $PACKAGES_LOGDIR/$jSHORT ]; then
                      if test $LSWAP -eq 0; then
                        echo "$MSG_LDIFFP '$sTMP'..."
                        LSWAP=1
                      fi
                      if test `echo "$j" | grep -c "%"` -ge 1; then
                        RNAME=`echo "$j" | cut -f1 -d%`
                        RNAME=" ($RNAME)"
                      else
                        RNAME=""
                      fi
                      echo " > $jSHORT$RNAME"
                      touch $jSHORT.lock
                      echo "$j" >> ldiffp.list 2>/dev/null
                    else
                      RNAME=""
                    fi
                  done
                fi
                eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
                SIZEFILE=`grep -E "./slackware.*$eTMP$.*|./extra.*$eTMP$.*|./patches.*$eTMP$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
                if [ -z $SIZEFILE ]; then
                  for x in `ls repos/ 2>/dev/null`; do
                    RLINE=`grep "$i$" repos/$x/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$0}'`
                    if [ ! -z "$RLINE" ]; then
                      RRNAME="$x"
                      RNAME=" ($x)"
                      SIZEFILE=`echo "$RLINE" | awk '{print$1}'`
                      break
                    fi
                  done
                else
                  RRNAME=""
                  RNAME=""
                fi
                if [ -z "$SIZEFILE" ]; then SIZEFILE=0; fi
              fi
              if [[ "$PARAM" == "-a" ]]; then
                touch $DSHORTPKG.rrx 2>/dev/null
                touch $DSHORTPKG.aax 2>/dev/null
                echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list 2>/dev/null
                answer="$MSG_ALL"
              else
                iCHECK=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
                iCCHECK=`ls $PACKAGES_LOGDIR/$iCHECK-[0-9]* 2>/dev/null | wc -l`
                echo -n "$MSG_REINSTALLX $DSHORTPKG$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"

                while true
                do
                  read answer
                  if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
                    then
                      break
                  fi
                  echo $MSG_YICHARZ
                done

                if [ -z "$answer" ]; then
                  answer="$MSG_Y"
                  touch $DSHORTPKG.rrx 2>/dev/null
                  touch $DSHORTPKG.aax 2>/dev/null
                else
                  if [[ "$answer" == "$MSG_ALL" ]]; then
                    PARAM="-a"
                    touch $DSHORTPKG.rrx 2>/dev/null
                    touch $DSHORTPKG.aax 2>/dev/null
                    echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list
                  fi
                  if [[ "$answer" == "$MSG_EXIT" ]]; then
                    echo
                    cleanup_quick
                    exit
                  fi
                  if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
                    answer="$MSG_N"
                  else
                    touch $DSHORTPKG.rrx 2>/dev/null
                    touch $DSHORTPKG.aax 2>/dev/null
                  fi
                fi
              fi
              if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
                case $answer in
                  "$MSG_Y")
                    echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list 2>/dev/null
                    touch $DSHORTPKG.ssx 2>/dev/null
                    if [ -f ldiffp.list ]; then
                      for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                        if test `echo "$l" | grep -c "%"` -ge 1; then
                          RNAME=`echo "$l" | cut -f1 -d%`
                          RPATH=`echo "$l" | cut -f2 -d%`
                          SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                          if [ ! -z "$SIZEFILETMP" ]; then
                            rsize_total "$SIZEFILETMP"
                          fi
                        else
                          SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                          if [ ! -z "$SIZEFILETMP" ]; then
                            rsize_total "$SIZEFILETMP"
                          fi
                        fi
                      done
                      rm -f ldiffp.list 2>/dev/null
                    fi
                    ;;
                  "$MSG_N")
                    checkcom "$DSHORTPKG.$PKG_EXT" "$RRNAME"
                    if [ -f ldiffp.list ]; then
                      cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                      mv ldiffp.list.tmp ldiffp.list 2>/dev/null
                    fi
                    if [ ! -f $DSHORTPKG.$PKG_EXT.complete ]; then
                      rsize_total "$SIZEFILE"
                    fi
                    ;;
                  *)
                    invalid_charz "dependency_check()"
                    ;;
                esac
              fi
              logme "dependency_check()" "$MSG_REINSTALLX $DSHORTPKG$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
            fi
          fi
        fi
      done
      for i in $PACKAGES; do
        PKG_EXT=`echo $i | sed 's/.*\.//'`
        DSHORTPKG=`echo $i | sed -r "s/.($PKG_EXTS)//"`
        sTMP=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
        if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
          if [ ! -f $DSHORTPKG.uux ]; then
            if [ ! -f $DSHORTPKG.rrx ]; then
              if [ ! -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                SHORTPKG="$i"
                SHORT=`echo $SHORTPKG | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
                if [ ! -f $SHORT.lock ]; then
                  if test `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | wc -l` -gt 1; then
                    rm -f ldiffp.list 2>/dev/null
                    LSWAP=0
                    for j in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
                      jSHORT=`echo "$j" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
                      if [ ! -f $PACKAGES_LOGDIR/$jSHORT ]; then
                        if test $LSWAP -eq 0; then
                          echo "$MSG_LDIFFP '$sTMP'..."
                          LSWAP=1
                        fi
                        if test `echo "$j" | grep -c "%"` -ge 1; then
                          RNAME=`echo "$j" | cut -f1 -d%`
                          RNAME=" ($RNAME)"
                        else
                          RNAME=""
                        fi
                        echo " > $jSHORT$RNAME"
                        touch $jSHORT.lock
                        echo "$j" >> ldiffp.list 2>/dev/null
                      else
                        RNAME=""
                      fi
                    done
                  fi
                fi
                eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
                SIZEFILE=`grep -E "./slackware.*$eTMP$.*|./extra.*$eTMP$.*|./patches.*$eTMP$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
                if [ -z $SIZEFILE ]; then
                  for x in `ls repos/ 2>/dev/null`; do
                    RLINE=`grep "$i$" repos/$x/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$0}'`
                    if [ ! -z "$RLINE" ]; then
                      RRNAME="$x"
                      RNAME=" ($x)"
                      SIZEFILE=`echo "$RLINE" | awk '{print$1}'`
                      break
                    fi
                  done
                else
                  RRNAME=""
                  RNAME=""
                fi
                if [ -z "$SIZEFILE" ]; then SIZEFILE=0; fi
                if [[ "$PARAM" == "-a" ]]; then
                  touch $DSHORTPKG.iix 2>/dev/null
                  touch $DSHORTPKG.aax 2>/dev/null
                  echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list 2>/dev/null
		  answer="$MSG_ALL"
                else
                  iCHECK=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
                  iCCHECK=`ls $PACKAGES_LOGDIR/$iCHECK-[0-9]* 2>/dev/null | wc -l`
                  if test $iCCHECK -ge 1; then
                    iPKG=`ls $PACKAGES_LOGDIR/$iCHECK-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | awk '{if(NR==1)print$1}'`
                    echo "$MSG_PVPKG '$iCHECK': $iPKG"
                    rivar "MSG_SINSTALLX"
                    MSG_SINSTALLX=`echo "$MSG_SINSTALLX" | sed s/'%X'/$DSHORTPKG/\g`
                    echo -n "$MSG_SINSTALLX$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
                  else
                    echo -n "$MSG_INSTALLX $DSHORTPKG$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
                  fi
                  while true
                  do
                    read answer
                    if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
                      then
                        break
                    fi
                    echo $MSG_YICHARZ
                  done
                  if [ -z "$answer" ]; then
                    answer="$MSG_Y"
                    touch $DSHORTPKG.iix 2>/dev/null
                    touch $DSHORTPKG.aax 2>/dev/null
                  else
                    if [[ "$answer" == "$MSG_ALL" ]]; then
                      PARAM="-a"
                      touch $DSHORTPKG.iix 2>/dev/null
                      touch $DSHORTPKG.aax 2>/dev/null
                      echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list
                    fi
                    if [[ "$answer" == "$MSG_EXIT" ]]; then
                      echo
                      cleanup_quick
                      exit
                    fi
                    if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
                      answer="$MSG_N"
                    else
                      touch $DSHORTPKG.iix 2>/dev/null
                      touch $DSHORTPKG.aax 2>/dev/null
                    fi
                  fi
                fi
                if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
                  case $answer in
                    "$MSG_Y")
                      echo "$DSHORTPKG.$PKG_EXT" >> DPKGSLIST.list 2>/dev/null
                      touch $DSHORTPKG.ssx 2>/dev/null
                      if [ -f ldiffp.list ]; then
                        for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                          if test `echo "$l" | grep -c "%"` -ge 1; then
                            RNAME=`echo "$l" | cut -f1 -d%`
                            RPATH=`echo "$l" | cut -f2 -d%`
                            SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                            if [ ! -z "$SIZEFILETMP" ]; then
                              rsize_total "$SIZEFILETMP"
                            fi
                          else
                            SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                            if [ ! -z "$SIZEFILETMP" ]; then
                              rsize_total "$SIZEFILETMP"
                            fi
                          fi
                        done
                        rm -f ldiffp.list 2>/dev/null
                      fi
                      ;;
                    "$MSG_N")
                      checkcom "$DSHORTPKG.$PKG_EXT" "$RRNAME"
                      if [ -f ldiffp.list ]; then
                        cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                        mv ldiffp.list.tmp ldiffp.list 2>/dev/null
                      fi
                      if [ ! -f $DSHORTPKG.$PKG_EXT.complete ]; then
                        rsize_total "$SIZEFILE"
                      fi
                      ;;
                    *)
                      invalid_charz "dependency_check()"
                      ;;
                  esac
                fi
                logme "dependency_check()" "$MSG_INSTALLX $DSHORTPKG$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
              fi
            fi
          fi
        fi
      done
      PACKAGES=`cat DPKGSLIST.list 2>/dev/null`
      for i in $PACKAGES; do
        DSHORTPKG=`echo $i | sed -r "s/.($PKG_EXTS)//"`
        if [ -f $DSHORTPKG.aax ]; then
          if test `grep -E "./slackware.*$i$.*|./extra.*$i$.*|./patches.*$i$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | wc -l` -ge 1; then
            iTMP=`grep -E "./slackware.*$i$.*|./extra.*$i$.*|./patches.*$i$.*" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$2}' |  sed s/.//`
            i="$iTMP"
            RNAME=""
            getfile
          else
            if test `grep "$i" repos/*/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
              for x in `ls repos/ 2>/dev/null`; do
                RLINE=`grep "$i$" repos/$x/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$0}'`
                if [ ! -z "$RLINE" ]; then
                  RNAME="$x"
                  iTMP=`echo "$RLINE" | awk '{print$2}' | sed s/.//`
                  SIZEFILETMP=`echo "$RLINE" | awk '{print$1}'`
                  i="$RNAME%""$iTMP"
                  getfile
                  break
                fi
              done
            fi
          fi
        fi
      done
      for x in $PACKAGES; do
        PKG_EXT=`echo $x | sed 's/.*\.//'`
        DSHORTPKG=`echo $x | sed -r "s/.($PKG_EXTS)//"`
        xTMP=`echo $DSHORTPKG | sed -e s/-[0-9].*//`
        if test `ls $PACKAGES_LOGDIR/$xTMP-[0-9]* 2>/dev/null | grep "/$xTMP-[0-9].*" | wc -l` -eq 1; then
          iSHORT=`ls $PACKAGES_LOGDIR/$xTMP-[0-9]* 2>/dev/null | grep "/$xTMP-[0-9].*" | sed -e "s/.*\///g"`
          if test `ls .exclude/$x.exclude* 2>/dev/null | wc -l` -eq 0 && test `ls .exclude/$iSHORT.exclude.installed 2>/dev/null | wc -l` -eq 0; then
            if [ -f $DSHORTPKG.uux ]; then
              rivar "MSG_UPGRADINGXTOY"
              MSG_UPGRADINGXTOY=`echo "$MSG_UPGRADINGXTOY" | sed s/'%X'/$iSHORT/\g | sed s/'%Y'/$DSHORTPKG/\g`
              if [[ "$VROLLBACK" == "1" && `echo $iSHORT | egrep ^devs- | wc -c` -eq 0 ]]; then
                rivar "MSG_BACKINGX"
                MSG_BACKINGX=`echo "$MSG_BACKINGX" | sed s/'%X'/$iSHORT/\g`
                echo -n "=> $MSG_BACKINGX " 
                removepkg -copy $SHORT >/dev/null 2>&1
                cd /var/log/setup/tmp/preserved_packages/$iSHORT 2>$1
                makepkg -l y -c n $CDIR/rollback/$iSHORT.$PKG_EXT >/dev/null 2>&1
                cd $CDIR
                rm -r /var/log/setup/tmp/preserved_packages/$iSHORT >/dev/null 2>&1
                if [ -e $CDIR/rollback/$iSHORT.$PKG_EXT ]; then
                   echo "$MSG_DONE!"
                   logme "dependency_check()" "$MSG_BACKINGX $MSG_DONE!" 
                else
                   echo "$MSG_FAILED!"
                   logme "dependency_check()" "$MSG_BACKINGX $MSG_FAILED!"
                fi
              fi
              echo -n "=> $MSG_UPGRADINGXTOY "
              if [ -f $x ]; then
                check_size_pkg $x
                if [ ! -f $x.corrupted ]; then
                  if [[ "$DESC" = "0" ]]; then
                    upgradepkg $x >/dev/null 2>&1
                  else
                    echo
                    upgradepkg $x
                  fi
                  touch $DSHORTPKG.$PKG_EXT.imp 2>/dev/null
                fi
              else
                for i in `ls repos/ 2>/dev/null`; do
                  if [ ! -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                    cd $CDIR/repos/$i
                    if [ -f $x ]; then
                      FILEP=`pwd`
                      check_size_pkg "$x" "$i"
                      if [ ! -f $x.corrupted ]; then
                        if [[ "$DESC" = "0" ]]; then
                          upgradepkg $x >/dev/null 2>&1
                        else
                          echo
                          upgradepkg $x
                        fi
                        break
                      fi
                    fi
                    cd $CDIR/
                  fi
                done
              fi
              if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                if [ -z $QD ]; then
                  echo "$MSG_DONE!"
                fi
                logme "dependency_check()" "=> $MSG_UPGRADINGXTOY $MSG_DONE!"
              else
                if [ -z $QD ]; then
                  echo "$MSG_FAILED!"
                fi
                logme "dependency_check()" "=> $MSG_UPGRADINGXTOY $MSG_FAILED!"
              fi
              if [[ "$VDEPENDENCY" == "1" ]]; then
                if [ -f $FILEP/$x ]; then
                  cd $FILEP
                fi
                tar tzfv $x 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$x':&/' >> TARFILES.tmp 2>/dev/null
                if [ -f $FILEP/$x ]; then
                  cd $CDIR/
                fi
              fi
            fi
          fi
        fi
      done
      for i in $PACKAGES; do
        DSHORTPKG=`echo $i | sed -r "s/.($PKG_EXTS)//"`
        if [ -f $DSHORTPKG.rrx ]; then
          if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
            echo -n "=> $MSG_REINSTALLINGX $DSHORTPKG... "
            if [ -f $i ]; then
              check_size_pkg $i
              if [ ! -f $i.corrupted ]; then
                if [[ "$DESC" = "0" ]]; then
                  installpkg $i >/dev/null 2>&1
                else
                  echo
                  installpkg $i
                fi
              fi
            else
              for x in `ls repos/ 2>/dev/null`; do
                if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                  cd $CDIR/repos/$x
                  if [ -f $i ]; then
                    FILEP=`pwd`
                    check_size_pkg "$i" "$x"
                    if [ ! -f $i.corrupted ]; then
                      if [[ "$DESC" = "0" ]]; then
                        installpkg $i >/dev/null 2>&1
                      else
                        echo
                        installpkg $i
                      fi
                      break
                    fi
                  fi
                  cd $CDIR/
                fi
              done
            fi
            if [ ! -f $i.corrupted ]; then
              if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                if [ -z $QD ]; then
                  echo "$MSG_DONE!"
                fi
                logme "dependency_check()" "=> $MSG_REINSTALLINGX $DSHORTPKG... $MSG_DONE!"
              else
                if [ -z $QD ]; then
                  echo "$MSG_FAILED!"
                fi
                logme "dependency_check()" "=> $MSG_REINSTALLINGX $DSHORTPKG... $MSG_FAILED!"
              fi
              if [[ "$VDEPENDENCY" == "1" ]]; then
                if [ -f $FILEP/$i ]; then
                  cd $FILEP
                fi
                tar tzfv $i 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$i':&/' >> TARFILES.tmp 2>/dev/null
                if [ -f $FILEP/$i ]; then
                  cd $CDIR/
                fi
              fi
            else
              logme "dependency_check()" "=> $MSG_REINSTALLINGX $DSHORTPKG... $MSG_FAILED!"
            fi
          fi
        fi
      done
      for i in $PACKAGES; do
        DSHORTPKG=`echo $i | sed -r "s/.($PKG_EXTS)//"`
        if [ -f $DSHORTPKG.iix ]; then
          if [ ! -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
            echo -n "=> $MSG_INSTALLINGX $DSHORTPKG... "
            check_size_pkg $i
            if [ ! -f $i.corrupted ]; then
              if [[ "$DESC" = "0" ]]; then
                installpkg $i >/dev/null 2>&1
              else
                echo
                installpkg $i
              fi
            fi
            for x in `ls repos/ 2>/dev/null`; do
              if [ ! -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
                cd $CDIR/repos/$x
                if [ -f $i ]; then
                  FILEP=`pwd`
                  check_size_pkg "$i" "$x"
                  if [ ! -f $i.corrupted ]; then
                    if [[ "$DESC" = "0" ]]; then
                      installpkg $i >/dev/null 2>&1
                    else
                      echo
                      installpkg $i
                    fi
                    break
                  fi
                fi
                cd $CDIR/
              fi
            done
          fi
          if [ -f $PACKAGES_LOGDIR/$DSHORTPKG ]; then
            if [ -z $QD ]; then
              echo "$MSG_DONE!"
            fi
            logme "dependency_check()" "=> $MSG_INSTALLINGX $DSHORTPKG... $MSG_DONE!"
          else
            if [ -z $QD ]; then
              echo "$MSG_FAILED!"
            fi
            logme "dependency_check()" "=> $MSG_INSTALLINGX $DSHORTPKG... $MSG_FAILED!"
          fi
          if [[ "$VDEPENDENCY" == "1" ]]; then
            if [ -f $FILEP/$i ]; then
              cd $FILEP
            fi
            tar tzfv $i 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$i':&/' >> TARFILES.tmp 2>/dev/null
            if [ -f $FILEP/$i ]; then
              cd $CDIR/
            fi
          fi
        fi
      done
      PNF=0
      for i in `ls *.omp 2>/dev/null`; do
        DSHORTPKG=`echo $i | sed s/'.omp'//`
        MSGp "dependency_check()" "$MSG_PKG_NF_LF"
        PNF=1
      done
      if test $PNF -eq 1; then
        if [[ "$DSEARCHLIB" != "1" ]]; then
          echo
          echo "$MSG_CONFAQ!"
          echo
        fi
      fi
    fi
    if [[ "$DSEARCHLIB" == "1" ]] && [[ "$2" != "1" ]]; then
      if test `cat LIBS.list 2>/dev/null | wc -l` -ge 1; then
        echo
        echo "%%% $MSG_BUSYS"
        if [[ "$INFORMATION" == "1" ]]; then
          echo
          MSGp "dependency_check()" "$MSG_DSEARCH"
          echo
        fi
        for i in `cat LIBS.list | sort | uniq`; do
          if [[ "$DSEARCHM" == "0" ]]; then
            SEARCHLIB=`find /usr /opt -name $i 2>/dev/null`
          else
            touch /var/lib/slocate/slocate.db
            SEARCHLIB=`slocate $i 2>/dev/null`
          fi
          for x in $SEARCHLIB; do
            BNAME=`basename "$x"`
            SOPATH=`echo "$x" | sed -e "s:\/$BNAME::"\g`
            SOPATHS=`echo "$x" | sed -e "s:\/$BNAME::"\g | sed -e "s:\/:\\\/:"\g`
            rivar "MSG_LIBFSOPATH"
            MSG_LIBFSOPATH=`echo "$MSG_LIBFSOPATH" | sed s/'%X'/$i/\g | sed -e "s:%Y:$SOPATHS:"\g`
            echo "$MSG_LIBFSOPATH"
            cat MPKGS.list 2>/dev/null | grep -v "/$i" > MPKGS.list.tmp
            mv MPKGS.list.tmp MPKGS.list 2>/dev/null
            if test `cat /etc/ld.so.conf 2>/dev/null | grep -c $SOPATH` -eq 0; then
              SWAPME=1
              rivar "MSG_ASO"
              MSG_ASO=`echo "$MSG_ASO" | sed -e "s:%X:$SOPATHS:"\g`
              echo "=> $MSG_ASO"
              echo "$SOPATH" >> /etc/ld.so.conf 2>/dev/null
            else
              rivar "MSG_AALDCONFIG"
              MSG_AALDCONFIG=`echo "$MSG_AALDCONFIG" | sed -e "s:%X:$SOPATHS:"\g`
              echo "=> $MSG_AALDCONFIG"
            fi
          done
        done
        echo -n "=> $MSG_UPDATING_SLL "
        ldconfig 1>/dev/null 2>/dev/null 2>&1
        echo "$MSG_DONE!"
        cp LIBS.TARFILES.tmp.list TARFILES.tmp 2>/dev/null
      fi
    fi
    if test `cat MPKGS.list 2>/dev/null | wc -l` -ge 1; then
      echo
      echo "$MSG_LISTMPKGS"
      MPKGS=`cat MPKGS.list 2>/dev/null`
      cat MPKGS.list 2>/dev/null | $PAGER 
      echo
      echo "$MSG_CONFAQ!"
    fi
    rm -f MISSINGPACKAGES.tmp
  fi
  if [ -f TARFILES.tmp ]; then
    echo
    echo "% $MSG_RDCHECK "
    echo
    dependency_check "$1" "1"
  fi
  echo
}

function_upgrade()
{
  if [ -z $2 ] || [[ "$2" == "-a" ]]; then
    KW="."
  else
    KW="$2"
  fi
  createpkglist "--upgrade"
  if [[ "$KW" != "." ]]; then
    echo "$MSG_LISTAPAC $2..."
  else
    echo "$MSG_LISTALLAPAC"
  fi
  makeulist
  echo
  CHECK=`cat NEWPKGS.list 2>/dev/null | wc -l`
  if test $CHECK -eq 0; then
    if [[ "$KW" == "." ]]; then
      MSGERR "function_upgrade()" "$MSG_IPKGSUTD"
    else
      if test `ls $PACKAGES_LOGDIR/*$2* 2>/dev/null | wc -l` -eq 0; then
        MSGERR "function_upgrade()" "$MSG_NOIPKGSFMK $2!"
      else
        MSGERR "function_upgrade()" "$MSG_IPKGSMKUTD $2!"
      fi
    fi
    cleanup_quick
    exit
  fi
  NEWPKGSLIST_FILE=`cat NEWPKGS.list 2>/dev/null `
  INSTALLEDPKGSLIST_FILE=`cat INSTALLEDPKGS.list 2>/dev/null`
  z=1
  PARAM2="$2"
  PARAM3="$3"
  for i in $NEWPKGSLIST_FILE; do
    if [[ "$PARAM2" = "-a" || "$PARAM3" = "-a" ]]; then
      INSTALLED_PACKAGE=`cat INSTALLEDPKGS.list 2>/dev/null | awk '{if(NR=='$z')print$1}'`
      echo "$i" >> NPKGLIST.list 2>/dev/null
      echo "$INSTALLED_PACKAGE" >> IPKGLIST.list 2>/dev/null
    else
      INSTALLED_PACKAGE=`cat INSTALLEDPKGS.list 2>/dev/null | awk '{if(NR=='$z')print$1}'`
      PKG_EXT=`echo $i | sed 's/.*\.//'`
      SHORT=`echo $i | sed -e "s/.*\///g"`
      SHORTPKG="$SHORT"
      SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
      sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
      if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
        if [ ! -f $SHORT.lock ]; then
          if test `cat NEWPKGS.list 2>/dev/null | sed -e "s/.*\///g" | awk -F'/' '{print $NF " " $0}' | grep -c -E "^$sTMP-[0-9].*($PKG_EXTS)$"` -gt 1; then
            rm -f ldiffp.list 2>/dev/null
            LSWAP=0
            for x in `cat NEWPKGS.list 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
              xSHORT=`echo "$x" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
              if [ ! -f $PACKAGES_LOGDIR/$xSHORT ]; then
                if test $LSWAP -eq 0; then
                  echo "$MSG_LDIFFP '$sTMP'..."
                  LSWAP=1
                fi
                if test `echo "$x" | grep -c "%"` -ge 1; then
                  RNAME=`echo "$x" | cut -f1 -d%`
                  RNAME=" ($RNAME)"
                else
                  RNAME=""
                fi
                echo " > $xSHORT$RNAME"
                touch $xSHORT.lock
                echo "$x" >> ldiffp.list 2>/dev/null
              else
                RNAME=""
              fi
           done
          fi
        fi
        if test `echo "$i" | grep -c "%"` -ge 1; then
          RNAME=`echo $i | cut -f1 -d%`
          RPKG=`echo $i | cut -f2 -d'%'`
          SIZEFILETMP=`grep "$RPKG" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          RRNAME="$RNAME"
          RNAME=" ($RNAME)"
        else
          RRNAME=""
          RNAME=""
          SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        fi
        if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
        rivar "MSG_UPGRADEXTOY"
        MSG_UPGRADEXTOY=`echo "$MSG_UPGRADEXTOY" | sed s/'%X'/$INSTALLED_PACKAGE/\g | sed s/'%Y'/''${SHORT}''/\g`
        echo -n "$MSG_UPGRADEXTOY$RNAME ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
        while true
        do
          read answer
          if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
           then
            break
          fi
          echo $MSG_YICHARZ
        done
        if [ -z "$answer" ]; then
          answer="$MSG_Y"
        else
          if [[ "$answer" == "$MSG_ALL" ]]; then
            PARAM2="-a"
            INSTALLED_PACKAGE=`cat INSTALLEDPKGS.list 2>/dev/null | awk '{if(NR=='$z')print$1}'`
            echo "$i" >> NPKGLIST.list 2>/dev/null
            echo "$INSTALLED_PACKAGE" >> IPKGLIST.list 2>/dev/null
          fi
          if [[ "$answer" == "$MSG_EXIT" ]]; then
            echo
            cleanup_quick
            exit
          fi
          if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
            answer="$MSG_N"
          fi
        fi
        if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
          case $answer in
            "$MSG_Y")
              echo "$i" >> NPKGLIST.list 2>/dev/null
              echo "$INSTALLED_PACKAGE" >> IPKGLIST.list 2>/dev/null
              touch $SHORT.ssx 2>/dev/null
              if [ -f ldiffp.list ]; then
                for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                  if test `echo "$l" | grep -c "%"` -ge 1; then
                    RNAME=`echo "$l" | cut -f1 -d%`
                    RPATH=`echo "$l" | cut -f2 -d%`
                    SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                    if [ ! -z "$SIZEFILETMP" ]; then
                      rsize_total "$SIZEFILETMP"
                    fi
                  else
                    SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                    if [ ! -z "$SIZEFILETMP" ]; then
                      rsize_total "$SIZEFILETMP"
                    fi
                  fi
                  if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
                done
                rm -f ldiffp.list 2>/dev/null
              fi
              ;;
            "$MSG_N")
              checkcom "$SHORT.$PKG_EXT" "$RRNAME"
              if [ -f ldiffp.list ]; then
                cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                mv ldiffp.list.tmp ldiffp.list 2>/dev/null
              fi
              if [ ! -f $SHORT.$PKG_EXT.complete ]; then
                rsize_total "$SIZEFILETMP"
              fi
              ;;
            *)
              invalid_charz "function_upgrade()"
              ;;
          esac
        fi
        logme "function_upgrade()" "$MSG_UPGRADEXTOY$RNAME ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
      fi
    fi
    z=`expr $z + 1`
  done
  PKGLIST=`cat NPKGLIST.list 2>/dev/null`
  for i in $PKGLIST; do
    RNAME=""
    iTMP=""
    getfile "$3"
  done
  z=1
  if test $VROLLBACK -eq 1; then
    SDATE=`date +%Y-%m-%d" "%R`
  fi
  for i in $PKGLIST; do
    PKG_EXT=`echo $i | sed 's/.*\.//'`
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    INSTALLED_PACKAGE=`cat IPKGLIST.list 2>/dev/null | awk '{if(NR=='$z')print$1}'`
    rivar "MSG_UPGRADINGXTOY"
    MSG_UPGRADINGXTOY=`echo "$MSG_UPGRADINGXTOY" | sed s/'%X'/$INSTALLED_PACKAGE/\g | sed s/'%Y'/''${SHORT}''/\g`
    if [[ "$VROLLBACK" == "1" && `echo $INSTALLED_PACKAGE | egrep ^devs- | wc -c` -eq 0 ]]; then
      rivar "MSG_BACKINGX"
      MSG_BACKINGX=`echo "$MSG_BACKINGX" | sed s/'%X'/$INSTALLED_PACKAGE/\g`
      echo -n "=> $MSG_BACKINGX "
      removepkg -copy $INSTALLED_PACKAGE >/dev/null 2>&1
      cd /var/log/setup/tmp/preserved_packages/$INSTALLED_PACKAGE
      makepkg -l y -c n $CDIR/rollback/$INSTALLED_PACKAGE.$PKG_EXT >/dev/null 2>&1
      cd $CDIR
      rm -r /var/log/setup/tmp/preserved_packages/$INSTALLED_PACKAGE >/dev/null 2>&1 
      if [ -e $CDIR/rollback/$INSTALLED_PACKAGE.$PKG_EXT ]; then
        echo "$MSG_DONE!"
        logme "function_upgrade()" "$MSG_BACKINGX $MSG_DONE!"
      else
        echo "$MSG_FAILED!"
        logme "function_upgrade()" "$MSG_BACKINGX $MSG_FAILED!"
      fi
    fi
    echo -n "=> $MSG_UPGRADINGXTOY "
    if test `echo "$i" | grep -c "%"` -ge 1; then
      RNAME=`echo "$i" | cut -f1 -d%`
      if [ -f repos/$RNAME/$SHORT.$PKG_EXT ]; then
        cd repos/$RNAME
        check_size_pkg "$SHORT.$PKG_EXT" "$RNAME"
        if [ ! -f $SHORT.$PKG_EXT.corrupted ]; then
          if [[ "$DESC" = "0" ]]; then
            upgradepkg $SHORT.$PKG_EXT >/dev/null 2>&1
          else
            echo
            upgradepkg $SHORT.$PKG_EXT
          fi
        fi
        cd $CDIR/
      fi
    else
      if [ -f $SHORT.$PKG_EXT ]; then
        check_size_pkg "$SHORT.$PKG_EXT"
        if [ ! -f $SHORT.$PKG_EXT.corrupted ]; then
          if [[ "$DESC" = "0" ]]; then
            upgradepkg $SHORT.$PKG_EXT >/dev/null 2>&1
          else
            echo
            upgradepkg $SHORT.$PKG_EXT
          fi
        fi
      fi
    fi
    if [ -f $PACKAGES_LOGDIR/$SHORT ]; then
      if [ -z $QD ]; then
        echo "$MSG_DONE!"
      fi
      logme "function_upgrade()" "=> $MSG_UPGRADINGXTOY $MSG_DONE!"
      SHORTTMPLILOCHK=`echo $SHORT.$PKG_EXT | cut -f1 -d'-'`
      if [[ "$SHORTTMPLILOCHK" = "lilo" ]]; then
        lilo -v >/dev/null
      fi
      if [[ "$SHORTTMPLILOCHK" = "kernel" ]]; then
        if [ -f `which lilo`]; then
          lilo -v >/dev/null
        fi
      fi
    else
      if [ -z $QD ]; then
        echo "$MSG_FAILED!"
      fi
      logme "function_upgrade()" "=> $MSG_UPGRADINGXTOY $MSG_FAILED!"
      rm -f $SHORT.$PKG_EXT.tmp 2>/dev/null
    fi
    if [[ "$VDEPENDENCY" == "1" ]]; then
      if test `echo "$i" | grep -c "%"` -ge 1; then
        cd repos/$RNAME 2>/dev/null
      fi
      tar tzfv $SHORT.$PKG_EXT 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$SHORT.$PKG_EXT':&/' >> TARFILES.tmp
      if test `echo "$i" | grep -c "%"` -ge 1; then
        cd $CDIR/ 2>/dev/null
      fi
    fi
    z=`expr $z + 1`
  done
  if [[ $VDEPENDENCY == 1 ]]; then
    if test `cat TARFILES.tmp 2>/dev/null | wc -l` -gt 0; then
      echo
      if [[ "$INFORMATION" == "1" ]]; then
        MSGp "function_upgrade()" "$MSG_DDEP"
        echo
      fi
      if [[ "$2" == "-a" ]] || [[ "$2" == "-ap" ]] || [[ "$3" == "-a" ]] || [[ "$3" == "-ap" ]]; then
        dependency_check "-a"
      else
        dependency_check
      fi
    fi
  fi
  if [[ "$VROLLBACK" == "1" ]]; then
    EDATE=`date +%Y-%m-%d" "%R`
    echo StartTime=$SDATE EndTime=$EDATE
    echo "$SDATE $EDATE" >> rollback/ROLLBACK.TXT
    cd rollback
    ROLLLIST=`ls -lt --time-style=long-iso $PKG_EXTS_WCARD | awk {'print $6 "%" $7 "%" $8'} | sort -t % --key=1,2`
    while [ `wc -l $CDIR/rollback/ROLLBACK.TXT | awk {'print $1'}` -gt $ROLLBACKMAX ]
    do
      rDATE=`head -1 $CDIR/rollback/ROLLBACK.TXT | awk {'print $3 " " $4'}`
      for i in $ROLLLIST
      do
        iDATE=`echo $i | awk -F "%" {'print $1" "$2'}`
        if [[ "$iDATE" < "$rDATE" ]]; then
          rm -f $CDIR/rollback/`echo $i | awk -F "%" {'print $3'}` 2>/dev/null
          logme "function_upgrade()" "Deleting expired back-up package `echo $i | awk -F "%" {'print $3'}`"
        fi
      done
      mv $CDIR/rollback/ROLLBACK.TXT $CDIR/rollback/ROLLBACK.tmp 2>/dev/null
      cat $CDIR/rollback/ROLLBACK.tmp | sed 1d > $CDIR/rollback/ROLLBACK.TXT
      rm -f $CDIR/rollback/ROLLBACK.tmp 2>/dev/null
    done
    cd $CDIR
  fi
  echo
}

function_install()
{
  check_ipkg()
  {
    SHORT=`echo $1 | sed -r "s/.($PKG_EXTS)//"`
    if [ -f $PACKAGES_LOGDIR/$SHORT ]; then
      if [[ "$2" == "-p" || "$2" == "-ap" ]]; then
        touch $SHORT.zmp 2>/dev/null
        rivar "MSG_PATAI"
        MSG_PATAI=`echo "$MSG_PATAI" | sed s/'%X'/''${SHORT}''/\g`
        MSG "function_install()" "$MSG_PATAI"
      else
        touch $SHORT.zmp 2>/dev/null
        rivar "MSG_PACAI"
        MSG_PACAI=`echo "$MSG_PACAI" | sed s/'%X'/''${SHORT}''/\g`
        MSG "function_install()" "$MSG_PACAI"
      fi
      touch $1.pmt
    fi
  }
  install_pkg()
  {
    SHORT=`echo $1 | sed -r "s/.($PKG_EXTS)//" | sed -e s/-[0-9].*//`
    xSWAP=0
    if [ -z $3 ]; then
      if [ -f $1 ]; then
        xSWAP=1
      fi
    else
      if [ -f repos/$3/$1 ]; then
        xSWAP=1
      fi
    fi
    if test $xSWAP -eq 1; then
      echo -n "=> $MSG_INSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... "
      check_size_pkg $1 $3
      if [ ! -z $3 ]; then
        cd repos/$3
      fi
      if [ ! -f $1.corrupted ]; then
        if [[ "$DESC" = "0" ]]; then
          if [[ "$2" == "-p" || "$2" == "-ap" ]]; then
            if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -ge 1; then
              upgradepkg $1 >/dev/null 2>&1
            else
              installpkg $1 >/dev/null 2>&1
            fi
          else
            installpkg $1 >/dev/null 2>&1
          fi
        else
          echo
          if [[ "$2" == "-p" || "$2" == "-ap" ]]; then
            if test `ls $PACKAGES_LOGDIR/$SHORT* 2>/dev/null | wc -l` -ge 1; then
              upgradepkg $1
            else
              installpkg $1
            fi
          else
            installpkg $1
          fi
        fi
      fi
      if [ ! -z $3 ]; then
        cd $CDIR/
      fi
      if [ -f $PACKAGES_LOGDIR/`echo $1 | sed -r "s/.($PKG_EXTS)//"` ]; then
        if [ -z $QD ]; then
          echo "$MSG_DONE!"
        fi
        logme "function_install()" "=> $MSG_INSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_DONE!"
      else
        if [ -z $QD ]; then
          echo "$MSG_FAILED!"
        fi
        logme "function_install()" "=> $MSG_INSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_FAILED!"
        rm -f $1.tmp 2>/dev/null
      fi
      if [[ "$VDEPENDENCY" == "1" ]]; then
        if [ ! -z $3 ]; then
          cd repos/$3
        fi
        tar tzfv $1 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$1':&/' >> $CDIR/TARFILES.tmp
        if [ ! -z $3 ]; then
          cd $CDIR/
        fi
      fi
    else
      MSG "function_install()" "=> $MSG_INSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_FAILED!"
    fi
  }
  if [ -z $2 ] || [[ "$2" == "-a" ]] || [[ "$2" == "-p" ]] || [[ "$2" == "-ap" ]]; then
    KW="."
  else
    KW="$2"
  fi
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    createpatchlist
  else
    createpkglist
  fi
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAT $2..."
    else
      echo "$MSG_LISTALLAPAT"
    fi
  else
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAC $2..."
    else
      echo "$MSG_LISTALLAPAC"
    fi
  fi
  CSWAP=0
  makelist
  echo
  if test $CSWAP -eq 0; then
    if [[ "$KW" != "." ]]; then
      if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
        echo "$MSG_NAPATSFMK $2!"
      else
        echo "$MSG_NAPACSFMK $2!"
      fi
    else
      if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
        echo "$MSG_NAPATSF"
      else
        echo "$MSG_NAPACSF"
      fi
    fi
  fi
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    check_ipkg $SHORT $3
  done
  PARAM2="$2"
  PARAM3="$3"
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
    if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
      if [[ "$PARAM2" = "-a" || "$PARAM2" = "-ap" || "$PARAM3" = "-a" || "$PARAM3" = "-ap" ]]; then
        echo "$i" >> PKGLIST.list 2>/dev/null
      else
        if [ ! -f $PACKAGES_LOGDIR/$SHORT ]; then
          if [ ! -f $SHORT.lock ]; then
            if test `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -c -E "^$sTMP-[0-9].*($PKG_EXTS)$"` -gt 1; then
              rm -f >> ldiffp.list 2>/dev/null
              LSWAP=0
              for x in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)" | awk '{print$2}'`; do
                xSHORT=`echo "$x" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
                if [ ! -f $PACKAGES_LOGDIR/$xSHORT ]; then
                  if test $LSWAP -eq 0; then
                    echo "$MSG_LDIFFP '$sTMP'..."
                    LSWAP=1
                  fi
                  if test `echo "$x" | grep -c "%"` -ge 1; then
                    RNAME=`echo "$x" | cut -f1 -d%`
                    RNAME=" ($RNAME)"
                  else
                    RNAME=""
                  fi
                  echo " > $xSHORT$RNAME"
                  touch $xSHORT.lock
                  echo "$x" >> ldiffp.list 2>/dev/null
                else
                  RNAME=""
                fi
              done
            fi
          fi
          if test `echo "$i" | grep -c "%"` -ge 1; then
            RNAME=`echo $i | cut -f1 -d%`
            RPKG=`echo $i | cut -f2 -d'%'`
            SIZEFILETMP=`grep "$RPKG" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
            RRNAME="$RNAME"
            RNAME=" ($RNAME)"
          else
            RRNAME=""
            RNAME=""
            SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          fi
          if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
          iCHECK=`echo $SHORT | sed -e s/-[0-9].*//`
          iCCHECK=`ls $PACKAGES_LOGDIR/$iCHECK-[0-9]* 2>/dev/null | wc -l`
          if test $iCCHECK -ge 1; then
            iPKG=`ls $PACKAGES_LOGDIR/$iCHECK-[0-9]* 2>/dev/null | sed -e "s/.*\///g" | awk '{if(NR==1)print$1}'`
            echo "$MSG_PVPKG '$iCHECK': $iPKG"
            rivar "MSG_SINSTALLX"
            MSG_SINSTALLX=`echo "$MSG_SINSTALLX" | sed s/'%X'/$SHORT/\g`
            echo -n "$MSG_SINSTALLX$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
          else
            echo -n "$MSG_INSTALLX $SHORT$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
          fi

          while true
          do
            read answer
            if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
             then
              break
            fi
          echo $MSG_YICHARZ
          done

          if [ -z "$answer" ]; then
            answer="$MSG_Y"
          else
            if [[ "$answer" == "$MSG_ALL" ]]; then
              PSWAP=0
              if [[ "$3" == "-p" ]]; then PARAM2="-ap"; PSWAP=1; fi
              if test $PSWAP -eq 0; then PARAM2="-a"; fi
              echo "$i" >> PKGLIST.list 2>/dev/null
            fi
            if [[ "$answer" == "$MSG_EXIT" ]]; then
              echo
              cleanup_quick
              exit
            fi
            if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
              answer="$MSG_N"
              touch $SHORT.zmp 2>/dev/null
            fi
          fi
          if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
            case $answer in
              "$MSG_Y")
                echo $i >> PKGLIST.list 2>/dev/null
                touch $SHORT.ssx 2>/dev/null
                if [ -f ldiffp.list ]; then
                  for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                    if test `echo "$l" | grep -c "%"` -ge 1; then
                      RNAME=`echo "$l" | cut -f1 -d%`
                      RPATH=`echo "$l" | cut -f2 -d%`
                      SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                      if [ ! -z "$SIZEFILETMP" ]; then
                        rsize_total "$SIZEFILETMP"
                      fi
                    else
                      SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                      if [ ! -z "$SIZEFILETMP" ]; then
                        rsize_total "$SIZEFILETMP"
                      fi
                    fi
                    if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
                  done
                  rm -f ldiffp.list 2>/dev/null
                fi
                ;;
              "$MSG_N")
                checkcom "$SHORT.$PKG_EXT" "$RRNAME"
                if [ -f ldiffp.list ]; then
                  cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                  mv ldiffp.list.tmp ldiffp.list 2>/dev/null
                fi
                if [ ! -f $SHORT.$PKG_EXT.complete ]; then
                  rsize_total "$SIZEFILETMP"
                fi
                ;;
              *)
                invalid_charz "function_install()"
                ;;
            esac
          fi
          logme "function_install()" "$MSG_INSTALLX $SHORT$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
        fi
      fi
    fi
  done
  PKGLIST=`cat PKGLIST.list 2>/dev/null`
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    if [ ! -f $SHORT.zmp ]; then
      RNAME=""
      iTMP=""
      getfile "$3"
    fi
  done
  for i in $PKGLIST; do
    PKG_EXT=`echo $i | sed 's/.*\.//'`
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    if test `echo $i | grep -c "%"` -eq 0; then
      RNAME=""
    else
      RNAME=`echo $i | cut -f1 -d'%'`
    fi
    iTMP=`echo $i | cut -f2 -d%`
    i=`echo $i | sed -e "s/.*\///g"`
    if [ ! -f $SHORT.pmt ]; then
      check_ipkg $SHORT $3
      if [ ! -f $SHORT.zmp ]; then
        install_pkg "$SHORT.$PKG_EXT" "$3" "$RNAME"
      fi
    fi
  done
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    rm -f $SHORT.pmt
  done
  if [[ $VDEPENDENCY = 1 ]]; then
    if test `cat TARFILES.tmp 2>/dev/null | wc -l` -gt 0; then
      echo
      if [[ "$INFORMATION" == "1" ]]; then
        MSGp "function_install()" "$MSG_DDEP"
        echo
      fi
      if [[ "$2" == "-a" ]] || [[ "$2" == "-ap" ]] || [[ "$3" == "-a" ]] || [[ "$3" == "-ap" ]]; then
        dependency_check "-a"
      else
        dependency_check
      fi
    fi
  fi
  echo
}

function_reinstall()
{
  install_pkg()
  {
    SHORT=`echo $1 | sed -r "s/.($PKG_EXTS)//" | sed -e s/-[0-9].*//`
    xSWAP=0
    if [ -z $3 ]; then
      if [ -f $1 ]; then
        xSWAP=1
      fi
    else
      if [ -f repos/$3/$1 ]; then
        xSWAP=1
      fi
    fi
    if test $xSWAP -eq 1; then
      echo -n "=> $MSG_REINSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... "
      check_size_pkg $1 $3
      if [ ! -z $3 ]; then
        cd repos/$3
      fi
      if [ ! -f $1.corrupted ]; then
        if [[ "$DESC" = "0" ]]; then
          installpkg $1 >/dev/null 2>&1
        else
          echo
          installpkg $1
        fi
        if [ ! -z $3 ]; then
          cd $CDIR/
        fi
        if [ -f $PACKAGES_LOGDIR/`echo $1 | sed -r "s/.($PKG_EXTS)//"` ]; then
          if [ -z $QD ]; then
            echo "$MSG_DONE!"
          fi
          logme "function_reinstall()" "=> $MSG_REINSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_DONE!"
          touch $1.pmt
          touch $1.zmp
        else
          if [ -z $QD ]; then
            echo "$MSG_FAILED!"
          fi
          logme "function_reinstall()" "=> $MSG_REINSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_FAILED!"
          rm -f $1.tmp 2>/dev/null
        fi
        if [[ "$VDEPENDENCY" == "1" ]]; then
          if [ ! -z $3 ]; then
            cd repos/$3
          fi
          tar tzfv $1 2>/dev/null | grep bin/ | awk '{print$6}' | sed -e 's/.*/'$1':&/' >> $CDIR/TARFILES.tmp
          if [ ! -z $3 ]; then
            cd $CDIR/
          fi
        fi
      else
        MSG "function_reinstall()" "$MSG_FAILED!"
        rm -f $1.tmp 2>/dev/null
      fi
    else
      MSG "function_reinstall()" "=> $MSG_REINSTALLINGX `echo $1 | sed -r "s/.($PKG_EXTS)//"`... $MSG_FAILED!"
      rm -f $1.tmp 2>/dev/null
    fi
  }
  if [ -z $2 ] || [[ "$2" == "-a" ]] || [[ "$2" == "-p" ]] || [[ "$2" == "-ap" ]]; then
    KW="."
  else
    KW="$2"
  fi
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    createpatchlist
  else
    createpkglist
  fi
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAT $2..."
    else
      echo "$MSG_LISTALLAPAT"
    fi
  else
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAC $2..."
    else
      echo "$MSG_LISTALLAPAC"
    fi
  fi
  CSWAP=0
  makelist
  echo
  if test $CSWAP -eq 0; then
    if [[ "$KW" != "." ]]; then
      if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
        echo "$MSG_NAPATSFMK $2!"
      else
        echo "$MSG_NAPACSFMK $2!"
      fi
    else
      if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
        echo "$MSG_NAPATSF"
      else
        echo "$MSG_NAPACSF"
      fi
    fi
  fi
  PARAM2="$2"
  PARAM3="$3"
  for i in $PKGLIST; do
    PKG_EXT=`echo $i | sed 's/.*\.//'`
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
    if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
      if [[ "$PARAM2" = "-a" || "PARAM2" = "-ap" || "$PARAM3" = "-a" || "$PARAM3" = "-ap" ]]; then
        if [ -f $PACKAGES_LOGDIR/$SHORT ]; then
          echo "$i" >> PKGLIST.list 2>/dev/null
        else
          if [[ "$PARAM2" = "-p" || "$PARAM2" = "-ap" || "$PARAM3" = "-p" || "$PARAM3" = "-ap" ]]; then
            rivar "MSG_PATNI"
            MSG_PATNI=`echo "$MSG_PATNI" | sed s/'%X'/''${SHORT}''/\g`
            echo "$MSG_PATNI"
          else
            rivar "MSG_PACNI"
            MSG_PACNI=`echo "$MSG_PACNI" | sed s/'%X'/''${SHORT}''/\g`
            echo "$MSG_PACNI"
          fi
          touch $SHORT.zmp 2>/dev/null
        fi
      else
        if [ -f $PACKAGES_LOGDIR/$SHORT ]; then
          sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
          if [ ! -f $SHORT.lock ]; then
            if test `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -c -E "^$sTMP-[0-9].*($PKG_EXTS)$"` -gt 1; then
              rm -f ldiffp.list 2>/dev/null
              LSWAP=0
              for x in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
                xSHORT=`echo "$x" | sed -e s/.*\///g | sed -r "s/.($PKG_EXTS)//"`
                if [ ! -f $PACKAGES_LOGDIR/$xSHORT ]; then
                  if test $LSWAP -eq 0; then
                    echo "$MSG_LDIFFP '$sTMP'..."
                    LSWAP=1
                  fi
                  if test `echo "$x" | grep -c "%"` -ge 1; then
                    RNAME=`echo "$x" | cut -f1 -d%`
                    RNAME=" ($RNAME)"
                  else
                    RNAME=""
                  fi
                  echo " > $xSHORT$RNAME"
                  touch $xSHORT.lock
                  echo "$x" >> ldiffp.list 2>/dev/null
                else
                  RNAME=""
                fi
              done
            fi
          fi
          if test `echo "$i" | grep -c "%"` -eq 1; then
            RNAME=`echo $i | cut -f1 -d%`
            RPKG=`echo $i | cut -f2 -d'%'`
            SIZEFILETMP=`grep "$RPKG" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
            RRNAME="$RNAME"
            RNAME=" ($RNAME)"
          else
            RRNAME=""
            RNAME=""
            SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          fi
          if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
          echo -n "$MSG_REINSTALLX $SHORT$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"
         
          while true
          do
            read answer
            if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
             then
              break
            fi
            echo $MSG_YICHARZ
          done

          if [ -z "$answer" ]; then
            answer="$MSG_Y"
          else
            if [[ "$answer" == "$MSG_ALL" ]]; then
              PSWAP=0
              if [[ "$3" == "-p" ]]; then PARAM2="-ap"; PSWAP=1; fi
              if test $PSWAP -eq 0; then PARAM2="-a"; fi
              echo "$i" >> PKGLIST.list 2>/dev/null
            fi
            if [[ "$answer" == "$MSG_EXIT" ]]; then
              echo
              cleanup_quick
              exit
            fi
            if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
              answer="$MSG_N"
            fi
          fi
          if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
            case $answer in
              "$MSG_Y")
                echo $i >> PKGLIST.list 2>/dev/null
                touch $SHORT.ssx 2>/dev/null
                if [ -f ldiffp.list ]; then
                  for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                    if test `echo "$l" | grep -c "%"` -ge 1; then
                      RNAME=`echo "$l" | cut -f1 -d%`
                      RPATH=`echo "$l" | cut -f2 -d%`
                      SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                      if [ ! -z "$SIZEFILETMP" ]; then
                        rsize_total "$SIZEFILETMP"
                      fi
                    else
                      SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                      if [ ! -z "$SIZEFILETMP" ]; then
                        rsize_total "$SIZEFILETMP"
                      fi
                    fi
                    if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
                  done
                  rm -f ldiffp.list 2>/dev/null
                fi
                ;;
              "$MSG_N")
                checkcom "$SHORT.$PKG_EXT" "$RRNAME"
                if [ -f ldiffp.list ]; then
                  cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                  mv ldiffp.list.tmp ldiffp.list 2>/dev/null
                fi
                if [ ! -f $SHORT.$PKG_EXT.complete ]; then
                  rsize_total "$SIZEFILETMP"
                fi
                ;;
              *)
                invalid_charz "function_reinstall()"
                ;;
            esac
          fi
          logme "function_install()" "$MSG_REINSTALLX $SHORT$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
        else
          rivar "MSG_PACNI"
          MSG_PACNI=`echo "$MSG_PACNI" | sed s/'%X'/''${SHORT}''/\g`
          echo "$MSG_PACNI"
          touch $SHORT.zmp 2>/dev/null
        fi
      fi
    fi
  done
  PKGLIST=`cat PKGLIST.list 2>/dev/null`
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS)//"`
    if [ ! -f $SHORT.zmp ]; then
      RNAME=""
      iTMP=""
      getfile "$3"
    fi
  done
  for i in $PKGLIST; do
    PKG_EXT=`echo $i | sed 's/.*\.//'`
    if [ ! -f $SHORT.zmp ]; then
      SHORT=`echo $i | sed -e "s/.*\///g"`
      SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
      if test `echo $i | grep -c "%"` -eq 0; then
        RNAME=""
      else
        RNAME=`echo $i | cut -f1 -d'%'`
      fi
      iTMP=`echo $i | cut -f2 -d%`
      i=`echo $i | sed -e "s/.*\///g"`
      if [ ! -f $SHORT.pmt ]; then
        if [ ! -f $SHORT.$PKG_EXT.zmp ]; then
          install_pkg "$SHORT.$PKG_EXT" "$3" "$RNAME"
        else
          rivar "MSG_PACAI"
          MSG_PACAI=`echo "$MSG_PACAI" | sed s/'%X'/''${SHORT}''/\g`
          MSG "function_reinstall()" "$MSG_PACAI"
        fi
      fi
    fi
  done
  if [[ $VDEPENDENCY = 1 ]]; then
    if test `cat TARFILES.tmp 2>/dev/null | wc -l` -gt 0; then
      echo
      if [[ "$INFORMATION" == "1" ]]; then
        MSGp "function_reinstall()" "$MSG_DDEP"
        echo
      fi
      if [[ "$2" == "-a" ]] || [[ "$2" == "-ap" ]] || [[ "$3" == "-a" ]] || [[ "$3" == "-ap" ]]; then
        dependency_check "-a"
      else
        dependency_check
      fi
    fi
  fi
  echo
}

function_get()
{
  if [ -z $2 ] || [[ "$2" == "-a" ]] || [[ "$2" == "-p" ]] || [[ "$2" == "-ap" ]] || [[ "$2" == "-s" ]] || [[ "$2" == "-as" ]] || [[ "$2" == "-u" ]] || [[ "$2" == "-au" ]]; then
    KW="."
  else
    KW="$2"
  fi
  SWAPME=0
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    createpatchlist
    SWAPME=1
  fi
  if [[ "$2" = "-s" || "$2" = "-as" || "$3" = "-s" || "$3" = "-as" ]]; then
    createsrclist
    SWAPME=1
  fi
  if test $SWAPME -eq 0; then
    createpkglist
  fi
  if [[ "$2" = "-p" || "$2" = "-ap" || "$3" = "-p" || "$3" = "-ap" ]]; then
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAT $2..."
    else
      echo "$MSG_LISTALLAPAT"
    fi
    SWAPME=1
  fi
  if [[ "$2" = "-s" || "$2" = "-as" || "$3" = "-s" || "$3" = "-as" ]]; then
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTASRC $2..."
    else
      echo "$MSG_LISTALLASRC"
    fi
    SWAPME=1
  fi
  if test $SWAPME -eq 0; then
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAC $2..."
    else
      echo "$MSG_LISTALLAPAC"
    fi
  fi
  CSWAP=0
  MSWAP=0
  if [[ "$2" == "-u" ]] || [[ "$2" == "-au" ]] || [[ "$3" == "-u" ]] || [[ "$3" == "-au" ]]; then
    makeulist
    cp NEWPKGS.list PKGLIST 2>/dev/null
    sortandcount
    MSWAP=1
  fi
  if [[ "$2" == "-s" ]] || [[ "$2" == "-as" ]] || [[ "$3" == "-s" ]] || [[ "$3" == "-as" ]]; then
    makeslist
    MSWAP=1
  fi
  if test $MSWAP -eq 0; then
    makelist
  fi
  echo
  if test $CSWAP -eq 0; then
    if [[ "$KW" != "." ]]; then
      if [[ "$TRIGVAR" == "Packages" ]]; then
        echo "$MSG_NAPACSFMK $2!"
      fi
      if [[ "$TRIGVAR" == "Patches" ]]; then
        echo "$MSG_NAPATSFMK $2!"
      fi
      if [[ "$TRIGVAR" == "Sources" ]]; then
        echo "$MSG_NASRCSFMK $2!"
      fi
    else
      if [[ "$TRIGVAR" == "Packages" ]]; then
        echo "$MSG_NAPACSF"
      fi
      if [[ "$TRIGVAR" == "Patches" ]]; then
        echo "$MSG_NAPATSF"
      fi
      if [[ "$TRIGVAR" == "Sources" ]]; then
        echo "$MSG_NASRCSF"
      fi
    fi
  fi
  PARAM2="$2"
  PARAM3="$3"
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORTPKG="$SHORT"
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
    if test `ls $sTMP-[0-9]*.ssx 2>/dev/null | wc -l` -eq 0; then
      if [[ "$PARAM2"  = "-a" || "$PARAM2" = "-ap" || "$PARAM2" = "-as" || "$PARAM2" = "-au" || "$PARAM3"  = "-a" || "$PARAM3" = "-ap" || "$PARAM3" = "-as" || "$PARAM3" = "-au" ]]; then
        echo "$i" >> PKGLIST.list 2>/dev/null
      else
        sTMP=`echo $SHORT | sed -e s/-[0-9].*//`
        if [ ! -f $SHORT.lock ]; then
          if test `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -c -E "^$sTMP-[0-9].*($PKG_EXTS)$"` -gt 1; then
            rm -f ldiffp.list 2>/dev/null
            LSWAP=0
            for x in `cat PKGLIST 2>/dev/null | awk -F'/' '{print $NF " " $0}' | grep -E "^$sTMP-[0-9].*($PKG_EXTS)$" | awk '{print$2}'`; do
              if test $LSWAP -eq 0; then
                echo "$MSG_LDIFFP '$sTMP'..."
                LSWAP=1
              fi
              xSHORT=`echo "$x" | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
              if test `echo "$x" | grep -c "%"` -ge 1; then
                RNAME=`echo "$x" | cut -f1 -d%`
                RNAME=" ($RNAME)"
              else
                RNAME=""
              fi
              echo " > $xSHORT$RNAME"
              touch $xSHORT.lock
              echo "$x" >> ldiffp.list 2>/dev/null
            done
          fi
        fi
        if test `echo "$i" | grep -c "%"` -ge 1; then
          RNAME=`echo $i | cut -f1 -d%`
          RPKG=`echo $i | cut -f2 -d'%'`
          SIZEFILETMP=`grep "$RPKG" repos/$RNAME/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
          RRNAME="$RNAME"
          RNAME=" ($RNAME)"
        else
          RRNAME=""
          RNAME=""
          SIZEFILETMP=`grep "$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        fi
        if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
        echo -n "$MSG_GET `echo $SHORT | cut -f1 -d%`$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$MSG_Y]"

        while true
        do
          read answer
          if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_ALL" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
           then
            break
          fi
          echo $MSG_YICHARZ
        done

        if [ -z "$answer" ]; then
          answer="$MSG_Y"
        else
          if [[ "$answer" == "$MSG_ALL" ]]; then
            PSWAP=0
            if [[ "$3" == "-p" ]]; then PARAM2="-ap"; PSWAP=1; fi
            if [[ "$3" == "-s" ]]; then PARAM2="-as"; PSWAP=1; fi
            if [[ "$3" == "-u" ]]; then PARAM2="-au"; PSWAP=1; fi
            if test $PSWAP -eq 0; then PARAM2="-a"; fi
            echo "$i" >> PKGLIST.list 2>/dev/null
          fi
          if [[ "$answer" == "$MSG_EXIT" ]]; then
            echo
            cleanup_quick
            exit
          fi
          if [[ "$answer" != "$MSG_Y" ]] && [[ "$answer" != "$MSG_N" ]]; then
            answer="$MSG_N"
          fi 
        fi
        if [[ "$answer" != "$MSG_ALL" ]] && [[ "$answer" != "$MSG_EXIT" ]]; then
          case $answer in
            "$MSG_Y")
              echo "$i" >> PKGLIST.list 2>/dev/null
              touch $SHORT.ssx 2>/dev/null
              if [ -f ldiffp.list ]; then
                for l in `cat ldiffp.list 2>/dev/null | grep -v "^$i"`; do
                  if test `echo "$l" | grep -c "%"` -ge 1; then
                    RNAME=`echo "$l" | cut -f1 -d%`
                    RPATH=`echo "$l" | cut -f2 -d%`
                    SIZEFILETMP=`cat repos/$RNAME/FILELIST.TXT 2>/dev/null | grep "$RPATH" | awk '{if(NR==1)print$1}'`
                    if [ ! -z "$SIZEFILETMP" ]; then
                      rsize_total "$SIZEFILETMP"
                    fi 
                  else
                    SIZEFILETMP=`cat .cache/FILELIST.TXT 2>/dev/null | grep "$l" | awk '{if(NR==1)print$1}'`
                    if [ ! -z "$SIZEFILETMP" ]; then
                      rsize_total "$SIZEFILETMP"
                    fi
                  fi
                  if [ -z "$SIZEFILETMP" ]; then SIZEFILETMP=0; fi
                done
                rm -f ldiffp.list 2>/dev/null
              fi
              ;;
            "$MSG_N")
              checkcom "$SHORTPKG" "$RRNAME"
              if [ -f ldiffp.list ]; then
                cat ldiffp.list 2>/dev/null | grep -v "^$i" > ldiffp.list.tmp 2>/dev/null
                mv ldiffp.list.tmp ldiffp.list 2>/dev/null
              fi
              if [ ! -f $SHORTPKG.complete ]; then
                rsize_total "$SIZEFILETMP"
              fi
              ;;
            *)
              invalid_charz "function_get()"
              ;;
          esac
        fi
        logme "function_get()" "$MSG_GET `echo $SHORT | cut -f1 -d%`$RNAME? ($MSG_Y/$MSG_N/$MSG_ALL/$MSG_EXIT): [$answer]"
      fi
    fi
  done
  PKGLIST=`cat PKGLIST.list 2>/dev/null`
  for i in $PKGLIST; do
    SHORT=`echo $i | sed -e "s/.*\///g"`
    SHORT=`echo $SHORT | sed -r "s/.($PKG_EXTS|tar.gz|tar.bz2|bz2|gz)//g"`
    if [ ! -f $SHORT.zmp ]; then
      RNAME=""
      iTMP=""
      getfile "$3"
    fi
  done
  if [[ "$INFORMATION" == "1" ]]; then
    echo
    if [[ "$2" == "-s" || "$2" == "-as" || "$3" == "-s" || "$3" == "-as" ]]; then
      echo "$MSG_INFORMATION: $MSG_SRCSIN $CDIR/sources!"
    else
      if [[ "$2" == "-p" || "$2" == "-ap" || "$3" == "-p" || "$3" == "-ap" ]]; then
        echo "$MSG_INFORMATION: $MSG_PATSIN $CDIR!"
      else
        echo "$MSG_PACSIN $CDIR!"
        echo "$MSG_RPACSIN $CDIR/repos/$MSG_RNAME!"
      fi
    fi
  fi
  echo
}

function_download()
{
  funtion_feedback()
  {
    FF_LONG=`basename $1`
    FF_SHORT=`echo $FF_LONG | sed -r "s/[.]($PKG_EXTS)//"`
    if test `echo $FF_LONG | egrep -c [.]BuildScript$` -ge 1; then
      rivar "MSG_FETCHING_BS"
      echo -n "### $MSG_FETCHING_BS"
    elif test `echo $FF_LONG | egrep -c FILE` -ge 1; then
      echo -n "### $MSG_FETCHING_FLF"
    elif test `echo $FF_LONG | egrep -c CHECKSUMS[.]md5` -ge 1; then
      echo -n "### $MSG_FETCHING_CLF"
    elif test `echo $FF_LONG | egrep -c libraries-` -ge 1; then
      echo -n "### $MSG_FETCHING_LLL"
    elif [[ "$1" == "./PACKAGES.TXT" ]]; then
      echo -n "### Fetching Package descriptions..." 
    elif [[ "$1" == "./extra/PACKAGES.TXT" ]]; then
      echo -n "### Fetching Extra Package descriptions..."
    else
      FF_SIZE=$2
      FF_SIZEK=0
      if [ -z $2 ]; then
        FF_SIZE=? 
      else 
        FF_SIZEK=`echo "$2 / 1024" | bc`
      fi
      if test $FF_SIZEK -eq 0; then
        rivar "MSG_FETCHING_PKG_BYTES"
        MSG_FETCHING_PKG_BYTES=`echo "$MSG_FETCHING_PKG_BYTES" | sed s/'%X'/''${FF_SHORT}''/\g | sed s/'%Y'/$FF_SIZE/\g`
        echo -n "### $MSG_FETCHING_PKG_BYTES "
      else
        rivar "MSG_FETCHING_PKG_KILOBYTES"
        MSG_FETCHING_PKG_KILOBYTES=`echo "$MSG_FETCHING_PKG_KILOBYTES" | sed s/'%X'/''${FF_SHORT}''/\g | sed s/'%Y'/$FF_SIZEK/\g`
        echo -n "### $MSG_FETCHING_PKG_KILOBYTES "
      fi
    fi 
  }
  function function_progressbar()
  {
    FP_NAME=$1
    FP_SIZE=($2)
    if [ -z $3 ]; then
      FP_SOFARSIZE=0
      FP_SIZETOTAL=$FP_SIZE
    else
      FP_SOFARSIZE=($3)
      FP_SIZETOTAL=($4)
    fi
    rm -f $1.tmp 2>/dev/null
    rm -f $1.pmt 2>/dev/null
    COUNT=0
    CHECK=0
    SWAPME=0
    SECRET=0
    SIZECHECK=0
    PROCS=0
    if [ -z "$FP_SIZE" ]; then FP_SIZE=0; fi
    OLDSIZE=0
    NEWSIZE=0
    DIFFKB=0
    if [ -f $1 ]; then
      ECOUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
    else
      ECOUNT=0
    fi
    printf "\n"
    COUNTSWAP=0
    COUNT_SIZE_TOTAL=$FP_SOFARSIZE
    while test $COUNT -ne $FP_SIZE; do
      if [ -f $1.tmp ]; then
        break
      fi
      if [[ "$PROGRESS" == "1" ]]; then
        COUNTKB=`echo "$COUNT / 1024" | bc`
        SIZEKB=`echo "$FP_SIZE / 1024" | bc`
        OLDSIZE=$COUNTKB
      fi
      sleep 1
      PROCS=`ps auxw | grep -E "wget|rsync" | grep "$FP_NAME" | grep -v grep | awk '{print$2}'`
      for z in $PROCS; do
        if test `cat /proc/$z/cmdline 2>/dev/null | grep -c "$FP_NAME"` -ge 1; then
          SECRET=1
        fi
      done
      if test $SECRET -eq 0; then
        COUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
        if [ -z $COUNT ]; then
          COUNT=0
        fi
        PLUSCOUNTSIZETOTALTMP=`echo "($COUNT + $FP_SIZE) - ($FP_SIZE + $ECOUNT) + $COUNT_SIZE_TOTAL" | bc`
        PLUSCOUNTSIZETOTAL=`echo "$PLUSCOUNTSIZETOTALTMP * 100 / $FP_SIZETOTAL" | bc`
        SIZECHECK=`ls -alL $1 2>/dev/null | awk '{print$5}'`
        if [ -z "$SIZECHECK" ]; then
          SIZECHECK=0
        fi
        if test $FP_SIZE -ne $SIZECHECK; then
          if [[ "$PROGRESS" == "1" ]]; then
            if [ -z $PLUSCOUNTSIZETOTALTMP ];then
              CSTKB=0
            else
              CSTKB=`echo "$PLUSCOUNTSIZETOTALTMP / 1024" | bc`
            fi
            if [ -z $FP_SIZETOTAL ]; then
              STKB=0
            else
              STKB=`echo "$FP_SIZETOTAL / 1024" | bc`
            fi
            s=""
            sc=""
            if test $COUNTSWAP -eq 1; then
              for((START=$y;START>0;START--)); do
                s="$s""\b"
                sc="$sc"" "
              done
              printf "$s"
              printf "$sc"
              printf "$s"
            fi
            COUNTSWAP=1
            [[ "$SIZEKB" < "0" ]] && SIZEKB="$MSG_UNKNOWN"
            [[ "$CSTKB" < "0" ]] && CSTKB="$MSG_UNKNOWN"
            [[ "$STKB" < "0" ]] && STKB="$MSG_UNKNOWN"
            echo -n "--- 0 $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ 0 $MSG_KILOBYTES/$MSG_SECONDS"
            yTMP=`echo "--- 0 $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ 0 $MSG_KILOBYTES/$MSG_SECONDS" | wc -c`
            y=`echo "$yTMP - 1" | bc`
            touch $1.pmt 2>/dev/null
            COUNT=$FP_SIZE
          else
            s=""
            sc=""
            if test $COUNTSWAP -eq 1; then
              for((START=$y;START>0;START--)); do
                s="$s""\b"
                sc="$sc"" "
              done
              printf "$s"
              printf "$sc"
              printf "$s"
            fi
            COUNTSWAP=1
            echo -n "--- [                    ] 0%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]"
            yTMP=`echo "--- [                    ] 0%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]" | wc -c`
            y=`echo "$yTMP - 1" | bc`
            touch $1.pmt 2>/dev/null
            COUNT=$SIZE
          fi
        fi
      fi 
      if [ ! -f $1.pmt ]; then
        CHECKIT=`ls -alL .$1* 2>/dev/null | awk '{print$5}' | wc -c`
        if test $CHECKIT -eq 0; then
          CHECKIT=`ls -alL $1 2>/dev/null | wc -l`
        fi
        if test $CHECKIT -ne 0; then
          COUNT=`ls -alL .$1* 2>/dev/null | awk '{print$5}'`
          if [ -z "$COUNT" ]; then
            COUNT=`ls -alL $1 2>/dev/null | awk '{print$5}'`
          fi
          if [ -z $COUNT ]; then
            COUNT=0
          fi
          if [ -z $PLUSCOUNTSIZETOTALTMP ]; then
            PLUSCOUNTSIZETOTALTMP=0
          fi
          PLUSCOUNTSIZETOTALTMP=`echo "($COUNT + $FP_SIZE) - ($FP_SIZE + $ECOUNT) + $COUNT_SIZE_TOTAL" | bc`
          PLUSCOUNTSIZETOTAL=`echo "$PLUSCOUNTSIZETOTALTMP * 100 / $FP_SIZETOTAL" | bc`
          if [[ "$PROGRESS" == "1" ]]; then
            if [ -z $PLUSCOUNTSIZETOTALTMP ];then
              CSTKB=0
            else
              CSTKB=`echo "$PLUSCOUNTSIZETOTALTMP / 1024" | bc`
            fi
            if [ -z $FP_SIZETOTAL ]; then
              STKB=0
            else
              STKB=`echo "$FP_SIZETOTAL / 1024" | bc`
            fi
            COUNTKB=`echo "$COUNT / 1024" | bc`
            NEWSIZE=$COUNTKB
            if [ ! -z $OLDSIZE ] && [ ! -z $NEWSIZE ]; then
              if test $OLDSIZE -lt $NEWSIZE; then
                if test $OLDSIZE -ne 0; then
                  DIFFKB=`echo "$NEWSIZE - $OLDSIZE" | bc`
                fi
              fi
            fi
            s=""
            sc=""
            if test $COUNTSWAP -eq 1; then
              for((START=$y;START>0;START--)); do
                s="$s""\b"
                sc="$sc"" "
              done
              printf "$s"
              printf "$sc"
              printf "$s"
            fi
            COUNTSWAP=1
            [[ "$COUNTKB" < "0" ]] && COUNTKB="$MSG_UNKNOWN"
            [[ "$SIZEKB" < "0" ]] && SIZEKB="$MSG_UNKNOWN"
            [[ "$CSTKB" < "0" ]] && CSTKB="$MSG_UNKNOWN"
            [[ "$STKB" < "0" ]] && STKB="$MSG_UNKNOWN"
            echo -n "--- $COUNTKB $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ $DIFFKB $MSG_KILOBYTES/$MSG_SECONDS"
            yTMP=`echo "--- $COUNTKB $MSG_KILOBYTES/$SIZEKB $MSG_KILOBYTES [$MSG_TOTAL: $CSTKB $MSG_KILOBYTES/$STKB $MSG_KILOBYTES] ~ $DIFFKB $MSG_KILOBYTES/$MSG_SECONDS" | wc -c`
            y=`echo "$yTMP - 1" | bc`
            if [[ "$COUNT" == "$FB_SIZE" ]]; then
              COUNT=$FP_SIZE
              touch $1.tmp 2>/dev/null
            fi
          else
            TOTAL=`echo "$COUNT * 100 / $FP_SIZE" | bc`
            POSITION=`echo "$TOTAL / 5" | bc`
            s=""
            sc=""
            if test $COUNTSWAP -eq 1; then
              for((START=$y;START>0;START--)); do
                s="$s""\b"
                sc="$sc"" "
              done
              printf "$s"
              printf "$sc"
              printf "$s"
            fi
            COUNTSWAP=1
            echo -n "--- ["
            case $POSITION in
              "0")
                echo -n "                    "
                ;;
              "1")
                echo -n "*                   "
                ;;
              "2")
                echo -n "**                  "
                ;;
              "3")
                echo -n "***                 "
                ;;
              "4")
                echo -n "****                "
                ;;
              "5")
                echo -n "*****               "
                ;;
              "6")
                echo -n "******              "
                ;;
              "7")
                echo -n "*******             "
                ;;
              "8")
                echo -n "********            "
                ;;
              "9")
                echo -n "*********           "
                ;;
              "10")
                echo -n "**********          "
                ;;
              "11")
                echo -n "***********         "
                ;;
              "12")
                echo -n "************        "
                ;;
              "13")
                echo -n "*************       "
                ;;
              "14")
                echo -n "**************      "
                ;;
              "15")
                echo -n "***************     "
                ;;
              "16")
                echo -n "****************    "
                ;;
              "17")
                echo -n "*****************   "
                ;;
              "18")
                echo -n "******************  "
                ;;
              "19")
                echo -n "******************* "
                ;;
              "20")
                echo -n "********************"
              ;;
            esac
            echo -n "] $TOTAL%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]"
            yTMP=`echo "--- [********************] $TOTAL%/100% [$MSG_TOTAL: $PLUSCOUNTSIZETOTAL%/100%]" | wc -c`
            y=`echo "$yTMP - 1" | bc`
            if [[ "$COUNT" == "$FP_SIZE" ]]; then
              COUNT=$FP_SIZE
              touch $1.tmp 2>/dev/null
            fi
          fi
        fi
      fi 
      SECRET=0
    done
  }
  SERVER=$1
  FULLPATH=$2
  FD_SIZE=$3
  FD_SOFAR=$4
  FD_TOTALSIZE=$5
  FD_LONG=`basename $2`
  FD_SHORT=`echo $FD_LONG | sed -r "s/[.]($PKG_EXTS)//"`
  if [[ "$SERVER" == "ROOT" ]]; then
    if [[ "$RANDOMR" == "1" ]]; then
      RFILEROOTS=`for o in $(grep ^ROOT= /etc/swaret.conf 2>/dev/null | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'=' ); do echo $RANDOM $o; done | sort -n | cut -d' ' -f2`
    else
      RFILEROOTS=`cat /etc/swaret.conf 2>/dev/null | grep "^ROOT=" | sed s/'$VERSION'/''${VERSION}''/\g | cut -f2 -d'='`
    fi
    for RFILER in $RFILEROOTS; do
      echo "[ $RFILER ]" 
      if test `echo $RFILER | egrep -c "http:|ftp:"` -ge 1; then
        funtion_feedback $FULLPATH $FD_SIZE
        wget_file $RFILER $FULLPATH
        if  test `echo $FULLPATH | egrep -c "FILE"` -ge 1; then 
          progress $FD_LONG 
        elif test `echo $FULLPATH | egrep -c "CHECKSUMS[.]md5"` -ge 1; then
          progress $FD_LONG 
        elif test `echo $FULLPATH | egrep -c "PACKAGES[.]TXT"` -ge 1; then
          progress $FD_LONG 
        elif test `echo $FULLPATH | egrep -c "ChangeLog.txt"` -ge 1; then
          progress $FD_LONG 
        else
          function_progressbar $FD_LONG $FD_SIZE $FD_SOFAR $FD_TOTALSIZE 
        fi
        if [ -f $FD_LONG ]; then
          echo "$MSG_DONE!"
          break 1
        fi
      elif test `echo $RFILER | grep -c "rsync:"` -ge 1; then
        echo rsync_file $RFILER $FULLPATH
      elif test `echo $RFILER | grep -c "file:"` -ge 1; then
        echo copy_file $RFILER $FULLPATH
      fi 
    done
  fi
}
function_compile()
{
  function_compile_progress()
  {
    FCP_FILENAME=`echo $1 | awk -F "." {'print $1'}`
    FCP_OLDCOMMAND=""
    while test 1 -ne 2; do
      PROCS=`ps auxw | grep $FCP_FILENAME | awk '{print$2}'`
      for z in $PROCS; do
        if test `cat /proc/$z/cmdline 2>/dev/null | grep -c "$FCP_FILENAME"` -ge 1; then
          OUTPUT=`cat /proc/$z/status | head -1`
          if test `echo $OUTPUT | grep swaret | wc -c` -eq 0;then
            if [[ ! "$OUTPUT" == "$FCP_OLDCOMMAND" ]];then
              echo $OUTPUT
              FCP_OLDCOMMAND=$OUTPUT
            fi 
          fi  
        fi
      done
    done
  }
  cd $CDIR
  if [ ! -d source ]; then
    mkdir source
  fi
  cd source
  function_download "ROOT" "source/CHECKSUMS.md5" 0
  if [ -f FILE_LIST ] && [[ "`md5sum FILE_LIST | awk {'print $1'}`" == "`grep FILE_LIST CHECKSUMS.md5 | awk {'print $1'}`" ]]; then
    echo $MSG_FLFUTD 
  else
    function_download "ROOT" "source/FILE_LIST" 0
  fi
  grep "/"$1"/" FILE_LIST | sed -e '/->/d' | sed -e '/^d/d' | awk {'print $5"|"$8'} > COMPILELIST.tmp
  if test `cat COMPILELIST.tmp | wc -l ` -eq 0; then
    echo $MSG_NOTHING_FOUND
    grep $1 FILE_LIST | sed -e '/->/d' | sed -e '/^d/d' | awk {'print $8'} | egrep "[.]SlackBuild|[.]build" > COMPILELIST.tmp
    if test `cat COMPILELIST.tmp | wc -l ` -ne 0; then
      echo "These are posibilities (please narrow down search):"
      for i in `cat COMPILELIST.tmp`
      do
        D_NAME=`basename $i`
        echo -n "`echo $D_NAME | sed -e 's/[.]SlackBuild//' | sed -e 's/[.]build//'` " 
      done
    fi
    echo
    rm *.tmp 2>/dev/null
    exit 1
  fi
  FC_TOTALSIZE=0
  for i in `cat COMPILELIST.tmp`
  do
    FC_SIZE=`echo $i | awk -F "|" {'print $1'}` 
    FC_TOTALSIZE=`echo $FC_TOTALSIZE + $FC_SIZE | bc`
  done
  FC_SOFARSIZE=0
  for i in `cat COMPILELIST.tmp`
  do
    FC_FILE=`echo $i | awk -F "|" {'print $2'} | sed -e 's/^[.]\///g'`
    FC_SIZE=`echo $i | awk -F "|" {'print $1'}`
    if [ -f $FC_FILE ] && [[ "`md5sum $FC_FILE | awk {'print $1'}`" == "`grep $FC_FILE$ CHECKSUMS.md5 | awk {'print $1'}`" ]]; then
      echo "### File found in: $CDIR/source/$FC_FILE" 
    else
      function_download "ROOT" "source/$FC_FILE" "$FC_SIZE" "$FC_SOFARSIZE" "$FC_TOTALSIZE"
      FC_SOFARSIZE=`echo $FC_SOFARSIZE + $FC_SIZE | bc`
      D_NAME=`basename $FC_FILE`
      D_DIR=`dirname $FC_FILE`
      if [ ! -d  $D_DIR ]; then
        mkdir -p $D_DIR
      fi
      mv $D_NAME $D_DIR/$D_NAME
    fi
  done
  cat COMPILELIST.tmp | awk -F "|" {'print $2'} | sed -e 's/^[.]\///g' | egrep "[.]SlackBuild|[.]build" > BUILDLIST.tmp
  echo "List of SlackBuilds:"
  TOPPER=`head -n 1 BUILDLIST.tmp`
  for i in `cat BUILDLIST.tmp`
  do
    D_NAME=`basename $i`
    if test `grep $D_NAME $TOPPER | wc -l` -eq 0; then
      echo "[yes] $i"
      echo $i >> BUILDLIST2.tmp
    else
      echo " [no] $i"
    fi 
  done
  for i in `cat BUILDLIST2.tmp`
  do
    echo "Running `basename $i`"
    cd `dirname $i`
    source `basename $i` 1> /dev/null 
#   function_compile_progress `basename $i`
    cd $CDIR/source
  done
  cd $CDIR
  rm source/*.tmp 
  echo "Package(s) are in /tmp ready for manual installation."
}

function_listsearch()
{
  if [ -z $2 ]; then
    if [[ "$1" == "--search" ]]; then
      MSGERR "function_listsearch()" "$MSG_PKSEARCH"
    fi
  fi
  if [[ "$2" == "-i" || "$3" = "-i" ]]; then
    if [[ "$3" == "-i" ]]; then
      KW="$2"
      createilist
    else
      KW="."
      createilist
    fi
    if [[ "$1" == "--search" ]]; then
      echo "$MSG_LISTIPAC $2..."
    else
      echo "$MSG_LISTALLIPAC"
    fi
    CSWAP=0
    makeilist
    echo
    if test $CSWAP -eq 0; then
      if [[ "$KW" != "." ]]; then
        echo "$MSG_NIPACSFMK $2!"
      else
        echo "$MSG_NIPACSF"
      fi
    fi
    cleanup_quick
    exit
  fi
  if [[ "$2" = "-n" || "$2" == "-np" || "$3" = "-n" || "$3" == "-np" ]]; then
    if [[ "$3" == "-n" || "$3" == "-np" ]]; then
      rm -f PKGLIST
      if [[ "$3" == "-np" ]]; then
        KW="$2"
        createpatchlist
        TRIGVAR="$MSG_PATCHES"
        TRIGVARS="$MSG_PATCH"
      else
        KW="$2"
        createpkglist
        TRIGVAR="$MSG_PACKAGES"
        TRIGVARS="$MSG_PACKAGE"
      fi
    else
      if [[ "$2" = "-np" ]]; then
        KW="."
        createpatchlist
        TRIGVAR="$MSG_PATCHES"
        TRIGVARS="$MSG_PATCH"
      else
        KW="."
        createpkglist
        TRIGVAR="$MSG_PACKAGES"
        TRIGVARS="$MSG_PACKAGE"
      fi
    fi
    if [[ "$1" == "--search" ]]; then
      if [[ "$3" == "-n" ]]; then
        echo "$MSG_LISTNIPAC $2..."
      else
        echo "$MSG_LISTNIPAT $2..."
      fi
    else
      if [[ "$2" == "-n" ]]; then
        echo "$MSG_LISTALLNIPAC"
      else
        echo "$MSG_LISTALLNIPAT"
      fi
    fi
    CSWAP=0
    makenlist
    echo
    if test $CSWAP -eq 0; then
      if [[ "$KW" != "." ]]; then
        if [[ "$2" = "-np" || "$3" == "-np" ]]; then
          echo "$MSG_NAPATSFMK $2!"
        else
          echo "$MSG_NAPACSFMK $2!"
        fi
      else
        if [[ "$2" = "-np" || "$3" == "-np" ]]; then
          echo "$MSG_NAPATSF"
        else
          echo "$MSG_NAPACSF"
        fi
      fi
    fi
    cleanup_quick
    exit
  fi
  if [[ "$2" = "-u" || "$3" = "-u" ]]; then
    if [[ "$3" == "-u" ]]; then
      KW="$2"
    else
      KW="."
    fi
    createpkglist "--upgrade"
    if [[ "$KW" != "." ]]; then
      echo "$MSG_LISTAPAC $2..."
    else
      echo "$MSG_LISTALLAPAC"
    fi
    makeulist 
    echo
    CHECK=`cat NEWPKGS.list 2>/dev/null | wc -l`
    if test $CHECK -eq 0; then
      if [[ "$KW" == "." ]]; then
        MSGERR "function_listsearch()" "$MSG_IPKGSUTD"
      else
        if test `ls $PACKAGES_LOGDIR/*$2* 2>/dev/null | wc -l` -eq 0; then
          MSGERR "function_listsearch()" "$MSG_NOIPKGSFMK"
        else
          MSGERR "function_listsearch()" "$MSG_IPKGSMKUTD"
        fi
      fi
    fi
    cleanup_quick
    exit
  fi
  if [[ "$2" == "-s" || "$3" = "-s" ]]; then
    if [[ "$3" == "-s" ]]; then
      KW="$2"
      createsrclist
    else
      KW="."
      createsrclist
    fi
    if [[ "$1" == "--search" ]]; then
      echo "$MSG_LISTASRC $2..."
    else
      echo "$MSG_LISTALLASRC"
    fi
    CSWAP=0
    makeslist
    echo
    if test $CSWAP -eq 0; then
      if [[ "$KW" != "." ]]; then
        echo "$MSG_NASRCSFMK $2!"
      else
        echo "$MSG_NASRCSFMK"
      fi
    fi
    cleanup_quick
    exit
  fi
  if [[ "$2" == "-p" || "$3" = "-p" ]]; then
    TRIGVAR="$MSG_PATCHES"
    TRIGVARS="$MSG_PATCH"
    if [[ "$3" == "-p" ]]; then
      KW="$2"
      createpatchlist
    else
      KW="."
      createpatchlist
    fi
  else
    TRIGVAR="$MSG_PACKAGES"
    TRIGVARS="$MSG_PACKAGE"
    if [ ! -z $2 ]; then
      KW="$2"
      createpkglist
    else
      KW="."
      createpkglist
    fi
  fi
  if [[ "$1" == "--search" ]]; then
    if [[ "$3" == "-p" ]]; then
      echo "$MSG_LISTAPAT $2..."
    else
      echo "$MSG_LISTAPAC $2..."
    fi
  else
    if [[ "$2" == "-p" ]]; then
      echo "$MSG_LISTALLAPAT"
    else
      echo "$MSG_LISTALLAPAC"
    fi
  fi
  CSWAP=0
  makelist "SHOW_INSTALLED_TOO"
  echo
  if test $CSWAP -eq 0; then
    if [[ "$KW" != "." ]]; then
      if [[ "$2" = "-p" || "$3" == "-p" ]]; then
        echo "$MSG_NAPATSFMK $2!"
      else
        echo "$MSG_NAPACSFMK $2!"
      fi
    else
      if [[ "$2" = "-p" || "$3" == "-p" ]]; then
        echo "$MSG_NAPATSF"
      else
        echo "$MSG_NAPACSF"
      fi
    fi
  fi
  cleanup_quick
  exit
}

function_resume()
{
  if [[ "$2" != "-p" && "$2" != "-s" ]]; then
    COUNT=0
    SWITCH=0
    SWAPME=0
    COUNT=`ls $PKG_EXTS_WCARD 2>/dev/null | wc -l | awk '{if(NR==1)print$1}'`
    echo -n "$MSG_PLEASE_WAIT..."
    if test $COUNT -ge 1 && test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      for i in $PKG_EXTS_WCARD; do
        eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
        SIZETMP=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$2}'`
        SIZE=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
        if [ ! -z $SIZE ]; then
          checkcom "$i" "$SIZETMP"
          if [ -f $i.incomplete ]; then
            size_total "$SIZE"
          fi
        fi
      done
      for i in $PKG_EXTS_WCARD; do
        if [ -f $i.incomplete ]; then
          eTMP=`echo "$i" | sed s:'+':'\\\\+':\g`
          SIZETMP=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$2}'`
          SIZE=`grep -E "./slackware.*$eTMP$|./extra.*$eTMP$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
          rfile "$i" "$SIZETMP" 1 "" 1
        fi
      done
      if [ -z "$ACHK" ]; then
        show_pw
        MSGERR "function_resume()" "$MSG_NBPACSFR"
      fi
    else
      show_pw
      MSGERR "function_resume()" "$MSG_NPACSFR"
    fi
    echo
    cleanup_quick
    exit
  fi
  if [[ "$2" = "-p" ]]; then
    COUNT=0
    SWITCH=0
    SWAPME=0
    COUNT=`ls $PKG_EXTS_WCARD 2>/dev/null | wc -l | awk '{if(NR==1)print$1}'`
    if [ ! -f .cache/FILELIST.TXT ]; then
      COUNT=-1
    fi
    echo -n "$MSG_PLEASE_WAIT..."
    if test $COUNT -ge 1 && test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      for i in $PKG_EXTS_WCARD; do
        SIZETMP=`grep "./patches.*$i$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}'`
        SIZE=`grep "./patches.*$i$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
        if [ ! -z $SIZE ]; then
          checkcom "$i" "$SIZETMP"
          if [ -f $i.incomplete ]; then
            size_total "$SIZE"
          fi
        fi
      done
      for i in $PKG_EXTS_WCARD; do
        SIZETMP=`grep "./patches.*$i$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{print$2}'`
        SIZE=`grep "./patches.*$i$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | awk '{if(NR==1)print$1}'`
        if [ ! -z $SIZE ]; then
          checkcom "$i" "$SIZETMP"
          if [ -f $i.incomplete ]; then
            if test `grep "./patches.*$i$" .cache/FILELIST.TXT 2>/dev/null | grep -v "/source/" | wc -l` -ge 1; then
              rfile "$i" "$SIZETMP" 2 "" 1
            fi
          fi
        fi
      done
      if [ -z "$ACHK" ]; then
        show_pw
        MSGERR "function_resume()" "$MSG_NBPATSFR"
      fi
    else
      show_pw
      MSGERR "function_resume()" "$MSG_NPATSFR"
    fi
    echo
    cleanup_quick
    exit
  fi
  if [[ "$2" = "-s" ]]; then
    COUNT=0
    SWITCH=0
    SWAPME=0
    COUNT=`ls *.*z* 2>/dev/null | wc -l | awk '{if(NR==1)print$1}'`
    if [ ! -f .cache/FILELIST.TXT ]; then
      COUNT=-1
    fi
    echo -n "$MSG_PLEASE_WAIT..."
    if test $COUNT -ge 1 && test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
      for i in *.*z*; do
        SIZETMP=`grep "./source.*$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{print$2}'`
        SIZE=`grep "./source.*$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        if [ ! -z $SIZE ]; then
          checkcom "$i" "$SIZETMP"
          if [ -f $i.incomplete ]; then
            size_total "$SIZE"
          fi
        fi
      done
      for i in *.*z*; do
        SIZETMP=`grep "./source.*$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{print$2}'`
        SIZE=`grep "./source.*$i$" .cache/FILELIST.TXT 2>/dev/null | awk '{if(NR==1)print$1}'`
        if [ ! -z $SIZE ]; then
          checkcom "$i" "$SIZETMP"
          if [ -f $i.incomplete ]; then
            if [ ! -f sources/$i ]; then
              if test `grep "./source.*$i$" .cache/FILELIST.TXT 2>/dev/null | wc -l` -ge 1; then
                rfile "$i" "$SIZETMP" 3 "" 1
              fi
            else
              rm -f $i 2>/dev/null
            fi
          fi
        fi
      done
      if [ -z "$ACHK" ]; then
        show_pw
        MSGERR "function_resume()" "$MSG_NBSRCSFR"
      fi
    else
      show_pw
      MSGERR "function_resume()" "$MSG_NSRCSFR"
    fi
    echo
    cleanup_quick
    exit
  fi
}

invalid_charz()
{
  MSG "$1" "$MSG_YICHARZ"
  MSGERR "$1" "$MSG_PRESTART"
}

set_value()
{
  if [ ! -f /etc/swaret.conf ]; then
    MSGERRp "--set" "$MSG_CONF_NFOUND"
  fi
  if [ -z $2 ]; then
    echo "  $MSG_USAGE: swaret --set $MSG_USAGE_VARIABLE=$MSG_USAGE_VALUE"
    echo
    echo -n "$MSG_PANYKEY_VARS"
    read
    echo
    echo "$MSG_LVARS"
    echo "------------------------------------------"
    for i in `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -v "EXCLUDE" | awk '{print$1}'`; do
      if test `echo "$i" | grep -c "^#"` -ge 1; then
        if test `echo "$i" | grep -c "ROOT="` -ge 1; then
          iTMP=`echo "$i" | sed s:"#":"":\g`
          if test `echo "$iTMP" | grep -c "%"` -ge 1; then
            iTMP=`echo "$iTMP" | cut -f1 -d%`
          else
            iTMP=`echo "$iTMP" | cut -f1,2,3 -d/`
          fi
          echo "$iTMP=0" >> swaret.conf.list 2>/dev/null
        else
          echo "$i" >> swaret.conf.list 2>/dev/null
        fi
      else
        if test `echo "$i" | grep -c "ROOT="` -ge 1; then
          iTMP=`echo "$i" | sed s:"#":"":\g`
          if test `echo "$iTMP" | grep -c "%"` -ge 1; then
            iTMP=`echo "$iTMP" | cut -f1 -d%`
          else
            iTMP=`echo "$iTMP" | cut -f1,2,3 -d/`
          fi
          echo "$iTMP=1" >> swaret.conf.list 2>/dev/null
        else
          echo "$i" >> swaret.conf.list 2>/dev/null
        fi
      fi
    done
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^ROOT="` -ge 1; then
      echo "ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^REPOS_ROOT="` -ge 1; then
      echo "REPOS_ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "REPOS_ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^DEP_ROOT="` -ge 1; then
      echo "DEP_ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "DEP_ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^EXCLUDE"` -ge 1; then
      echo "EXCLUDE=1" >> swaret.conf.list 2>/dev/null
    else
      echo "EXCLUDE=0" >> swaret.conf.list 2>/dev/null
    fi
    if [ -f swaret.conf.list ]; then
      cat swaret.conf.list 2>/dev/null | grep -v "#" | sort | uniq | $PAGER
      echo
    fi
    rm -f swaret.conf.list 2>/dev/null
    exit
  fi
  VAR=`echo "$2" | cut -f1 -d'='`
  VALUE=`echo "$2" | cut -f2 -d=`
  AVALUE=`echo "$2" | cut -f3 -d=`
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "$VAR="` -eq 0; then
    rivar "MSG_VNOTSET"
    MSG_VNOTSET=`echo "$MSG_VNOTSET" | sed s:'%X':"$VAR":\g`
    echo "$MSG_VNOTSET"
    exit 1
  fi
  if [ -z `echo "$2" | cut -f2 -d'='` ]; then
    echo "$MSG_DVVAL '$VAR'!"
    exit
  fi
  if test `echo "$2" | grep -c "="` -eq 0; then
    echo "$MSG_DVVAL '$VAR'!"
    exit
  fi
  if test `echo $VAR | grep -c "EXCLUDE"` -ge 1; then
    if [ -z $AVALUE ]; then
      if [[ "$VALUE" == "0" ]]; then
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^$VAR"` -eq 0; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$VAR"- | sed s/'%Y'/0/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-^"$VAR"-#"$VAR"- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$VAR"- | sed s/'%Y'/0/\g`
        echo "$MSG_VSET"
        exit
      else
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^#$VAR"` -eq 0; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$VAR"- | sed s/'%Y'/1/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-^#"$VAR"-"$VAR"- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$VAR"- | sed s/'%Y'/1/\g`
        echo "$MSG_VSET"
        exit
      fi
    else
      if [[ "$AVALUE" == "0" ]]; then
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^EXCLUDE="` -eq 0; then
          echo "$MSG_NOEXCLUDEF"
          exit
        fi
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^#EXCLUDE"` -ge 1; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"EXCLUDE"- | sed s/'%Y'/0/\g`
          echo "$MSG_ASET"
          exit
        else
          cat /etc/swaret.conf 2>/dev/null | sed s-"EXCLUDE"-"#EXCLUDE"-\g > /etc/swaret.conf.tmp 2>/dev/null
          mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
          rm -f $CDIR/.exclude/*exclude* 2>/dev/null
          rivar "MSG_VSET"
          MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"EXCLUDE"- | sed s/'%Y'/0/\g`
          echo "$MSG_VSET"
          exit
        fi
      else
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^EXCLUDE="` -eq 0; then
          echo "$MSG_NOEXCLUDEF"
          exit
        fi
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^EXCLUDE"` -ge 1; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"EXCLUDE"- | sed s/'%Y'/1/\g`
          echo "$MSG_ASET"
          exit
        else
          cat /etc/swaret.conf 2>/dev/null | sed s-"#EXCLUDE"-"EXCLUDE"-\g > /etc/swaret.conf.tmp 2>/dev/null
          mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
          rm -f $CDIR/.exclude/.elock 2>/dev/null
          rivar "MSG_VSET"
          MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"EXCLUDE"- | sed s/'%Y'/1/\g`
          echo "$MSG_VSET"
          exit
        fi
      fi
      exit
    fi
    cleanup_quick
    exit
  fi
  if test `echo $VAR | grep -c "ROOT="` -ge 1; then
    RLINE=`echo "$2" | cut -f1,2 -d=`
    EXISTING=`echo "$RLINE" | sed s-"/"-"\\\/"-\g`
    if test `cat /etc/swaret.conf 2>/dev/null | grep -c "$VAR="` -eq 0; then
      echo "$MSG_NOTHING_FOUND $EXISTING!"
      exit
    fi
    if [ -z $AVALUE ]; then
      if [[ "$VALUE" == "0" ]]; then
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^$VAR"` -eq 0; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$VAR"- | sed s/'%Y'/0/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-^"$VAR"-#"$VAR"- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$VAR"- | sed s/'%Y'/0/\g`
        echo "$MSG_VSET"
        exit
      else
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^#$VAR"` -eq 0; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$VAR"- | sed s/'%Y'/1/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-^#"$VAR"-"$VAR"- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$VAR"- | sed s/'%Y'/1/\g`
        echo "$MSG_VSET"
        exit
      fi
    else
      if [[ "$AVALUE" == "0" ]]; then
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^#$EXISTING"` -eq 1; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$EXISTING"- | sed s/'%Y'/0/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-''${EXISTING}''-#''${EXISTING}''- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$EXISTING"- | sed s/'%Y'/0/\g`
        echo "$MSG_VSET"
        exit
      else
        if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^$EXISTING"` -eq 1; then
          rivar "MSG_ASET"
          MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$EXISTING"- | sed s/'%Y'/1/\g`
          echo "$MSG_ASET"
          exit
        fi
        cat /etc/swaret.conf 2>/dev/null | sed s-#"$EXISTING"-"${EXISTING}"- > /etc/swaret.conf.tmp 2>/dev/null
        mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
        rivar "MSG_VSET"
        MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$EXISTING"- | sed s/'%Y'/1/\g`
        echo "$MSG_VSET"
        exit
      fi
    fi
  fi
  if [ -z $VAR ] || [ -z $VALUE ]; then
    echo "  $MSG_USAGE: swaret --set $MSG_USAGE_VARIABLE=$MSG_USAGE_VALUE"
    echo
    echo -n "$MSG_PANYKEY_VARS"
    read
    echo
    echo "$MSG_LVARS"
    echo "------------------------------------------"
    rm -f swaret.conf.list 2>/dev/null
    for i in `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -v "EXCLUDE" | awk '{print$1}'`; do
      if test `echo "$i" | grep -c "^#"` -ge 1; then
        if test `echo "$i" | grep -c "ROOT="` -ge 1; then
          iTMP=`echo "$i" | sed s:"#":"":\g`
          if test `echo "$iTMP" | grep -c "%"` -ge 1; then
            iTMP=`echo "$iTMP" | cut -f1 -d%`
          else
            iTMP=`echo "$iTMP" | cut -f1,2,3 -d/`
          fi
          echo "$i=0" >> swaret.conf.list 2>/dev/null
        else
          echo "$i" >> swaret.conf.list 2>/dev/null
        fi
      else
        if test `echo "$i" | grep -c "ROOT="` -ge 1; then
          iTMP=`echo "$i" | sed s:"#":"":\g`
          if test `echo "$iTMP" | grep -c "%"` -ge 1; then
            iTMP=`echo "$iTMP" | cut -f1 -d%`
          else
            iTMP=`echo "$iTMP" | cut -f1,2,3 -d/`
          fi
          echo "$i=1" >> swaret.conf.list 2>/dev/null
        else
          echo "$i" >> swaret.conf.list 2>/dev/null
        fi
      fi
    done
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^ROOT="` -ge 1; then
      echo "ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^REPOS_ROOT="` -ge 1; then
      echo "REPOS_ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "REPOS_ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^DEP_ROOT="` -ge 1; then
      echo "DEP_ROOT=1" >> swaret.conf.list 2>/dev/null
    else
      echo "DEP_ROOT=0" >> swaret.conf.list 2>/dev/null
    fi
    if test `cat /etc/swaret.conf 2>/dev/null | grep "[[:alnum:]]=[[:alnum:]]" | grep -c "^EXCLUDE"` -ge 1; then
      echo "EXCLUDE=1" >> swaret.conf.list 2>/dev/null
    else
      echo "EXCLUDE=0" >> swaret.conf.list 2>/dev/null
    fi
    if [ -f swaret.conf.list ]; then
      cat swaret.conf.list | grep -v "#" | sort | uniq | $PAGER
      echo
    fi
    rm -f swaret.conf.list 2>/dev/null
    exit
  fi
  if test `cat /etc/swaret.conf 2>/dev/null | grep -c "$VAR="` -ge 1; then
    EXISTING=`cat /etc/swaret.conf 2>/dev/null | grep "^$VAR=" | awk '{print$1}' | sed s-"/"-"\\\/"-\g`
    VALUE=`echo "$VALUE" | sed s-"/"-"\\\/"-\g`
    if [[ "$VAR=$VALUE" == "$EXISTING" ]]; then
      rivar "MSG_ASET"
      MSG_ASET=`echo "$MSG_ASET" | sed s-%X-"$VAR"-\g | sed s-%Y-"$VALUE"-\g`
      echo "$MSG_ASET"
    else
      if [[ "$VAR" == "ROOT" ]] || [[ "$VAR" == "REPOS_ROOT" ]];  then
        PLACE=`grep -n ^$VAR /etc/swaret.conf | head -1 | awk -F : {'print $1'}`
        if [[ "$PLACE" == "" ]]; then
          PLACE=`grep -n ^[#]$VAR /etc/swaret.conf | head -1 | awk -F : {'print $1'}`
        fi
        head -`echo $PLACE - 1 | bc` /etc/swaret.conf 2>/dev/null > /etc/swaret.conf.tmp 2>/dev/null
        echo "$VAR=$VALUE" 2>/dev/null >> /etc/swaret.conf.tmp 2>/dev/null
        SLENGTH=`wc -l /etc/swaret.conf | awk {'print $1'}`
        tail -`echo $SLENGTH - $PLACE + 1 | bc` /etc/swaret.conf 2>/dev/null >> /etc/swaret.conf.tmp 2>/dev/null
      else
        cat /etc/swaret.conf 2>/dev/null | sed s-"$EXISTING"-"$VAR=$VALUE"- > /etc/swaret.conf.tmp 2>/dev/null
      fi
      mv /etc/swaret.conf.tmp /etc/swaret.conf 2>/dev/null
      rivar "MSG_VSET"
      MSG_VSET=`echo "$MSG_VSET" | sed s-%X-"$VAR"-\g | sed s-%Y-"$VALUE"-\g`
      echo "$MSG_VSET"
    fi
  fi
}

remove()
{
  if [ -z "$2" ] || [[ "$2" == "." ]]; then
    MSGERR "--remove" "$MSG_PKREMOVE"
  fi
  KW="$2"
  createilist
  if test $COUNT -ge 1; then
    echo "$MSG_LISTIPAC $2..."
    makeilist
    echo
  else
    MSGERR "--remove" "$MSG_NIPACSFMK $2!"
  fi
  if [[ "$3" = "-a" ]]; then
    for i in $PKGLIST; do
      echo -n "=> $MSG_REMOVINGX $i... "
      if [[ "$DESC" = "0" ]]; then
        removepkg $i >/dev/null 2>&1
      else
        echo
        removepkg $i
      fi
      if [ ! -f $PACKAGES_LOGDIR/$i ]; then
        if [ -z $QD ]; then
          echo "$MSG_DONE!"
        fi
        logme "--remove" "=> $MSG_REMOVINGX $i... $MSG_DONE!"
      else
        if [ -z $QD ]; then
          echo "$MSG_FAILED!"
        fi
        logme "--remove" "=> $MSG_REMOVINGX $i... $MSG_FAILED!"
      fi
    done
  else
    rm -f PKGLIST.list
    for i in $PKGLIST; do
      if [ ! -f $i.pmt ]; then
        echo -n "$MSG_REMOVEX $i? ($MSG_Y/$MSG_N/$MSG_EXIT): [$MSG_Y]"
        while true
        do
          read answer
          if [[ "$answer" == "$MSG_Y" ]] || [[ "$answer" == "$MSG_N" ]] || [[ "$answer" == "$MSG_EXIT" ]] || [[ "$answer" == "" ]]
          then
             break
          fi
          echo $MSG_YICHARZ
        done
        if [ -z "$answer" ]; then
          answer="$MSG_Y"
        else
          if [[ "$answer" == "$MSG_EXIT" ]]; then
            echo
            cleanup_quick
            exit
          fi
          if [[ $answer != "$MSG_Y" ]]; then
            answer="$MSG_N"
          fi
        fi
        case $answer in
          "$MSG_Y")
            echo $i >> PKGLIST.list 2>/dev/null
            ;;
          "$MSG_N")
            ;;
          *)
            invalid_charz "--remove"
            ;;
        esac
        logme "--remove" "$MSG_REMOVEX $i? ($MSG_Y/$MSG_N/$MSG_EXIT): [$answer]"
      fi
    done
    echo
    if [ -f PKGLIST.list ]; then
      for i in `cat PKGLIST.list 2>/dev/null`; do
        echo -n "=> $MSG_REMOVINGX $i... "
        if [[ "$DESC" = "0" ]]; then
          removepkg $i >/dev/null 2>&1
        else
          echo
          removepkg $i
        fi
        if [ ! -f $PACKAGES_LOGDIR/$i ]; then
          echo "$MSG_DONE!"
          logme "--remove" "=> $MSG_REMOVINGX $i... $MSG_DONE!"
        else
          echo "$MSG_FAILED!"
          logme "--remove" "=> $MSG_REMOVINGX $i... $MSG_FAILED!"
        fi
      done
    fi
  fi
  echo
}

rollback()
{
  cd $CDIR/rollback 2>/dev/null 
  ROLLLIST=`ls -lt --time-style=long-iso $PKG_EXTS_WCARD | awk {'print $6 "%" $7 "%" $8'} | sort -t % --key=1,2`
  SWAP=0
  if test `echo $1 | grep "[[:digit:]]" | wc -c ` -eq 0; then
    rbPACKAGES=`echo $ROLLLIST | grep $1`
    if test `echo $rbPACKAGES | wc -c` -eq 0; then
      echo $MSG_BACKUPNF
      exit 1
    else
      rivar "MSG_RESTOREXTOY"
      echo "$MSG_RESTOREXTOY"
      echo "Restoring an individual package is not supported yet!"
      SWAP=1
    fi
  else
    rbMAX=`wc -l ROLLBACK.TXT`
    if [[ "$1" > "$rbMAX" ]]; then
      echo "Beyond number of archive backups!" 
    else
       rDATE=`tail -n $1 ROLLBACK.TXT | head -n 1 | awk {'print $1'}`
       rTIME=`tail -n $1 ROLLBACK.TXT | head -n 1 | awk {'print $2'} | sed s/':'//\g`
       for i in $ROLLLIST
       do
         iDATE=`echo $i | awk -F "%" {'print $1'}`
         iTIME=`echo $i | awk -F "%" {'print $2'} | sed s/':'//\g`
         if [[ "$iDATE" == "$rDATE" ]] && (( "$iTIME" >= "$rTIME" ))
         then
           SWAP=2
         elif [[ "$iDATE" > "$rDATE" ]]; then
           SWAP=2 
         fi
         if test $SWAP -eq 2; then
           BPACKAGE=`echo $i | awk -F "%" {'print $3'} | sed -r "s/.($PKG_EXTS)$//g"`
           BSHORT=`echo $BPACKAGE | sed s/[[:digit:]]//g | sed s/[.]//g | sed s/-i-//g`
           IPACKAGEtmp=`grep $BSHORT $CDIR/.cache/FILELIST.TXT | grep -E "\.($PKG_EXTS)$" | awk {'print $2'} | sed -r "s/.($PKG_EXTS)$//g"`
           IPACKAGE=`basename $IPACKAGEtmp`
           rivar "MSG_UPGRADINGXTOY"
           MSG_UPGRADINGXTOY=`echo "$MSG_UPGRADINGXTOY" | sed s/'%X'/$IPACKAGE/\g | sed s/'%Y'/$BPACKAGE/\g`
           echo -n MSG_UPGRADINGXTOY
           if [[ "$DESC" = "0" ]]; then
             upgradepkg $IPACKAGE%$BPACKAGE >/dev/null 2>&1
           else
             echo
             upgradepkg $IPACKAGE%$BPACKAGE
           fi
           echo "$MSG_DONE!"
           SWAP=1
         fi       
       done 
    fi
  fi
  if test $SWAP -eq 0; then
    echo "No files were found"
  fi 
}

memoryhd()
{
  if test `grep tmpfs /proc/filesystems | wc -l` -gt 0; then
    if [[ "$1" == "create" ]]; then
      if [ ! -d $2 ]
       then mkdir -p $2
      fi
      mount -t tmpfs /dev/shm $2
      if test `mount | grep $2 | wc -l` -gt 0; then
       logme "memoryhd()" "Created tmpfs at $2"
      else
       logme "memoryhd()" "Unable to Create tmpfs at $2"
      fi
    fi
    if [[ "$1" == "destroy" ]]; then
      if test `mount | grep $2 | wc -l` -gt 0; then
        umount $2
        logme "memoryhd()" "Destroying tmpfs at $2"
      else
        logme "memoryhd()" "Unable to destroy $2 - not in mtab" 
      fi
    fi
  fi
}

package_description()
{
  PNAME=$1
 
}
 
HEADER $1

if [ -f /etc/swaret.conf ]; then
  eval `grep "LANGUAGE=" /etc/swaret.conf`
  if [ -z $LANGUAGE ]; then
    export LANGUAGE=ENGLISH
  fi
else
  export LANGUAGE=ENGLISH
fi
if [ -f /usr/share/swaret-$SSVERSION/swaret.lang.$LANGUAGE ]; then
  source /usr/share/swaret-$SSVERSION/swaret.lang.$LANGUAGE
else
  echo "/usr/share/swaret-$SSVERSION/swaret.lang.$LANGUAGE does not exist!"
  exit 1
fi

check_for_settings
init_env_vars
initialize
SIZE_TOTAL=0
COUNT_SIZE_TOTAL=0

for i in $2 $3 $4 $5
do
  case "$i" in
    "-a" | "-ap" | "-as" | "-au")
     AUTO_SW=1
     ;;
    "-p" | "-ap")
     PATCHES_SW=1
     ;;
    "-s" | "-as")
     SOURCES_SW=1
     ;;
    "-i")
     INSTALLED_SW=1
     ;;
    * )
     if [[ "$i" == "$2" ]]; then
       KEYWORD=$2
       KEYWORD_SW=1
     fi
     ;;
  esac
done

if [[ "$1" != "--purge" ]] && [[ "$1" != "--remove" ]] && [[ "$1" != "--clear" ]] && [[ "$1" != "--log" ]] && [[ "$1" != "--gpg" ]] && [[ "$1" != "--set" ]]; then
  check_for_network
  if test `cat /etc/swaret.conf 2>/dev/null | grep -E "^ROOT=|^REPOS_ROOT=" | grep -cE "ftp:|http:"` -ge 1; then
    check_wget
  fi
  if test `cat /etc/swaret.conf 2>/dev/null | grep -E "^ROOT=|^REPOS_ROOT=" | grep -c "rsync:"` -ge 1; then
    check_rsync
  fi
  if test `cat /etc/swaret.conf 2>/dev/null | grep -E "^ROOT=|^REPOS_ROOT=" | grep -cE "ftp:|http:|rsync:|file:"` -eq 0; then
    MSGERR "GLOBAL" "$MSG_NRFOUND"
  fi
fi

logme "GLOBAL" "swaret $*"

case $1 in
  "--config")
    config
    exit
    ;;
  "--faq")
    faq "$2"
    exit
    ;;
  "--htus")
    htus "$2"
    exit
    ;;
  "--help")
    help
    exit
    ;;
  "--morehelp")
    morehelp
    exit
    ;;
  "--version")
    echo "Copyright (C) 2002-2003 Luc Cottyn"
    echo "                        Michael G. Manry <linuxsneaker@users.sf.net>"
    echo "This is free software; see the source for copying conditions.  There is NO"
    echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    exit
    ;;
  "--set")
    set_value "" $2 $3 
    exit
    ;;
  "--update")
    DSWAP=0
    if test `grep -c "^REPOS_ROOT=.*%.*" /etc/swaret.conf 2>/dev/null` -ge 1; then
      DPLRNAMES=`grep "^REPOS_ROOT=.*%.*" /etc/swaret.conf | cut -f1 -d% | sort | uniq -d`
      for i in $DPLRNAMES; do
        rivar "MSG_REPOSERRR"
        MSG_REPOSERRR=`echo "$MSG_REPOSERRR" | sed s:"%X":"$i":\g`
        printf "$MSG_REPOSERRR"
        DSWAP=1
      done
      if test $DSWAP -eq 1; then
        cleanup_quick
        exit 1
      fi
    fi
    rm -f CHECKSUMS* 2>/dev/null
    rm -f FILELIST* 2>/dev/null
    rm -f PACKAGES* 2>/dev/null
    update_lists
    echo
    cleanup_quick
    exit
    ;;
  "--upgrade")
    if [ -z $3 ]; then
      if [[ "$2" != "-a" ]]; then
        function_upgrade "" "$2" "$3" "$4" "$5"
      else
        function_upgrade "" "" "$2" "$3" "$4"
      fi
    else
      function_upgrade "" "$2" "$3" "$4" "$5"
    fi
    echo
    cleanup_quick
    exit
    ;;
  "--install")
    if [ -z $3 ]; then
      if [[ "$2" != "-a" || "$2" != "-p" || "$2" != "-ap" ]]; then
        function_install "" "$2" "$3" "$4" "$5"
      else
        function_install "" "" "$2" "$3" "$4" 
      fi
    else
      function_install "" "$2" "$3" "$4" "$5"
    fi
    cleanup_quick
    exit
    ;;
  "--reinstall")
    if [ -z $3 ]; then
      if [[ "$2" != "-a" || "$2" != "-p" || "$2" != "-ap" ]]; then
        function_reinstall "" "$2" "$3" "$4" "$5"
      else
        function_reinstall "" "" "$2" "$3" "$4"
      fi
    else
      function_reinstall "" "$2" "$3" "$4" "$5"
    fi
    cleanup_quick
    exit
    ;;
  "--remove")
    remove "" $2 $3 $4
    ;;
  "--list")
    function_listsearch "--list" "$2" "$3" "$4" "$5"
    ;;
  "--search")
    function_listsearch "--search" "$2" "$3" "$4" "$5"
    ;;
  "--get")
    if [ -z $3 ]; then
      if [[ "$2" != "-a" || "$2" != "-p" || "$2" != "-ap"  || "$2" != "-s" || "$2" != "-as" || "$2" != "-u" || "$2" != "-au" ]]; then
        function_get "" "$2" "$3" "$4" "$5"
      else
        function_get "" "" "$2" "$3" "$4"
      fi
    else
      function_get "" "$2" "$3" "$4" "$5"
    fi
    cleanup_quick
    exit
    ;;
  "--compile")
    if test $KEYWORD_SW -eq 1; then
      function_compile $KEYWORD
    else
      echo "$MSG_PKSEARCH "
      cleanup_quick
      exit 1
    fi
    cleanup_quick
    exit
    ;;
  "--manual")
    if [[ "$2" == "-c" ]]; then
        if [ ! -f /usr/man/man5/swaret.conf.5.gz ]; then
        echo "$MSG_MAN5_NF"
        exit
      fi
      if test `which man 2>/dev/null | wc -l` -ge 1; then
        man swaret.conf
      else
        printf "$MSG_MAN_NI"
        exit
      fi
    else
      if [ ! -f /usr/man/man8/swaret.8.gz ]; then
        echo "$MSG_MAN8_NF"
        exit
      fi
      if test `which man 2>/dev/null | wc -l` -ge 1; then
        man swaret.conf
      else
        printf "$MSG_MAN_NI"
        exit
      fi
    fi
    exit
    ;;
  "--resume")
    function_resume "" "$2" "$3" "$4" "$5"
    cleanup_quick
    exit
    ;;
  "--dep")
    if [ -z $2 ] || [[ "$2" == "-a" ]]; then
      KW="."
    else
      KW="$2"
    fi
    createilist
    if [ -z $2 ] || [[ "$2" == "-a" ]]; then
      echo -n "=> $MSG_CLIST "
    else
      echo -n "=> $MSG_CLISTMK $2... "
      echo $PKGLIST
    fi
    SWAP=0
    for i in $PKGLIST; do
      FILE=`basename $i`
      grep "bin/" $PACKAGES_LOGDIR/$FILE 2>/dev/null | sed -e 's/.*/'$FILE':&/' >> TARFILES.tmp 2>/dev/null
      SWAP=1
    done
    if test $SWAP -eq 0; then 
      echo "$MSG_NAPACSFMK $2"
      cleanup_quick
      exit 1 
    fi
    echo "$MSG_DONE!"
    echo
    if [[ "$2" == "-a" ]] || [[ "$3" == "-a" ]]; then
      dependency_check "-a"
    else
      dependency_check
    fi
    cleanup_quick
    exit
    ;;
  "--show")
    rm -f PKGLIST 2>/dev/null
    if [[ "$2" != "-i" && "$3" != "-i" ]]; then
      if [[ "$2" == "-p" || "$3" == "-p" ]]; then
        if [[ "$2" == "-p" ]]; then
          KW="."
        else
          KW="$2"
        fi
        createpatchlist
      else
        if [[ -z $2 ]]; then
          KW="."
        else
          KW="$2"
        fi
        createpkglist
      fi
      if test $COUNT -eq 0; then
        if [[ "$3" == "-p" ]]; then
          MSGERR "--show" "$MSG_NODESCPATMK $2!"
        fi
        if [[ "$2" == "-p" ]]; then
          MSGERR "--show" "$MSG_NODESCPAT"
        fi
        if [ -z $2 ]; then
          MSGERR "--show" "$MSG_NODESCPAC"
        else
          MSGERR "--show" "$MSG_NODESCPACMK $2!"
        fi
      fi
      SSWAP=0
      for i in $PKGLIST; do
        SHORT=`echo $i | sed -e "s/.*\///g"`
        SHORTPKG="$SHORT"
        SHORT=`echo $SHORT | sed -e s/-[0-9].*//`
        if test `ls .exclude/$SHORTPKG.exclude* 2>/dev/null | wc -l` -eq 0; then
          SSWAP=1
          if test `echo $i | grep -c "%"` -eq 0; then
            iSHORT=`echo $i | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
            rivar "MSG_DESCFORX"
            MSG_DESCFORX=`echo "$MSG_DESCFORX" | sed s/'%X'/$iSHORT/\g`
            MSG "--show" "$MSG_DESCFORX"
            MSG "--show" "----------------------------------------------------------------------"
            if [[ "$3" == "-p" ]]; then
              if test `grep "$SHORT: " .cache/PACKAGES.TXT.patches 2>/dev/null | wc -l` -eq 0; then
                echo "$MSG_NDESCFPAT $iSHORT!"
              else
                grep "$SHORT: " .cache/PACKAGES.TXT.patches 2>/dev/null | sed s/$SHORT': '// | awk '{if(NR != 1) print $0}'
              fi
            else
              if test `grep "$SHORT: " .cache/PACKAGES.TXT 2>/dev/null | wc -l` -ge 1; then
                grep "$SHORT: " .cache/PACKAGES.TXT 2>/dev/null | sed s/$SHORT': '// | awk '{if(NR != 1) print $0}'
              else
                if test `grep "$SHORT: " .cache/PACKAGES.TXT.extra 2>/dev/null | wc -l` -ge 1; then
                  grep "$SHORT: " .cache/PACKAGES.TXT.extra 2>/dev/null | sed s/$SHORT': '// | awk '{if(NR != 1) print $0}'
                else
                  echo "$MSG_NDESCFPAC $iSHORT!"
                fi
              fi
            fi
            MSG "--show" "----------------------------------------------------------------------"
          else
            RNAME=`echo $i | cut -f1 -d%`
            iSHORT=`echo $i | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
            rivar "MSG_DESCFORX"
            MSG_DESCFORX=`echo "$MSG_DESCFORX" | sed s/'%X'/$iSHORT/\g`
            MSG "--show" "$MSG_DESCFORX"
            MSG "--show" "----------------------------------------------------------------------"
            if test `grep "$SHORT: " repos/$RNAME/PACKAGES.TXT 2>/dev/null | wc -l` -ge 1; then
              grep "$SHORT: " repos/$RNAME/PACKAGES.TXT 2>/dev/null | sed s/$SHORT': '// | awk '{if(NR != 1) print $0}'
            else
              MSG "--show" "$MSG_NDESCFPAC $iSHORT!"
            fi
            MSG "--show" "----------------------------------------------------------------------"
          fi
        fi
        echo
      done
      if test $SSWAP -eq 0; then
        if [[ "$3" == "-p" ]]; then
          MSGERR "--show" "$MSG_NODESCPATMK $2!"
        fi
        if [[ "$2" == "-p" ]]; then
          MSGERR "--show" "$MSG_NODESCPAT"
        fi
        if [ -z $2 ]; then
          MSGERR "--show" "$MSG_NODESCPAC"
        else
          MSGERR "--show" "$MSG_NODESCPACMK $2!"
        fi
      fi
    else
      if [[ "$2" == "-i" || "$3" == "-i" ]]; then
        if [[ "$2" == "-i" ]]; then
          KW="."
        else
          KW="$2"
        fi
        createilist
      fi
      if test $COUNT -eq 0; then
        if [ -z $2 ]; then
          MSGERR "--show" "$MSG_NODESCIPAC"
        else
          MSGERR "--show" "$MSG_NODESCIPACMK $2!"
        fi
      fi
      SSWAP=0
      for i in $PKGLIST; do
        SHORT=`echo $i | sed -e s/-[0-9].*//`
        if test `ls .exclude/$SHORT.exclude.installed 2>/dev/null | wc -l` -eq 0; then
          SSWAP=1
          iSHORT=`echo $i | sed -e "s/.*\///g" | sed -r "s/.($PKG_EXTS)//"`
          rivar "MSG_DESCFORX"
          MSG_DESCFORX=`echo "$MSG_DESCFORX" | sed s/'%X'/$iSHORT/\g`
          MSG "--show" "$MSG_DESCFORX"
          MSG "--show" "----------------------------------------------------------------------"
          if test `grep "$SHORT: " $PACKAGES_LOGDIR/$i | wc -l` -eq 0; then
            MSG "--show" "$MSG_NDESCFPAC $iSHORT!"
          else
            grep "$SHORT: " $PACKAGES_LOGDIR/$i | sed s/$SHORT': '// | awk '{if(NR != 1) print $0}'
          fi
          MSG "--show" "----------------------------------------------------------------------"
          echo
        fi
      done
      if test $SSWAP -eq 0; then
        if [ -z $2 ]; then
          MSGERR "--show" "$MSG_NODESCIPAC"
        else
          MSGERR "--show" "$MSG_NODESCIPACMK $2!"
        fi
      fi
    fi
    ;;
  "--changelog")
    if [ ! -f .cache/ChangeLog.txt ]; then
      MSGERRp "--changelog" "$MSG_CLOGERRR"
    else
      $PAGER .cache/ChangeLog.txt
    fi
    echo
    ;;
  "--extra")
    cd $CDIR 2>/dev/null
    if [ -z $2 ] || [[ "$2" != "-u" ]] || [[ -z $3 ]] || [[ -z $4 ]]; then
      echo "  $MSG_AEXTRAS:"
      echo
      echo "  swaret --extra -u mail $MSG_USERDOM"
      echo "  => $MSG_AEXTRAS_1"
      echo
      echo "  swaret --extra -u save $MSG_PATHTOFILE"
      echo "  => $MSG_AEXTRAS_2"
      echo 
      echo "  swaret --extra -u get $MSG_PATHTOFILE"
      echo "  => $MSG_AEXTRAS_3"
      echo
      printf "$MSG_AEXTRAS_4"
      echo
      echo "  $MSG_AEXTRAS_5!"
      echo
      exit
    fi
    if [[ "$3" == "save" ]]; then
      SWAPUS=1
      rm -f $4 2>/dev/null
      touch $4 2>/dev/null
      if [ ! -f $4 ]; then
        MSG_UCFILE=`echo "$MSG_UCFILE" | sed s:"'%X'":"$4":\g`
        MSGERR "--extra" "$MSG_UCFILE"
      fi
    fi
    DSWAP=0
    if test `grep -c "^REPOS_ROOT=.*%.*" /etc/swaret.conf 2>/dev/null` -ge 1; then
      DPLRNAMES=`grep "^REPOS_ROOT=.*%.*" /etc/swaret.conf | cut -f1 -d% | sort | uniq -d`
      for i in $DPLRNAMES; do
        rivar "MSG_REPOSERRR"
        MSG_REPOSERRR=`echo "$MSG_REPOSERRR" | sed s:"'%X'":"$i":\g`
        printf "$MSG_REPOSERRR"
        DSWAP=1
      done
      if test $DSWAP -eq 1; then
        cleanup_quick
        exit
      fi
    fi
    rm -f .cache/CHECKSUMS* 2>/dev/null
    rm -f .cache/FILELIST* 2>/dev/null
    rm -f .cache/PACKAGES* 2>/dev/null
    rm -f repos/*/CHECKSUMS* 2>/dev/null
    rm -f repos/*/FILELIST* 2>/dev/null
    rm -f repos/*/PACKAGES* 2>/dev/null
    update_lists
    echo
    SWAPUS=0
    KW="."
    if [[ "$3" == "get" ]]; then
      cd $USERPWD/ 2>/dev/null
      if [ ! -f $4 ]; then
        MSGERR "--extra" "$MSG_FNF"
      else
        if test `cat "$4" 2>/dev/null | grep "-" | wc -w` -eq 0; then
          MSGERR "--extra" "$MSG_NFFG"
        else
          GETLIST=`cat "$4" 2>/dev/null | sed -e s/-[0-9].*//`
          CGETLIST=`cat "$4" 2>/dev/null | wc -w`
          GLIST=""
          x=0
          for i in $GETLIST; do
            GLIST="$GLIST""$i-[0-9]"
            x=`expr $x + 1`
            if test $CGETLIST -ne $x; then
              GLIST="$GLIST"","
            fi
          done
          cd $CDIR/ 2>/dev/null
          function_get "" "$GLIST" "-au" "" "" 
        fi
      fi
      cd $CDIR/ 2>/dev/null
    else
      createpkglist "--upgrade"
      echo
      makeulist "--upgrade"
      SWAP=0
      cat PKGLIST 2>/dev/null | awk '{print$2}' > PKGLIST.tmp 2>/dev/null
      mv PKGLIST.tmp PKGLIST 2>/dev/null
      CHECK=`cat PKGLIST 2>/dev/null | wc -l`
      if test $CHECK -eq 0; then
        echo "$MSG_IPKGSUTD"
        echo "$MSG_IPKGSUTD" > PKGLIST 2>/dev/null
      fi
    fi
    if [[ "$3" == "mail" ]]; then
      SWAPUS=1
      cat PKGLIST 2>/dev/null | mail -s "$MSG_SULIST - `date`" "$4" 2>/dev/null
    fi
    if [[ "$3" == "save" ]]; then
      SWAPUS=1
      cd $USERPWD/ 2>/dev/null
      if [ -f $CDIR/PKGLIST ]; then
        mv $CDIR/PKGLIST $4 2>/dev/null
      fi
    fi
    if test $SWAPUS -eq 0; then
      echo "  $MSG_AEXTRAS:"
      echo
      echo "  swaret --extra -u mail $MSG_USERDOM"
      echo "  => $MSG_AEXTRAS_1"
      echo
      echo "  swaret --extra -u save $MSG_PATHTOFILE"
      echo "  => $MSG_AEXTRAS_2"
      echo 
      echo "  swaret --extra -u get $MSG_PATHTOFILE"
      echo "  => $MSG_AEXTRAS_3"
      echo
      printf "$MSG_AEXTRAS_4"
      echo
      echo "  $MSG_AEXTRAS_5!"
      echo
      exit 1
    fi
    echo
    cleanup_quick
    exit 0
    ;;
  "--purge")
    if [ -z $2 ]; then
      cleanupp
      cleanupr
      cleanup_quick
      exit
    fi
    if [[ "$2" == "-v" ]]; then
      SWAPME=0
      rm -f PKGLIST.list 2>/dev/null
      if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
        if test `ls $PKG_EXTS_WCARD 2>/dev/null | wc -l` -ge 1; then
          for i in `ls $PKG_EXTS_WCARD 2>/dev/null | sed -e s/-[0-9].*//`; do
            MAX=0
            for x in `ls $i-[0-9]$PKG_EXTS_WCARD 2>/dev/null | sort -r`; do
              if test `date +%s -r $x` -gt $MAX; then
                MAX=`date +%s -r $x`
              fi
            done
            for x in `ls $i-[0-9]$PKG_EXTS_WCARD 2>/dev/null  | sort -r`; do
              if test `date +%s -r $x` -eq $MAX; then
                if [ ! -f $x.tmp ]; then
                  SWAPME=1
                  MSG "--purge" "=> $MSG_KFILE $CDIR/$x... $MSG_DONE!"
                  touch $x.tmp
                fi
              else
                SWAPME=1
                echo "$x" >> PKGLIST.list 2>/dev/null
              fi
            done
          done
        fi
      fi
      if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^REPOS_ROOT=.*%.*"` -ge 1; then
        if test `ls repos/*/$PKG_EXTS_WCARD 2>/dev/null | wc -l` -ge 1; then
          for y in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'=' | cut -f1 -d%`; do
            for i in `ls repos/$y/$PKG_EXTS_WCARD 2>/dev/null | sed -e s/-[0-9].*// | sort | uniq`; do
              MAX=0
              for x in `ls $i-[0-9]$PKG_EXTS_WCARD 2>/dev/null | sort -r`; do
                if test `date +%s -r $x` -gt $MAX; then
                  MAX=`date +%s -r $x`
                fi
             done
              for x in `ls $i-[0-9]$PKG_EXTS_WCARD 2>/dev/null | sort -r`; do
                if test `date +%s -r $x` -eq $MAX; then
                  if [ ! -f $x.tmp ]; then
                    SWAPME=1
                    MSG "--purge" "=> $MSG_KFILE $CDIR/$x... $MSG_DONE!"
                    touch $x.tmp
                  fi
                else
                  SWAPME=1
                  echo "$x" >> PKGLIST.list 2>/dev/null
                fi
              done
            done
          done
          echo
        fi
      fi
      for i in `cat PKGLIST.list 2>/dev/null | sort | uniq`; do
        rm -f $i 2>/dev/null
        if [ ! -f $i ]; then
          MSG "--purge" "=> $MSG_RFILE $CDIR/$i... $MSG_DONE!"
        else
          MSG "--purge" "=> $MSG_RFILE $CDIR/$i... $MSG_FAILED!"
        fi
      done
      if test $SWAPME -eq 0; then
        MSGERR "--purge" "$MSG_NFFP"
      fi
      cleanup_quick
      exit
    fi
    if [[ "$2" == "-s" ]]; then
      cleanups
      cleanup_quick
      exit
    fi
    if [[ "$2" == "-d" ]]; then
      SWAPME=0
      if [ ! -z $3 ]; then
        echo "$3" | grep -i -q '^[[:digit:]]\+' && DIGIT=1 || DIGIT=0
        if test $DIGIT -eq 1; then
          if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
            for i in `ls $PKG_EXTS_WCARD 2>/dev/null`; do
              if [ $(( `date +%s -r $i` + $3*24*3600 )) -lt `date +%s` ]; then
                SWAPME=1
                rm -f $i 2>/dev/null
              fi
            done
          fi
          MSG_RPKGSDAYS=`echo "$MSG_RPKGSDAYS" | sed s/'%X'/''${3}''/\g | sed s/'%Y'//\g`
          if test $SWAPME -eq 1; then
            MSG "--purge" "$MSG_RPKGSDAYS$CDIR... $MSG_DONE!"
          fi
          for x in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'=' | cut -f1 -d%`; do
            for i in `ls repos/$x/$PKG_EXTS_WCARD 2>/dev/null`; do
              if [ $(( `date +%s -r $i` + $3*24*3600 )) -lt `date +%s` ]; then
                rm -f $i 2>/dev/null
                SWAPME=1
              fi
            done
            if test $SWAPME -eq 1; then
              MSG "--purge" "$MSG_RPKGSDAYS$CDIR/repos/$x... $MSG_DONE!"
            fi
          done
        else
          invalid_charz "--purge"
        fi
      else
        MSGERR "--purge" "$MSG_PNDAYS"
      fi
      if test $SWAPME -eq 0; then
        MSGERR "--purge" "$MSG_NFFP"
      fi
    fi
    if [[ "$2" == "-w" ]]; then
      SWAPME=0
      if [ ! -z $3 ]; then
        echo "$3" | grep -i -q '^[[:digit:]]\+' && DIGIT=1 || DIGIT=0
        if test $DIGIT -eq 1; then
          if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
            for i in `ls $PKG_EXTS_WCARD 2>/dev/null`; do
              if [ $(( `date +%s -r $i` + $3*7*24*3600 )) -lt `date +%s` ]; then
                rm -f $i 2>/dev/null
                SWAPME=1
              fi
            done
          fi
          MSG_RPKGSDAYS=`echo "$MSG_RPKGSWEEKS" | sed s/'%X'/''${3}''/\g | sed s/'%Y'//\g`
          if test $SWAPME -eq 1; then
            MSG "--purge" "$MSG_RPKGSWEEKS$CDIR... $MSG_DONE!"
          fi
          for x in `cat /etc/swaret.conf 2>/dev/null | grep "^REPOS_ROOT=.*%.*" | cut -f2 -d'=' | cut -f1 -d%`; do
            for i in `ls repos/$x/$PKG_EXTS_WCARD 2>/dev/null`; do
              if [ $(( `date +%s -r $i` + $3*7*24*3600 )) -lt `date +%s` ]; then
                rm -f $i 2>/dev/null
                SWAPME=1
              fi
            done
            if test $SWAPME -eq 1; then
              MSG "--purge" "$MSG_RPKGSWEEKS$CDIR/repos/$x... $MSG_DONE!"
            fi
          done
        else
          invalid_charz "--purge"
        fi
      else
        MSGERR "--purge" "$MSG_PNWEEKS"
      fi
      if test $SWAPME -eq 0; then
        MSGERR "--purge" "$MSG_NFFP"
      fi
    fi
    if [[ "$2" == "-ds" ]]; then
      if [ ! -z $3 ]; then
        echo "$3" | grep -i -q '^[[:digit:]]\+' && DIGIT=1 || DIGIT=0
        if test $DIGIT -eq 1; then
          if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
            MSG_RSRCSDAYS=`echo "$MSG_RSRCSDAYS" | sed s/'%X'/''${3}''/\g | sed s/'%Y'//\g`
            if test `ls sources/*.*z* 2>/dev/null | wc -l` -ge 1; then
              for i in `ls sources/*.*z* 2>/dev/null`; do
                if [ $(( `date +%s -r $i` + $3*24*3600 )) -lt `date +%s` ]; then
                  rm -f $i 2>/dev/null
                fi
              done
              MSGERR "--purge" "$MSG_RSRCSDAYS$CDIR/sources $MSG_DONE!"
            else
              MSGERR "--purge" "$MSG_NFFP"
            fi
          else
            MSGERR "--purge" "$MSG_NFFP"
          fi
        else
          invalid_charz "--purge"
        fi
      else
        MSGERR "--purge" "$MSG_PNDAYS"
      fi
    fi
    if [[ "$2" == "-ws" ]]; then
      if [ ! -z $3 ]; then
        echo "$3" | grep -i -q '^[[:digit:]]\+' && DIGIT=1 || DIGIT=0
        if test $DIGIT -eq 1; then
          if test `cat /etc/swaret.conf 2>/dev/null | grep -c "^ROOT="` -ge 1; then
            MSG_RSRCSWEEKS=`echo "$MSG_RSRCSWEEKS" | sed s/'%X'/''${3}''/\g | sed s/'%Y'//\g`
            if test `ls sources/*.*z* 2>/dev/null | wc -l` -ge 1; then
              for i in `ls sources/*.*z* 2>/dev/null`; do
                  if [ $(( `date +%s -r $i` + $3*7*24*3600 )) -lt `date +%s` ]; then
                    rm -f $i 2>/dev/null
                  fi
              done
              MSGERR "--purge" "$MSG_RSRCSWEEKS$CDIR/sources... $MSG_DONE!"
            else
              MSGERR "--purge" "$MSG_NFFP"
            fi
          else
            MSGERR "--purge" "$MSG_NFFP"
          fi
        else
          invalid_charz "--purge"
        fi
      else
        MSGERR "--purge" "$MSG_PNWEEKS"
      fi
    fi
    cleanup_quick
    exit
    ;;
  "--log")
    log $2
    ;;
  "--gpg")
    cd $USERPWD/ 2>/dev/null
    echo -n "=> $MSG_IGPGKEY "
    if [ -f $3 ]; then
      gpg --import $3 2>/dev/null
      echo "$MSG_DONE!"
    else
      echo "$MSG_FAILED!"
    fi
    echo
    cd $CDIR/
    cleanup_quick
    exit
    ;;
  "--check")
    cd $CDIR/ 2>/dev/null
    check_wget
    echo -n "=> $MSG_SCHECK "
    wget_file_s "http://swaret.sourceforge.net" "/files/current"
    if [ -f current ]; then
      echo "$MSG_DONE!"
      if [[ "`cat current 2>/dev/null`" > "$SVERSION" ]]; then
        CURRENT=`cat current 2>/dev/null`
        echo
        MSG_SNOTUTD=`echo "$MSG_SNOTUTD" | sed s/'%X'/$CURRENT/\g`
        printf "$MSG_SNOTUTD"
      else
        echo
        echo "$MSG_SISUTD"
      fi
    else
      echo "$MSG_FAILED!"
    fi
    echo
    rm -f current 2>/dev/null
    cleanup_quick
    exit
    ;;
  "--rollback")
    if [[ "$VROLLBACK" == "1" ]]; then
      if [ -z $2 ]; then
        echo "You must supply a number of updates from which to rollback!"
	exit 1
      fi
      rollback $2
      exit 0
    else
      echo "You must enable ROLLBACK in swaret.conf!"
      exit
    fi
    ;;
  *)
    help
    ;;
esac
