#!/bin/sh
#
# Nico Schottelius <nico-linux@schottelius.org>
# Date: 10-Oct-2004
# Last Modified: -
#
# Calculates your personal penis size
# FACTORs define how much size the value counts; the higher, the less


ALL_CHECKS="ck_users ck_home ck_crypto ck_uptime \
            ck_cpucount ck_maildir"

# which checks to enable?
#CHECKS="ck_users ck_home ck_crypto ck_uptime ck_cpucount" 
CHECKS=$ALL_CHECKS

################################################################################
# below are the checks
################################################################################

################################################################################
# check maildir stats
ck_maildir()
{
   MAILDIR=~/Maildir

   echo "Checking your Mails in $MAILDIR .."

   # How many mails do you have? (count)
   MAIL_COUNT=`find "$MAILDIR" -type f | wc -l`
   # 1000 Mails = 1cm
   MAIL_COUNT_FACTOR="1000"
   MAIL_COUNT_SIZE=`echo ${MAIL_COUNT}/${MAIL_COUNT_FACTOR} | bc -l`

   # How much size does your Maildir use? (in KiBiByte)
   MAIL_SIZE=`du -s "$MAILDIR" | cut -f 1`
   # 1 MB = 1cm
   MAIL_SIZE_FACTOR="1048576"
   MAIL_SIZE_SIZE=`echo ${MAIL_SIZE}/${MAIL_SIZE_FACTOR} | bc -l`

   echo "Found $MAIL_COUNT mails, which use $MAIL_SIZE Bytes..."

   SIZE=`echo $SIZE + $MAIL_COUNT_SIZE + $MAIL_SIZE_SIZE | bc -l`
}

################################################################################
# usercount
# user/10 = 1cm
ck_users()
{
   echo "Finding users..."
   USER_COUNT=`cat /etc/passwd | wc -l`

   echo "You have $USER_COUNT users."

   U_SIZE=`echo "$USER_COUNT / 10" | bc -l`
   SIZE=`echo $SIZE + $U_SIZE | bc -l`
}

################################################################################
# home
ck_home()
{
   HOME_DIR=~

   echo "Checking home-dir size..."
   
   # disk stats (in KB)
   HOME_FULL=`df "$HOME_DIR" | tail -n 1 | awk '{ print $2 }'`

   echo "Home is of size $HOME_FULL ..."

   # 1GB = 1cm
   HOME_FULL_FACTOR="1048576"
   HOME_FULL_SIZE=`echo ${HOME_FULL}/${HOME_FULL_FACTOR} | bc -l`

   SIZE=`echo $SIZE + $HOME_FULL_SIZE | bc -l`

}

################################################################################
# crypto algorithm (/proc/crypto)
# pro algorithm +=5

ck_crypto()
{
   echo "Searching for crypto algorithm..."

   COUNT=`cat /proc/crypto|grep ^name | wc -l`
   CCOUNT=`echo "$COUNT" '* 5' | bc -l`

   echo "Found $CCOUNT crypto algorithm"

   SIZE=`echo $SIZE + $CCOUNT | bc -l`
}

################################################################################
# cpucount
# cpu_anzahl*10cm

ck_cpucount()
{
   echo "Searching procssors "
   COUNT=`cat /proc/cpuinfo|grep ^processor | wc -l`
   CCOUNT=`echo "$COUNT" '* 10' | bc -l`
   echo "Found $CCOUNT procssors "

   SIZE=`echo $SIZE + $CCOUNT | bc -l`
}


################################################################################
# uptime
# days*days/10 = 1cm

ck_uptime()
{
   echo "Checking uptime  "
   DAYS=`uptime | awk '{ print $3 }'`

   echo "Your system is $DAYS up."
   DCOUNT=`echo "$DAYS * $DAYS / 10" | bc -l`

   SIZE=`echo $SIZE + $DCOUNT | bc -l`
}

################################################################################
# CHECKS TODO:

# encrypted home-fs?
# +50

# windowing system:
# x,y,fresco,berlin
# x: -20
# y: 0
# fresco: +20
# berlin: +50

# emacs installiert
# -20cm


# ram
# 100MiB == 1cm

# festplattenplatzfrei
# 90% voll -> 9cm+
# 95% voll: -> +9 - 5
# 100% voll: +9 - 10 -> -1


##echo `uptime|grep days|sed 's/.*up \([0-9]*\) day.*/\1\/10+/'; \
##cat /proc/cpuinfo|grep MHz|awk '{print $4"/30 +";}'; free|grep '^Mem' \
##|awk '{print $3"/1024/3+"}'; df -P -k -x nfs | grep -v 1k \
##| awk '{if ($1 ~ "/dev/(scsi|sd|ida|^)"){ s+= $2} s+= $2;} END \
##{print s/1024/50"/15+70";}'`|bc|sed 's/\(.$\)/.\1cm/'

# schwanz2
# a foolproof Linux-Schwanzvergleich-Skript
#
# Hard disk usage
# < 1GB: -5cm
# 1GB - 100GB: 	0.5cm per GB
# 100 - 500GB: 	0.6cm per GB
# 500 - 1TB: 	0.7cm per GB
# 1TB - 5TB:	0.8cm per GB
# 
# Hard disk type:
#
# 
# CPU power
# 1. Select different Architectures
# 2. Select CPU families
# 3. Select Cache
# 4. Select Mhz
# 5. Select CPU Count
# 
# Uptime = days*days/100
#
# RAM =  MB/100

################################################################################
# begin with zero size

SIZE=0

echo "Please wait, measuring the size..."

for check in $CHECKS; do
   $check
   echo "Size growed to $SIZE ... please wait ..."
done

[ -z "$SIZE" ] && SIZE=0

echo "Your penis is $SIZE cm long."

