summaryrefslogtreecommitdiffstats
path: root/main.c
Commit message (Collapse)AuthorAgeFilesLines
* Use proper error for `An' multiple arguments.Kristaps Dzonsons2010-10-111-1/+1
| | | | Making IGNARGV be an ERROR, not a WARNING, as information is lost.
* Ignore double-`Pp' and `Pp' before `Bd' and `Bl' (unless -compact isKristaps Dzonsons2010-09-271-0/+1
| | | | specified).
* If an explicit scope is still open at the end of an input file,Ingo Schwarze2010-09-261-2/+1
| | | | | | | | | | report an ERROR: We can still render the page by just closing the open scope, but it is likely that information will be missing or document structure mangled. Before, man(7) only reported a WARNING (which is dangerous because we cannot be sure rendering is correct) and mdoc(7) ran into FATAL (which is too drastic, there is no reason not to show what we have). "looks good" kristaps@
* Churny commit to quiet lint. No functional changes.Kristaps Dzonsons2010-09-041-7/+8
|
* fix previous: when bailing out due to -Wstop,Ingo Schwarze2010-08-201-8/+8
| | | | | skip output functions, but not *_endparse; problem reported by kristaps@
* Implement a simple, consistent user interface for error handling.Ingo Schwarze2010-08-201-229/+136
| | | | | | | | | | | | | | | | | We now have sufficient practical experience to know what we want, so this is intended to be final: - provide -Wlevel (warning, error or fatal) to select what you care about - provide -Wstop to stop after parsing a file with warnings you care about - provide consistent exit status codes for those warnings you care about - fully document what warnings, errors and fatal errors mean - remove all other cruft from the user interface, less is more: - remove all -f knobs along with the whole -f option - remove the old -Werror because calling warnings "fatal" is silly - always finish parsing each file, unless fatal errors prevent that This commit also includes a couple of related simplifications behind the scenes regarding error handling. Feedback and OK kristaps@; Joerg Sonnenberger (NetBSD) and Sascha Wildner (DragonFly BSD) agree with the general direction.
* Make sure we really throw away non-ASCII characters.Ingo Schwarze2010-08-081-2/+3
| | | | | | For example, on OpenBSD without locale settings, isgraph(3) returns true for some eight-bit characters. ok kristaps@
* Use 0 for MAP_FILE if it doesn't exist. From Hans Rosenfeld.Joerg Sonnenberger2010-07-291-0/+4
|
* Initial PDF shim over PS. This produces working PDF output with -Tpdf.Kristaps Dzonsons2010-07-251-2/+11
| | | | | | | | | | It's currently missing the xref table, so you'll get a warning in most PDF viewers). It also produces lots of redundant output, which will go away once I get a better handle on the PDF spec. The code doesn't really touch any existing functionality; it's a bunch of conditionals atop the -Tps (term_ps.c) implementation. I'm checking it in now to have it exist and be auditable. It needs clean-up, polish, and general care (and xref!).
* Strip non-graphable input characters from input. The manualsKristaps Dzonsons2010-07-201-0/+22
| | | | | | | | | specifically say that this is not allowed, and were it allowed, output would be inconsistent across output media (-Tps will puke, non-your-charset terminals will puke, etc.). With this done, simplify check_text() to only check escapes and for tabs. Add in a new tab warning, too.
* Re-constitution of `ds' symbol processing. First, push theKristaps Dzonsons2010-07-071-1/+0
| | | | | | | | | roff_getstr() family of functions into roff.c with the "first_string" directly in struct roff. Second, pre-process each line for reserved words in libroff, splicing and re-running a line if it has one (this allows defined symbols to be macros). Remove term.c's invocation of the roff_getstrn() function. Removed function documentation in roff.3 and added roff.7 `ds' documentation.
* Assert my copyright, making it explicit that i'm granting the same licenseIngo Schwarze2010-07-041-1/+2
| | | | | on those parts of the code and text that i have written as Kristaps is. "fine with me" kristaps@
* Stash `Bf' parameters into struct mdoc_bf.Kristaps Dzonsons2010-07-021-1/+1
|
* Improve .Nm indentation in the SYNOPSIS;Ingo Schwarze2010-07-011-2/+3
| | | | | | | kristaps@ will do the missing HTML part soon. "looks nicer" jmc@ "seems perfect to me" sobrado@ "slap it in" kristaps@
* improve error reporting:Ingo Schwarze2010-06-301-27/+43
| | | | | | | | | * avoid error exit code after mere warnings * add ERROR: and FATAL: to messages when appropriate * sort the code in mmsg() to make it easier on the eye * make the mandocerrs[] list easier to maintain * update a few comments in mandoc.h ok kristaps@
* Add in -Opaper=xxx support for -Tps postscript. This doesn't have anyKristaps Dzonsons2010-06-291-1/+1
| | | | | | functional changes beyond the getsubopt() parse in term_ps.c. If you want to test this (it only does -Opaper=a4 and -Opaper=letter; adding more is trivial), make sure you specify (e.g.) -sPAPERSIZE=a4 to gs(1).
* Downstream maintainers: this removes UGLY! I don't want divergingKristaps Dzonsons2010-06-271-8/+9
| | | | | | | | | functionality and UGLY works quite well thanks to schwarze@'s careful attention. This also backs out function-prototype changes for struct regset, instead stuffing a pointer to the regset directly into struct mdoc/man/roff.
* Churn-ish check-in getting mdoc_parseln() and man_parseln() to accept aKristaps Dzonsons2010-06-261-2/+2
| | | | const struct regset pointer. No functionality.
* First step of adding register support. This is inspired by a significantKristaps Dzonsons2010-06-261-2/+5
| | | | | | patch by schwarze@. This commit adds support to libroff parsing `nr' into register set defined in regs.h. This will propogate into libmdoc and libman in later commits.
* Churn as I finish email address migration kth.se -> bsd.lv.Kristaps Dzonsons2010-06-191-1/+1
|
* Removed stipulation that an empty `Bd -offset' will default to 6n. NotKristaps Dzonsons2010-06-121-0/+1
| | | | | | | sure where this came about. Added regression tests to convince myself that this is so. Also consolidated COMPATIBILITY notes regarding `Bd'. Added COMPATIBILITY note to the effect that old groff pukes on `Bd -compact -ragged' (regression test will fail on old groff).
* Added enum mdoc_disp (similar to enum mdoc_list). Display types are nowKristaps Dzonsons2010-06-121-1/+2
| | | | | | | | | | | only calculated once in mdoc_validate.c. Noted that `Bd -file xxx' is not supported: it now raises a fatal warning. This is noted in mdoc.7. Empty `Bd' now defaults to LIST_ragged, which is not quite what groff does, but close enough (gross just throws away the `Bd' and gets upset when it encounters an `Ed').
* No functionality changes: just restructuring. DeprecatedKristaps Dzonsons2010-06-081-1/+2
| | | | | terminal_free() in favour of ps_free() and ascii_free(). Moved ps_*() functions into term_ps.c so that they don't clutter up term.c.
* First check-in of PostScript output. This does not change any logicKristaps Dzonsons2010-06-071-8/+24
| | | | | | within term.c, but does add a small shim over putchar() that switches on the output engine. Prints, for this initial version, only monospace and without font decorations. It's a start.
* Add -Owidth=width option to mandoc -Tascii. Asked for by joerg@ about aKristaps Dzonsons2010-06-071-1/+1
| | | | thousand years ago. Note that this is normalised to >=60.
* Add MAP_SHARED for mmap, at least NetBSD with DIAGNOSTIC is quite noisyJoerg Sonnenberger2010-06-061-1/+1
| | | | otherwise.
* Consolidated list processing to a single loop in mdoc_validate.c. ThisKristaps Dzonsons2010-06-031-1/+1
| | | | | | | | | | relieves having to repeat running over the argument list in mdoc_action.c and mdoc_validate.c. Default to LIST_item for type-less lists (groff technically doesn't do this: it just ignores the `It' lines altogether). Make MANDOC_LISTTYPE be a recoverable error.
* Spelling patches provided by Ulrich Spoerlein.Kristaps Dzonsons2010-06-011-2/+2
|
* Cleanup post_bl_head() to use enum mdoc_list (avoid traversing thatKristaps Dzonsons2010-05-311-1/+1
| | | | | | | | list). Reverted MANDOC_COLUMNS to be a bad-bad syntax error: we don't, and apparently never have, allowed mixing of -column syntaxes. This would have segfaulted if encountered.
* Enable the unified error/warning enumeration in mandoc.h that'sKristaps Dzonsons2010-05-171-78/+94
| | | | | | | | | | | stringified in main.c. Allow `An' to handle an argument and child (with a warning). Allow `Rv' and `Ex' to work without a prior `Nm' as groff does (with a warning). Allow inconsistent column syntax to only raise a warning.
* `ig' support in all its glory. TryKristaps Dzonsons2010-05-161-2/+2
| | | | | | | | | | | | | | | | | | .ig ig asdf .ig fdsa .. or .ig if asdf .if n \ foo for a laugh. It all works. Lots of regression tests supporting this and documentation for the same.
* Regression tests in place for `.if' in libroff.Kristaps Dzonsons2010-05-161-0/+1
| | | | | Check against some strange `.if' constructs I missed. Added initial roff.7 manual.
* Allow roff_parseln() to be re-run.Kristaps Dzonsons2010-05-161-8/+30
| | | | | | | | | Allow roff_parseln() to manipulate the line buffer offset. This is used in situations like `.ie n .TH FOO 1' or `.ie n .ie n', where the line buffer offset is recalculated then the roff parser re-run. Fix mdoc_parseln() and man_parseln() to accept the initial line offset. WARNING: backed-out ALL roff macros whilst accomodating for how roff handles multi-line conditionals (in short, re-running the parser).
* Fix allowing silly '\'' control character.Kristaps Dzonsons2010-05-161-1/+1
|
* Backed-out warning messages (lots).Kristaps Dzonsons2010-05-151-0/+2
|
* The `ig' now supports `ig end-macro'.Kristaps Dzonsons2010-05-151-1/+14
| | | | Initial warning/error messages in place (still experimental).
* Segfault fix and letting warnings slip through for now.Kristaps Dzonsons2010-05-151-1/+1
|
* Add mandoc.h, which will eventually replace compilers' inner enum errors ↵Kristaps Dzonsons2010-05-151-17/+69
| | | | | | with unified ones. Add initial roff pre-processor shim, a compiler sitting outside of the other compilers that processes pure roff instructions.
* Reorganise the comment stripping and line merging to be easier to followJoerg Sonnenberger2010-05-151-50/+52
| | | | and slightly faster.
* Make the output width an option for ascii_alloc and use that to computeJoerg Sonnenberger2010-05-151-1/+1
| | | | the default margin. Hard-code 80 chars/line for now.
* Push buffer resizing into its own function. Keep initial allocations theJoerg Sonnenberger2010-05-151-19/+24
| | | | same size as before.
* Cleanup indentation after moving the read buffering out of the loop.Joerg Sonnenberger2010-05-151-53/+51
|
* "Push down the buffer to where they are used.Kristaps Dzonsons2010-05-151-77/+130
| | | | | | Handle the stdin/file argument in one function. On top, use either mmap or if that failed reading the whole file into a single buffer." (patches by Joerg Sonnenberger, ed. Kristaps)
* Whacked lastman and lastmdoc (not being used).Kristaps Dzonsons2010-05-151-6/+0
|
* "Accumulate errors and warnings in global variables and exit with errorKristaps Dzonsons2010-05-141-57/+59
| | | | if either is not null on exit." (patch by Joerg Sonnenberger)
* Fix for Joerg's patch stripping of pre-comment whitespace (by Joerg).Kristaps Dzonsons2010-05-141-2/+2
|
* Remove -fno-ign-chars as well-argued by Ingo Schwarze. Patch by Ingo ↵Kristaps Dzonsons2010-05-091-19/+9
| | | | Schwarze, too.
* Merge patch by Jason McIntyre cleaning on mandoc.1: `Ar' -> `Cm' and other ↵Kristaps Dzonsons2010-04-121-2/+8
| | | | | | readability fixes. Merge modified patch by Joerg Sonnenberger that rewinds to whitespace when encountering trailing line-comments.
* Have -Tlint imply -Wall and -fstrict. Based on a patch submitted by Ingo ↵Kristaps Dzonsons2010-03-221-31/+37
| | | | Schwarze.
* Fixed Makefile for `make lint' dep. on config.hKristaps Dzonsons2010-01-291-0/+9
| | | | Added -Txhtml for XHTML output (minimal increase to programme logic). Because groff has it and it bothers me that we don't.