version 1.113, 2015/02/06 11:54:36 |
version 1.114, 2015/04/02 21:36:50 |
|
|
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
* copyright notice and this permission notice appear in all copies. |
* copyright notice and this permission notice appear in all copies. |
* |
* |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|
|
#include <string.h> |
#include <string.h> |
#include <time.h> |
#include <time.h> |
|
|
#include "man.h" |
|
#include "mandoc.h" |
|
#include "mandoc_aux.h" |
#include "mandoc_aux.h" |
#include "libman.h" |
#include "mandoc.h" |
|
#include "roff.h" |
|
#include "man.h" |
#include "libmandoc.h" |
#include "libmandoc.h" |
|
#include "libman.h" |
|
|
#define CHKARGS struct man *man, struct man_node *n |
#define CHKARGS struct man *man, struct man_node *n |
|
|
Line 108 man_valid_post(struct man *man) |
|
Line 109 man_valid_post(struct man *man) |
|
n->flags |= MAN_VALID; |
n->flags |= MAN_VALID; |
|
|
switch (n->type) { |
switch (n->type) { |
case MAN_TEXT: |
case ROFFT_TEXT: |
check_text(man, n); |
check_text(man, n); |
break; |
break; |
case MAN_ROOT: |
case ROFFT_ROOT: |
check_root(man, n); |
check_root(man, n); |
break; |
break; |
case MAN_EQN: |
case ROFFT_EQN: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MAN_TBL: |
case ROFFT_TBL: |
break; |
break; |
default: |
default: |
cp = man_valids + n->tok; |
cp = man_valids + n->tok; |
|
|
post_UR(CHKARGS) |
post_UR(CHKARGS) |
{ |
{ |
|
|
if (n->type == MAN_HEAD && n->child == NULL) |
if (n->type == ROFFT_HEAD && n->child == NULL) |
mandoc_vmsg(MANDOCERR_UR_NOHEAD, man->parse, |
mandoc_vmsg(MANDOCERR_UR_NOHEAD, man->parse, |
n->line, n->pos, "UR"); |
n->line, n->pos, "UR"); |
check_part(man, n); |
check_part(man, n); |
|
|
check_part(CHKARGS) |
check_part(CHKARGS) |
{ |
{ |
|
|
if (n->type == MAN_BODY && n->child == NULL) |
if (n->type == ROFFT_BODY && n->child == NULL) |
mandoc_msg(MANDOCERR_BLK_EMPTY, man->parse, |
mandoc_msg(MANDOCERR_BLK_EMPTY, man->parse, |
n->line, n->pos, man_macronames[n->tok]); |
n->line, n->pos, man_macronames[n->tok]); |
} |
} |
Line 253 check_par(CHKARGS) |
|
Line 254 check_par(CHKARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MAN_BLOCK: |
case ROFFT_BLOCK: |
if (0 == n->body->nchild) |
if (0 == n->body->nchild) |
man_node_delete(man, n); |
man_node_delete(man, n); |
break; |
break; |
case MAN_BODY: |
case ROFFT_BODY: |
if (0 == n->nchild) |
if (0 == n->nchild) |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
man->parse, n->line, n->pos, |
man->parse, n->line, n->pos, |
"%s empty", man_macronames[n->tok]); |
"%s empty", man_macronames[n->tok]); |
break; |
break; |
case MAN_HEAD: |
case ROFFT_HEAD: |
if (n->nchild) |
if (n->nchild) |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
man->parse, n->line, n->pos, |
man->parse, n->line, n->pos, |
Line 281 post_IP(CHKARGS) |
|
Line 282 post_IP(CHKARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MAN_BLOCK: |
case ROFFT_BLOCK: |
if (0 == n->head->nchild && 0 == n->body->nchild) |
if (0 == n->head->nchild && 0 == n->body->nchild) |
man_node_delete(man, n); |
man_node_delete(man, n); |
break; |
break; |
case MAN_BODY: |
case ROFFT_BODY: |
if (0 == n->parent->head->nchild && 0 == n->nchild) |
if (0 == n->parent->head->nchild && 0 == n->nchild) |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
man->parse, n->line, n->pos, |
man->parse, n->line, n->pos, |
Line 427 post_UC(CHKARGS) |
|
Line 428 post_UC(CHKARGS) |
|
|
|
n = n->child; |
n = n->child; |
|
|
if (NULL == n || MAN_TEXT != n->type) |
if (n == NULL || n->type != ROFFT_TEXT) |
p = bsd_versions[0]; |
p = bsd_versions[0]; |
else { |
else { |
s = n->string; |
s = n->string; |
Line 464 post_AT(CHKARGS) |
|
Line 465 post_AT(CHKARGS) |
|
|
|
n = n->child; |
n = n->child; |
|
|
if (NULL == n || MAN_TEXT != n->type) |
if (n == NULL || n->type != ROFFT_TEXT) |
p = unix_versions[0]; |
p = unix_versions[0]; |
else { |
else { |
s = n->string; |
s = n->string; |
Line 474 post_AT(CHKARGS) |
|
Line 475 post_AT(CHKARGS) |
|
p = unix_versions[1]; |
p = unix_versions[1]; |
else if (0 == strcmp(s, "5")) { |
else if (0 == strcmp(s, "5")) { |
nn = n->next; |
nn = n->next; |
if (nn && MAN_TEXT == nn->type && nn->string[0]) |
if (nn != NULL && |
|
nn->type == ROFFT_TEXT && |
|
nn->string[0] != '\0') |
p = unix_versions[3]; |
p = unix_versions[3]; |
else |
else |
p = unix_versions[2]; |
p = unix_versions[2]; |