157 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$Id: roff.3,v 1.1 2010/05/25 22:16:59 kristaps Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
 | |
| .\"
 | |
| .\" Permission to use, copy, modify, and distribute this software for any
 | |
| .\" purpose with or without fee is hereby granted, provided that the above
 | |
| .\" copyright notice and this permission notice appear in all copies.
 | |
| .\"
 | |
| .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | |
| .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | |
| .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | |
| .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | |
| .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | |
| .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | |
| .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | |
| .\"
 | |
| .Dd $Mdocdate: May 25 2010 $
 | |
| .Dt ROFF 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm roff ,
 | |
| .Nm roff_alloc ,
 | |
| .Nm roff_endparse ,
 | |
| .Nm roff_free ,
 | |
| .Nm roff_parseln ,
 | |
| .Nm roff_reset
 | |
| .Nd roff macro compiler library
 | |
| .Sh SYNOPSIS
 | |
| .In mandoc.h
 | |
| .In roff.h
 | |
| .Ft "struct roff *"
 | |
| .Fn roff_alloc "mandocmsg msgs" "void *data"
 | |
| .Ft int
 | |
| .Fn roff_endparse "struct roff *roff"
 | |
| .Ft void
 | |
| .Fn roff_free "struct roff *roff"
 | |
| .Ft "enum rofferr"
 | |
| .Fo roff_parseln
 | |
| .Fa "struct roff *roff"
 | |
| .Fa "int line"
 | |
| .Fa "char **bufp"
 | |
| .Fa "size_t *bufsz"
 | |
| .Fa "int pos"
 | |
| .Fa "int *offs"
 | |
| .Fc
 | |
| .Ft void
 | |
| .Fn roff_reset "struct roff *roff"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm
 | |
| library processes lines of
 | |
| .Xr roff 7
 | |
| input.
 | |
| .Pp
 | |
| In general, applications initiate a parsing sequence with
 | |
| .Fn roff_alloc ,
 | |
| parse each line in a document with
 | |
| .Fn roff_parseln ,
 | |
| close the parsing session with
 | |
| .Fn roff_endparse ,
 | |
| and finally free all allocated memory with
 | |
| .Fn roff_free .
 | |
| The
 | |
| .Fn roff_reset
 | |
| function may be used in order to reset the parser for another input
 | |
| sequence.
 | |
| .Pp
 | |
| The
 | |
| .Fn roff_parseln
 | |
| function should be invoked before passing a line into the
 | |
| .Xr mdoc 3
 | |
| or
 | |
| .Xr man 3
 | |
| libraries.
 | |
| .Pp
 | |
| See the
 | |
| .Sx EXAMPLES
 | |
| section for a full example.
 | |
| .Sh REFERENCE
 | |
| This section further defines the
 | |
| .Sx Types
 | |
| and
 | |
| .Sx Functions
 | |
| available to programmers.
 | |
| .Ss Types
 | |
| Functions (see
 | |
| .Sx Functions )
 | |
| may use the following types:
 | |
| .Bl -ohang
 | |
| .It Vt "enum rofferr"
 | |
| Instructions for further processing to the caller of
 | |
| .Fn roff_parseln .
 | |
| .It Vt struct roff
 | |
| An opaque type defined in
 | |
| .Pa roff.c .
 | |
| Its values are only used privately within the library.
 | |
| .It Vt mandocmsg
 | |
| A function callback type defined in
 | |
| .Pa mandoc.h .
 | |
| .El
 | |
| .Ss Functions
 | |
| Function descriptions follow:
 | |
| .Bl -ohang
 | |
| .It Fn roff_alloc
 | |
| Allocates a parsing structure.
 | |
| The
 | |
| .Fa data
 | |
| pointer is passed to
 | |
| .Fa msgs .
 | |
| The
 | |
| .Fa pflags
 | |
| arguments are defined in
 | |
| .Pa roff.h .
 | |
| Returns NULL on failure.
 | |
| If non-NULL, the pointer must be freed with
 | |
| .Fn roff_free .
 | |
| .It Fn roff_reset
 | |
| Reset the parser for another parse routine.
 | |
| After its use,
 | |
| .Fn roff_parseln
 | |
| behaves as if invoked for the first time.
 | |
| .It Fn roff_free
 | |
| Free all resources of a parser.
 | |
| The pointer is no longer valid after invocation.
 | |
| .It Fn roff_parseln
 | |
| Parse a nil-terminated line of input.
 | |
| The character array
 | |
| .Fa bufp
 | |
| may be modified or reallocated within this function.
 | |
| In the latter case,
 | |
| .Fa bufsz
 | |
| will be modified accordingly.
 | |
| The
 | |
| .Fa offs
 | |
| pointer will be modified if the line start during subsequent processing
 | |
| of the line is not at the zeroth index.
 | |
| This line should not contain the trailing newline.
 | |
| Returns 0 on failure, 1 on success.
 | |
| .It Fn roff_endparse
 | |
| Signals that the parse is complete.
 | |
| Returns 0 on failure, 1 on success.
 | |
| .El
 | |
| .Sh EXAMPLES
 | |
| See
 | |
| .Pa main.c
 | |
| in the source distribution for an example of usage.
 | |
| .Sh SEE ALSO
 | |
| .Xr mandoc 1 ,
 | |
| .Xr man 3 ,
 | |
| .Xr mdoc 3 ,
 | |
| .Xr roff 7
 | |
| .Sh AUTHORS
 | |
| The
 | |
| .Nm
 | |
| library was written by
 | |
| .An Kristaps Dzonsons Aq kristaps@bsd.lv .
 | 
