]> git.cameronkatri.com Git - mandoc.git/log
mandoc.git
11 years agos/[Nn]ull/NUL/ in comments where appropriate;
Ingo Schwarze [Wed, 25 Dec 2013 00:50:05 +0000 (00:50 +0000)]
s/[Nn]ull/NUL/ in comments where appropriate;
suggested by Thomas Klausner <wiz @ NetBSD dot org>.

11 years agoDo not break output lines in .Fn function arguments in SYNOPSIS mode.
Ingo Schwarze [Wed, 25 Dec 2013 00:39:31 +0000 (00:39 +0000)]
Do not break output lines in .Fn function arguments in SYNOPSIS mode.
Following an idea from Franco Fichtner, but implemented more cleanly.
This reduces groff-mandoc-differences in OpenBSD base by a fantastic 7.5%.

11 years agoDelete the unused flag TERMP_IGNDELIM
Ingo Schwarze [Tue, 24 Dec 2013 23:04:36 +0000 (23:04 +0000)]
Delete the unused flag TERMP_IGNDELIM
and the empty callback termp_igndelim_pre().
Sort the remaining termp flags.

11 years agoImplement SYNOPSIS .Fn indentation for -Tman.
Ingo Schwarze [Tue, 24 Dec 2013 22:08:50 +0000 (22:08 +0000)]
Implement SYNOPSIS .Fn indentation for -Tman.

11 years agoIt turns out SYNOPSIS mode does not imply .Bk in general,
Ingo Schwarze [Tue, 24 Dec 2013 20:45:27 +0000 (20:45 +0000)]
It turns out SYNOPSIS mode does not imply .Bk in general,
but only within .Nm blocks.  Simplify the code accordingly.

Triggered by research done by Franco Fichtner.

11 years agoWhen deciding whether two consecutive macros are on the same input line,
Ingo Schwarze [Tue, 24 Dec 2013 19:11:45 +0000 (19:11 +0000)]
When deciding whether two consecutive macros are on the same input line,
we have to compare the line where the first one *ends* (not where it begins)
to the line where the second one starts.
This fixes the bug that .Bk allowed output line breaks right after block
macros spanning more than one input line, even when the next macro follows
on the same line.

11 years agoImplement a long-standing desideratum,
Ingo Schwarze [Mon, 23 Dec 2013 02:20:09 +0000 (02:20 +0000)]
Implement a long-standing desideratum,
hanging indentation for .Fn in SYNOPSIS mode,
exploiting the new trailspace feature
by deliberately *NOT* using it.

11 years agoPolishing the worms in my favourite can, term_flushln().
Ingo Schwarze [Sun, 22 Dec 2013 23:34:13 +0000 (23:34 +0000)]
Polishing the worms in my favourite can, term_flushln().

The TERMP_TWOSPACE flag i introduced in August 2009 was idiosyncratic
and served only a very narrow purpose.  Replace it by a more intuitive
and more general termp attribute "trailspace", to be used together
with TERMP_NOBREAK, to request a minimum amount of whitespace at
the end of the current column.  Adapt all code to the new interface.

No functional change intended;
code reviews to confirm that are welcome *eg*.

11 years agoFix end-of-sentence spacing after the DragonFly text production macro.
Ingo Schwarze [Sun, 22 Dec 2013 14:06:36 +0000 (14:06 +0000)]
Fix end-of-sentence spacing after the DragonFly text production macro.
Patch from Franco Fichtner <franco at lastsummer dot de>.

11 years agoImplement end-of-sentence spacing at the end of man(7) macro lines.
Ingo Schwarze [Sun, 22 Dec 2013 13:25:17 +0000 (13:25 +0000)]
Implement end-of-sentence spacing at the end of man(7) macro lines.

Patch from Franco Fichtner <franco at lastsummer dot de> (DragonFly).

11 years agoDocument the alternative syntax \C'uXXXX' for Unicode characters.
Ingo Schwarze [Sun, 22 Dec 2013 13:18:27 +0000 (13:18 +0000)]
Document the alternative syntax \C'uXXXX' for Unicode characters.
Forgotten when committing mandoc.c rev. 1.70.

11 years agoIn quoted macro arguments, double quotes can be quoted by doubling them.
Ingo Schwarze [Sun, 15 Dec 2013 23:56:42 +0000 (23:56 +0000)]
In quoted macro arguments, double quotes can be quoted by doubling them.
For a long time, we handle this in roff(7) and man(7) macros.
Now add correct handling for the mdoc(7) case, too.

Closely based on a patch by Tsugutomo dot ENAMI at jp dot sony dot com,
see http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=48438
received via Thomas Klausner (wiz@), slightly tweaked by me.

11 years agobentley@ looked at sbcl(1) and found new tasks for us...
Ingo Schwarze [Sun, 15 Dec 2013 21:30:13 +0000 (21:30 +0000)]
bentley@ looked at sbcl(1) and found new tasks for us...

11 years agoThe "value" argument to the roff(7) .nr requests ends right before
Ingo Schwarze [Sun, 15 Dec 2013 21:23:52 +0000 (21:23 +0000)]
The "value" argument to the roff(7) .nr requests ends right before
the first non-digit character.  While here, implement and document
an optional sign, requesting increment or decrement, as documented
in the Ossanna/Kernighan/Ritter troff manual and supported by groff.

Reported by bentley@ on discuss@.

11 years agoMy audit of mandoc revealed one missing (unsigned char) cast
Ingo Schwarze [Thu, 21 Nov 2013 01:49:18 +0000 (01:49 +0000)]
My audit of mandoc revealed one missing (unsigned char) cast
in an isspace() argument containing arbitrary char data.
Thanks to deraadt@ for triggering the audit.

11 years agoIn the parser, when closing an explicit block that is not open,
Ingo Schwarze [Mon, 11 Nov 2013 00:37:55 +0000 (00:37 +0000)]
In the parser, when closing an explicit block that is not open,
close below-subsection implicit scopes that may still be open.
In the formatter, make sure indentation is reset when leaving a scope,
not only when entering the next one.

Improves the formatting of gpg(1); issue reported by jca on ports.

11 years agoIgnore blank lines right after .SH and .SS.
Ingo Schwarze [Sun, 10 Nov 2013 22:54:40 +0000 (22:54 +0000)]
Ignore blank lines right after .SH and .SS.
Improves the rendering of gpg(1); issue reported by jca on ports.

11 years agoSupport the alternative syntax \C'uXXXX' for Unicode characters.
Ingo Schwarze [Sun, 10 Nov 2013 21:34:04 +0000 (21:34 +0000)]
Support the alternative syntax \C'uXXXX' for Unicode characters.
It is already documented in the Heirloom troff manual,
and groff handles it as well.

Bug reported by Bjarni Ingi Gislason <bjarniig at rhi dot hi dot is>
on <bug-groff at gnu dot org>.  Well, admittedly, that bug was reported
against groff, but mandoc was even more broken than groff with respect
to this syntax...

11 years agoclarify that \[uXXXX] wants uppercase hex digits
Ingo Schwarze [Sun, 10 Nov 2013 14:32:57 +0000 (14:32 +0000)]
clarify that \[uXXXX] wants uppercase hex digits

11 years agomissing features: line length and italic correction
Ingo Schwarze [Sun, 10 Nov 2013 12:28:02 +0000 (12:28 +0000)]
missing features: line length and italic correction

11 years agoWhile answering a question asked by espie@, i noticed that .Fd is not
Ingo Schwarze [Sat, 2 Nov 2013 20:39:49 +0000 (20:39 +0000)]
While answering a question asked by espie@, i noticed that .Fd is not
completely obsolete, but still somewhat useful for listing preprocessor
directives, in particular in the SYNOPSIS.

11 years agoThe man(7) language has no syntax to specify architectures, but it
Ingo Schwarze [Sun, 27 Oct 2013 17:01:18 +0000 (17:01 +0000)]
The man(7) language has no syntax to specify architectures, but it
can still be used to write architecture-specific manuals, of course.

So just derive the architecture a man(7) manual belongs to from the
directory where it is located and refrain from warning about each and
every architecture-specific man(7) manual found.

While here, delete some trailing whitespace in the neighbourhood.

11 years agoThe code in ofmerge() only tried the source parsers if at least one
Ingo Schwarze [Sun, 27 Oct 2013 16:41:31 +0000 (16:41 +0000)]
The code in ofmerge() only tried the source parsers if at least one
of the path (/man1/ .. /man9/) or the file name suffix (*.1 .. *.9)
indicated a source manual.  That missed source manuals with unusual
names in unusual locations.

Instead, as the existing comment right above already suggests, try
the source parsers unless both the path and the file name suffix
unambiguously indicate a preformatted manual (/cat*/*.0).

This change is not expensive in practice because no real-world
system will have large numbers of preformatted pages outside
/cat*/*.0.  The only way to make information loss even less probable
would be to try the source parsers on all files, even /cat*/*.0,
which wouldn't buy us much because no real-world system will call
source manuals /cat*/*.0, but it will be expensive in practice,
because many real-world systems have large numbers of preformatted
pages called /cat*/*.0.

11 years agodelete duplicate NULL check and polish style;
Ingo Schwarze [Sun, 27 Oct 2013 16:09:44 +0000 (16:09 +0000)]
delete duplicate NULL check and polish style;
no functional change

11 years agoParse and ignore .hw (hyphenation points in words); this is safe because
Ingo Schwarze [Tue, 22 Oct 2013 20:38:00 +0000 (20:38 +0000)]
Parse and ignore .hw (hyphenation points in words); this is safe because
we don't do hyphenation anyway, so there is no point in throwing an ERROR
when encountering .hw.
Real-world usage of the request found by naddy@ in sysutils/dwdiff(1).

11 years agoThere are three kinds of input lines: text lines, macros taking
Ingo Schwarze [Mon, 21 Oct 2013 23:47:58 +0000 (23:47 +0000)]
There are three kinds of input lines: text lines, macros taking
positional arguments (like Dt Fn Xr) and macros taking text as
arguments (like Nd Sh Em %T An).  In the past, even the latter put
each word of their arguments into its own MDOC_TEXT node; instead,
concatenate arguments unless delimiters, keeps or spacing mode
prevent that.  Regarding mandoc(1), this is internal refactoring,
no output change intended.

Regarding mandocdb(8), this fixes yet another regression introduced
when switching from DB to SQLite: The ability to search for strings
crossing word boundaries was lost and is hereby restored.  At the
same time, database sizes and build times are both reduced by a bit
more than 5% each.

11 years agoFix another regression introduced when switching from DB to SQLite:
Ingo Schwarze [Sun, 20 Oct 2013 00:03:05 +0000 (00:03 +0000)]
Fix another regression introduced when switching from DB to SQLite:
The ~ operator has to do regular expression search, not globbing.

11 years agoFix a regression introduced when switching from DB to SQLite:
Ingo Schwarze [Sat, 19 Oct 2013 20:43:13 +0000 (20:43 +0000)]
Fix a regression introduced when switching from DB to SQLite:
The = operator has to do substring search, not word search.

11 years agoFix an assertion in dbindex(): Null strings are never entered into the
Ingo Schwarze [Fri, 18 Oct 2013 23:07:23 +0000 (23:07 +0000)]
Fix an assertion in dbindex():  Null strings are never entered into the
string table.  Fortunately, they never need UTF-8 translation either.

11 years agoManuals to be checked with "mandocdb -t" need not be in the current
Ingo Schwarze [Fri, 18 Oct 2013 21:10:07 +0000 (21:10 +0000)]
Manuals to be checked with "mandocdb -t" need not be in the current
directory or one of its subdirectories.

11 years agoImplement the .UR/.UE block (uniform resource identifier) introduced in the
Ingo Schwarze [Thu, 17 Oct 2013 20:54:58 +0000 (20:54 +0000)]
Implement the .UR/.UE block (uniform resource identifier) introduced in the
man-ext macros by Eric S. Raymond, enabled by default in groff_man(7).
Usual disclaimer: You don't write new man(7) code, so you are not going
to use these, either.
Improves e.g. the bzr(1) and etherape(1) manuals.
Thanks to naddy@ for bringing these to my attention.

11 years agoParse and ignore the .fam (font family) request.
Ingo Schwarze [Mon, 14 Oct 2013 01:43:14 +0000 (01:43 +0000)]
Parse and ignore the .fam (font family) request.
Fixes irunner(1) in devel/ipython and uim-xim(1) in inputmethods/uim.
Thanks to naddy@ for bringing these to my attention.

11 years agomerge from VERSION_1_12: new section about mandoc history, with links
Ingo Schwarze [Sun, 13 Oct 2013 18:34:51 +0000 (18:34 +0000)]
merge from VERSION_1_12: new section about mandoc history, with links

11 years agomention the three unreleased versions since 1.10.3
Ingo Schwarze [Sun, 13 Oct 2013 16:06:50 +0000 (16:06 +0000)]
mention the three unreleased versions since 1.10.3

11 years agoadd libppath; Thomas Klausner, NetBSD rev. 1.4, Aug 29, 2011
Ingo Schwarze [Sun, 13 Oct 2013 15:24:03 +0000 (15:24 +0000)]
add libppath; Thomas Klausner, NetBSD rev. 1.4, Aug 29, 2011

11 years agoadd libefi and simplify some names
Ingo Schwarze [Sun, 13 Oct 2013 14:45:56 +0000 (14:45 +0000)]
add libefi and simplify some names
from FreeBSD ports SVN rev. 293734, Ulrich Spoerlein March 24, 2012
in case of conflicts with NetBSD, i keep the simpler NetBSD names

11 years agosync SUSv2/SUSv3 entries with groff
Ingo Schwarze [Sun, 13 Oct 2013 03:07:34 +0000 (03:07 +0000)]
sync SUSv2/SUSv3 entries with groff
reduces groff-mandoc-differences for several pthread_*(3) manuals
noticed by Franco Fichtner <franco at lastsummer dot de>
dragonfly.git/commitdiff/370c546b87777b40b5fc862491555ef71b4ee130

11 years agomore DragonFly libraries; Franco Fichtner <franco at lastsummer dot de>
Ingo Schwarze [Sun, 13 Oct 2013 02:54:53 +0000 (02:54 +0000)]
more DragonFly libraries; Franco Fichtner <franco at lastsummer dot de>
dragonfly.git/commit/107cb94cae2c24ce3f6851ce0ed24b80d64e3ec8

11 years agoThomas Klausner <wiz at NetBSD dot org> finally succeeded to build
Ingo Schwarze [Fri, 11 Oct 2013 00:06:48 +0000 (00:06 +0000)]
Thomas Klausner <wiz at NetBSD dot org> finally succeeded to build
on SmartOS and sent these additional patches, thanks!

11 years agomerge from VERSION_1_12:
Ingo Schwarze [Thu, 10 Oct 2013 05:20:30 +0000 (05:20 +0000)]
merge from VERSION_1_12:
link supplementary information on mandoc
and Alpine Linux port was upgraded to 1.12.2

11 years agoPrintf size_t vars with %zu, not %ld;
Ingo Schwarze [Mon, 7 Oct 2013 22:22:10 +0000 (22:22 +0000)]
Printf size_t vars with %zu, not %ld;
from Antonio Huete Jimenez <tuxillo at quantumachine dot net>
via Franco Fichtner (both DragonFly).

11 years agoPut VERSION into config.h.
Ingo Schwarze [Sun, 6 Oct 2013 23:20:39 +0000 (23:20 +0000)]
Put VERSION into config.h.
This makes life easier for downstream maintainers having more than one
Makefile, for example DragonFly and FreeBSD.
Suggested by Franco Fichtner <franco at lastsummer dot de>.

11 years agoWe don't do hyphenation, but we allow breaking the line at hyphens that are
Ingo Schwarze [Sun, 6 Oct 2013 22:46:15 +0000 (22:46 +0000)]
We don't do hyphenation, but we allow breaking the line at hyphens that are
already there in the middle of words.  So far, we only allowed this on text
lines.  Now it turns out some macros allow this for their arguments, too,
in particular .Nd and most of the .%? citation macros.

Issue found by Franco Fichtner <franco at lastsummer dot de> while doing
systematic groff-mandoc comparisons in the DragonFly base system, THANKS!

While here, garbage collect two empty prevalidator function pointer lists
and sort a couple of function declarations.

11 years agoFranco Fichtner moved DragonFly to 1.12.2.
Ingo Schwarze [Sun, 6 Oct 2013 17:34:30 +0000 (17:34 +0000)]
Franco Fichtner moved DragonFly to 1.12.2.

11 years agoThe .Lb arguments wants a "lib" prefix;
Ingo Schwarze [Sun, 6 Oct 2013 17:01:52 +0000 (17:01 +0000)]
The .Lb arguments wants a "lib" prefix;
from Sascha Wildner via Franco Fichtner (DragonFly);
also fixing the same in the mdoc(7) example while i'm about it.

11 years agoIf there is random stuff inside a .Bl block body before the first .It,
Ingo Schwarze [Sun, 6 Oct 2013 13:32:46 +0000 (13:32 +0000)]
If there is random stuff inside a .Bl block body before the first .It,
do not throw a FATAL error and do not die, but just throw a WARNING
and move the stuff out of the .Bl block.

This bug felt completely 2008-ish; meanwhile, such bugs from the
Kristaps-doesnt-like-syntax-errors-so-lets-just-give-up--Era
are becoming rare, but this was one of the last survivors.

Thanks to bentley@ for reminding me to finally fix this.

11 years agoSupport simple numerical conditions.
Ingo Schwarze [Sat, 5 Oct 2013 22:25:12 +0000 (22:25 +0000)]
Support simple numerical conditions.

Original code from Christos Zoulas, NetBSD rev. 1.11-1.13, April 3, 2013.

I tweaked the code as follows:
* In roff_getnum(), don't skip a minus that isn't followed by a digit.
* In roff_getop(), do not handle "!=", groff doesn't support it either.
* In roff_evalcond(), treat negative numbers as false, like groff.
Besides, make the interfaces of roff_getnum() and roff_getop() more
similar to each other and simplify parts of the code a bit.

11 years agoROFFRULE_ALLOW = 0, ROFFRULE_DENY = 1 was confusing,
Ingo Schwarze [Sat, 5 Oct 2013 22:21:20 +0000 (22:21 +0000)]
ROFFRULE_ALLOW = 0, ROFFRULE_DENY = 1 was confusing,
so exchange the two entries in enum roffrule; no functional change;
from Christos Zoulas, NetBSD rev. 1.11, April 4, 2013.

11 years agoAvoid code duplication in roff_parseln() as suggested by
Ingo Schwarze [Sat, 5 Oct 2013 22:19:10 +0000 (22:19 +0000)]
Avoid code duplication in roff_parseln() as suggested by
Christos Zoulas in NetBSD rev. 1.11;
i'm even going a step further and making this yet a bit shorter.
No functional change.

11 years agoExpand references to number registers in exactly the same way as
Ingo Schwarze [Sat, 5 Oct 2013 22:15:03 +0000 (22:15 +0000)]
Expand references to number registers in exactly the same way as
references to user-defined strings.  While here, make number registers
signed int, like in groff.

Inspired by NetBSD roff.c rev. 1.8 and read.c rev. 1.7
written by Christos Zoulas on March 21, 2013, but implemented
in a completely different way, without hacking into read.c,
where this functionality really doesn't belong.

11 years agoSupport setting arbitrary roff(7) number registers,
Ingo Schwarze [Sat, 5 Oct 2013 22:08:12 +0000 (22:08 +0000)]
Support setting arbitrary roff(7) number registers,
preserving read support for the ".nr nS" SYNOPSIS state register.

Inspired by NetBSD roff.c rev. 1.18 (Christos Zoulas, March 21, 2013),
but implemented differently.  I don't want to have yet another different
implementation of a hash table in mandoc - it would be the second one
in roff.c alone and the fifth one in mandoc grand total.
Instead, i designed and implemented roff_setreg() and roff_getreg()
to be similar to roff_setstrn() and roff_getstrn().

Once we feel the need to optimize, we can introduce one common
hash table implementation for everything in mandoc.

11 years agosync with NetBSD
Ingo Schwarze [Sat, 5 Oct 2013 21:51:26 +0000 (21:51 +0000)]
sync with NetBSD

11 years agomerge from VERSION_1_12: do not complain about unused variables in test-*.c
Ingo Schwarze [Sat, 5 Oct 2013 20:43:20 +0000 (20:43 +0000)]
merge from VERSION_1_12: do not complain about unused variables in test-*.c

11 years agoCleanup suggested by gcc-4.8.1, following hints by Christos Zoulas:
Ingo Schwarze [Sat, 5 Oct 2013 20:30:05 +0000 (20:30 +0000)]
Cleanup suggested by gcc-4.8.1, following hints by Christos Zoulas:
- avoid bad qualifier casting in roff.c, roff_parsetext()
  by changing the mandoc_escape arguments to "const char const **"
- avoid bad qualifier casting in mandocdb.c, index_merge()
- do not complain about unused variables in test-*.c
- garbage collect a few unused variables elsewhere

11 years agoMerge from VERSION_1_12, in particular release date, pkgsrc port version,
Ingo Schwarze [Sat, 5 Oct 2013 20:09:24 +0000 (20:09 +0000)]
Merge from VERSION_1_12, in particular release date, pkgsrc port version,
link to NEWS file, link to Alpine Linux, and fix one FreeBSD link.

11 years agoRelease version 1.12.2. This is no longer beta.
Ingo Schwarze [Sat, 5 Oct 2013 13:15:51 +0000 (13:15 +0000)]
Release version 1.12.2.  This is no longer beta.
Sneak in a downstream link to Alpine Linux.

11 years agoMerge from branch VERSION_1_12:
Ingo Schwarze [Wed, 2 Oct 2013 06:45:43 +0000 (06:45 +0000)]
Merge from branch VERSION_1_12:
- mention that groff is GPL version 3
- link the new tbl.3.html
- list FreeBSD base version of mandoc
- document downstream versions
- copy the version 1.12.2 News

11 years agoMerge from branch VERSION_1_12:
Ingo Schwarze [Wed, 2 Oct 2013 06:44:55 +0000 (06:44 +0000)]
Merge from branch VERSION_1_12:
- add the new SCRS files NEWS and gmdiff
- add tbl.3 to SRCS, INDEX_MANS, and install
- bring back the SCRS files apropos.{c,1} that somehow got lost
- bring back the INDEX_MANS apropos.1.html that also got lost
- update VERSION, VDATE, and OSNAME
- improve comment regarding STATIC

11 years agoMerge the relevant parts from the VERSION_1_12 branch:
Ingo Schwarze [Tue, 1 Oct 2013 20:56:18 +0000 (20:56 +0000)]
Merge the relevant parts from the VERSION_1_12 branch:
- change mandocdb.db to mandoc.db
- add HISTORY to mandocdb(8)

11 years agoNew file suggested by Thomas Klausner <wiz at netbsd dot org>.
Ingo Schwarze [Tue, 1 Oct 2013 00:24:00 +0000 (00:24 +0000)]
New file suggested by Thomas Klausner <wiz at netbsd dot org>.

11 years agoMaybe we can easily improve -width parsing.
Ingo Schwarze [Fri, 27 Sep 2013 21:12:34 +0000 (21:12 +0000)]
Maybe we can easily improve -width parsing.

11 years agoThrowing FATAL MANDOCERR_SYNTCHILD on non-.It children of .Bl
Ingo Schwarze [Sun, 22 Sep 2013 23:21:23 +0000 (23:21 +0000)]
Throwing FATAL MANDOCERR_SYNTCHILD on non-.It children of .Bl
feels so 2008-ish, one of the last remnants of the
Kristaps-doesnt-like-syntax-errors-so-lets-just-give-up--Era.

11 years agoDocBook abuses \h - for no good reason, but maybe we should eventually
Ingo Schwarze [Sun, 22 Sep 2013 11:48:38 +0000 (11:48 +0000)]
DocBook abuses \h - for no good reason, but maybe we should eventually
try to deal with it.

11 years agouse the .Bx macro; from Jan Stary via jmc@
Ingo Schwarze [Mon, 16 Sep 2013 22:58:57 +0000 (22:58 +0000)]
use the .Bx macro; from Jan Stary via jmc@

11 years agotwo improvements in the SYNOPSIS;
Ingo Schwarze [Mon, 16 Sep 2013 22:54:38 +0000 (22:54 +0000)]
two improvements in the SYNOPSIS;
from Sascha Wildner <swildner at gmail dot com> (DragonFly)

11 years agoDrop .Ud remark, it has started to slowly turn into a lie.
Ingo Schwarze [Mon, 16 Sep 2013 22:39:19 +0000 (22:39 +0000)]
Drop .Ud remark, it has started to slowly turn into a lie.

11 years agoBeagle has been replaced by armv7; from patrick@.
Ingo Schwarze [Mon, 16 Sep 2013 22:12:57 +0000 (22:12 +0000)]
Beagle has been replaced by armv7; from patrick@.

11 years agoOne of the WARNING messages has to use the word "section" twice in two
Ingo Schwarze [Mon, 16 Sep 2013 00:25:07 +0000 (00:25 +0000)]
One of the WARNING messages has to use the word "section" twice in two
different meanings, that cannot be helped.  But we can make this less
confusing by stating that the second instance refers to stuff like (2),
(3), and (9), and by adding the sections header the first instance
refers to, for example ERRORS or RETURN VALUES.

Source for confusion noticed by Jan Stary <hans at stare dot cz>,
better wording suggested by jmc@, tweaked by me.

11 years agoUse normal line macro recognition, do not attempt to roll your own.
Ingo Schwarze [Sun, 15 Sep 2013 18:48:31 +0000 (18:48 +0000)]
Use normal line macro recognition, do not attempt to roll your own.
This fixes horizontal spacing when an Ns macro follows a block-closing
macro and the corresponding block-opening macro is not on the same line.

11 years agoBlock closing macros do not allocate a new node but finish an existing
Ingo Schwarze [Sun, 15 Sep 2013 18:26:46 +0000 (18:26 +0000)]
Block closing macros do not allocate a new node but finish an existing
one, so they miss the clearing of MDOC_NEWLINE in mdoc.c, node_alloc().
Consequently, MDOC_NEWLINE must be cleared before processing the next
macro on the same line.
This fixes horizontal spacing for input lines beginning like .Oc Ns ...

Issue found by Franco Fichtner <franco at lastsummer dot de>
while working on DragonFly mandoc integration.

11 years agoFor some mdoc(7) macros, it is (unfortunately) semantically significant
Ingo Schwarze [Sun, 15 Sep 2013 17:33:57 +0000 (17:33 +0000)]
For some mdoc(7) macros, it is (unfortunately) semantically significant
whether they are the first macro on the line or called by another macro.
To help debugging, indicate this property "first macro on a new input line"
by prefixing an asterisk to the line number in -Ttree output.

11 years agoMove the last column-counting members of struct termp (col and maxcols)
Ingo Schwarze [Wed, 21 Aug 2013 21:20:40 +0000 (21:20 +0000)]
Move the last column-counting members of struct termp (col and maxcols)
from int to size_t, to match some existing ones (offset, *rmargin, viscol).
Move some related local variables from int to size_t as well.

Needed as a preparation to make a generalized adjbuf() function available
beyond the file term.c, i.e. in mandoc.c.
Also saves a couple of ugly casts.

11 years agoUse text production macros to document themselves.
Ingo Schwarze [Wed, 14 Aug 2013 15:08:31 +0000 (15:08 +0000)]
Use text production macros to document themselves.
Part of the patch was sent in by Jan Stary <hans at stare dot cz>,
another part was added by jmc@, the rest was added by myself;
ok jmc@.

11 years agoImplement the roff(7) font-escape sequence \f(BI "bold+italic".
Ingo Schwarze [Thu, 8 Aug 2013 20:07:47 +0000 (20:07 +0000)]
Implement the roff(7) font-escape sequence \f(BI "bold+italic".
This improves the formatting of about 40 base manuals
and reduces groff-mandoc formatting differences in base by about 5%.

11 years agoAfter a leading blank on an output line, the first word was counted twice
Ingo Schwarze [Mon, 5 Aug 2013 23:36:42 +0000 (23:36 +0000)]
After a leading blank on an output line, the first word was counted twice
against vend, causing a premature line break.  Fix that bug by reverting
revision 1.93 which Kristaps committed four years ago.  Kristaps patch is no
longer needed because the code below  /* Write out the [remaining] word. */
now handles leading blanks correctly, probably already for a long time.

This avoids premature line breaks in about a dozen base system manuals,
for example as(1) and gdb(1), and alignment issues in another twenty,
for example mount(2), ip6(4), pfctl(8), and crypto(9).

11 years agoPut .%C before .%D in .Rs output
Ingo Schwarze [Mon, 5 Aug 2013 14:36:01 +0000 (14:36 +0000)]
Put .%C before .%D in .Rs output
because that's the usual order in formal citations.

My patch that was accepted into groff by Werner Lemberg
uses the same order, so keep groff and mandoc consistent.

11 years agojca@ found .as .shift .while in ratpoison(1)
Ingo Schwarze [Sun, 14 Jul 2013 11:57:38 +0000 (11:57 +0000)]
jca@ found .as .shift .while in ratpoison(1)

11 years agotedu@ says: "whatis pool" doesn't work
Ingo Schwarze [Sun, 14 Jul 2013 09:36:13 +0000 (09:36 +0000)]
tedu@ says: "whatis pool" doesn't work

11 years agoFor citing the names and email addresses of authors,
Ingo Schwarze [Sat, 13 Jul 2013 19:41:16 +0000 (19:41 +0000)]
For citing the names and email addresses of authors,
consistently use the style ".An name Aq Mt email".

Triggered by a question from Jan Stary <hans at stare dot cz>,
ok jmc@.

11 years agoRudimentary implementation of the .it request (input line trap).
Ingo Schwarze [Sat, 13 Jul 2013 12:52:07 +0000 (12:52 +0000)]
Rudimentary implementation of the .it request (input line trap).
As with any low-level roff request involving subtle interactions
with macro internals, this implementation is not exact, but it
does handle the simplest cases.

This request occurs in man(7) code generated from DocBook,
for example mysql(1) and yasm_arch(7).
Thanks to brad@ for reporting the issue back in January 2011.

11 years agoSimple partial sync with OpenBSD:
Ingo Schwarze [Fri, 5 Jul 2013 09:33:02 +0000 (09:33 +0000)]
Simple partial sync with OpenBSD:
* Again accept suffixes on the name of the whatis utility.
* The usage line for whatis must not invite expressions.
* Revert the argument names in the SYNOPSIS back to the usual ones.
* Revert a few gratuitious changes regarding line breaks etc.

11 years agoFor the strings table, ohash_init is only called in ofmerge(),
Ingo Schwarze [Tue, 2 Jul 2013 13:26:52 +0000 (13:26 +0000)]
For the strings table, ohash_init is only called in ofmerge(),
so move the str_info structure into that function.
No functional change.

11 years agoTurning off synchronous mode logically belongs to opening the database,
Ingo Schwarze [Tue, 2 Jul 2013 12:58:54 +0000 (12:58 +0000)]
Turning off synchronous mode logically belongs to opening the database,
so move the statement into the function dbopen().

11 years agofixed in mandoc.c rev. 1.67 and OpenBSD mandoc.c rev. 1.36
Ingo Schwarze [Tue, 2 Jul 2013 12:22:31 +0000 (12:22 +0000)]
fixed in mandoc.c rev. 1.67 and OpenBSD mandoc.c rev. 1.36

11 years agoRestore the check whether each page added to the database
Ingo Schwarze [Tue, 2 Jul 2013 11:40:40 +0000 (11:40 +0000)]
Restore the check whether each page added to the database
is actually reachable by man(1).  This check got lost when
the database backend was changed from Berkeley to sqlite.

11 years agoParse for the closing delimiter `\}' for conditionals
Ingo Schwarze [Thu, 27 Jun 2013 09:49:47 +0000 (09:49 +0000)]
Parse for the closing delimiter `\}' for conditionals
even when the conditional evaluated to false.

While here, reshuffle the code to reduce indentation and make it
more readable; that way, we can even trim down the comments because
it becomes obvious what the code does.

Found in zipinfo(1) - thanks to espie@ and naddy@
for making me look at that manual page.

11 years agosort missing roff requests, and add some usage info
Ingo Schwarze [Sat, 22 Jun 2013 10:05:44 +0000 (10:05 +0000)]
sort missing roff requests, and add some usage info

11 years agoA very simple utility script to automatically compare groff and mandoc
Ingo Schwarze [Sat, 22 Jun 2013 08:54:13 +0000 (08:54 +0000)]
A very simple utility script to automatically compare groff and mandoc
output on collections of manual source files.  I'm using this for quite
some time now, and it has proven to be rather useful.

Obviously, this will not be installed on user's systems.

11 years agoImprove handling of the roff(7) "\t" escape sequence:
Ingo Schwarze [Thu, 20 Jun 2013 22:39:30 +0000 (22:39 +0000)]
Improve handling of the roff(7) "\t" escape sequence:
* Parsing macro arguments has to be done in copy mode,
  which implies replacing "\t" by a literal tab character.
* Otherwise, render "\t" as the empty string, not as a 't' character.

This fixes formatting of the distfile example in the oldrdist(1) manual.
This also shows up in the unzip(1) manual as one of several issues
preventing the removal of USE_GROFF from the archivers/unzip port.
Thanks to espie@ for attracting my attention to the unzip(1) manual.

11 years agoAdd .St values for POSIX 1003.1d, 1003.1j, and 1003.1q.
Ingo Schwarze [Wed, 19 Jun 2013 21:20:27 +0000 (21:20 +0000)]
Add .St values for POSIX 1003.1d, 1003.1j, and 1003.1q.
Tweak descriptions of the other POSIX 1003.1<letter> standards.
Sort a few others into their proper places.

From Philip Guenther@ during t2k13.

11 years agoThe mdoc_handler flags are unused and will never be used.
Ingo Schwarze [Fri, 7 Jun 2013 05:27:50 +0000 (05:27 +0000)]
The mdoc_handler flags are unused and will never be used.
Having a mask is sufficient to trigger putmdockey.
Simplify by dropping the flags; no functional change.

11 years agoIn .Xr database entries, mention the manual section again;
Ingo Schwarze [Fri, 7 Jun 2013 04:51:26 +0000 (04:51 +0000)]
In .Xr database entries, mention the manual section again;
the section was dropped when switching from db to sqlite.
Use the customary format foo(N).

11 years agoThe string hash table is only needed to combine multiple occurences
Ingo Schwarze [Fri, 7 Jun 2013 01:01:34 +0000 (01:01 +0000)]
The string hash table is only needed to combine multiple occurences
of the same string within the same manual, so initialize and purge
it for each manual in ofmerge() instead of one single time in main().

There is no point in saving manual names and descriptions in that
table because each of them occurs only once, or very few times.
The is no point in saving section numbers there because they are
so much shorter than the descriptions.

Testing with the complete tree /usr/share/man/ on my notebook shows
that this change slightly reduces memory consumption by about 20%
while there is no measurable difference in execution time.

As a bonus, this allows to delete the functions stradd() and stradds(),
the "next" member from struct str, and the global struct str *words.

While adapting the places in the code using stradd(), i noticed that
parsing of the mdoc(7) .Nd macro was completely broken and that for
formatted manual pages with unusable NAME section, the description
was never set in the struct of.  This commit fixes both bugs as well.

11 years agoOptimize stradds() and putkeys() to not call ohash_qlookupi()
Ingo Schwarze [Thu, 6 Jun 2013 19:00:28 +0000 (19:00 +0000)]
Optimize stradds() and putkeys() to not call ohash_qlookupi()
and ohash_find() twice.  As a bonus, this allows to drop hashget().
While here, rename index to slot to match the terminology in the ohash
manual; it also prevents potential clashes with index(3).
Drop the slot variable altogether where it is used only once.

11 years agoDrop wordaddbuf() which is identical to putkeys().
Ingo Schwarze [Thu, 6 Jun 2013 17:51:31 +0000 (17:51 +0000)]
Drop wordaddbuf() which is identical to putkeys().
Also rename straddbuf() to stradds() to be more similar to putkeys().
Just cleanup, no functional change.

11 years agoIn dbopen(), check success of remove("mandoc.db~").
Ingo Schwarze [Thu, 6 Jun 2013 15:15:07 +0000 (15:15 +0000)]
In dbopen(), check success of remove("mandoc.db~").
While here, simplify dbopen() and dbclose(): No need for strlcpy()
and strlcat() when dealing with constant strings only.

11 years agoNo point in inventing yet another file name for the database.
Ingo Schwarze [Thu, 6 Jun 2013 14:27:02 +0000 (14:27 +0000)]
No point in inventing yet another file name for the database.
We are not going back to Berkeley DB and don't care about
overwriting any obsolete files that may be lying around.
So, go back from "mandocdb.db" to "mandoc.db".

11 years agoIn parse_catpage(), the comment saying that the filename would be
Ingo Schwarze [Thu, 6 Jun 2013 02:40:37 +0000 (02:40 +0000)]
In parse_catpage(), the comment saying that the filename would be
used as a default page description if no usable NAME section was found
was preserved when moving from db to sqlite, but the code line actually
doing that was removed without replacement.  So, put it back.

11 years agoThe return value from parse_man() is completely unused,
Ingo Schwarze [Wed, 5 Jun 2013 21:21:08 +0000 (21:21 +0000)]
The return value from parse_man() is completely unused,
so make the function void; no functional change.

11 years agoTwo sanity checks got lost in treescan()
Ingo Schwarze [Wed, 5 Jun 2013 20:27:11 +0000 (20:27 +0000)]
Two sanity checks got lost in treescan()
during the switch from db to sqlite; restore these:

* Warn and skip when directory and file name mismatch.
* Warn and skip when finding special files.
* Warning about "mandocdb.db" is useless, it is always present.
* While here, do not hardcode "mandocdb.db", use MANDOC_DB.