#!/bin/bash

CONVERT_MBOX=/usr/share/doc/claws-mail/tools/convert_mbox.pl

MBOXDIR=$1
TARGETDIR=$2

BADPARM=FALSE

if [ -z "$1" ]; then
    BADPARM=TRUE
fi

if [ -z "$2" ]; then
    BADPARM=TRUE
fi

if [ ! -d "$1" ]; then
    BADPARM=TRUE
fi

if [ ! -d "$2" ]; then
    BADPARM=TRUE
fi

if [ x"$BADPARM" = x"TRUE" ]; then
    echo "Usage: convert_mbox.sh mbox-dir target-dir"
    exit 1
fi

IFS=$'\n'

function strip_sbd () {
    DIRNAME=$1
    NOSBDDIR=
    DIRLEFT=$DIRNAME
    while  [ x"$DIRLEFT" != x"." ] && [ x"$DIRLEFT" != x"" ] ; do	
	ENDDIR=$(basename "$DIRLEFT" .sbd)
	if [ x"$NOSBDDIR" != x"" ]; then
	    NOSBDDIR=$ENDDIR/$NOSBDDIR
	else
	    NOSBDDIR=$ENDDIR
	fi
        DIRLEFT=$(dirname "$DIRLEFT")
    done
    echo "$NOSBDDIR"
}

OLDDIR=$(pwd)
cd "$MBOXDIR"

for file in $( (find * -type f -a ! -name '*.*'i | sort) ); do 

    DIRNAME=$(dirname "$file")
    FILENAME=$(basename "$file")
    if [ x"$DIRNAME" = x"$FILENAME" ]; then
	DIRNAME=""
    fi
	DIRNAME=$(strip_sbd "$DIRNAME")
	if [ x"$DIRNAME" != x"" ]; then
	    DIRNAME="/$DIRNAME"
	fi
	    
	mkdir -p /tmp/frommbox$DIRNAME
	BASEFILE=$(basename "$file")
	BASE1=$(basename "$file" .cmeta)
	BASE2=$(basename "$BASE1" .ibex.index)
	BASE3=$(basename "$BASE2" .ibex.index.data)
	BASE5=$(basename "$BASE3" .ev-summary)
	BASE4=$(basename "$BASE5" .ev-summary-meta)
	SUBDIR=$(basename "$DIRNAME")
	BASEDIR=/$(dirname "$DIRNAME")
	if [ "$BASEDIR" = "/." ] || [ "$BASEDIR" = "/" ]; then
	    BASEDIR=$DIRNAME
	    SUBDIR=
	fi
	BASEDIR="/tmp/frommbox$BASEDIR"
	mkdir -p "$BASEDIR"
	DIRISFILE=FALSE
	if [ -f "$BASEDIR/$SUBDIR" ]; then 
	    DIRISFILE=TRUE
	    mv "$BASEDIR/$SUBDIR" "$BASEDIR/$SUBDIR.tmp"
	    mkdir -p "$BASEDIR/$SUBDIR"
	fi 
	if [ ! -d "$BASEDIR/$SUBDIR/$BASE4" ]; then
	    echo "$BASEDIR/$SUBDIR/$BASE4"
	    perl $CONVERT_MBOX "$file" "$BASEDIR/$SUBDIR/$BASE4" >/dev/null
	    if [ "$DIRISFILE" = "TRUE" ]; then 
		mv "$BASEDIR/$SUBDIR.tmp/*" "$BASEDIR/$SUBDIR/"
	    fi 
	fi
done

cd "$OLDDIR"