eric [Mon, 3 Dec 2018 21:19:10 +0000 (21:19 +0000)]
Perform forward-confirmed reverse DNS verification on incoming connections.
Only flag the session for now.
input from and ok gilles@ sunil@
schwarze [Mon, 3 Dec 2018 21:00:06 +0000 (21:00 +0000)]
In the validators, translate obsolete macro aliases (Lp, Ot, LP, P)
to the standard forms (Pp, Ft, PP) up front, such that later code
does not need to look for the obsolete versions.
This reduces the risk of incomplete handling.
schwarze [Mon, 3 Dec 2018 19:13:14 +0000 (19:13 +0000)]
adapt to the change in mansearch.c rev. 1.62;
reminded by bluhm@, thanks!
bluhm [Mon, 3 Dec 2018 18:39:42 +0000 (18:39 +0000)]
The field dom_rtkeylen has been removed from struct domain. Convert
to designated initializers and adapt the test. Fix white space.
claudio [Mon, 3 Dec 2018 17:25:22 +0000 (17:25 +0000)]
Convert more MH_ALIGN() to m_align(). Also switch from m_gethdr/M_GETHDR
calls to m_get/M_GET calls because M_MOVE_PKTHDR() is initialising
the pkthdr and so it is not needed when allocation the header.
OK bluhm@
tb [Mon, 3 Dec 2018 17:16:12 +0000 (17:16 +0000)]
Send SSL_AD_DECODE alerts in the case of a bad hello request or an
invalid change cipher spec. Found due to dead assignment warnings
by the Clang static analyzer.
ok inoguchi (previous version), jsing
tb [Mon, 3 Dec 2018 17:05:51 +0000 (17:05 +0000)]
sync
schwarze [Mon, 3 Dec 2018 16:17:58 +0000 (16:17 +0000)]
Render .br as <br/>, not as an empty <div>.
The element <br/> was already employed for many other purposes,
so there is nothing wrong with using it.
Also, it is safer because <br/> is permitted in phrasing content,
whereas <div> is only allowed in flow content.
This is the first part of the HTML syntax audit which i wanted
to do for a long time. Reminded by a loosely related bug report
from Mark Harris <mark dot hsj at gmail dot com>.
Examples of where this caused HTML nesting syntax errors:
* in man(7) code between .nf and .fi
* in mdoc(7) code between .Bd -unfilled and .Ed
* in mdoc(7) code between .Ql Xo and .Xc
* in mdoc(7) code between .Rs and .Re
visa [Mon, 3 Dec 2018 13:50:02 +0000 (13:50 +0000)]
Do not process the top 32 bits of the 64 bit interrupt mask register
on the O2. The CRIME interrupt controller only has 32 interrupt sources.
From miod@
visa [Mon, 3 Dec 2018 13:46:30 +0000 (13:46 +0000)]
Remove the unused interrupt type (edge/level) from the mace interrupt
handler registration. The code is inherited from isa(4), but on the O2,
although some interrupt sources on CRIME are edge-triggered, all
the MACE interrupts are level-triggered.
From miod@
claudio [Mon, 3 Dec 2018 10:10:49 +0000 (10:10 +0000)]
In PRU_DISCONNECT don't fall through into PRU_ABORT since the latter frees
the inpcb apart from the disconnect. Just call soisdisconnected() and
clear the inp->inp_faddr since the socket is still valid after a disconnect.
Problem found by syzkaller via Greg Steuck
OK visa@
Fixes:
Reported-by: syzbot+2cd350dfe5c96f6469f2@syzkaller.appspotmail.com
Reported-by: syzbot+139ac2d7d3d60162334b@syzkaller.appspotmail.com
Reported-by: syzbot+02168317bd0156c13b69@syzkaller.appspotmail.com
Reported-by: syzbot+de8d2459ecf4cdc576a1@syzkaller.appspotmail.com
guenther [Mon, 3 Dec 2018 05:29:56 +0000 (05:29 +0000)]
DT_MIPS_RLD_MAP is an offset, so relocate it when present.
This fixes handling of lld-linked executables on mips64.
problem reported by visa@ and worked out with him
guenther [Mon, 3 Dec 2018 02:59:51 +0000 (02:59 +0000)]
Merge post-2.17 but pre-GPLv3 diffs that add support for DT_GNU_HASH
to ld and improve the readelf support:
https://sourceware.org/ml/binutils/2006-07/msg00129.html
https://sourceware.org/ml/binutils/2006-07/msg00181.html
Disable the ld support on mips64, as its ABI requires a symbol
ordering that conflicts with the requirements of DT_GNU_HASH.
Tested on macppc, alpha, and sparc64 to verify operation with all
three ELF word size combos
testing help miod@
ok kettenis@
jsg [Mon, 3 Dec 2018 01:51:17 +0000 (01:51 +0000)]
Avoid uint32_t in _lock.h so users of rwlock.h mutex.h etc don't have to
include sys/types.h first.
ok guenther@ deraadt@
kettenis [Sun, 2 Dec 2018 21:30:21 +0000 (21:30 +0000)]
Include "com.h" to fix using a puc(4) based serial port as serial console
which was broken by the previous commit.
ok jsg@, mpi@
fcambus [Sun, 2 Dec 2018 14:47:23 +0000 (14:47 +0000)]
Remove artefacts from 'C', 'c' and 'F' characters, to match the other
sizes.
OK patrick@
fcambus [Sun, 2 Dec 2018 14:44:33 +0000 (14:44 +0000)]
Add Spleen 8x16, 12x24, 16x32, and 32x64 variants to wsfont.
Together with the already imported Spleen 5x8, it will allow using the
same font family across a wide range of screen resolutions, from small
OLED displays to 4K monitors.
The fonts are 2-Clause BSD licensed and are my original creation.
OK jcs@, brynet@, bcallah@, kettenis@
anton [Sun, 2 Dec 2018 11:46:31 +0000 (11:46 +0000)]
mention REGRESS_SKIP_TARGETS; ok bluhm@
gilles [Sun, 2 Dec 2018 11:34:21 +0000 (11:34 +0000)]
err -> errx
diff from Lauri Tirkkonen <lotheac@iki.fi>
kn [Sat, 1 Dec 2018 23:35:59 +0000 (23:35 +0000)]
Use strtonum(3) for -t seconds, improve errors on invalid number input
Base 10 suffices, negative numbers should be invalid (not converted) and
zero not treated specially.
This also unifies error messages and removes unnecessary EINVAL from them
since strtonum()'s errstr is explicit enough already.
Feedback and OK martjin, tb
jmc [Sat, 1 Dec 2018 07:11:28 +0000 (07:11 +0000)]
update currency exchange rates;
mlarkin [Fri, 30 Nov 2018 19:19:06 +0000 (19:19 +0000)]
regen
mlarkin [Fri, 30 Nov 2018 19:18:31 +0000 (19:18 +0000)]
Add another Xeon E3-1200 v6/7 host device.
Add nVidia Quadro M1200
from Peter Ezetta, thanks.
danj [Fri, 30 Nov 2018 18:40:57 +0000 (18:40 +0000)]
Remove erroneous quote added in previous
Spotted by jmc, thanks!
mpi [Fri, 30 Nov 2018 18:19:12 +0000 (18:19 +0000)]
Fix a typo and remove broken example.
From Edgar Pettijohn.
tedu [Fri, 30 Nov 2018 18:05:31 +0000 (18:05 +0000)]
log current power status going into and out of suspend, since it may be
interesting to review.
it seems the battery status is sometimes stale, but that's another bug.
ok kn phessler
gilles [Fri, 30 Nov 2018 15:41:15 +0000 (15:41 +0000)]
on link-connect report events, add an fc-rdns field, currently empty
gilles [Fri, 30 Nov 2018 15:33:40 +0000 (15:33 +0000)]
prepare for smtp-out reporting and while at it, make a few changes to the
report format
danj [Fri, 30 Nov 2018 15:06:47 +0000 (15:06 +0000)]
/usr/local/ -> ${LOCALBASE}
ok espie@
danj [Fri, 30 Nov 2018 15:06:25 +0000 (15:06 +0000)]
Update after INDEX change
ok espie@
claudio [Fri, 30 Nov 2018 11:58:47 +0000 (11:58 +0000)]
Document m_align().
With and OK bluhm@, jmc@
claudio [Fri, 30 Nov 2018 09:28:34 +0000 (09:28 +0000)]
MH_ALIGN -> m_align
OK bluhm@
claudio [Fri, 30 Nov 2018 09:27:56 +0000 (09:27 +0000)]
MH_ALIGN -> m_align. In revarprequest() set the ph_rtableid so that
the function is doing the same initialisation as arprequest().
OK bluhm@
claudio [Fri, 30 Nov 2018 09:26:06 +0000 (09:26 +0000)]
MH_ALIGN -> m_align and make the spacing look the same in all three places.
OK bluhm@
claudio [Fri, 30 Nov 2018 09:24:57 +0000 (09:24 +0000)]
Switch MH_ALIGN to m_align which is the same.
OK bluhm@
claudio [Fri, 30 Nov 2018 09:23:31 +0000 (09:23 +0000)]
Trivial MH_ALIGN/M_ALIGN to m_align conversions.
OK bluhm@
solene [Fri, 30 Nov 2018 08:55:57 +0000 (08:55 +0000)]
in getopts, when a option is followed by a colon the parameter is mandatory
ok guenther@ deraadt@
nicm [Fri, 30 Nov 2018 08:44:40 +0000 (08:44 +0000)]
Clear PANE_EXITED flag when starting new child process in case the pane
has been respawned.
jmc [Fri, 30 Nov 2018 08:00:43 +0000 (08:00 +0000)]
tweak previous;
ratchov [Fri, 30 Nov 2018 07:10:12 +0000 (07:10 +0000)]
sync
ratchov [Fri, 30 Nov 2018 07:08:24 +0000 (07:08 +0000)]
New midicat utility to send to or receive from MIDI ports.
ok mpi@
ratchov [Fri, 30 Nov 2018 07:05:49 +0000 (07:05 +0000)]
Remove midiplay.
ok mpi@
jeremy [Fri, 30 Nov 2018 04:51:19 +0000 (04:51 +0000)]
Restore function prototype for ASN1_dup, fixing usage on I32LP64 platforms.
This prototype was removed inadvertantly in r1.50.
OK jsing@
djm [Fri, 30 Nov 2018 02:24:52 +0000 (02:24 +0000)]
don't attempt to connect to empty SSH_AUTH_SOCK; bz#293
mortimer [Fri, 30 Nov 2018 01:54:17 +0000 (01:54 +0000)]
Fix test when using malloc_conf=J
ok otto@
schwarze [Thu, 29 Nov 2018 23:08:08 +0000 (23:08 +0000)]
Do not draw horizontal lines through vertical spans
which are requested in the data section rather than in the layout.
Mini-feature found in misc/pfm(1).
bluhm [Thu, 29 Nov 2018 22:54:37 +0000 (22:54 +0000)]
Mention dependency on portslist package for outdated-perl-ports(1).
requested by espie@
bluhm [Thu, 29 Nov 2018 22:23:22 +0000 (22:23 +0000)]
This test does not terminate if malloc conf is preconfigured with
J. Clear that option to allow running full regress with paranoid
malloc flags. This is the same fix as for malloc_ulimit1.
jmc [Thu, 29 Nov 2018 21:41:01 +0000 (21:41 +0000)]
remove double .Pp. oops - sorry for not spotting!
schwarze [Thu, 29 Nov 2018 21:40:08 +0000 (21:40 +0000)]
Now that it is better understood how borders work,
rewrite tbl_hrule() in a simpler way.
Fix several bugs in the process.
No more special flags, just use the existing TBL_OPT_* from mandoc.h.
Reduce the number of tracked rows from three to two, which is more logical:
one above the line and one below is sufficient to figure out crossings.
No more magic quirks, all conditions are readily comprehensible now.
Add comments.
deraadt [Thu, 29 Nov 2018 21:18:39 +0000 (21:18 +0000)]
Improve introduction so there is more clarity about the patterns of
unveil calls should follow. ok various, including jmc
kn [Thu, 29 Nov 2018 21:10:51 +0000 (21:10 +0000)]
Honor SIGINT/QUIT when running in foreground
Allows stopping `syslogd -F' with ^C.
OK bluhm
afresh1 [Thu, 29 Nov 2018 19:33:08 +0000 (19:33 +0000)]
Fix various overflows in perl
Addresses:
* CVE-2018-18311 (Perl RT #133204)
* CVE-2018-18312 (Perl RT #133423)
* CVE-2018-18313 (Perl RT #133192)
* CVE-2018-18314 (Perl RT #131649)
sthen [Thu, 29 Nov 2018 16:27:45 +0000 (16:27 +0000)]
sync
tedu [Thu, 29 Nov 2018 15:51:49 +0000 (15:51 +0000)]
missed adding tls_default_ca_cert_file here. found by sthen
claudio [Thu, 29 Nov 2018 15:11:27 +0000 (15:11 +0000)]
In peer_down() we have to flush the Adj-RIB-Out. As soon as the peer state
is PEER_DOWN no updates will be processed anymore and quick flush can be made.
Fixes a memory leak and a use-after-free of the peer id in a bgpctl code path.
OK job@
tedu [Thu, 29 Nov 2018 14:25:06 +0000 (14:25 +0000)]
update for libtls default cert changes.
bonus: this exposed a few missing const qualifiers.
tedu [Thu, 29 Nov 2018 14:24:23 +0000 (14:24 +0000)]
expose the default cert file as a function, not a define. it's really
an internal detail of the library, so the string should live inside it,
not in the application code.
ok jsing
gilles [Thu, 29 Nov 2018 12:48:16 +0000 (12:48 +0000)]
introduce FILTER_COMMIT which will allow taking a decision at DATA commit
time, unusable yet but necessary for the upcoming serie of diffs.
ok eric@
claudio [Thu, 29 Nov 2018 12:10:51 +0000 (12:10 +0000)]
community_ext_delete_non_trans() allocates new memory in all cases where
nlen > 0. So in those cases it is important to free() that memory after
use in all cases.
OK phessler@
eric [Thu, 29 Nov 2018 08:30:27 +0000 (08:30 +0000)]
simplify
ok gilles@
tb [Thu, 29 Nov 2018 06:21:09 +0000 (06:21 +0000)]
Refactor a tangle in ssl3_send_client_verify() into one function for each
type, sigalgs/rsa/ec/gost. Move a few special dances for GOST where they
belong now. This prompted a fix for a long-standing bug with GOST client
certificate authentication where tls1_transcript_data() fails since the
transcript was already freed before. Add a bit of missing error checking
and leave some further cleanup for later.
idea, guidance & ok jsing
otto [Thu, 29 Nov 2018 06:04:09 +0000 (06:04 +0000)]
We're manipulating malloc flags ourselves, start with restting them all.
ok bluhm@
schwarze [Thu, 29 Nov 2018 01:54:58 +0000 (01:54 +0000)]
Better handle automatic column width assignments in the presence of
horizontal spans, by implementing a moderately difficult iterative
algoritm. The benefit is that spans containing long text no longer
cause an excessive width of their starting column.
The result is likely not optimal, in particular in the presence
of many spans overlapping in complicated ways nor when spans
interact with equalizing or maximizing colums. But i doubt the
practical usefulness of making this more complicated.
Issue originally reported in synaptics(4), which now looks better,
by tedu@ three years ago, and reminded by Pali Rohar this summer.
dlg [Thu, 29 Nov 2018 00:14:29 +0000 (00:14 +0000)]
allow configuration of ecn processing
this is a step toward better rfc6040 support
ok claudio@
dlg [Thu, 29 Nov 2018 00:12:34 +0000 (00:12 +0000)]
handle tunnel ecn configuration and reporting.
tested with normal and special ifconfig builds.
ok claudio@
dlg [Thu, 29 Nov 2018 00:11:49 +0000 (00:11 +0000)]
restrict setting ecn to root
ok claudio@
dlg [Thu, 29 Nov 2018 00:11:23 +0000 (00:11 +0000)]
allow configuration of ecn propagation on tunnel interfaces.
ok claudio@
deraadt [Wed, 28 Nov 2018 22:54:16 +0000 (22:54 +0000)]
sync
kn [Wed, 28 Nov 2018 22:00:30 +0000 (22:00 +0000)]
Allow reverse sort order
Prefixing the field with a dash will sort processes in reverse order.
`o -pid' will therefore list PID 1 on top.
"looks good" tedu, improvements and OK cheloha
mpi [Wed, 28 Nov 2018 21:19:11 +0000 (21:19 +0000)]
fuse_parse_cmd_line(3) is called fuse_parse_cmdline(3).
Based on a diff from Edgar Pettijohn III.
jsing [Wed, 28 Nov 2018 15:51:32 +0000 (15:51 +0000)]
Correct lock initialisation for libcrypto.
The current crypto_lock_init() function is not called early enough, meaning
that locks are already in use before it gets called. Worse, locks could be
in use when they are then initialised. Furthermore, since functions like
CRYPTO_lock() are public API, these could be called directly bypassing
initialisation.
Avoid these issues by using static initialisers.
ok bcook@
schwarze [Wed, 28 Nov 2018 14:23:02 +0000 (14:23 +0000)]
Bugfix: never set termp->enc to the ambiguous value TERMENC_LOCALE,
but instead set it to TERMENC_UTF8 or TERMENC_ASCII.
Makes tbl(7) box drawing work under -T locale (that is, by default
when LC_CTYPE is defined appropriately).
schwarze [Wed, 28 Nov 2018 13:43:26 +0000 (13:43 +0000)]
additional check needed after the previous (box drawing) patch
bluhm [Wed, 28 Nov 2018 13:34:06 +0000 (13:34 +0000)]
This test does not terminate if malloc conf is preconfigured with
J. Clear that option to allow running full regress with paranoid
malloc flags. Also fix whitespace.
OK otto@
nicm [Wed, 28 Nov 2018 11:20:13 +0000 (11:20 +0000)]
Handle UTF-8 in word-separators option, GitHub issue 1551.
claudio [Wed, 28 Nov 2018 08:33:59 +0000 (08:33 +0000)]
Adjust bgpctl to handle the community changes done in bgpd.
OK job@, phessler@
claudio [Wed, 28 Nov 2018 08:32:26 +0000 (08:32 +0000)]
Start reworking community handling. Merge standard communities and large
communities into one filter_community struct and allow it that more then
one community can be used in filter rules (currently up to 3).
Also rework the code handling bgpctl show rib commands. The special IMSG
types for the various filters are gone and the code is in general simpler.
OK job@, phessler@
claudio [Wed, 28 Nov 2018 08:15:29 +0000 (08:15 +0000)]
Further cleanup of icmp_do_error.
- Use m_align() since it handles all cases
- Use same rounding logic in the size check as in m_align() so all data will
filt always.
- consolidate pkthdr initalisation into one place
- use m_prepend() instead of direct pointer manipulation (including the panic
in case an underflow happens).
OK bluhm@
claudio [Wed, 28 Nov 2018 08:06:22 +0000 (08:06 +0000)]
Test for EMSGSIZE return when sending more fds in a message then the receiver
can handle and also test the case where the reciever is using read() instead
of recvmsg() to test the unp_discard() codepath in the kernel. The latter test
is just instrumenting the code but has no way to check if the discarding was
successful.
OK guenther@ bluhm@
florian [Wed, 28 Nov 2018 06:41:31 +0000 (06:41 +0000)]
Discovered prefixes should not override explicitly configured
prefixes. That way one can have multiple prefixes configured on an
interface and set "autonomous address-configuration no" in rad.conf to
tell clients to not form addresses from some of these prefixes.
Pointed out by Ross L Richardson (openbsd AT rlr.id.au), thanks!
OK phessler
djm [Wed, 28 Nov 2018 06:00:38 +0000 (06:00 +0000)]
don't truncate user or host name in "user@host's password: " prompts.
requested by Marcel Logen; ok dtucker@
schwarze [Wed, 28 Nov 2018 04:47:46 +0000 (04:47 +0000)]
In -T utf8 output mode, render tbl(7) borders with the Unicode
box drawing characters, U+2500 to U+257F.
Originally suggested by bentley@ four years ago,
reminded this summer by Pali Rohar.
Binary and decimal arithmetics are boring,
so let's use some ternary arithmetics for a change.
That said, some other aspects are too complicated for my liking,
so this could use some polishing in the future.
guenther [Wed, 28 Nov 2018 03:18:00 +0000 (03:18 +0000)]
Implement support for DT_GNU_HASH, taking all the interesting bits
from Matt Dillon's implementation in DragonFlyBSD commit
7629c631.
One difference is that as long as DT_HASH is still present, ld.so
will use that to get the total number of symbols rather than walking
the GNU hash chains. Note that the GPLv2 binutils we have doesn't
support DT_GNU_HASH, so this only helps archs were lld is used.
ok kettenis@ mpi@
otto [Tue, 27 Nov 2018 17:29:55 +0000 (17:29 +0000)]
Refactor "find the right pool" code into a function. ok djm@ tb@
cheloha [Tue, 27 Nov 2018 15:52:50 +0000 (15:52 +0000)]
EVFILT_TIMER: Remove extra tick from tvtohz(9) on timeout reload.
tvtohz(9) adds an extra tick to account for the present tick, but this
tick needs to be removed when the timeout is reloaded thereafter. We
already do this for periodic setitimer(2) timeouts.
Prompted by Paul Herman's writeup on clock aliasing for DragonflyBSD:
https://frenchfries.net/paul/dfly/nanosleep.html
Also fixed in FreeBSD r238424.
Style tweaks from visa.
ok visa@, guenther@
mpi [Tue, 27 Nov 2018 14:56:09 +0000 (14:56 +0000)]
Free sizes for the subdevs array.
ok anton@, visa@
mpi [Tue, 27 Nov 2018 14:53:56 +0000 (14:53 +0000)]
Attach the driver only if the stack managed to set the configuration.
Tested by stsp@
martijn [Tue, 27 Nov 2018 12:10:29 +0000 (12:10 +0000)]
Sync with ldap(1)
martijn [Tue, 27 Nov 2018 12:09:38 +0000 (12:09 +0000)]
Sync with ldap(1)
martijn [Tue, 27 Nov 2018 12:06:39 +0000 (12:06 +0000)]
Sync aldap and ber with ldap(1).
OK claudio@
martijn [Tue, 27 Nov 2018 12:04:57 +0000 (12:04 +0000)]
LDAP returns values as OCTET STRINGs, which can be LDAPStrings, but isn't
always the case. This caused some malformed output when querying databases
returning data containing NUL-bytes. Fix this by also returning the
actual size.
With this diff we should produce basically identical output to openldap's
ldapsearch.
Lots of back and forths with claudio@
OK claudio@
espie [Tue, 27 Nov 2018 09:33:48 +0000 (09:33 +0000)]
handle -s and -i in a uniform fashion, do not try to change the node type
but use the Targ_* functions correctly.
This fixes an oddity in end node handling noticed by kn@
review and okay kn@
schwarze [Mon, 26 Nov 2018 21:05:54 +0000 (21:05 +0000)]
Implement tbl(7) lines in -T html output,
as far as they are on the edges of table cells
rather than going through the middle of cells:
* the box, doublebox, and allbox options;
* the | and || layout modifiers;
* and the _ and = data lines;
- but not yet _ and = in individual layout and data cells.
Missing feature reported by Pali dot Rohar at gmail dot com.
schwarze [Mon, 26 Nov 2018 17:44:29 +0000 (17:44 +0000)]
When a conditional block is closed by putting "\}" on a text line
by itself (which is somewhat unusual but not invalid; most authors
use the empty macro line ".\}" instead), agree more closely with
groff and do not produce a double space in the output.
Quirk reported by millert@.
While here, tweak the rest of the function body of roff_cond_text()
to more closely match roff_cond_sub(). The subtly different handling
could make people (including myself) wonder whether there is any
point in being different. Testing shows there is not.
schwarze [Mon, 26 Nov 2018 15:01:38 +0000 (15:01 +0000)]
Place mandoc.css into the public domain.
The reason for doing this rather than using the ISC license
is that i guess that in some contexts, a requirement to preserve
a Copyright and license header might be inconvenient, and i really
don't care at all how people use it.
What matters is that they do use it, or something similar - attempts
to use mandoc without any CSS are a constant source of grief and
bogus bug reports because HTML without CSS doesn't look very good:
the more structural and semantic and the less presentational and
old-fashioned the HTML, the more so.
Thanks to Mark Harris <mark dot hsj at gmail dot com> for pointing out
that the permissions on this particular file were unclear.
reyk [Mon, 26 Nov 2018 10:39:30 +0000 (10:39 +0000)]
Move the {qcow2,raw} create functions from vmctl into vmd/vio{qcow2,raw}.c
This way they are in the appropriate place and code can be shared with vmd.
Ok ori@ mlarkin@ ccardenas@
ori [Mon, 26 Nov 2018 05:44:46 +0000 (05:44 +0000)]
Keep a list of known vms, and reuse the VM IDs.
This means that when using '-L', the IP addresses of the VMs are stable.
ok reyk@
schwarze [Mon, 26 Nov 2018 01:51:41 +0000 (01:51 +0000)]
Simplify writing of tbl(7) cells by using the new feature of passing
a NULL pointer for the value of a style attribute, in which case
the attribute is omitted from the HTML element.
Minus 12 lines of ugly and repetitive code, no functional change.
schwarze [Mon, 26 Nov 2018 01:38:17 +0000 (01:38 +0000)]
Support more than one style attribute one the same HTML element.
In fact, this is already required when a table uses non-default
horizontal and vertical alignment in the same cell.