#! /bin/sh
#
# -*-sh-*-
#     Copyright (C) 1998-2000  Thomas Roessler <roessler@guug.de>
#                   1999-2018  Roland Rosenfeld <roland@spinnaker.de>
# 
#     This program 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.
# 
#     This program 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,, USA.

LBDB_VERSION=0.48

umask 077

prefix=/usr/pkg
exec_prefix=${prefix}
dotlock=${exec_prefix}/bin/lbdb_dotlock
fetchaddr=/usr/pkg/lib/../libexec/lbdb/fetchaddr

db=$HOME/.lbdb/m_inmail.utf-8
datefmt='%Y-%m-%d %H:%M'
additional_param=""

usage() {
    echo "Usage: $0 [OPTIONS]"
    echo "       dig addresses from stdin with formatted timestamp"
    echo "Options:"
    echo "       -v                 print version of lbdbq"
    echo "       -h                 this short help"
    echo "       -d 'dateformat'    select date format using strftime(3)"
    echo "       -x 'from:to:cc'    colon separated list of header fields"
    echo "       -c 'charset'       charset for the database storage"
    echo "       -a                 also grep addresses without realname"
    echo "       -f 'filename'      database filename defaults to"
    echo "                          \$HOME/.lbdb/m_inmail.utf-8"
}

while [ $# -gt 0 ]
do
    case "$1" in
    -v) 
	echo "lbdb-fetchaddr version $LBDB_VERSION"
	exit 0
	;;
    -h) 
	usage
	exit 0
	;;
    -d)
	if [ $# -gt 1 ]
	then
	    shift
	    datefmt="$1"
	fi
	;;
    -x)
	if [ $# -gt 1 ]
	then
	    shift
	    hdrlist="-x $1"
	fi
	;;
    -c)
	if [ $# -gt 1 ]
	then
	    shift
	    charset="-c $1"
	fi
	;;
    -f)
	if [ $# -gt 1 ]
	then
	    shift
	    db="$1"
	fi
	;;
    -a)
	additional_param="$additional_param $1"
	;;
    *)
	if [ $# -eq 1 ]
	then
	    # backward compatibility:
	    # only one parameter means, that this is the selected datefmt
	    datefmt="$1"
	else
	    echo "Wrong number of parameters!"
	    usage
	    exit 1
	fi
	;;
    esac
    shift
done

if [ ! -f "$db" ]; then
  dbdir=$(dirname "$db")
  if [ ! -d "$dbdir" ]; then
    mkdir -p "$dbdir"
    if [ ! -d "$dbdir" ]; then
      echo "Can't create $dbdir" >&2
      exit 1
    fi
  fi
  touch "$db"
  if [ ! -f "$db" ]; then
    echo "Can't create $db" >&2
    exit 1
  fi
fi

if $dotlock -r 10 -f "$db"
then
  : # okay, do nothing
else
  echo "Can't lock $db [dotlock returned $?]." >&2
  exit 1
fi

if $fetchaddr $additional_param -d "$datefmt" $hdrlist $charset >> "$db"
then
  touch "$db.dirty"
fi

$dotlock -u "$db"
