version 1.67, 2011/03/22 15:30:30 |
version 1.68, 2011/04/09 15:29:40 |
Line 54 static int check_par(CHKARGS); |
|
Line 54 static int check_par(CHKARGS); |
|
static int check_part(CHKARGS); |
static int check_part(CHKARGS); |
static int check_root(CHKARGS); |
static int check_root(CHKARGS); |
static int check_sec(CHKARGS); |
static int check_sec(CHKARGS); |
static int check_text(CHKARGS); |
static void check_text(CHKARGS); |
|
|
static int post_AT(CHKARGS); |
static int post_AT(CHKARGS); |
static int post_fi(CHKARGS); |
static int post_fi(CHKARGS); |
Line 151 man_valid_post(struct man *m) |
|
Line 151 man_valid_post(struct man *m) |
|
|
|
switch (m->last->type) { |
switch (m->last->type) { |
case (MAN_TEXT): |
case (MAN_TEXT): |
return(check_text(m, m->last)); |
check_text(m, m->last); |
|
return(1); |
case (MAN_ROOT): |
case (MAN_ROOT): |
return(check_root(m, m->last)); |
return(check_root(m, m->last)); |
case (MAN_EQN): |
case (MAN_EQN): |
Line 204 check_root(CHKARGS) |
|
Line 205 check_root(CHKARGS) |
|
return(1); |
return(1); |
} |
} |
|
|
|
static void |
static int |
|
check_text(CHKARGS) |
check_text(CHKARGS) |
{ |
{ |
char *p; |
char *p, *pp, *cpp; |
int pos, c; |
int pos; |
size_t sz; |
size_t sz; |
|
|
for (p = n->string, pos = n->pos + 1; *p; p++, pos++) { |
p = n->string; |
|
pos = n->pos + 1; |
|
|
|
while ('\0' != *p) { |
sz = strcspn(p, "\t\\"); |
sz = strcspn(p, "\t\\"); |
p += (int)sz; |
|
|
|
if ('\0' == *p) |
p += (int)sz; |
break; |
|
|
|
pos += (int)sz; |
pos += (int)sz; |
|
|
if ('\t' == *p) { |
if ('\t' == *p) { |
if (MAN_LITERAL & m->flags) |
if ( ! (MAN_LITERAL & m->flags)) |
continue; |
man_pmsg(m, n->line, pos, MANDOCERR_BADTAB); |
man_pmsg(m, n->line, pos, MANDOCERR_BADTAB); |
p++; |
|
pos++; |
continue; |
continue; |
} |
} else if ('\0' == *p) |
|
break; |
|
|
/* Check the special character. */ |
pos++; |
|
pp = ++p; |
|
|
c = mandoc_special(p); |
if (ESCAPE_ERROR == mandoc_escape |
if (c) { |
((const char **)&pp, NULL, NULL)) { |
p += c - 1; |
|
pos += c - 1; |
|
} else |
|
man_pmsg(m, n->line, pos, MANDOCERR_BADESCAPE); |
man_pmsg(m, n->line, pos, MANDOCERR_BADESCAPE); |
} |
break; |
|
} |
|
|
return(1); |
cpp = p; |
} |
while (NULL != (cpp = memchr(cpp, ASCII_HYPH, pp - cpp))) |
|
*cpp = '-'; |
|
|
|
pos += pp - p; |
|
p = pp; |
|
} |
|
} |
|
|
#define INEQ_DEFINE(x, ineq, name) \ |
#define INEQ_DEFINE(x, ineq, name) \ |
static int \ |
static int \ |