summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc
AgeCommit message (Collapse)Author
2014-07-04Clean up messages related to missing arguments.Ingo Schwarze
* Do not warn about empty -column cells, they seem valid to me. * Downgrade empty item and missing -std from ERROR to WARNING. * Hierarchical naming. * Descriptive, not imperative style. * Mention macro names, argument names, and fallbacks. * Garbage collect some unreachable code in post_it().
2014-07-03Fix formatting of empty .Bl -inset item heads.Ingo Schwarze
Downgrade empty item heads from ERROR to WARNING. Show the list type in the error message. Choose better variable names for nodes in post_it().
2014-07-03MANDOCERR_NOARGS reported three completely unrelated classes of problems.Ingo Schwarze
Split the roff(7) parts out of it and report the request names for these cases.
2014-07-02Improve and test the messages about empty macros,Ingo Schwarze
in particular reporting the macro names involved.
2014-07-02When .Sm is called without an argument, groff toggles the spacing mode,Ingo Schwarze
so let us do the same for compatibility. Using this feature is of course not recommended except in manual page obfuscation contests.
2014-07-02Disentangle the MANDOCERR_CHILD message, which reported threeIngo Schwarze
completely different things, into three distinct messages. Also mention the macro names we are talking about.
2014-07-02Clean up warnings related to macros and nesting.Ingo Schwarze
* Hierarchical naming of enum mandocerr items. * Improve the wording to make it comprehensible. * Mention the offending macro. * Garbage collect one chunk of ancient, long unreachable code.
2014-07-02Fix the column numbers associated with in_line_argn() macros;Ingo Schwarze
this bug is more than four years old, introduced by kristaps@ in mdocml.bsd.lv rev. 1.46, March 30, 2010.
2014-07-02Change column display in -Ttree to be 1-based instead of 0-basedIngo Schwarze
such that column numbers agree between messages and -Ttree.
2014-07-02Improve "skipping paragraph macro" messages,Ingo Schwarze
showing which macro was skipped and before or after what.
2014-07-02Implement the obsolete macros .En .Es .Fr .Ot for backward compatibility,Ingo Schwarze
since this is hardly more complicated than explicitly ignoring them as we did in the past. Of course, do not use them!
2014-07-01Clean up the warnings related to document structure.Ingo Schwarze
* Hierarchical naming of the related enum mandocerr items. * Mention the offending macro, section title, or string. While here, improve some wordings: * Descriptive instead of imperative style. * Uniform style for "missing" and "skipping". * Where applicable, mention the fallback used.
2014-07-01The previous commit to this file broke the control flow keywords \{ and \}Ingo Schwarze
when they immediately follow a request or macro name, without intervening whitespace. Minimal fix. The lesson learnt here is that, despite their appearance, \{ and \} are not escape sequences, so never skip them when parsing for names.
2014-06-30garbage collect two unused enum mandocerr itemsIngo Schwarze
and fix a couple of comments while here
2014-06-29Use the freshly improved roff_getname() functionIngo Schwarze
for the main roff request parsing routine, roff_parse(). In request or macro invocations, escape sequences now terminate the request or macro name; what follows is treated as arguments. Besides, the names of user-defined macros can now contain backslashes (eek!).
2014-06-29Use the freshly improved roff_getname() functionIngo Schwarze
for the .de parsing routine, roff_block(), to correctly handle names terminated by escape sequences. Besides, this saves us 20 lines of code.
2014-06-29Major roff_getname() cleanup.Ingo Schwarze
* Return the name even if it is terminated by an escape sequence, not a blank. * Skip the full escape sequence using mandoc_escape(), not just the first byte. * Make it non-destructive, return the length instead of writing a '\0'. * Let .ds and .as cope with the above changes to the internal interface. * Fix .rm and .rr to accept an escape sequence as the end of a name. * Fix .nr and .rr to not set/delete a register with an empty name.
2014-06-29Bugfix in roff_setstrn():Ingo Schwarze
Do not call strcmp() on an array of char that might not be NUL-terminated.
2014-06-25Improve messages related to the roff(7) .so request.Ingo Schwarze
In all these messages, show the filename argument that was passed to the .so request. In case of failure, show an additional message reporting the file and the line number where the failing request was found. The existing message reporting the reason for the failure - for example, "Permission denied" - is left in place, unchanged. Inspired by a question asked by Nick@ after he saw the confusing old messages that used to be emitted in this area.
2014-06-23Below DIAGNOSTICS, document the SYSERR message level;Ingo Schwarze
jmc@ wondered what it meant and agrees with this patch.
2014-06-21Reduce the verbosity of error messages caused by open(2) failures.Ingo Schwarze
Suggested by and ok jmc@.
2014-06-21Prefix messages about bad command line options and argumentsIngo Schwarze
with "mandoc: " or "makewhatis: ", respectively, similar to what we already do for other messages.
2014-06-20As suggested by jmc@, only include line and column numbers into messagesIngo Schwarze
when they are meaningful, to avoid confusing stuff like this: $ mandoc /dev/null mandoc: /dev/null:0:1: FATAL: not a manual Instead, just say: mandoc: /dev/null: FATAL: not a manual Another example this applies to is documents having a prologue, but lacking a body. Do not throw a FATAL error for these; instead, issue a warning and show the empty document, in the man(7) case with the same amount of blank lines as groff does. Also downgrade mdoc(7) documents having content before the first .Sh from FATAL to WARNING.
2014-06-20Start systematic improvements of error reporting.Ingo Schwarze
So far, this covers all WARNINGs related to the prologue. 1) hierarchical naming of MANDOCERR_* constants 2) mention the macro name in messages where that adds clarity 3) add one missing MANDOCERR_DATE_MISSING msg 4) fix the wording of one message related to the man(7) prologue Started on the plane back from Ottawa.
2014-06-20Prefix error messages from mandoc(1) with "mandoc: "Ingo Schwarze
just like almost all other utility programs do. Suggested by nick@ who wondered where messages came from when calling mandoc(1) from inside a Perl script. ok jmc@ nick@
2014-06-20More tweaking of set_basedir().Ingo Schwarze
1) Do not error out when getcwd(3) fails, only fail when inaccessibility of the cwd prevents processing of relative paths given on the command line. 2) Do not uselessly call set_basedir() twice in a row. While fts_read(3) in treescan() does cause the cwd to jump around, fts_close(3) is always called at the end, putting us back where we came from. The -d/-u fallback code already relied on this. 3) Fix the man-root-dir indicator in say().
2014-06-19Some simple set_basedir() cleanup; more to come.Ingo Schwarze
1) Refrain from calling set_basedir() in the -t case, and do not attempt to strip anything from the file names in that case. Testing individual files cannot reasonably have any notion of a base dir. 2) Remove the possibility of passing NULL to set_basedir(). It was dangerous because it was not idempotent, and it served no purpose except closing a file descriptor right before exit(), which is pointless. Besides, the file descriptor is likely to be removed completely, soon. 3) Make sure that /foobar isn't treated as a subdirectory of /foo; this fixes a bug reported by espie@.
2014-06-18Don't display "unable to open mandoc.db" error messages (SQLITE_CANTOPEN)Stuart Henderson
in the code which opens mandocdb's sqlite database when updating/deleting individual files (as used and only really useful for pkg_add/pkg_delete). ok schwarze@
2014-06-05work-around issue in makewhatis, that expects its current dir to NOT be /.Marc Espie
okay aja@, miod@ until Ingo figures things out. (This fixes the ///sr/ports/pobj/p5-YAML-0.84/fake-amd64/usr/local/man/man3p/YAML::Loader::Base.3p: fopen: No such file or directory style errors)
2014-05-12adjust to ohash being in libutil now, and to the interface changes.Marc Espie
fix potential integer overflows in memory allocation (mostly for pedagogical purposes, these are unlikely to overflow in practice) move the rest of lst.lib stuff into its own directory.
2014-05-07Render roff escape sequences contained in manual page descriptionsIngo Schwarze
before putting them into the mpages table. Issue found by bentley@ in OpenBSD::Getopt(3p).
2014-05-07Fix two memory leaks in makewhatis -n:Ingo Schwarze
1. As found by nigel@, names_check() requires database access. 2. Do not leak names and strings in -n mode.
2014-05-07Do not segfault in makewhatis -Q if the next .SH after .SH NAMEIngo Schwarze
does not have any arguments. Crash found by nigel@ in kermit(1).
2014-04-27Improve error handling in dbopen(). If PRAGMA SQL statements fail,Ingo Schwarze
report the error, close the database, and return failure from dbopen(), such that the main program can recover and rebuild the database. As noticed by stsp@, this can happen when database files are accessible, but corrupt or in the wrong format, which will now automatically be repaired. Besides, use a safer idiom after sqlite3_open*() failure that also handles out-of-memory situations correctly, and do not forget to close the database after CREATE TABLE failure.
2014-04-27For LUNA88K, make sure the architecture name shown to the userIngo Schwarze
matches the architecture name required for man -S and apropos -S. Adjust the case of LUNA68K to match the case of LUNA88K. ok aoyama@
2014-04-25Fix a minor optimization i broke in bsd.lv rev. 1.163 on August 20, 2010:Ingo Schwarze
Do not bother looking into the hash table when the length of the macro already tells us it's invalid. No functional change. Noticed by jsg@, thanks!
2014-04-25Reduce the verbosity of makewhatis -t:Ingo Schwarze
In the past, it always showed the title lines of the files processed. Now, it only shows them when called with -D. That is better because pkg_create calls makewhatis -t. It is also more consistent with -D behaviour in non- -t modes. Issue reported by ajacoutot@; ok espie@ ajacoutot@ jasper@.
2014-04-24misplaced punctuationIngo Schwarze
2014-04-23Audit malloc(3)/calloc(3)/realloc(3) usage.Ingo Schwarze
* Change eight reallocs to reallocarray to be safe from overflows. * Change one malloc to reallocarray to be safe from overflows. * Change one calloc to reallocarray, no zeroing needed. * Change the order of arguments of three callocs (aesthetical).
2014-04-23Audit strlcpy(3)/strlcat(3) usage:Ingo Schwarze
* Add missing truncation checks to three calls. * In four cases where we know that the distination buffer is large enough, cast the return vailue to (void).
2014-04-23improve SQL style: avoid "SELECT *", be explicit in what columns we want;Ingo Schwarze
suggested by espie@.
2014-04-23Audit strlcpy(3)/strlcat(3) usage.Ingo Schwarze
* Repair three instances of silent truncation, use asprintf(3). * Change two instances of strlen(3)+malloc(3)+strlcpy(3)+strlcat(3)+... to use asprintf(3) instead to make them less error prone. * Cast the return value of four instances where the destination buffer is known to be large enough to (void). * Completely remove three useless instances of strlcpy(3)/strlcat(3). * Mark two places in -Thtml with XXX that can cause information loss and crashes but are not easy to fix, requiring design changes of some internal interfaces. * The file mandocdb.c remains to be audited.
2014-04-22Unify the model name to LUNA-88K{,2}, that is considered theKenji Aoyama
`official' name. ok jmc@ miod@
2014-04-20in debug messages, truncating strings of excessive lengths is actuallyIngo Schwarze
a good thing, so cast the return value from sprintf to (void); this concludes the mandoc sprintf audit
2014-04-20strlen+malloc+snprintf is error prone;Ingo Schwarze
rewrite post_lb() to use asprintf(3) instead
2014-04-20fix unchecked snprintf(3) in page header printing:Ingo Schwarze
the length of the title is unknown, and speed doesn't matter here, so use asprintf/free rather than a static buffer
2014-04-20make sure static buffers for snprintf(3) are large enoughIngo Schwarze
and cast snprintf return value to (void) where they are
2014-04-20KNF: case (FOO): -> case FOO, remove /* LINTED */ and /* ARGSUSED */,Ingo Schwarze
remove trailing whitespace and blanks before tabs, improve some indenting; no functional change
2014-04-19Two minor tweaks regarding the fallback from -u/-d to default mode:Ingo Schwarze
(1) Use all files found on the command line, but do *not* use all stray files found during fallback tree recursion. (2) If the fallback works, call that success, i.e. exit(0). As pointed out by naddy@, the latter is required for ports' happiness.
2014-04-19Properly handle symlinks (hardlinks and .so only files were already ok):Ingo Schwarze
Use the file name of the symlink but the inode number of the file pointed to, such that we get multiple mlinks records but not multiple mpages records. Also make sure they do not point outside the tree we are processing. Issue found by kili@ in desktop-file-edit(1), thanks!