#!/bin/bash

# ----------------------------------------------------------------------
# donne la taille totale en octets du directory et subdirectory
# (somme de tous les fichiers, sans la taille reservee pour le directory
#  qui est systeme-dependant).
# Donne aussi le nombre total de fichiers et de sous directories.
# P. Robert, Janvier 2007
# revu P.R. Novembre 2009, pour portabilite linux-Solaris
# ----------------------------------------------------------------------

appli=`basename $0`

# on eclate les variables pouvant contenir un blanc
if test $# -gt 0
   then set $*
fi
 
if (test $# = 1 ) 
   then
      if (test $1 = -h )
         then echo "$appli : Give directory size (octets or Mo), nb. files & directories"
              echo "Usage: RPC_dir_properties"
              echo "       RPC_dir_properties Mo"
              echo "       RPC_dir_properties DIR"
              echo "       RPC_dir_properties DIR Mo"
              exit 1
   fi
fi

Mo=no
nomdir=.
homdir=$HOME

if test $# != 0
   then
       if (test $# = 1 ) && (test $1  = Mo ) 
          then 
               Mo=yes 
       fi
       
       if (test $# = 1 ) && (test $1 != Mo ) 
          then 
               nomdir=$1
       fi
       
       if (test $# = 2 ) && (test $2 = Mo )
          then 
               Mo=yes
               nomdir=$1
       fi
       
       if (test $# -ge 2 )
           then
#          echo "$appli: trop d'arguments ou blanc dans le nom du directory"
           echo $* > $homdir/toto2$$.tmp
           nomdir=`cat $homdir/toto2$$.tmp | sed "s/ /\?/g"`
           
           cat $homdir/toto2$$.tmp | grep "Mo$" > /dev/null 2>&1
           if test $? = 0
              then 
                 nomdir=`echo $nomdir | sed 's/.Mo$//'`
                 Mo=yes
              else
                 Mo=no
           fi
           rm $homdir/toto2$$.tmp
#          echo "$appli: $nomdir" 
       fi
fi

if test -f $homdir/toto_$$.tmp ; then rm $homdir/toto_$$.tmp ; fi

# on prends tous les champs car certaine lignes peuvent commencer par des blancs

if test -d $nomdir
   then
      ls -oRq $nomdir | grep \^- | sed "s/.......... *. //" | cut -d " " -f 2-100 > $homdir/toto_$$.tmp
   else
      echo "*** Directory $nomdir does not exist"
      echo "*** $appli aborted !"
      exit 2
fi


nbfiles=`find $nomdir -type f | wc -l`
nbdirp1=`find $nomdir -type d | wc -l`
nbdir=`expr $nbdirp1 - 1`

# max size: 999 Go

# sous bash, le print en decimal " %14.1d" donne des resultats faux !
# mais ils sont vrais en flottants...
#totsize=`awk '{Somme +=$1} END {printf(" %14.1d\n", Somme)}' $homdir/toto_$$.tmp`
 totsize=`awk '{Somme +=$1} END {printf(" %13.0f\n", Somme)}' $homdir/toto_$$.tmp`


# max number of files : 99 999 files
# max number of dir   :  9 999 dir

nbfilm=`printf " %6.0f" $nbfiles`
nbdirm=`printf " %5.0f" $nbdir`

if  (test $Mo = yes )
    then 
        totsize=`expr $totsize / 1000000`
        totsize=`printf " %9.0f" $totsize`
fi

echo "$totsize $nbfilm $nbdirm | $nomdir"
rm $homdir/toto_$$.tmp 
