alpha 1 released jan 9, 1995
--
increased internal dialer default timeout from 20 to 25 tries when waiting
for answer

allow for early go ahead message when talking PET.  This is not part of
my protocol spec....

fixed hanging bug in config file parser.  Now also does "" processing so
fields can have spaces in them, which can also be done with \ 

sendpage -bp works of no pidfile present.

calculated and displayed delay of page received to page sent for
email response.

fixed missing close() in queue run.  This caused a fd leak and sendpage
would crash after running a few days.  Also caused the SunOS serial driver
to get stuck in a weird mode (sendpage would get stuck in an Exiting state)
requiring a reboot.

added a less strict pet lookup table conditional compile.

added uucp style locking, although there is no standard way to do this --
 some programe stick the pid in as binary, others ascii.  sendpage uses
 ascii, and if the pid doesn't exist, ignores the lock.

added PARANOID_REPLIES option to thwart possible attempts of exploting
sendmail's over-trusting nature.

When the administrative limit on pages per message has been hit, no
longer ignore entire message, instead just inform user that the rest have
been dropped.

incorrect installation will more likely exit with a sendmail exit
status that informs the user, instead of just the postmaster.


incorporated netbsd patches from Marc_Unangst@DENEB.FAC.CS.CMU.EDU
    termio.h -> termios.h
    bugfix in config.c to (sscanf -> fscanf)
    open modem device with O_NDELAY
    ioctl -> tcgetattr/tcsetattr
    missing comment delimiter in io.c
    SYSV_MALLOC is required to have mallinfo()
    fixed writev() call in queue.c

started merging in BSDI patches from Ben Golding <bgg@connect.com.au>
    added a conditional for malloc.h
    termios vs. ioctl() (done previously)
    checks modem return code for 2400bps (also added others)
    
started adding support for external dialer script
    (suggested by sslok@srv.PacBell.COM)

added code to hangup modem if paging central doesn't (untested)

added a little bit more documentation

added run time configurable per paging central message lifetime
    - ie quit at 60 retries

added run time configurable per paging central message size limit
    - ie truncate messages at 80 chars.


merged in matches from  Ben Golding for PG3 support (untested)
    protocol=pet-pg3


dtlist (delivery type list) was redundant and confusing - removed.

report() defaults to LOG_MAIL now, and works properly when in
daemon mode.

fixed potential bug with file aliases (chance of non null terminated
    pathname)

files that have no data result in the default alias being used now.

added pipe style aliases (ie - alias operator |/etc/calendar)

added sendpage_env variable and use execle() to give children a
known safe environment.

fixed malloc() size error in AddMessage() - would cause strange
    things if more than 1 or 2 messages were sent depending on
    how much space malloc() wasted at the end of a hunk.

---
alpha2 released Mar14, 1995
---

fixed m (max messages) option
    - should not have set STATUS_EXPANDED bit.

fixed sending pages to non alias destinations, ie 12345.usamobile2
    - recipient2len not set by QueueExpand.

fixed error reporting for STATUS_EXPIRED

added RETRIES_NOTIFY_FAIL config option.  Instead of always sending
a reply on the first failure, can now be configured.

---
alpha3 released Mar16, 1955
---

workaround for syslog() and report() static buffers.
    - report() uses a 4K buffer (same as syslog)
    - all calls to report with unknown size strings use %.512s instead of %s

config.c: pcinfo.modeminit not terminated properly
    - daryl@tcomeng.com

signal.c: added POSIX_SIGNALS code.  Use sigaction() for signal() instead
    of signal().

merged most of the AIX patches from daryl@tcomeng.com & mark@tcomeng.com

sendpage.h can control a little more of the modem hardware setup --
    specifically the DTR toggle for hangup and RTS/CTS flow control.

merged in HP/UX patches from Mike Lutz & Heath Kehoe @ norand.com

minor changes to compile under IRIX -- untested.

added Solaris compatibility -- untested.

fixed race condition in queue.c which would result in a spurious
warning message about not being able to unlink() a queue file.

---
alpha4 released May 23, 1995
---

recipient is included in e-mail reply if VERBOSE_MAIL_REPLY is off again.

If there were multiple entries for a pc queue'd and being processed and
the initial modem connect failed, and the next modem connect (or upto
the # of messages being processed) succeeded, then the messages after
the succeeded call would end up as
    sendpage[11658]: write(): Bad file number
...and nothing more :(

in deliver.c, this format spec will result in a more standard time format...
fprintf(FP, "QueueTime:   %d/%d/%d %d:%02d:%02d\n",  (.....)
instead of the %d:%d:%d you had.
    - Aaron Nabil <nabil@i.net>
(done)

in queue.c AddMessageQueue() was sending error messages to stdout instead
of using report()

Merged in OSF/1 patches + the extra debugging code.
    - haymanR@icefog.uacn.alaska.edu

Merged in Linux portablity -- read() can return EAGAIN which is probably
true for more than Linux
    - Jay Allen jay@fork.com

added a few references to other pager related sites and documentation

---
alpha5 released ??? 
---

atdt -> ATDT (lowercase work on older modems) djk@pryon.com

datastring.buf keystring.buf was not free'd properly in readconfig
after adding to alias database

Added -S option to try and parse out signatures when using sendmail
interface.  If 1 or more blank lines are followed by a line begining
with a '-' or '*', the rest of the message is considered the signature
and silently dropped.  Technically this should be a line begining
with '-- ', but very few people actually follow that rule.

removed -m (limit to max messages option) since it no longer makes
sense.

The client now concats each line into a single message.  Later on
depending on the user profile and/or paging central configuration
this single message may be split or changed.

added -p option to ignore pidfile on startup.  Use when starting as a 
daemon from rc.local or whatever.

merged in AIX4 patch from "Allan L. Bazinet" <alb@slug.uvm.edu>
for a posix style open() with O_NONBLOCK, then turning blocking back
on.
  -- this probably also properly fixes the Linux and Solaris
     read() returns immediatly instead of blocking up to 1
     second via VTIME problem.

added run time translation maps.  This allows mapping out 
harmful characters, doing rewriting messages as all uppercase, etc.

added user profile.  Each alias can now have options tagged to it.
*    emailReply=yes/no      # send a mail reply? (notdone)
    msgIncSender=yes/no    # rewrite messages to include sender?
    msgIncDate=yes/no      # rewrite messages to include date?
    msgIncTime=yes/on      # rewrite messages to include time?
    trMap=name             # apply trMap "name" to messages
*    emailCC=where          # CC a copy via e-mail to "where" (notdone)
    maxMsgSize=nn          # set max message size to nn

The special profile "default" will be applied to all aliases.  If
"default" is not set, hard coded internal values are used.  The set
directive can change this.

Alex Noordergraaf <noorder@btg.com> need utime.h included for HPUX
    - included <sys/stdtypes.h> in sendpage.h instead.

reichert@internet.com <Brian Reichert>
    most of the BSDI changes
        - documented flags to be set in sendpage.h
        - BSDI options for Makefile
        - time.h should allready be fixed
        - io.c change not made -- the VTIME problem should be fixed now
          with the earlier patch.  If not I'll just convert everything
          over to using select().


sunos5 patches from "David W. Rankin Jr." <rankin@ewl.uky.edu>
    I had to manually apply these, so it may take another round before
    it works out of the box.

    Also implemented his SLOW_PAGERSERVER option as SLOW_PAGING_CENTRAL
    which adds additional delays to accomodate out of spec paging
    central's.

implemented auto message splitting.
    MAX_MSG_SPLIT in sendpage.h determines the maximum # of splits
    a message can go through.

    The pc definition can define maxMsgSize for a high level
    definition, or this can be defined down to the granularity
    of a user using the user profiles.  The lower of the two
    will be used.

    message fragments are prepended with the fragment #.

---
alpha 6 released Nov 13, 1995
---

added cf directory to the distribution as a repository for
paging central configurations.
    Aaron Nabil <nabil@teleport.com>


MessagePrepender()
    date off by one, use minutes, not seconds
    - dave@pryon.com:
    - steve@demon.net:
    - drinkard@wizard.msfc.nasa.gov

    missing a * - *(*newMsg + x + flen) = 0; 
    - dave@pryon.com:
    - drinkard@wizard.msfc.nasa.gov

gregc@pm-tech.com:
    docs for sun ALM-II config 
    fix for modem hangup 
    DEFAULT_QRUN_MODE to help with busy gateways 
    DEFAULT_MAX_PAGELEN
    EMAIL_ERRORS_ONLY only reply on errors
    fix for unknown recipient coredump
    LOG_SENDPAGE
    fix for uucp locking
    fix for modem hangup
    mode flag to AddMessageQueue() for less confusing logs

doc for AIX C_FLAG setting, fix for modems returning RING
    after dialing
    mworsnop@psiint.com
    (I implemented the check for ring slightly different)

MessageSplit()
    missing null terminator resulting in garbage pages
        dave@pryon.com

baud rate got put into the wrong place for some systems
    jadour01@[homer|ftp|ulkyvx|ulkyvm].louisville.edu
    (not entirely fixed since the patch broke other systems)

lookup table for modem result codes
    - debug displays CONNECT, BUSY, etc.

sendpage -bp no longer starts a queue run

added berkeley sendmail 8 style config templates
    - see sendmail/cf sendmail/mailer

dave@pryon.com: bad command line options don't result in a
    sendmail friendly exit code. 

    changed the exit code to EX_SOFTWARE for bad command line
    usage.

config file parser works again

changed how DEFAULT_QRUN_MODE works.  It's no longer an option, enabled
by default, and can be overriden with the -i flag.  With busy gateways
not running the queue immediatly actually makes things faster.

added global option maxMsgSize that will limit the size of a message
the queue will process.  If the message size is > globalOptions.maxMsgSize
the message will be truncated and the message status bit
MSGQ_FLAGS_SIZETRUNCATE1 is set which later can result in the e-mail
reply containing a note about the truncation.  This replaces the
previous -m command line option.

Implemented emailCC user profile option.  Allows the mail replies to
be CC'd to another e-mail address.

queue status flags broken into status and flags variables.
    STATUS_MSGTRUNCATE is gone

Implemented emailFrom pc option.  This replaces the static FROM_HEADER
config in sendpage.h

Implemented emailReply and emailReplyErr options in user profile.
emailReply=yes/no controls the sending of confirmations on
successful page.  emailReplyErr=yes/no controls the sending of
errors/warnings.

RETRIES_NOTIFY_FAIL compile time option moved to run time pc option
retryNotify

added global option emailFrom which is always used for errors, and
sets the default for the pc emailFrom option

added global option replyToSender which will add a Reply-To: header
on outgoing mail listing the sender if one exists.

recipients that don't match an alias get assigned flags from the
special profile 'default'  Note, if the 'default' profile doesn't have
emailReplyErr=yes then pages to unknown recipients will not generate
e-mail replies anymore.

fixed memory leak when multiple messages are processed by QueueExpand()
that require message splitting.

dots in aliases should work, ie alias firstname.lastname 12345.test

Added RFC822 style header parsing including folding.
When using the sendpage client:
    -B  option is used for looking in the body of a mail message to gather
        data for the page
    -cx option is used for looking in the header of a mail message to gather
        data for the page.

    Both can be used together, ie -B -c 'Subject:' will allow sendpage
    to use the Subject header of a mail message passed to it by sendmail,
    and if the Subject is blank or does not exist then go looking in the
    body.


created sendpage-hackers mailing list, to subscribe
    echo 'subscribe' | Mail sendpage-hackers-request@lists.net.ohio-state.edu

implemented global option timeFormat which controls if the month is
displayed first or the day, ie 2/14/1996 in the US is Feb 14, 1996 while
in other parts of the world it would be written as 14/2/1996

Added simple loop detection for e-mail gateway.  All outgoing mail
has a 'X-Loop: sendpage' header tacked on.  If the -B or -c flags are
used on the client, and it finds a "X-Loop: sendpage" header the
message is silently dropped.

Added interface to Remedy Corporation's Notification System 
    pc      name=ar protocol=ARSystemNotifier\
            server=ar.wherever.com


---
alpha 7 released Feb 14, 1996
---

--
alpha 0.8 released Dec 24, 1997 
--
Cook took over source control...

added 'configure' support.

added patches from various sources, include SNPP support by Steve Kennedy 
	(steve@demon.net)

--
0.8.1 Dec 25, 1997
--
fixing configure errors, cleaning up code.

--
0.8.4 Dec 26, 1997
--
'maxTransactions' implemented

--
0.8.5 Dec 28, 1997
--
major "include" overhaul.  Probably broke on many systems now.

0.8.6 Dec 30, 1997
------------------
fixed modem flags for various machine types.

finished implementing/correcting the verbose modem response code.

fixed various mistakes in configure scripts for non GCC environments.
