003 File Manager
Current Path:
/usr/src/contrib/mandoc
usr
/
src
/
contrib
/
mandoc
/
📁
..
📄
INSTALL
(6.86 KB)
📄
LICENSE
(2.46 KB)
📄
Makefile
(15.29 KB)
📄
Makefile.depend
(5.65 KB)
📄
NEWS
(60.04 KB)
📄
TODO
(23.98 KB)
📄
apropos.1
(10.66 KB)
📄
arch.c
(1.94 KB)
📄
att.c
(1.62 KB)
📄
catman.8
(4.49 KB)
📄
catman.c
(5.52 KB)
📄
cgi.c
(27.06 KB)
📄
cgi.h.example
(220 B)
📄
chars.c
(13.24 KB)
📄
compat_err.c
(2.68 KB)
📄
compat_fts.c
(17.42 KB)
📄
compat_fts.h
(4.09 KB)
📄
compat_getline.c
(1.59 KB)
📄
compat_getsubopt.c
(2.89 KB)
📄
compat_isblank.c
(986 B)
📄
compat_mkdtemp.c
(1.59 KB)
📄
compat_ohash.c
(6.82 KB)
📄
compat_ohash.h
(2.63 KB)
📄
compat_progname.c
(1.05 KB)
📄
compat_reallocarray.c
(1.49 KB)
📄
compat_recallocarray.c
(2.88 KB)
📄
compat_strcasestr.c
(2.38 KB)
📄
compat_stringlist.c
(2.71 KB)
📄
compat_stringlist.h
(1.73 KB)
📄
compat_strlcat.c
(1.71 KB)
📄
compat_strlcpy.c
(1.59 KB)
📄
compat_strndup.c
(1.3 KB)
📄
compat_strsep.c
(2.55 KB)
📄
compat_strtonum.c
(1.88 KB)
📄
compat_vasprintf.c
(1.55 KB)
📄
config.h
(1.33 KB)
📄
configure
(17.5 KB)
📄
configure.local.example
(11.37 KB)
📄
dba.c
(13.02 KB)
📄
dba.h
(1.73 KB)
📄
dba_array.c
(4.23 KB)
📄
dba_array.h
(2 KB)
📄
dba_read.c
(2.33 KB)
📄
dba_write.c
(2.42 KB)
📄
dba_write.h
(1.23 KB)
📄
dbm.c
(9.28 KB)
📄
dbm.h
(1.94 KB)
📄
dbm_map.c
(4.67 KB)
📄
dbm_map.h
(1.2 KB)
📄
demandoc.1
(2.64 KB)
📄
demandoc.c
(5.21 KB)
📄
eqn.7
(12.07 KB)
📄
eqn.c
(27.21 KB)
📄
eqn.h
(2.19 KB)
📄
eqn_html.c
(5.91 KB)
📄
eqn_parse.h
(1.96 KB)
📄
eqn_term.c
(4.83 KB)
📄
gmdiff
(1.74 KB)
📄
html.c
(19.34 KB)
📄
html.h
(3.86 KB)
📄
lib.c
(1.07 KB)
📄
lib.in
(8.96 KB)
📄
libman.h
(1.66 KB)
📄
libmandoc.h
(3.21 KB)
📄
libmdoc.h
(2.97 KB)
📄
main.c
(28.93 KB)
📄
main.h
(2.06 KB)
📄
makewhatis.8
(4.78 KB)
📄
man-cgi.css
(464 B)
📄
man.1
(9.33 KB)
📄
man.7
(16.8 KB)
📄
man.c
(8.62 KB)
📄
man.cgi.3
(7.83 KB)
📄
man.cgi.8
(11.02 KB)
📄
man.conf.5
(3.92 KB)
📄
man.h
(991 B)
📄
man.options.1
(21.05 KB)
📄
man_html.c
(13.39 KB)
📄
man_macro.c
(11.4 KB)
📄
man_term.c
(25.6 KB)
📄
man_validate.c
(11.84 KB)
📄
manconf.h
(1.56 KB)
📄
mandoc.1
(54.89 KB)
📄
mandoc.3
(12.5 KB)
📄
mandoc.c
(12.41 KB)
📄
mandoc.css
(8.63 KB)
📄
mandoc.db.5
(5.74 KB)
📄
mandoc.h
(14.92 KB)
📄
mandoc_aux.c
(2.42 KB)
📄
mandoc_aux.h
(1.31 KB)
📄
mandoc_char.7
(29.23 KB)
📄
mandoc_escape.3
(9.33 KB)
📄
mandoc_headers.3
(12.41 KB)
📄
mandoc_html.3
(7.42 KB)
📄
mandoc_malloc.3
(4.46 KB)
📄
mandoc_msg.c
(8.92 KB)
📄
mandoc_ohash.c
(1.58 KB)
📄
mandoc_ohash.h
(1004 B)
📄
mandoc_parse.h
(1.82 KB)
📄
mandoc_xr.c
(2.75 KB)
📄
mandoc_xr.h
(1.17 KB)
📄
mandocd.8
(4.59 KB)
📄
mandocd.c
(5.98 KB)
📄
mandocdb.c
(55.16 KB)
📄
manpath.c
(7.73 KB)
📄
manpath.h
(1.22 KB)
📄
mansearch.3
(3.26 KB)
📄
mansearch.c
(18.99 KB)
📄
mansearch.h
(4.03 KB)
📄
mchars_alloc.3
(5.24 KB)
📄
mdoc.7
(73.34 KB)
📄
mdoc.c
(9.99 KB)
📄
mdoc.h
(3.96 KB)
📄
mdoc_argv.c
(16.19 KB)
📄
mdoc_html.c
(36.48 KB)
📄
mdoc_macro.c
(39.55 KB)
📄
mdoc_man.c
(37.07 KB)
📄
mdoc_markdown.c
(33.41 KB)
📄
mdoc_state.c
(5.24 KB)
📄
mdoc_term.c
(43.69 KB)
📄
mdoc_validate.c
(61.85 KB)
📄
msec.c
(1.09 KB)
📄
msec.in
(1.48 KB)
📄
out.c
(13.61 KB)
📄
out.h
(2.26 KB)
📄
preconv.c
(3.84 KB)
📄
predefs.in
(2.05 KB)
📄
read.c
(16.44 KB)
📄
roff.7
(61.96 KB)
📄
roff.c
(98.93 KB)
📄
roff.h
(8.85 KB)
📄
roff_html.c
(2.92 KB)
📄
roff_int.h
(4.08 KB)
📄
roff_term.c
(5.36 KB)
📄
roff_validate.c
(3.41 KB)
📄
soelim.1
(2.6 KB)
📄
soelim.c
(3.76 KB)
📄
st.c
(4.33 KB)
📄
tag.c
(6.65 KB)
📄
tag.h
(1.09 KB)
📄
tbl.3
(6.9 KB)
📄
tbl.7
(10.91 KB)
📄
tbl.c
(3.89 KB)
📄
tbl.h
(4.43 KB)
📄
tbl_data.c
(7.3 KB)
📄
tbl_html.c
(5.74 KB)
📄
tbl_int.h
(2.09 KB)
📄
tbl_layout.c
(8.06 KB)
📄
tbl_opts.c
(3.77 KB)
📄
tbl_parse.h
(1.31 KB)
📄
tbl_term.c
(24.42 KB)
📄
term.c
(24.4 KB)
📄
term.h
(6.14 KB)
📄
term_ascii.c
(9.88 KB)
📄
term_ps.c
(27.41 KB)
📄
term_tab.c
(3 KB)
📄
test-EFTYPE.c
(56 B)
📄
test-O_DIRECTORY.c
(88 B)
📄
test-PATH_MAX.c
(1.02 KB)
📄
test-be32toh.c
(147 B)
📄
test-cmsg.c
(174 B)
📄
test-dirent-namlen.c
(124 B)
📄
test-err.c
(994 B)
📄
test-fgetln.c
(147 B)
📄
test-fts.c
(964 B)
📄
test-getline.c
(186 B)
📄
test-getsubopt.c
(1.31 KB)
📄
test-isblank.c
(96 B)
📄
test-mkdtemp.c
(175 B)
📄
test-nanosleep.c
(239 B)
📄
test-noop.c
(30 B)
📄
test-ntohl.c
(91 B)
📄
test-ohash.c
(585 B)
📄
test-pledge.c
(73 B)
📄
test-progname.c
(118 B)
📄
test-reallocarray.c
(75 B)
📄
test-recallocarray.c
(132 B)
📄
test-recvmsg.c
(100 B)
📄
test-rewb-bsd.c
(618 B)
📄
test-rewb-sysv.c
(610 B)
📄
test-sandbox_init.c
(186 B)
📄
test-strcasestr.c
(131 B)
📄
test-stringlist.c
(1.14 KB)
📄
test-strlcat.c
(166 B)
📄
test-strlcpy.c
(148 B)
📄
test-strndup.c
(141 B)
📄
test-strptime.c
(212 B)
📄
test-strsep.c
(183 B)
📄
test-strtonum.c
(1.25 KB)
📄
test-vasprintf.c
(1.25 KB)
📄
test-wchar.c
(1.58 KB)
📄
tree.c
(8.17 KB)
Editing: tree.c
/* $Id: tree.c,v 1.84 2019/01/01 05:56:34 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013-2015, 2017-2019 Ingo Schwarze <schwarze@openbsd.org> * * 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 AUTHORS DISCLAIM ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS 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. */ #include "config.h" #include <sys/types.h> #include <assert.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include "mandoc.h" #include "roff.h" #include "mdoc.h" #include "man.h" #include "tbl.h" #include "eqn.h" #include "main.h" static void print_box(const struct eqn_box *, int); static void print_man(const struct roff_node *, int); static void print_meta(const struct roff_meta *); static void print_mdoc(const struct roff_node *, int); static void print_span(const struct tbl_span *, int); void tree_mdoc(void *arg, const struct roff_meta *mdoc) { print_meta(mdoc); putchar('\n'); print_mdoc(mdoc->first->child, 0); } void tree_man(void *arg, const struct roff_meta *man) { print_meta(man); if (man->hasbody == 0) puts("body = empty"); putchar('\n'); print_man(man->first->child, 0); } static void print_meta(const struct roff_meta *meta) { if (meta->title != NULL) printf("title = \"%s\"\n", meta->title); if (meta->name != NULL) printf("name = \"%s\"\n", meta->name); if (meta->msec != NULL) printf("sec = \"%s\"\n", meta->msec); if (meta->vol != NULL) printf("vol = \"%s\"\n", meta->vol); if (meta->arch != NULL) printf("arch = \"%s\"\n", meta->arch); if (meta->os != NULL) printf("os = \"%s\"\n", meta->os); if (meta->date != NULL) printf("date = \"%s\"\n", meta->date); } static void print_mdoc(const struct roff_node *n, int indent) { const char *p, *t; int i, j; size_t argc; struct mdoc_argv *argv; if (n == NULL) return; argv = NULL; argc = 0; t = p = NULL; switch (n->type) { case ROFFT_ROOT: t = "root"; break; case ROFFT_BLOCK: t = "block"; break; case ROFFT_HEAD: t = "head"; break; case ROFFT_BODY: if (n->end) t = "body-end"; else t = "body"; break; case ROFFT_TAIL: t = "tail"; break; case ROFFT_ELEM: t = "elem"; break; case ROFFT_TEXT: t = "text"; break; case ROFFT_COMMENT: t = "comment"; break; case ROFFT_TBL: break; case ROFFT_EQN: t = "eqn"; break; default: abort(); } switch (n->type) { case ROFFT_TEXT: case ROFFT_COMMENT: p = n->string; break; case ROFFT_BODY: p = roff_name[n->tok]; break; case ROFFT_HEAD: p = roff_name[n->tok]; break; case ROFFT_TAIL: p = roff_name[n->tok]; break; case ROFFT_ELEM: p = roff_name[n->tok]; if (n->args) { argv = n->args->argv; argc = n->args->argc; } break; case ROFFT_BLOCK: p = roff_name[n->tok]; if (n->args) { argv = n->args->argv; argc = n->args->argc; } break; case ROFFT_TBL: break; case ROFFT_EQN: p = "EQ"; break; case ROFFT_ROOT: p = "root"; break; default: abort(); } if (n->span) { assert(NULL == p && NULL == t); print_span(n->span, indent); } else { for (i = 0; i < indent; i++) putchar(' '); printf("%s (%s)", p, t); for (i = 0; i < (int)argc; i++) { printf(" -%s", mdoc_argnames[argv[i].arg]); if (argv[i].sz > 0) printf(" ["); for (j = 0; j < (int)argv[i].sz; j++) printf(" [%s]", argv[i].value[j]); if (argv[i].sz > 0) printf(" ]"); } putchar(' '); if (n->flags & NODE_DELIMO) putchar('('); if (n->flags & NODE_LINE) putchar('*'); printf("%d:%d", n->line, n->pos + 1); if (n->flags & NODE_DELIMC) putchar(')'); if (n->flags & NODE_EOS) putchar('.'); if (n->flags & NODE_BROKEN) printf(" BROKEN"); if (n->flags & NODE_NOFILL) printf(" NOFILL"); if (n->flags & NODE_NOSRC) printf(" NOSRC"); if (n->flags & NODE_NOPRT) printf(" NOPRT"); putchar('\n'); } if (n->eqn) print_box(n->eqn->first, indent + 4); if (n->child) print_mdoc(n->child, indent + (n->type == ROFFT_BLOCK ? 2 : 4)); if (n->next) print_mdoc(n->next, indent); } static void print_man(const struct roff_node *n, int indent) { const char *p, *t; int i; if (n == NULL) return; t = p = NULL; switch (n->type) { case ROFFT_ROOT: t = "root"; break; case ROFFT_ELEM: t = "elem"; break; case ROFFT_TEXT: t = "text"; break; case ROFFT_COMMENT: t = "comment"; break; case ROFFT_BLOCK: t = "block"; break; case ROFFT_HEAD: t = "head"; break; case ROFFT_BODY: t = "body"; break; case ROFFT_TBL: break; case ROFFT_EQN: t = "eqn"; break; default: abort(); } switch (n->type) { case ROFFT_TEXT: case ROFFT_COMMENT: p = n->string; break; case ROFFT_ELEM: case ROFFT_BLOCK: case ROFFT_HEAD: case ROFFT_BODY: p = roff_name[n->tok]; break; case ROFFT_ROOT: p = "root"; break; case ROFFT_TBL: break; case ROFFT_EQN: p = "EQ"; break; default: abort(); } if (n->span) { assert(NULL == p && NULL == t); print_span(n->span, indent); } else { for (i = 0; i < indent; i++) putchar(' '); printf("%s (%s) ", p, t); if (n->flags & NODE_LINE) putchar('*'); printf("%d:%d", n->line, n->pos + 1); if (n->flags & NODE_DELIMC) putchar(')'); if (n->flags & NODE_EOS) putchar('.'); if (n->flags & NODE_NOFILL) printf(" NOFILL"); putchar('\n'); } if (n->eqn) print_box(n->eqn->first, indent + 4); if (n->child) print_man(n->child, indent + (n->type == ROFFT_BLOCK ? 2 : 4)); if (n->next) print_man(n->next, indent); } static void print_box(const struct eqn_box *ep, int indent) { int i; const char *t; static const char *posnames[] = { NULL, "sup", "subsup", "sub", "to", "from", "fromto", "over", "sqrt", NULL }; if (NULL == ep) return; for (i = 0; i < indent; i++) putchar(' '); t = NULL; switch (ep->type) { case EQN_LIST: t = "eqn-list"; break; case EQN_SUBEXPR: t = "eqn-expr"; break; case EQN_TEXT: t = "eqn-text"; break; case EQN_PILE: t = "eqn-pile"; break; case EQN_MATRIX: t = "eqn-matrix"; break; } fputs(t, stdout); if (ep->pos) printf(" pos=%s", posnames[ep->pos]); if (ep->left) printf(" left=\"%s\"", ep->left); if (ep->right) printf(" right=\"%s\"", ep->right); if (ep->top) printf(" top=\"%s\"", ep->top); if (ep->bottom) printf(" bottom=\"%s\"", ep->bottom); if (ep->text) printf(" text=\"%s\"", ep->text); if (ep->font) printf(" font=%d", ep->font); if (ep->size != EQN_DEFSIZE) printf(" size=%d", ep->size); if (ep->expectargs != UINT_MAX && ep->expectargs != ep->args) printf(" badargs=%zu(%zu)", ep->args, ep->expectargs); else if (ep->args) printf(" args=%zu", ep->args); putchar('\n'); print_box(ep->first, indent + 4); print_box(ep->next, indent); } static void print_span(const struct tbl_span *sp, int indent) { const struct tbl_dat *dp; int i; for (i = 0; i < indent; i++) putchar(' '); switch (sp->pos) { case TBL_SPAN_HORIZ: putchar('-'); putchar(' '); break; case TBL_SPAN_DHORIZ: putchar('='); putchar(' '); break; default: for (dp = sp->first; dp; dp = dp->next) { switch (dp->pos) { case TBL_DATA_HORIZ: case TBL_DATA_NHORIZ: putchar('-'); putchar(' '); continue; case TBL_DATA_DHORIZ: case TBL_DATA_NDHORIZ: putchar('='); putchar(' '); continue; default: break; } printf("[\"%s\"", dp->string ? dp->string : ""); if (dp->hspans) printf(">%d", dp->hspans); if (dp->vspans) printf("v%d", dp->vspans); if (dp->layout == NULL) putchar('*'); else if (dp->layout->pos == TBL_CELL_DOWN) putchar('^'); putchar(']'); putchar(' '); } break; } printf("(tbl) %d:1\n", sp->line); }
Upload File
Create Folder