to do what they are supposed to: under some circumstances output data would
be truncated, or the buffer would not actually be flushed (possibly leading
to overflows when the caller assumes the operation succeeded). Change the
semantics so that these functions ensure they complete the operation before
returning.
Comment out diagnostic code enabled by '-D reports' which causes an
infinite recursion and an eventual crash.
Patch developed with assistance from ru and assar.
o Fixed `nfrontp' calculations in output_data(). If `remaining' is
initially zero, it was possible for `nfrontp' to be decremented.
Noticed by: dillon
o Replaced leaking writenet() with output_datalen():
: * writenet
: *
: * Just a handy little function to write a bit of raw data to the net.
: * It will force a transmit of the buffer if necessary
: *
: * arguments
: * ptr - A pointer to a character string to write
: * len - How many bytes to write
: */
: void
: writenet(ptr, len)
: register unsigned char *ptr;
: register int len;
: {
: /* flush buffer if no room for new data) */
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: if ((&netobuf[BUFSIZ] - nfrontp) < len) {
: /* if this fails, don't worry, buffer is a little big */
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: netflush();
: }
:
: memmove(nfrontp, ptr, len);
: nfrontp += len;
:
: } /* end of writenet */
What an irony! :-)
o Optimized output_datalen() a bit.
(ironically, the assumption is in a code block which is conditional on its
converse). This isn't strictly the correct fix; it's more of a workaround
to prevent an infinite loop. The correct fix (see
ports/editors/nvi-devel/files/patch-vi-relative r1.1) would take a file off
the vendor branch, but since the result for this version of nvi is
identical, this route was elected.
PR: 28687
Approved by: -developers
: 2001-07-18 Ruslan Ermilov <ru@FreeBSD.org>
:
: * tmac/groff_mdoc.man: Document new -width and -column syntax.
: Some other minor fixes.
: * tmac/an-old.tmac: Add `AT' and `UC' macros.
to std{err,out} will not spam /etc/resolv.conf.
Ted Lemon fixed the problem in version 3 of the client, but only for the
pre-daemonized case. Thanks to Brian for pointing that out and helping
to make our future dhclient (v3) better.
Submitted by: brian
Fold -xwidth functionality into -width. .Bl now tests whether
string immediately following a leading dot starts with a valid
macro name.
Added similar functionality to the -column list's column width
specifiers. For example, the following now works as expected:
.Bl -column ".Va hw.crusoe.percentage" ".Vt integer" "Changeable"
.It Sy "Name\tType\tChangeable\tDescription"
.It Va hw.crusoe.longrun Ta Vt integer Ta yes Ta "LongRun mode:"
.It Ta Ta Ta "0: minimum frequency mode"
.It Ta Ta Ta "1: power-saving mode"
.It Ta Ta Ta "2: performance mode"
.It Ta Ta Ta "3: maximum frequency mode"
.It Va hw.crusoe.frequency Ta Vt integer Ta no Ta "Current frequency (MHz)."
.It Va hw.crusoe.voltage Ta Vt integer Ta no Ta "Current voltage (mV)."
.It Va hw.crusoe.percentage Ta Vt integer Ta no Ta "Processing performance (%)."
.El
This is especially useful for groff devices with variable width
fonts, like -Tps or -TX100.