[Swan-dev] man pages for our library routines
D. Hugh Redelmeier
hugh at mimosa.com
Thu Aug 22 13:19:55 UTC 2019
>From IRC:
<cagney> DHR, unlike snprintf(), the *tot() return a length that
includes the '\0'?
The way to answer this is to read the man pages. Unfortunately, those
have become unknown.
Henry created very comprehensive man pages for those library routines.
The FreeS/WAN and Openswan projects installed those pages so that, for
example,
man ipsec_addrtot
would display the page for addrtot.
The Libreswan project no longer builds or installs those pages. But the
source code for the pages still exists and can be consulted. Albeit in
XML rather than the original troff markup.
Since even some developers don't know of these pages' existence, there is
a chance that the man pages are bitrotten. But I have found few
reasons to revise Henry's excellent code. The major bitrot is probably
that some routines have been deleted (perhaps without removing
documentation) and some have been added (without providing documentation).
One consequence of a man page not being installed is that its aliases are
not manifest. For example, lib/libswan/ttoaddr.3.xml would be installed
with additional links for ipsec_ttoaddr ipsec_tnatoaddr ipsec_addrtot ipsec_ttosubnet
ipsec_subnettot.
(I don't know how to view a manpage that is in XML. The man command
would display one written in troff. I'm old fashioned and don't
consider XML an improvement. We're still fixing bug introduced by the
translation.)
Now for the answer to Andrew's original question. Here's an extract
from lib/libswan/ttoaddr.3.xml
The binary-to-text functions return
<literal>0</literal>
for a failure, and otherwise
always return the size of buffer that would
be needed to
accommodate the full conversion result, including terminating NUL;
it is the caller's responsibility to check this against the size of
the provided buffer to determine whether truncation has occurred.</para>
</refsect1>
More information about the Swan-dev
mailing list