History log of /openbsd-current/usr.bin/mail/fio.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.39 26-Dec-2022 jmc

spelling fixes; from paul tagliamonte
amendments to his diff are noted on tech


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.38 28-Jun-2019 deraadt

When system calls indicate an error they return -1, not some arbitrary
value < 0. errno is only updated in this case. Change all (most?)
callers of syscalls to follow this better, and let's see if this strictness
helps us in the future.


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.37 26-Apr-2018 guenther

Use <fcntl.h> instead of <sys/file.h> for open() and friends.
Delete a bunch of unnecessary #includes and sort to match style(9)
while doing the above cleanup.

ok deraadt@ krw@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.36 16-Oct-2015 mmcc

Cast isspace() argument to unsigned char.

ok jca@


# 1.35 16-Oct-2015 mmcc

Modernize allocation by:

* removing unneeded casts of void* return values
* replacing varied and creative error messages with the allocation
function's name
* replacing errx() with err() so that the errno string is reported

ok beck@, jung@, millert@


Revision tags: OPENBSD_5_7_BASE OPENBSD_5_8_BASE
# 1.34 16-Dec-2014 millert

Use glob() to expand filenames instead of passing it to the shell's
echo command for expansion which could result in arbitrary command
execution. CVE-2004-2771


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.33 17-Jan-2014 okan

ctype and other sign extension fixes.

with deraadt and millert, ok millert


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.32 27-Oct-2009 deraadt

rcsid[] and sccsid[] and copyright[] are essentially unmaintained (and
unmaintainable). these days, people use source. these id's do not provide
any benefit, and do hurt the small install media
(the 33,000 line diff is essentially mechanical)
ok with the idea millert, ok dms


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.31 16-Jul-2008 martynas

- err with the pathbuf, if we know it
- use tmpdir instead of /tmp
ok millert@


Revision tags: OPENBSD_4_3_BASE
# 1.30 05-Oct-2007 chl

check if it's really a newline before removing it

with the help of ray@ "Looks OK" millert@


# 1.29 10-Sep-2007 tobias

Proper use of fseek/fseeko macros.

OK joris@, otto@


Revision tags: OPENBSD_4_2_BASE
# 1.28 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


Revision tags: OPENBSD_4_1_BASE
# 1.27 16-Nov-2006 ray

Fix undefined behavior (var = --var).

From Alexey Dobriyan <adobriyan at gmail dot com>.

OK moritz@ and jaredy@.


Revision tags: OPENBSD_4_0_BASE
# 1.26 02-Apr-2006 deraadt

use SEEK_* for lseek()


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.25 10-May-2004 deraadt

delint; millert ok


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.24 07-Jul-2003 deraadt

protos


# 1.23 03-Jun-2003 millert

Remove the advertising clause in the UCB license which Berkeley
rescinded 22 July 1999. Proofed by myself and Theo.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
# 1.22 14-Mar-2002 mpech

Remove \n from err/errx/warn/warnx().

millert@ ok


# 1.21 18-Dec-2001 millert

We need to adjust where "dot" points when we realloc(message).
Problem found by Mike Heffner of the FreeBSD project.


# 1.20 21-Nov-2001 millert

o ANSIfy
o Style nits
o Use const to silent stupid -Wall warnings
o strnc{py,at} -> strlc{py,at}
o Use strpbrk() instead of homegrown anyof()
o Use NULL instead of #defines with 0 cast to a pointer
This still could use a proper audit


# 1.19 20-Nov-2001 millert

Major signal overhaul. We no longer longjmp all over the place.
Instead, routines responsible to gathering user input (or in some
cases outputting data) catch the signals and set flags as needed.
Because of this some handlers are install without the SA_RESTART
flag so syscalls are not restarted and we can check the flag. All
signal handlers are now safe.

This should make the flow of control a bit more grokable but the
code is still ugly.


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
# 1.18 16-Jan-2001 millert

Changes from Don Beusee:
o escape From line with a leading '>' when needed
o only print To: address and Subject lines if actually present
o new variable 'allnet' to treat user@foo and user@bar as the same "user"
o folders command now takes an optional argument like ls.
o new "pipe" (|) command to pipe the message through an arbitrary command
o make header display format the same as SunOS 4.1.3 /usr/ucb/mail
o tilde commands work regardless of interactive mode.
o fix "read: Interrupted system call" error by retrying if EINTR
o expanded help file
Changes by me:
o read the help file via the PAGER as it is now more than 24 lines long


Revision tags: OPENBSD_2_8_BASE
# 1.17 02-Aug-2000 millert

$HOME paranoia: never use getenv("HOME") w/o checking for NULL and non-zero


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE
# 1.16 12-Jun-1998 millert

Don't call truncate() directly; have rm() do it if we get EPERM on unlink()
In popen.c, findchild() may return NULL so catch that case.


# 1.15 11-Jun-1998 deraadt

Don't segfault just because a line starts with NUL; ross


Revision tags: OPENBSD_2_3_BASE
# 1.14 14-Nov-1997 millert

NetBSD changes (mostly comsmetic):
replace panic() with calls to err()/errx()
use S_IS* instead of doing by hand with S_IF*.
Use TIMESPEC_TO_TIMEVAL() and gettimeofday instead of time(2)
Use _POSIX_VDISABLE, not 0
Kill register


Revision tags: OPENBSD_2_2_BASE
# 1.13 04-Sep-1997 millert

Deal with <CR><LF> pairs in mailboxes so we can work with eudora mail
spools mounted from DOS/Windoze. From Matt Thomas <matt@3am-software.com>.


# 1.12 31-Aug-1997 millert

Kill union wait.


# 1.11 28-Jul-1997 millert

Dynamically allocate space for addr header strings instead of using
BUFSIZ. We know that the end size will be <= to the start size
so it is simple to preallocate enough space. Fixes NetBSD PR#3028


# 1.10 24-Jul-1997 millert

tempnam(3) goes bye bye.


# 1.9 24-Jul-1997 millert

Replace 3 tempnam()'s with mkstemp. The two left look tricky.


# 1.8 14-Jul-1997 millert

NOSTR -> NULL
Use sigsetjmp/siglongjmp instead of sigjmp/longjmp for portability.


# 1.7 13-Jul-1997 millert

bcopy() -> memcpy() and fix some casts.


# 1.6 13-Jul-1997 millert

Merge in NetBSD and 4.4BSD-lite2 changes as well as some of my own.
- handle long lines safely (from NetBSD)
- use puts/fputs and putchar/putc when it makes sense
- use err/errx and warn/warnx when it makes sense
- make return() and sizeof() style consisten
- some more buffer safety


# 1.5 30-May-1997 deraadt

overflows abound


Revision tags: OPENBSD_2_1_BASE
# 1.4 29-Mar-1997 millert

Use ``mail.local -H'' to do dot locking so we can have mode 755 mail
spool, change an occurrence of tempnam() to mkstemp(), change some
longs and shorts to ints. Mail is now usable again.


# 1.3 17-Jan-1997 millert

r?index -> strr?chr


Revision tags: OPENBSD_2_0_BASE
# 1.2 11-Jun-1996 deraadt

from christos;
- Fix PR/105: Implement dot locking protocol and check return value of flock.
- Fix PR/2247: Don't call unknown users "ubluit". Issue an error message.
- Fix/add prototypes.
- Fix warnings.
- Use POSIX signal mask calls.


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


# 1.38 28-Jun-2019 deraadt

When system calls indicate an error they return -1, not some arbitrary
value < 0. errno is only updated in this case. Change all (most?)
callers of syscalls to follow this better, and let's see if this strictness
helps us in the future.


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.37 26-Apr-2018 guenther

Use <fcntl.h> instead of <sys/file.h> for open() and friends.
Delete a bunch of unnecessary #includes and sort to match style(9)
while doing the above cleanup.

ok deraadt@ krw@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.36 16-Oct-2015 mmcc

Cast isspace() argument to unsigned char.

ok jca@


# 1.35 16-Oct-2015 mmcc

Modernize allocation by:

* removing unneeded casts of void* return values
* replacing varied and creative error messages with the allocation
function's name
* replacing errx() with err() so that the errno string is reported

ok beck@, jung@, millert@


Revision tags: OPENBSD_5_7_BASE OPENBSD_5_8_BASE
# 1.34 16-Dec-2014 millert

Use glob() to expand filenames instead of passing it to the shell's
echo command for expansion which could result in arbitrary command
execution. CVE-2004-2771


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.33 17-Jan-2014 okan

ctype and other sign extension fixes.

with deraadt and millert, ok millert


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.32 27-Oct-2009 deraadt

rcsid[] and sccsid[] and copyright[] are essentially unmaintained (and
unmaintainable). these days, people use source. these id's do not provide
any benefit, and do hurt the small install media
(the 33,000 line diff is essentially mechanical)
ok with the idea millert, ok dms


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.31 16-Jul-2008 martynas

- err with the pathbuf, if we know it
- use tmpdir instead of /tmp
ok millert@


Revision tags: OPENBSD_4_3_BASE
# 1.30 05-Oct-2007 chl

check if it's really a newline before removing it

with the help of ray@ "Looks OK" millert@


# 1.29 10-Sep-2007 tobias

Proper use of fseek/fseeko macros.

OK joris@, otto@


Revision tags: OPENBSD_4_2_BASE
# 1.28 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


Revision tags: OPENBSD_4_1_BASE
# 1.27 16-Nov-2006 ray

Fix undefined behavior (var = --var).

From Alexey Dobriyan <adobriyan at gmail dot com>.

OK moritz@ and jaredy@.


Revision tags: OPENBSD_4_0_BASE
# 1.26 02-Apr-2006 deraadt

use SEEK_* for lseek()


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.25 10-May-2004 deraadt

delint; millert ok


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.24 07-Jul-2003 deraadt

protos


# 1.23 03-Jun-2003 millert

Remove the advertising clause in the UCB license which Berkeley
rescinded 22 July 1999. Proofed by myself and Theo.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
# 1.22 14-Mar-2002 mpech

Remove \n from err/errx/warn/warnx().

millert@ ok


# 1.21 18-Dec-2001 millert

We need to adjust where "dot" points when we realloc(message).
Problem found by Mike Heffner of the FreeBSD project.


# 1.20 21-Nov-2001 millert

o ANSIfy
o Style nits
o Use const to silent stupid -Wall warnings
o strnc{py,at} -> strlc{py,at}
o Use strpbrk() instead of homegrown anyof()
o Use NULL instead of #defines with 0 cast to a pointer
This still could use a proper audit


# 1.19 20-Nov-2001 millert

Major signal overhaul. We no longer longjmp all over the place.
Instead, routines responsible to gathering user input (or in some
cases outputting data) catch the signals and set flags as needed.
Because of this some handlers are install without the SA_RESTART
flag so syscalls are not restarted and we can check the flag. All
signal handlers are now safe.

This should make the flow of control a bit more grokable but the
code is still ugly.


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
# 1.18 16-Jan-2001 millert

Changes from Don Beusee:
o escape From line with a leading '>' when needed
o only print To: address and Subject lines if actually present
o new variable 'allnet' to treat user@foo and user@bar as the same "user"
o folders command now takes an optional argument like ls.
o new "pipe" (|) command to pipe the message through an arbitrary command
o make header display format the same as SunOS 4.1.3 /usr/ucb/mail
o tilde commands work regardless of interactive mode.
o fix "read: Interrupted system call" error by retrying if EINTR
o expanded help file
Changes by me:
o read the help file via the PAGER as it is now more than 24 lines long


Revision tags: OPENBSD_2_8_BASE
# 1.17 02-Aug-2000 millert

$HOME paranoia: never use getenv("HOME") w/o checking for NULL and non-zero


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE
# 1.16 12-Jun-1998 millert

Don't call truncate() directly; have rm() do it if we get EPERM on unlink()
In popen.c, findchild() may return NULL so catch that case.


# 1.15 11-Jun-1998 deraadt

Don't segfault just because a line starts with NUL; ross


Revision tags: OPENBSD_2_3_BASE
# 1.14 14-Nov-1997 millert

NetBSD changes (mostly comsmetic):
replace panic() with calls to err()/errx()
use S_IS* instead of doing by hand with S_IF*.
Use TIMESPEC_TO_TIMEVAL() and gettimeofday instead of time(2)
Use _POSIX_VDISABLE, not 0
Kill register


Revision tags: OPENBSD_2_2_BASE
# 1.13 04-Sep-1997 millert

Deal with <CR><LF> pairs in mailboxes so we can work with eudora mail
spools mounted from DOS/Windoze. From Matt Thomas <matt@3am-software.com>.


# 1.12 31-Aug-1997 millert

Kill union wait.


# 1.11 28-Jul-1997 millert

Dynamically allocate space for addr header strings instead of using
BUFSIZ. We know that the end size will be <= to the start size
so it is simple to preallocate enough space. Fixes NetBSD PR#3028


# 1.10 24-Jul-1997 millert

tempnam(3) goes bye bye.


# 1.9 24-Jul-1997 millert

Replace 3 tempnam()'s with mkstemp. The two left look tricky.


# 1.8 14-Jul-1997 millert

NOSTR -> NULL
Use sigsetjmp/siglongjmp instead of sigjmp/longjmp for portability.


# 1.7 13-Jul-1997 millert

bcopy() -> memcpy() and fix some casts.


# 1.6 13-Jul-1997 millert

Merge in NetBSD and 4.4BSD-lite2 changes as well as some of my own.
- handle long lines safely (from NetBSD)
- use puts/fputs and putchar/putc when it makes sense
- use err/errx and warn/warnx when it makes sense
- make return() and sizeof() style consisten
- some more buffer safety


# 1.5 30-May-1997 deraadt

overflows abound


Revision tags: OPENBSD_2_1_BASE
# 1.4 29-Mar-1997 millert

Use ``mail.local -H'' to do dot locking so we can have mode 755 mail
spool, change an occurrence of tempnam() to mkstemp(), change some
longs and shorts to ints. Mail is now usable again.


# 1.3 17-Jan-1997 millert

r?index -> strr?chr


Revision tags: OPENBSD_2_0_BASE
# 1.2 11-Jun-1996 deraadt

from christos;
- Fix PR/105: Implement dot locking protocol and check return value of flock.
- Fix PR/2247: Don't call unknown users "ubluit". Issue an error message.
- Fix/add prototypes.
- Fix warnings.
- Use POSIX signal mask calls.


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


# 1.37 26-Apr-2018 guenther

Use <fcntl.h> instead of <sys/file.h> for open() and friends.
Delete a bunch of unnecessary #includes and sort to match style(9)
while doing the above cleanup.

ok deraadt@ krw@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.36 16-Oct-2015 mmcc

Cast isspace() argument to unsigned char.

ok jca@


# 1.35 16-Oct-2015 mmcc

Modernize allocation by:

* removing unneeded casts of void* return values
* replacing varied and creative error messages with the allocation
function's name
* replacing errx() with err() so that the errno string is reported

ok beck@, jung@, millert@


Revision tags: OPENBSD_5_7_BASE OPENBSD_5_8_BASE
# 1.34 16-Dec-2014 millert

Use glob() to expand filenames instead of passing it to the shell's
echo command for expansion which could result in arbitrary command
execution. CVE-2004-2771


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.33 17-Jan-2014 okan

ctype and other sign extension fixes.

with deraadt and millert, ok millert


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.32 27-Oct-2009 deraadt

rcsid[] and sccsid[] and copyright[] are essentially unmaintained (and
unmaintainable). these days, people use source. these id's do not provide
any benefit, and do hurt the small install media
(the 33,000 line diff is essentially mechanical)
ok with the idea millert, ok dms


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.31 16-Jul-2008 martynas

- err with the pathbuf, if we know it
- use tmpdir instead of /tmp
ok millert@


Revision tags: OPENBSD_4_3_BASE
# 1.30 05-Oct-2007 chl

check if it's really a newline before removing it

with the help of ray@ "Looks OK" millert@


# 1.29 10-Sep-2007 tobias

Proper use of fseek/fseeko macros.

OK joris@, otto@


Revision tags: OPENBSD_4_2_BASE
# 1.28 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


Revision tags: OPENBSD_4_1_BASE
# 1.27 16-Nov-2006 ray

Fix undefined behavior (var = --var).

From Alexey Dobriyan <adobriyan at gmail dot com>.

OK moritz@ and jaredy@.


Revision tags: OPENBSD_4_0_BASE
# 1.26 02-Apr-2006 deraadt

use SEEK_* for lseek()


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.25 10-May-2004 deraadt

delint; millert ok


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.24 07-Jul-2003 deraadt

protos


# 1.23 03-Jun-2003 millert

Remove the advertising clause in the UCB license which Berkeley
rescinded 22 July 1999. Proofed by myself and Theo.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
# 1.22 14-Mar-2002 mpech

Remove \n from err/errx/warn/warnx().

millert@ ok


# 1.21 18-Dec-2001 millert

We need to adjust where "dot" points when we realloc(message).
Problem found by Mike Heffner of the FreeBSD project.


# 1.20 21-Nov-2001 millert

o ANSIfy
o Style nits
o Use const to silent stupid -Wall warnings
o strnc{py,at} -> strlc{py,at}
o Use strpbrk() instead of homegrown anyof()
o Use NULL instead of #defines with 0 cast to a pointer
This still could use a proper audit


# 1.19 20-Nov-2001 millert

Major signal overhaul. We no longer longjmp all over the place.
Instead, routines responsible to gathering user input (or in some
cases outputting data) catch the signals and set flags as needed.
Because of this some handlers are install without the SA_RESTART
flag so syscalls are not restarted and we can check the flag. All
signal handlers are now safe.

This should make the flow of control a bit more grokable but the
code is still ugly.


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
# 1.18 16-Jan-2001 millert

Changes from Don Beusee:
o escape From line with a leading '>' when needed
o only print To: address and Subject lines if actually present
o new variable 'allnet' to treat user@foo and user@bar as the same "user"
o folders command now takes an optional argument like ls.
o new "pipe" (|) command to pipe the message through an arbitrary command
o make header display format the same as SunOS 4.1.3 /usr/ucb/mail
o tilde commands work regardless of interactive mode.
o fix "read: Interrupted system call" error by retrying if EINTR
o expanded help file
Changes by me:
o read the help file via the PAGER as it is now more than 24 lines long


Revision tags: OPENBSD_2_8_BASE
# 1.17 02-Aug-2000 millert

$HOME paranoia: never use getenv("HOME") w/o checking for NULL and non-zero


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE
# 1.16 12-Jun-1998 millert

Don't call truncate() directly; have rm() do it if we get EPERM on unlink()
In popen.c, findchild() may return NULL so catch that case.


# 1.15 11-Jun-1998 deraadt

Don't segfault just because a line starts with NUL; ross


Revision tags: OPENBSD_2_3_BASE
# 1.14 14-Nov-1997 millert

NetBSD changes (mostly comsmetic):
replace panic() with calls to err()/errx()
use S_IS* instead of doing by hand with S_IF*.
Use TIMESPEC_TO_TIMEVAL() and gettimeofday instead of time(2)
Use _POSIX_VDISABLE, not 0
Kill register


Revision tags: OPENBSD_2_2_BASE
# 1.13 04-Sep-1997 millert

Deal with <CR><LF> pairs in mailboxes so we can work with eudora mail
spools mounted from DOS/Windoze. From Matt Thomas <matt@3am-software.com>.


# 1.12 31-Aug-1997 millert

Kill union wait.


# 1.11 28-Jul-1997 millert

Dynamically allocate space for addr header strings instead of using
BUFSIZ. We know that the end size will be <= to the start size
so it is simple to preallocate enough space. Fixes NetBSD PR#3028


# 1.10 24-Jul-1997 millert

tempnam(3) goes bye bye.


# 1.9 24-Jul-1997 millert

Replace 3 tempnam()'s with mkstemp. The two left look tricky.


# 1.8 14-Jul-1997 millert

NOSTR -> NULL
Use sigsetjmp/siglongjmp instead of sigjmp/longjmp for portability.


# 1.7 13-Jul-1997 millert

bcopy() -> memcpy() and fix some casts.


# 1.6 13-Jul-1997 millert

Merge in NetBSD and 4.4BSD-lite2 changes as well as some of my own.
- handle long lines safely (from NetBSD)
- use puts/fputs and putchar/putc when it makes sense
- use err/errx and warn/warnx when it makes sense
- make return() and sizeof() style consisten
- some more buffer safety


# 1.5 30-May-1997 deraadt

overflows abound


Revision tags: OPENBSD_2_1_BASE
# 1.4 29-Mar-1997 millert

Use ``mail.local -H'' to do dot locking so we can have mode 755 mail
spool, change an occurrence of tempnam() to mkstemp(), change some
longs and shorts to ints. Mail is now usable again.


# 1.3 17-Jan-1997 millert

r?index -> strr?chr


Revision tags: OPENBSD_2_0_BASE
# 1.2 11-Jun-1996 deraadt

from christos;
- Fix PR/105: Implement dot locking protocol and check return value of flock.
- Fix PR/2247: Don't call unknown users "ubluit". Issue an error message.
- Fix/add prototypes.
- Fix warnings.
- Use POSIX signal mask calls.


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.36 16-Oct-2015 mmcc

Cast isspace() argument to unsigned char.

ok jca@


# 1.35 16-Oct-2015 mmcc

Modernize allocation by:

* removing unneeded casts of void* return values
* replacing varied and creative error messages with the allocation
function's name
* replacing errx() with err() so that the errno string is reported

ok beck@, jung@, millert@


Revision tags: OPENBSD_5_7_BASE OPENBSD_5_8_BASE
# 1.34 16-Dec-2014 millert

Use glob() to expand filenames instead of passing it to the shell's
echo command for expansion which could result in arbitrary command
execution. CVE-2004-2771


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.33 17-Jan-2014 okan

ctype and other sign extension fixes.

with deraadt and millert, ok millert


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.32 27-Oct-2009 deraadt

rcsid[] and sccsid[] and copyright[] are essentially unmaintained (and
unmaintainable). these days, people use source. these id's do not provide
any benefit, and do hurt the small install media
(the 33,000 line diff is essentially mechanical)
ok with the idea millert, ok dms


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.31 16-Jul-2008 martynas

- err with the pathbuf, if we know it
- use tmpdir instead of /tmp
ok millert@


Revision tags: OPENBSD_4_3_BASE
# 1.30 05-Oct-2007 chl

check if it's really a newline before removing it

with the help of ray@ "Looks OK" millert@


# 1.29 10-Sep-2007 tobias

Proper use of fseek/fseeko macros.

OK joris@, otto@


Revision tags: OPENBSD_4_2_BASE
# 1.28 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


Revision tags: OPENBSD_4_1_BASE
# 1.27 16-Nov-2006 ray

Fix undefined behavior (var = --var).

From Alexey Dobriyan <adobriyan at gmail dot com>.

OK moritz@ and jaredy@.


Revision tags: OPENBSD_4_0_BASE
# 1.26 02-Apr-2006 deraadt

use SEEK_* for lseek()


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.25 10-May-2004 deraadt

delint; millert ok


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.24 07-Jul-2003 deraadt

protos


# 1.23 03-Jun-2003 millert

Remove the advertising clause in the UCB license which Berkeley
rescinded 22 July 1999. Proofed by myself and Theo.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
# 1.22 14-Mar-2002 mpech

Remove \n from err/errx/warn/warnx().

millert@ ok


# 1.21 18-Dec-2001 millert

We need to adjust where "dot" points when we realloc(message).
Problem found by Mike Heffner of the FreeBSD project.


# 1.20 21-Nov-2001 millert

o ANSIfy
o Style nits
o Use const to silent stupid -Wall warnings
o strnc{py,at} -> strlc{py,at}
o Use strpbrk() instead of homegrown anyof()
o Use NULL instead of #defines with 0 cast to a pointer
This still could use a proper audit


# 1.19 20-Nov-2001 millert

Major signal overhaul. We no longer longjmp all over the place.
Instead, routines responsible to gathering user input (or in some
cases outputting data) catch the signals and set flags as needed.
Because of this some handlers are install without the SA_RESTART
flag so syscalls are not restarted and we can check the flag. All
signal handlers are now safe.

This should make the flow of control a bit more grokable but the
code is still ugly.


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
# 1.18 16-Jan-2001 millert

Changes from Don Beusee:
o escape From line with a leading '>' when needed
o only print To: address and Subject lines if actually present
o new variable 'allnet' to treat user@foo and user@bar as the same "user"
o folders command now takes an optional argument like ls.
o new "pipe" (|) command to pipe the message through an arbitrary command
o make header display format the same as SunOS 4.1.3 /usr/ucb/mail
o tilde commands work regardless of interactive mode.
o fix "read: Interrupted system call" error by retrying if EINTR
o expanded help file
Changes by me:
o read the help file via the PAGER as it is now more than 24 lines long


Revision tags: OPENBSD_2_8_BASE
# 1.17 02-Aug-2000 millert

$HOME paranoia: never use getenv("HOME") w/o checking for NULL and non-zero


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE
# 1.16 12-Jun-1998 millert

Don't call truncate() directly; have rm() do it if we get EPERM on unlink()
In popen.c, findchild() may return NULL so catch that case.


# 1.15 11-Jun-1998 deraadt

Don't segfault just because a line starts with NUL; ross


Revision tags: OPENBSD_2_3_BASE
# 1.14 14-Nov-1997 millert

NetBSD changes (mostly comsmetic):
replace panic() with calls to err()/errx()
use S_IS* instead of doing by hand with S_IF*.
Use TIMESPEC_TO_TIMEVAL() and gettimeofday instead of time(2)
Use _POSIX_VDISABLE, not 0
Kill register


Revision tags: OPENBSD_2_2_BASE
# 1.13 04-Sep-1997 millert

Deal with <CR><LF> pairs in mailboxes so we can work with eudora mail
spools mounted from DOS/Windoze. From Matt Thomas <matt@3am-software.com>.


# 1.12 31-Aug-1997 millert

Kill union wait.


# 1.11 28-Jul-1997 millert

Dynamically allocate space for addr header strings instead of using
BUFSIZ. We know that the end size will be <= to the start size
so it is simple to preallocate enough space. Fixes NetBSD PR#3028


# 1.10 24-Jul-1997 millert

tempnam(3) goes bye bye.


# 1.9 24-Jul-1997 millert

Replace 3 tempnam()'s with mkstemp. The two left look tricky.


# 1.8 14-Jul-1997 millert

NOSTR -> NULL
Use sigsetjmp/siglongjmp instead of sigjmp/longjmp for portability.


# 1.7 13-Jul-1997 millert

bcopy() -> memcpy() and fix some casts.


# 1.6 13-Jul-1997 millert

Merge in NetBSD and 4.4BSD-lite2 changes as well as some of my own.
- handle long lines safely (from NetBSD)
- use puts/fputs and putchar/putc when it makes sense
- use err/errx and warn/warnx when it makes sense
- make return() and sizeof() style consisten
- some more buffer safety


# 1.5 30-May-1997 deraadt

overflows abound


Revision tags: OPENBSD_2_1_BASE
# 1.4 29-Mar-1997 millert

Use ``mail.local -H'' to do dot locking so we can have mode 755 mail
spool, change an occurrence of tempnam() to mkstemp(), change some
longs and shorts to ints. Mail is now usable again.


# 1.3 17-Jan-1997 millert

r?index -> strr?chr


Revision tags: OPENBSD_2_0_BASE
# 1.2 11-Jun-1996 deraadt

from christos;
- Fix PR/105: Implement dot locking protocol and check return value of flock.
- Fix PR/2247: Don't call unknown users "ubluit". Issue an error message.
- Fix/add prototypes.
- Fix warnings.
- Use POSIX signal mask calls.


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision