Don't try to trim trailing blanks here -- it's not possible
because we don't know where the field begins.
Properly distinguish between cases where TAB character is specified
and when the default is used.
(trim_trailing_blanks): New function.
(findlines): Call it.
(keycompare): Likewise.
(limfield): Fix bug that made field specs like -k1.5 return a
pointer into LINE beyond the first field.
Rewrite to properly ignore trailing blanks.
Replace unnecessary loop with if-else.
(main): Don't decrement T2 corresponding to `x' in field specs like -ku.v,w.x.
Include xstrtod.h.
(struct keyfield): Add field: general_numeric.
(usage): Describe -g option.
(general_numcompare): New function.
(keycompare): Use new comparison function when general_numeric
flag is set.
(set_ordering): Honor `g' flag.
(main): Initialize and use new field.
From Marcus Daniels <marcus@sysc.pdx.edu>.
(cleanup_fatal): New function. Call cleanup, then exit.
(sighandler): New function.
(cleanup_fatal): Renamed from cleanup. Call cleanup, then exit.
Update callers.
(tac_stdin): Set up sighandler as signal handler, not `cleanup'.
(cleanup_fatal): New functoin. Call cleanup, then exit.
(interrupt_handler): Rewrite to reset default signal handler
then repost caught signal.
(xmalloc, xrealloc, read_input, write_to_file, handle_line_error,
process_line_count, process_regexp, create_output_file, close_output_file):
Call cleanup_fatal, not cleanup.
Add const attribute to lots of parameters.