version 1.3, 2011/03/20 16:02:05 |
version 1.5, 2011/03/22 09:50:11 |
|
|
#include "libmandoc.h" |
#include "libmandoc.h" |
#include "mdoc.h" |
#include "mdoc.h" |
#include "man.h" |
#include "man.h" |
#include "roff.h" |
|
|
|
#ifndef MAP_FILE |
#ifndef MAP_FILE |
#define MAP_FILE 0 |
#define MAP_FILE 0 |
|
|
int reparse_count; /* finite interp. stack */ |
int reparse_count; /* finite interp. stack */ |
mandocmsg mmsg; /* warning/error message handler */ |
mandocmsg mmsg; /* warning/error message handler */ |
void *arg; /* argument to mmsg */ |
void *arg; /* argument to mmsg */ |
mevt_open evt_open; /* file-open event */ |
|
mevt_close evt_close; /* file-close event */ |
|
const char *file; |
const char *file; |
}; |
}; |
|
|
Line 518 mparse_readfd_r(struct mparse *curp, int fd, const cha |
|
Line 515 mparse_readfd_r(struct mparse *curp, int fd, const cha |
|
{ |
{ |
const char *svfile; |
const char *svfile; |
|
|
if ( ! (*curp->evt_open)(curp->arg, file)) { |
|
curp->file_status = MANDOCLEVEL_SYSERR; |
|
return; |
|
} |
|
|
|
if (-1 == fd) |
if (-1 == fd) |
if (-1 == (fd = open(file, O_RDONLY, 0))) { |
if (-1 == (fd = open(file, O_RDONLY, 0))) { |
perror(file); |
perror(file); |
Line 541 mparse_readfd_r(struct mparse *curp, int fd, const cha |
|
Line 533 mparse_readfd_r(struct mparse *curp, int fd, const cha |
|
if (STDIN_FILENO != fd && -1 == close(fd)) |
if (STDIN_FILENO != fd && -1 == close(fd)) |
perror(file); |
perror(file); |
|
|
(*curp->evt_close)(curp->arg, file); |
|
curp->file = svfile; |
curp->file = svfile; |
} |
} |
|
|
Line 554 mparse_readfd(struct mparse *curp, int fd, const char |
|
Line 545 mparse_readfd(struct mparse *curp, int fd, const char |
|
} |
} |
|
|
struct mparse * |
struct mparse * |
mparse_alloc(enum mparset inttype, mevt_open eopen, |
mparse_alloc(enum mparset inttype, enum mandoclevel wlevel, mandocmsg mmsg, void *arg) |
mevt_close eclose, enum mandoclevel wlevel, mandocmsg mmsg, void *arg) |
|
{ |
{ |
struct mparse *curp; |
struct mparse *curp; |
|
|
Line 565 mparse_alloc(enum mparset inttype, mevt_open eopen, |
|
Line 555 mparse_alloc(enum mparset inttype, mevt_open eopen, |
|
curp->mmsg = mmsg; |
curp->mmsg = mmsg; |
curp->arg = arg; |
curp->arg = arg; |
curp->inttype = inttype; |
curp->inttype = inttype; |
curp->evt_open = eopen; |
|
curp->evt_close = eclose; |
|
|
|
curp->roff = roff_alloc(&curp->regs, curp); |
curp->roff = roff_alloc(&curp->regs, curp); |
return(curp); |
return(curp); |