version 1.98, 2014/08/19 05:18:16 |
version 1.99, 2014/09/06 22:38:35 |
|
|
/* $Id$ */ |
/* $OpenBSD$ */ |
/* |
/* |
* Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org> |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
#include <sys/types.h> |
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
#include <stdio.h> |
#include <stdio.h> |
|
|
int options; /* parse options */ |
int options; /* parse options */ |
int rstacksz; /* current size limit of rstack */ |
int rstacksz; /* current size limit of rstack */ |
int rstackpos; /* position in rstack */ |
int rstackpos; /* position in rstack */ |
|
int format; /* current file in mdoc or man format */ |
char control; /* control character */ |
char control; /* control character */ |
}; |
}; |
|
|
|
|
{ |
{ |
|
|
roff_free1(r); |
roff_free1(r); |
|
r->format = r->options & (MPARSE_MDOC | MPARSE_MAN); |
r->control = 0; |
r->control = 0; |
} |
} |
|
|
|
|
r = mandoc_calloc(1, sizeof(struct roff)); |
r = mandoc_calloc(1, sizeof(struct roff)); |
r->parse = parse; |
r->parse = parse; |
r->options = options; |
r->options = options; |
|
r->format = options & (MPARSE_MDOC | MPARSE_MAN); |
r->rstackpos = -1; |
r->rstackpos = -1; |
|
|
roffhash_init(); |
roffhash_init(); |
|
|
{ |
{ |
const char *const *cp; |
const char *const *cp; |
|
|
if (0 == ((MPARSE_MDOC | MPARSE_QUICK) & r->options)) |
if ((r->options & (MPARSE_MDOC | MPARSE_QUICK)) == 0) |
for (cp = __mdoc_reserved; *cp; cp++) |
for (cp = __mdoc_reserved; *cp; cp++) |
roff_setstr(r, *cp, NULL, 0); |
roff_setstr(r, *cp, NULL, 0); |
|
|
|
if (r->format == 0) |
|
r->format = MPARSE_MDOC; |
|
|
return(ROFF_CONT); |
return(ROFF_CONT); |
} |
} |
|
|
|
|
{ |
{ |
const char *const *cp; |
const char *const *cp; |
|
|
if (0 == (MPARSE_QUICK & r->options)) |
if ((r->options & MPARSE_QUICK) == 0) |
for (cp = __man_reserved; *cp; cp++) |
for (cp = __man_reserved; *cp; cp++) |
roff_setstr(r, *cp, NULL, 0); |
roff_setstr(r, *cp, NULL, 0); |
|
|
|
if (r->format == 0) |
|
r->format = MPARSE_MAN; |
|
|
return(ROFF_CONT); |
return(ROFF_CONT); |
} |
} |
|
|
|
|
|
|
res[(int)ssz] = '\0'; |
res[(int)ssz] = '\0'; |
return(res); |
return(res); |
|
} |
|
|
|
int |
|
roff_getformat(const struct roff *r) |
|
{ |
|
|
|
return(r->format); |
} |
} |
|
|
/* |
/* |