This means we can get rid of the suid/sgid parts of the code (which
have been removed). The program is now installed with normal permissions.
To prevent accidents, we now flock the tty line, attempting to get an
exclusive lock.
Reviewed by: tls
(a.k.a. "tandem" mode). While we're here, fix a buglet with --halfduplex,
and add --flow {hard, soft, none}. Note that you can't get *both* hard and
soft flow control using the command-line option; if you want that, you
have to set the variables in tiprc or with ~s once tip is running.
Move all setting of vars.c named variables to *after* the call to vinit().
Turn it off by default -- it hardly saves any space, but it's
one of the reasons why the executable is installed setuid, and
other versions of tip/cu don't write a log file anyway. We can
add syslog support later if we ever really want this back, the
file-writing is all encapsulated in log.c.
but with some long options added for Taylor 'cu' compatibility, and
with some bugs fixed (in particular, the handling of -# now works as
documented and does not overwrite argv).
emit an error -- and it would be nice if it were the *right* program name.
Since it's convenient, change most perror calls to warn, and a lot of
fprintf ... exit to errx. Fix at least one fprintf that could run off
the end of its arguments (%s but no argument, how did we never catch this?).
and address() macros with new macros of the same names (to get values),
and macros with those names but with "set" prepended and which take a
second argument (to set values). The new macros use type casts to do
type conversion, which is much cleaner than using a union and making
endianness-related hacks to get the right 'short's and 'char's from
the right array indices. (YUCK! again, for good measure.)