#!/bin/sh
#
# ufdbConvertDB - convert flat files with domains and URLs to .ufdb table files
#
# This script converts an ASCII-based (flat file) URL database to the 
# .ufdb table format that ufdbGuard uses.
# This script only needs a top level directory and it traverses all subdirectories
# searching for directories with domains and urls files.
#
# usage: ufdbConvertDB <top-level-directory>
#
# $Id: ufdbConvertDB.in,v 1.4 2012/10/05 13:07:12 root Exp root $

DEBUG=no
if [ "$1" = -d ]
then
   DEBUG=yes
   shift
   echo "ufdbConvertDB version 1.30 is running:"
   echo "ufdbConvertDB -d $*"
fi

TOPDIR="$1"

if [ ! -d "$TOPDIR" ]
then
   echo "usage: ufdbConvertDB [-d] <top-level-directory>"
   exit 1
fi

prefix=/usr
exec_prefix=/usr
BINDIR=/usr/bin
PATH=$PATH:$BINDIR
export PATH

chkdirdb () {
   dir="$1"
   cd $dir

   # echo "directory $dir " `pwd`
   for tstd in *
   do
      if test -d "$tstd" 
      then
	 echo "Searching directory $tstd for tables ..."
	 chkdirdb "$tstd"
      fi
   done

   if test $DEBUG = yes 
   then
      gentableopt="-D"
   else
      gentableopt="-q"
   fi

   if test -f domains 
   then
      echo "found domains file in " `pwd` " ..."
      if test -f urls 
      then
	 echo "found urls file in " `pwd` " ..."
	 if test ! -f domains.ufdb  -o  domains.ufdb -ot domains  -o  domains.ufdb -ot urls
	 then
	    echo "generating .ufdb file: ufdbGenTable -n $gentableopt -C -W -d domains -u urls"
	    ufdbGenTable -n $gentableopt -C -W -d domains -u urls
	    retval=$?
	    if test $retval -ne 0 -o ! -s domains.ufdb
	    then
	       echo "ufdbGenTable had a non-standard exit code: $retval"
	       echo "PATH = $PATH"
	       echo "which ufdbGenTable:"
	       which ufdbGenTable
	       ufdbGenTable -V
	    fi
	 fi
	 if test $DEBUG = yes 
	 then
	    ls -l domains urls domains.ufdb
	 fi
      else
	 if test ! -f domains.ufdb  -o  domains.ufdb -ot domains 
	 then
	    echo "generating .ufdb file: ufdbGenTable -n $gentableopt -C -W -d domains"
	    ufdbGenTable -n $gentableopt -C -W -d domains
	    retval=$?
	    if test $retval -ne 0 -o ! -s domains.ufdb
	    then
	       echo "ufdbGenTable had a non-standard exit code: $retval"
	       echo "PATH = $PATH"
	       echo "which ufdbGenTable:"
	       which ufdbGenTable
	       ufdbGenTable -V
	    fi
	 fi
	 if test $DEBUG = yes
	 then
	    ls -l domains domains.ufdb
	 fi
      fi
   fi

   cd ..
}

chkdirdb "$TOPDIR"
exit 0

