#! /bin/sh
##  $Revision: 1.10 $
##
##  Script to add new newsgroups.

# =()<RNEWS=@<_PATH_RNEWS>@>()=
RNEWS=/usr/local/news/rnews
## =()<TMPDIR=${TMPDIR-@<_PATH_TMP>@}>()=
TMPDIR=${TMPDIR-/tmp}

##  Defaults, edit as appropriate.  Also see where the date is set below.
DISTRIBUTION=""
ME=`whoami`
WHERE=`innconfval fromhost`
PROGNAME=`basename $0`

case "${WHERE}" in
*.*)
    ;;
*)
    DOMAIN=`innconfval domain`
    case "${DOMAIN}" in
    "No value for*")
	;;
    *)
	WHERE="${WHERE}.${DOMAIN}"
	;;
    esac
esac

##  Parse JCL.
NODIST=/bin/true
COPY=''
WORD2=''
MORETODO=/bin/true
while ${MORETODO} ; do
    case X"$1" in
    X-m)
	MODADDR="$2"
	WORD2=" moderated"
	shift
	;;
    X-c)
	COPY=",$2"
	shift
	;;
    X-c*)
	COPY=",`expr "$1" : '-c\(.*\)'`"
	;;
    X-d)
	DISTRIBUTION="$2"
	NODIST=/bin/false
	shift
	;;
    X-d*)
	DISTRIBUTION=`expr "$1" : '-d\(.*\)'`
	NODIST=/bin/false
	;;
    X--)
	shift
	MORETODO=/bin/false
	;;
    X-*)
	echo "${PROGNAME}:  Unknown flag $1" 1>&2
	exit 1
	;;
    *)
	MORETODO=/bin/false
	;;
    esac
    ${MORETODO} && shift
done
if ${NODIST} ; then
    echo "Usage: ${PROGNAME} -d distrib [-m moderator] [-c copy] group" 1>&2
    exit 1
fi

##  Process the argument, the group name.
case "$#" in
1)
    GROUP="$1"
    ;;
*)
    echo "Usage: ${PROGNAME} -d distrib [-m moderator] [-c copy] group" 1>&2
    exit 1
    ;;
esac

##  Set the article date.
set `date`
DATE="$3 $2 $6 $4 $5"
NEWTIME="`echo $4 | tr -d :`"

##  Write the article header.
TEMP=${TMPDIR}/art$$
cat >${TEMP} <<EOF
Path: ${WHERE}!${ME}
Date: ${DATE}
From: ${ME}@${WHERE}
Subject: cmsg newgroup ${GROUP}${WORD2}
Control: newgroup ${GROUP}${WORD2}
Newsgroups: ${GROUP}.ctl${COPY}
Message-ID: <${ME}-${GROUP}-${3}-${2}-${6}-${NEWTIME}-${5}@${WHERE}>
Approved: ${ME}
Distribution: ${DISTRIBUTION}

EOF

if [ -n "${WORD2}" ] ; then
    cat >>${TEMP} <<EOF
This is a moderated newsgroup.
Local postings will be forwarded to ${MODADDR}.

EOF
fi

##  Get the group description.
test -t 0 && echo "Enter description, terminated with EOF:"
cat >>${TEMP}

##  Get next command.
while : ; do
    echo "Send, abort, or edit?  " | tr -d '\012'
    read ANS
    case "$ANS" in
    e*)
	${VISUAL-${EDITOR-vi}} ${TEMP}
	;;
    a*)
	rm ${TEMP}
	exit 1
	;;
    s*)
	if ${RNEWS} ${TEMP} ; then
	    rm ${TEMP}
	    exit
	fi
	;;
    esac
done
