aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* Fix a corner case where \H<nil> (where <nil> is the \0 character) wouldKristaps Dzonsons2014-08-181-2/+3
| | | | | | cause mandoc_escape() to read past the end of an allocated string. Found when a script scanning of all Mac OSX manual accidentally also scanned binary (gzip'd) files, discussed with schwarze@ on tech@.
* While all current callers pass valid data to ascii_hspan() only,Ingo Schwarze2014-08-171-2/+2
| | | | | | it's safer to assume incoming enum data might be invalid and catch it instead of happily returning an unitialized int. No functional change right now.
* typo; Steven Honeyman <stevenhoneyman at gmail dot com>Ingo Schwarze2014-08-171-3/+3
|
* Do not require getsubopt() to provide extern char *suboptarg.Ingo Schwarze2014-08-173-15/+22
| | | | | | | | | | | | | | | | | | | | We don't use it anyway in mandoc. Like this, fewer systems need the compat implementation. In particular, we can now use the stock getsubopt() on glibc and musl. Besides, the comment in the BSD getsubopt.c that error messages are tricky without *suboptarg is massively overblown. If you simply save a copy of the pointer you pass into getsubopt(), that's quite usable for an error message. People start campaigning for the addition of *suboptarg to C libraries on the grounds that mandoc wants it, but actually, i consider library functions manipulating global data quite ugly, so stop pushing people into that questionable direction. While here, add an explicit Copyright header to the test file. While it's obviously to me what Kristaps intended, others might consider this file copyrightable and wonder what's up.
* one forgotten #ifdef -> #if conversionIngo Schwarze2014-08-171-1/+2
|
* ... and remove the trailing spaces (duh. i should pay more attention)Ingo Schwarze2014-08-171-6/+6
|
* KNF: fix indentation of previous commit, see style(9):Ingo Schwarze2014-08-171-10/+10
| | | | | "Indentation is an 8 character tab. Second level indents are four spaces." All the rest of this file already conforms.
* Protect against accessing "n->next->child" by first checking "n->next".Kristaps Dzonsons2014-08-171-9/+14
| | | | | Noticed in a crash against ".It Nm Fo" with no closing "Fc". Original patch expanded by schwarze@ then extended even more.
* Fully integrate apropos(1) into mandoc(1).Ingo Schwarze2014-08-178-225/+195
| | | | | | | | | Switch the argmode on the progname, including man(1). Provide -f and -k options to switch the argmode. Store the argmode inside struct search, generalizing the flags. Derive the deftype from the argmode when needed instead of storing it. Store the outkey inside struct search instead of passing it alone. While here, get rid of the trailing blanks in Makefile.depend.
* When BUILD_DB is active, link apropos(1) into the mandoc binary.Ingo Schwarze2014-08-164-14/+26
| | | | | This is the first step on the way to a man(1) implementation. The new ./configure is flexible enough to make this step quite easy.
* If a stray .It follows .El, we are no longer in the list,Ingo Schwarze2014-08-161-2/+3
| | | | | | | even though the list is still the last processed macro. This fixes a regression introduced in mdoc_macro.c rev. 1.138: Ulrich Spoerlein <uqs at FreeBSD> reports that various of their kernel manuals trigger assertions.
* Improve build system and autodetection.Ingo Schwarze2014-08-1625-271/+756
| | | | | | | | | * Make ./configure standalone, that's what people expect. * Let people write a ./configure.local from scratch, not edit existing files. * Autodetect wchar, sqlite3, and manpath and act accordingly. * Autodetect the need for -L/usr/local/lib and -lutil. * Get rid of config.h.p{re,ost}, let ./configure only write what's needed. * Let ./configure write a Makefile.local snippet, that's quite flexible.
* Some compilers apparently worry that abort() might returnIngo Schwarze2014-08-141-2/+3
| | | | | | and then throw a "may be used uninitialized" warning, so sprinkle some /* NOTREACHED */. No functional change. Noticed by Thomas Klausner <wiz at NetBSD dot org>.
* Clarify that .Em and .Sy are physical, not semantic markup,Ingo Schwarze2014-08-141-14/+41
| | | | | explain appropriate usage, and provide some examples. ok jmc@
* remove double word; from jmc@Ingo Schwarze2014-08-141-3/+3
|
* Revert previous, as requested by kristaps@.Ingo Schwarze2014-08-145-13/+13
| | | | | | | | | | | | | The .Bf block can contain subblocks, so it has to render as an element that can contain flow content. But <em> cannot contain flow content, only phrasing content. Rendering .Em and .Bf differently would by unfortunate, and closing out .Bf before subblocks and re-opening it afterwards would merely complicate both the C code of the program and the generated HTML code. Besides, converting .Em to semantic HTML markup would require some content to be put into <em> and some into <i>, but we cannot automatically distinguish which is which, so strictly speaking, we can't use semantic HTML here but have to fall back to physical markup. Wonders of HTML...
* note about AT&T documenters workbenchIngo Schwarze2014-08-131-1/+5
|
* note about <var>Ingo Schwarze2014-08-131-1/+4
|
* Begin cleaning up scaling units.Kristaps Dzonsons2014-08-134-32/+60
| | | | | | | | | Start with the horizontal terminal specifiers, making sure that they match up with troff. Then move on to PS, PDF, and HTML, noting that we stick to the terminal default width for "u". Lastly, fix some completely-wrong documentation and note that we diverge from troff w/r/t "u".
* Use <em> for .Em and .Bf -emphasis.Ingo Schwarze2014-08-135-13/+13
| | | | | | | | | | | | | | | | | The vast majority of .Em in real-world manuals is stress emphasis, for which <em> is the correct markup. Admittedly, there are some instances of .Em usage for alternate quality, for which <i> would be a better match. Most of these are technical terms that neither allow semantic markup nor are keywords - for the latter, .Sy would be preferable. A typical example is that the shell breaks input into .Em words . Alternate voice or mood, which would also require <i>, is almost absent from manuals. We cannot satisfy both stress emphasis and alternate quality, so pick the one that fits more often and looks less wrong when off. Patch from Guy Harris <guy at alum dot mit dot edu>. ok joerg@ bentley@
* typo in comment; Guy Harris <guy at alum dot mit dot edu>Ingo Schwarze2014-08-121-2/+2
|
* In mdoc(7) and man(7), if a width is given as a bare number withoutIngo Schwarze2014-08-121-2/+2
| | | | | | | specifying a unit, the implied unit is 'n' (on the terminal, one character position; in PostScript, half of the current font size in points), not 'u' (roff output device basic unit). No functional change right now, but important for the upcoming scaling unit fixes.
* The macro SCALE_HS_INIT() is always passed the result of strlen() orIngo Schwarze2014-08-121-2/+2
| | | | | | an equivalent number as its argument, and strlen() measures the width of a string in characters, not in basic units. No functional change right now, but important for the upcoming scaling unit fixes.
* work around lack of d_namlen and ALIGN/ALIGNBYTES on LinuxIngo Schwarze2014-08-114-17/+31
|
* revert previous; i missed that config.h needs sys/types.h and stdio.hIngo Schwarze2014-08-111-0/+3
| | | | for itself because it uses size_t and FILE...
* typoIngo Schwarze2014-08-111-1/+1
|
* Provide a fallback version of fts(3) for systems lacking it.Ingo Schwarze2014-08-1110-27/+1002
| | | | | | I chose the OpenBSD version because it apparently contains various bugfixes that never made it into libnbcompat. To reduce size and complexity, i stripped out the features we don't need.
* Get rid of HAVE_CONFIG_H, it is always defined; idea from libnbcompat.Ingo Schwarze2014-08-1061-180/+123
| | | | | | Include <sys/types.h> where needed, it does not belong in config.h. Remove <stdio.h> from config.h; if it is missing somewhere, it should be added, but i cannot find a *.c file where it is missing.
* New section about deployment by Kristaps.VERSION_1_13_1Ingo Schwarze2014-08-101-38/+106
| | | | | New paragraph about fts(3) by me. And various minor tweaks, some by Kristaps and some by me.
* 1.13.1 release notesIngo Schwarze2014-08-101-1/+81
|
* sync after adding config.h to mansearch_const.c;Ingo Schwarze2014-08-101-1/+1
| | | | committing on behalf of kristaps@ because i want to release now
* Clarifications in comments and standard output suggested byIngo Schwarze2014-08-102-4/+7
| | | | Paul Onyschuk <ptmelville at gmail dot com> (Alpine Linux)
* mmap(2) requires MAP_PRIVATE ^ MAP_SHARED for flags;Ingo Schwarze2014-08-092-3/+8
| | | | found by kristaps@ on Mac OS X
* missing #include "config.h",Ingo Schwarze2014-08-091-1/+5
| | | | | hence missing definition of __BEGIN_DECLS; found by Thomas Klausner <wiz at NetBSD> on SunOS 5.11
* Do not hardcode stuff in ./configure that is actually user-configurableIngo Schwarze2014-08-082-5/+5
| | | | | | in the Makefile; instead, pass it down via the environment just like CFLAGS. Nice suggestion from kristaps@ hoping to make MacOS X happier.
* Delete the __attribute__((__bounded__(...))) annotation.Ingo Schwarze2014-08-081-2/+1
| | | | | | That's an OpenBSD-specific gcc-4.2.1 security extension. It's certainly a bad idea to use such stuff in a compatibility header, as other operating systems just won't understand it.
* add INSTALL and bump VERSIONIngo Schwarze2014-08-081-3/+4
|
* mention neatroffIngo Schwarze2014-08-081-2/+3
|
* provide some instructions for manual installationIngo Schwarze2014-08-081-0/+119
|
* When .Sm is called without an argument, groff toggles the spacing mode,Ingo Schwarze2014-08-081-4/+9
| | | | | so let us do the same for compatibility. Using this feature is of course not recommended except in manual page obfuscation contests.
* some corrections and improvements with respect to prologue macros;Ingo Schwarze2014-08-081-20/+18
| | | | found while working on mandoc(1) messages
* document warning and error messages, using quite some feedback from jmc@;Ingo Schwarze2014-08-081-28/+843
| | | | more cleanup is likely to happen when it's in
* Bring the handling of defective prologues even closer to groff,Ingo Schwarze2014-08-069-151/+146
| | | | | | | | | | | | in particular relaxing the distinction between prologue and body and further improving messages. * The last .Dd wins and the last .Os wins, even in the body. * The last .Dt before the first body macro wins. * Missing title in .Dt defaults to UNTITLED. Warn about it. * Missing section in .Dt does not default to 1. But warn about it. * Do not warn multiple times about the same mdoc(7) prologue macro. * Warn about missing .Os. * Incomplete .TH defaults to empty strings. Warn about it.
* sync after sqlite3_errstr() compat additionIngo Schwarze2014-08-051-0/+2
|
* strcasestr() wants _GNU_SOURCE on LinuxIngo Schwarze2014-08-052-1/+5
|
* NULL is in <stddef.h>; found on LinuxIngo Schwarze2014-08-051-0/+1
|
* mansearch.h uses uint64_t, so it needs stdint.h; found on LinuxIngo Schwarze2014-08-052-3/+5
|
* Absurdly, the return value of sqlite3_column_text()Ingo Schwarze2014-08-052-11/+11
| | | | | | is "const unsigned char *", which causes warnings with GCC on Linux. Explicitly cast to "const char *" to avoid this. Issue noticed by kristaps@.
* Since old SQLite versions do not have sqlite3_errstr(),Ingo Schwarze2014-08-055-1/+35
| | | | | | | | | provide a dummy fallback implementation. Do not bother to decode the error, SQLite error codes are not useful enough for that to be worthwhile. Note that using sqlite3_errmsg(db) would be a bad idea: On malloc() failure, db is NULL, which would cause a segfault. Issue noticed by kristaps@.
* If an old SQLite version doesn't provide SQLITE_DETERMINISTIC,Ingo Schwarze2014-08-051-1/+4
| | | | | simply ignore it, as using it is merely an optimization. Issue noticed by kristaps@.