• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/mandoc/

Lines Matching defs:mpage

72 	const struct mpage *mpage; /* if set, the owning parse */
82 struct mpage {
89 struct mpage *next; /* singly linked list */
102 struct mpage *mpage; /* parent */
108 typedef int (*mdoc_fp)(struct mpage *, const struct roff_meta *,
120 static void dbadd(struct dba *, struct mpage *);
131 static void mlink_check(struct mpage *, struct mlink *);
133 static void mlinks_undupe(struct mpage *);
136 static void parse_cat(struct mpage *, int);
137 static void parse_man(struct mpage *, const struct roff_meta *,
139 static void parse_mdoc(struct mpage *, const struct roff_meta *,
141 static int parse_mdoc_head(struct mpage *, const struct roff_meta *,
143 static int parse_mdoc_Fa(struct mpage *, const struct roff_meta *,
145 static int parse_mdoc_Fd(struct mpage *, const struct roff_meta *,
147 static void parse_mdoc_fname(struct mpage *, const struct roff_node *);
148 static int parse_mdoc_Fn(struct mpage *, const struct roff_meta *,
150 static int parse_mdoc_Fo(struct mpage *, const struct roff_meta *,
152 static int parse_mdoc_Nd(struct mpage *, const struct roff_meta *,
154 static int parse_mdoc_Nm(struct mpage *, const struct roff_meta *,
156 static int parse_mdoc_Sh(struct mpage *, const struct roff_meta *,
158 static int parse_mdoc_Va(struct mpage *, const struct roff_meta *,
160 static int parse_mdoc_Xr(struct mpage *, const struct roff_meta *,
162 static void putkey(const struct mpage *, char *, uint64_t);
163 static void putkeys(const struct mpage *, char *, size_t, uint64_t);
164 static void putmdockey(const struct mpage *,
182 static struct mpage *mpage_head; /* list of distinct manual pages */
427 mandoc_ohash_init(&mpages, 6, offsetof(struct mpage, inodev));
500 offsetof(struct mpage, inodev));
933 struct mpage *mpage;
961 mpage = ohash_find(&mpages, slot);
962 if (NULL == mpage) {
963 mpage = mandoc_calloc(1, sizeof(struct mpage));
964 mpage->inodev.st_ino = inodev.st_ino;
965 mpage->inodev.st_dev = inodev.st_dev;
966 mpage->form = FORM_NONE;
967 mpage->next = mpage_head;
968 mpage_head = mpage;
969 ohash_insert(&mpages, slot, mpage);
971 mlink->next = mpage->mlinks;
972 mpage->mlinks = mlink;
973 mlink->mpage = mpage;
990 struct mpage *mpage;
993 while ((mpage = mpage_head) != NULL) {
994 while ((mlink = mpage->mlinks) != NULL) {
995 mpage->mlinks = mlink->next;
998 mpage_head = mpage->next;
999 free(mpage->sec);
1000 free(mpage->arch);
1001 free(mpage->title);
1002 free(mpage->desc);
1003 free(mpage);
1008 * For each mlink to the mpage, check whether the path looks like
1014 mlinks_undupe(struct mpage *mpage)
1021 mpage->form = FORM_CAT;
1022 prev = &mpage->mlinks;
1025 mpage->form = FORM_NONE;
1051 mlink_check(struct mpage *mpage, struct mlink *mlink)
1065 if (FORM_SRC == mpage->form &&
1066 strcasecmp(mpage->sec, mlink->dsec))
1068 mpage->sec, mlink->dsec);
1083 if (strcasecmp(mpage->arch, mlink->arch))
1085 "\"%s\" directory", mpage->arch, mlink->arch);
1092 if (FORM_CAT == mpage->form)
1117 struct mpage *mpage, *mpage_dest;
1123 for (mpage = mpage_head; mpage != NULL; mpage = mpage->next) {
1124 mlinks_undupe(mpage);
1125 if ((mlink = mpage->mlinks) == NULL)
1163 mpage_dest = mlink_dest->mpage;
1165 mlink->mpage = mpage_dest;
1187 mlink_dest->next = mpage->mlinks;
1188 mpage->mlinks = NULL;
1194 mpage->form = FORM_SRC;
1195 mpage->sec = meta->msec;
1196 mpage->sec = mandoc_strdup(
1197 mpage->sec == NULL ? "" : mpage->sec);
1198 mpage->arch = meta->arch;
1199 mpage->arch = mandoc_strdup(
1200 mpage->arch == NULL ? "" : mpage->arch);
1201 mpage->title = mandoc_strdup(meta->title);
1204 mpage->form = FORM_SRC;
1205 mpage->sec = mandoc_strdup(meta->msec);
1206 mpage->arch = mandoc_strdup(mlink->arch);
1207 mpage->title = mandoc_strdup(meta->title);
1212 assert(mpage->desc == NULL);
1214 mpage->sec = mandoc_strdup(mlink->dsec);
1215 mpage->arch = mandoc_strdup(mlink->arch);
1216 mpage->title = mandoc_strdup(mlink->name);
1218 mpage->form = FORM_CAT;
1219 parse_cat(mpage, fd);
1221 mpage->form = FORM_SRC;
1223 parse_mdoc(mpage, meta, meta->first);
1225 parse_man(mpage, meta, meta->first);
1226 if (mpage->desc == NULL) {
1227 mpage->desc = mandoc_strdup(mlink->name);
1233 for (mlink = mpage->mlinks;
1236 putkey(mpage, mlink->name, NAME_FILE);
1238 mlink_check(mpage, mlink);
1241 dbadd(dba, mpage);
1250 parse_cat(struct mpage *mpage, int fd)
1259 mlink = mpage->mlinks;
1281 free(mpage->sec);
1282 mpage->sec = mandoc_strndup(sec, p - sec);
1284 strcasecmp(mpage->sec, mlink->dsec))
1287 mpage->sec, mlink->dsec);
1383 mpage->desc = mandoc_strndup(p, 150);
1392 putkey(const struct mpage *mpage, char *value, uint64_t type)
1394 putkeys(mpage, value, strlen(value), type);
1401 putmdockey(const struct mpage *mpage,
1409 putmdockey(mpage, n->child, m, taboo);
1411 putkey(mpage, n->string, m);
1416 parse_man(struct mpage *mpage, const struct roff_meta *meta,
1481 putkey(mpage, start, NAME_TITLE);
1482 if ( ! (mpage->name_head_done ||
1484 putkey(mpage, start, NAME_HEAD);
1485 mpage->name_head_done = 1;
1500 putkey(mpage, start, NAME_TITLE);
1501 if ( ! (mpage->name_head_done ||
1503 putkey(mpage, start, NAME_HEAD);
1504 mpage->name_head_done = 1;
1532 mpage->desc = mandoc_strndup(start, 150);
1539 if (NULL != mpage->desc)
1541 parse_man(mpage, meta, n);
1546 parse_mdoc(struct mpage *mpage, const struct roff_meta *meta,
1566 (*handler->fp)(mpage, meta, n) == 0)
1569 putmdockey(mpage, n->child,
1576 parse_mdoc(mpage, meta, n);
1581 parse_mdoc_Fa(struct mpage *mpage, const struct roff_meta *meta,
1590 putmdockey(mpage, n->child, mask, 0);
1595 parse_mdoc_Fd(struct mpage *mpage, const struct roff_meta *meta,
1634 putkeys(mpage, start, end - start + 1, TYPE_In);
1639 parse_mdoc_fname(struct mpage *mpage, const struct roff_node *n)
1654 putkeys(mpage, cp, sz, TYPE_Fn);
1656 putkeys(mpage, cp, sz, NAME_SYN);
1660 parse_mdoc_Fn(struct mpage *mpage, const struct roff_meta *meta,
1668 parse_mdoc_fname(mpage, n->child);
1675 putmdockey(mpage, n, mask, 0);
1682 parse_mdoc_Fo(struct mpage *mpage, const struct roff_meta *meta,
1690 parse_mdoc_fname(mpage, n->child);
1696 parse_mdoc_Va(struct mpage *mpage, const struct roff_meta *meta,
1712 putkey(mpage, cp, TYPE_Vt | (n->tok == MDOC_Va ||
1721 parse_mdoc_Xr(struct mpage *mpage, const struct roff_meta *meta,
1730 putkey(mpage, n->string, TYPE_Xr);
1735 putkey(mpage, cp, TYPE_Xr);
1741 parse_mdoc_Nd(struct mpage *mpage, const struct roff_meta *meta,
1746 deroff(&mpage->desc, n);
1751 parse_mdoc_Nm(struct mpage *mpage, const struct roff_meta *meta,
1756 putmdockey(mpage, n->child, NAME_TITLE, 0);
1759 putkey(mpage, meta->name, NAME_SYN);
1761 putmdockey(mpage, n->child, NAME_SYN, 0);
1763 if ( ! (mpage->name_head_done ||
1766 putkey(mpage, n->child->string, NAME_HEAD);
1767 mpage->name_head_done = 1;
1773 parse_mdoc_Sh(struct mpage *mpage, const struct roff_meta *meta,
1781 parse_mdoc_head(struct mpage *mpage, const struct roff_meta *meta,
1794 putkeys(const struct mpage *mpage, char *cp, size_t sz, uint64_t v)
1813 say(mpage->mlinks->file,
1821 say(mpage->mlinks->file,
1830 if (NULL != s && mpage == s->mpage) {
1838 s->mpage = mpage;
2025 dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE);
2026 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec);
2027 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec);
2028 dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch);
2029 dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file);
2037 dbadd(struct dba *dba, struct mpage *mpage)
2047 mlink = mpage->mlinks;
2077 printf(" - %s\n", mpage->desc);
2084 cp = mpage->desc;
2087 mpage->dba = dba_page_new(dba->pages,
2088 *mpage->arch == '\0' ? mlink->arch : mpage->arch,
2089 cp, mlink->file, mpage->form);
2092 dba_page_add(mpage->dba, DBP_SECT, mpage->sec);
2101 assert(key->mpage == mpage);
2102 dba_page_alias(mpage->dba, key->key, key->mask);
2107 assert(key->mpage == mpage);
2112 key->key, mpage->dba);