#!/bin/sh

while [ $# -ge 1 ]; do
case "$1" in
  --quick|-q)
    QUICK=true
    shift
    ;;
  -*)
    echo "\
Usage: pon [OPTIONS] [provider] [arguments]
  -q|--quick           pppd hangs up after all ip-up scripts are run

If pon is invoked without arguments, /etc/ppp/ppp_on_boot file will be
run, presuming it exists and is executable. Otherwise, a PPP connection
will be started using settings from /etc/ppp/peers/provider.
If you specify one argument, a PPP connection will be started using
settings from the appropriate file in the /etc/ppp/peers/ directory, and
any additional arguments supplied will be passed as extra arguments to
pppd.
"
    exit 0
    ;;
  *)
    break
    ;;
esac
done

if [ ! -r /etc/ppp/peers/ ]; then
  echo "Error: only members of the 'dip' group can use this command."
  exit 1
fi

if [ "$1" ]; then
  PROVIDER=$1
  shift
fi

# Perform ppp_on_boot migration from pppoe package.
if [ -L /etc/ppp/ppp_on_boot -a "$(readlink /etc/ppp/ppp_on_boot)" = \
     "ppp_on_boot.dsl" -a ! -e /etc/ppp/ppp_on_boot.dsl ]; then
  rm -f /etc/ppp/ppp_on_boot
  ln -s pppoe_on_boot /etc/ppp/ppp_on_boot
fi

if [ -z "$PROVIDER" ]; then
  if [ -x /etc/ppp/ppp_on_boot ]; then
    [ "$QUICK" ] && touch /var/run/ppp-quick
    exec /etc/ppp/ppp_on_boot
  fi
  # try the default script
  PROVIDER=provider
fi

if [ ! -e "/etc/ppp/peers/$PROVIDER" ]; then
  echo "\
The file /etc/ppp/peers/$PROVIDER does not exist. Please create it or use
a command line argument to use another file in the /etc/ppp/peers/ directory."
  exit 1
fi

[ "$QUICK" ] && touch /var/run/ppp-quick
exec /usr/sbin/pppd call $PROVIDER "$@"

