#!/bin/sh
#
# mknavdb - bourne shell script to automate generation of nav format databases
#
# $Id: mknavdb,v 1.1 1998/05/06 05:09:56 jcp Exp $
#

# configure defaults

K_OPTION="-k"
MAG_VARIATION="-m fm"
FIELD_MODEL="-f wmm"
CONV_OPTIONS=${K_OPTION}" "${MAG_VARIATION}" "${FIELD_MODEL}" -t fplan "$*
TMP_FILE_ROOT=/tmp/faaconv.tmp.$$

# define function to execute a child process

execute_process()
{
  eval "$1"
  rc=$?
  case $rc in
    0) ;;
    *) exit $rc ;;
  esac
}

# define exit handler function

clean_up()
{
  execute_process "rm -f ${TMP_FILE_ROOT}.[01].apt ${TMP_FILE_ROOT}.[01].vor"
}

trap "clean_up; exit \$rc" 0

# check for the input database files

if [ ! -f comma.apt -o ! -f comma.fix -o ! -f comma.nav ];then
  echo "mknavdb: unable to open one or more input database files"
  exit 1
fi

# start with empty temporary files

execute_process "cat /dev/null > ${TMP_FILE_ROOT}.0.apt"
execute_process "cat /dev/null > ${TMP_FILE_ROOT}.0.vor"

# generate airport and nav database

echo "mknavdb: creating airports.nav database"
execute_process "faaconv ${CONV_OPTIONS} comma.apt >> ${TMP_FILE_ROOT}.0.apt"
echo "mknavdb: creating vors.nav database"
execute_process "faaconv ${CONV_OPTIONS} comma.fix >> ${TMP_FILE_ROOT}.0.vor"
execute_process "faaconv ${CONV_OPTIONS} comma.nav >> ${TMP_FILE_ROOT}.0.vor"

# sort temporary files, remove any duplicate entries

echo "mknavdb: sorting the databases"
execute_process "sort -t: ${TMP_FILE_ROOT}.0.apt |uniq > ${TMP_FILE_ROOT}.1.apt"
execute_process "sort -t: ${TMP_FILE_ROOT}.0.vor |uniq > ${TMP_FILE_ROOT}.1.vor"

# display database file statistics

na=`wc -l ${TMP_FILE_ROOT}.1.apt` ; set $na ; na=$1 ;
nv=`wc -l ${TMP_FILE_ROOT}.1.vor` ; set $nv ; nv=$1 ;
echo "mknavdb: entries in generated airports database:" $na
echo "mknavdb: entries in generated vors database:" $nv

# pad the databases if paddb is installed

if [ -x paddb ]; then
  execute_process "paddb ${TMP_FILE_ROOT}.1.apt airports.nav"
  execute_process "paddb ${TMP_FILE_ROOT}.1.vor vors.nav"
else
  execute_process "mv ${TMP_FILE_ROOT}.1.apt airports.txt"
  execute_process "mv ${TMP_FILE_ROOT}.1.vor vors.txt"
  echo "mknavdb: could not find the paddb application, distributed with fplan."
  echo "mknavdb: you must pad the database files before they can be used by"
  echo "mknavdb: fplan, generated files: airports.txt vors.txt"
fi

# all done

exit 0

