Lines Matching refs:mpage

74 	const struct mpage *mpage; /* if set, the owning parse */  member
84 struct mpage { struct
91 struct mpage *next; /* singly linked list */ argument
104 struct mpage *mpage; /* parent */ argument
110 typedef int (*mdoc_fp)(struct mpage *, const struct roff_meta *,
122 static void dbadd(struct dba *, struct mpage *);
133 static void mlink_check(struct mpage *, struct mlink *);
135 static void mlinks_undupe(struct mpage *);
138 static void parse_cat(struct mpage *, int);
139 static void parse_man(struct mpage *, const struct roff_meta *,
141 static void parse_mdoc(struct mpage *, const struct roff_meta *,
143 static int parse_mdoc_head(struct mpage *, const struct roff_meta *,
145 static int parse_mdoc_Fa(struct mpage *, const struct roff_meta *,
147 static int parse_mdoc_Fd(struct mpage *, const struct roff_meta *,
149 static void parse_mdoc_fname(struct mpage *, const struct roff_node *);
150 static int parse_mdoc_Fn(struct mpage *, const struct roff_meta *,
152 static int parse_mdoc_Fo(struct mpage *, const struct roff_meta *,
154 static int parse_mdoc_Nd(struct mpage *, const struct roff_meta *,
156 static int parse_mdoc_Nm(struct mpage *, const struct roff_meta *,
158 static int parse_mdoc_Sh(struct mpage *, const struct roff_meta *,
160 static int parse_mdoc_Va(struct mpage *, const struct roff_meta *,
162 static int parse_mdoc_Xr(struct mpage *, const struct roff_meta *,
164 static void putkey(const struct mpage *, char *, uint64_t);
165 static void putkeys(const struct mpage *, char *, size_t, uint64_t);
166 static void putmdockey(const struct mpage *,
188 static struct mpage *mpage_head; /* list of distinct manual pages */
433 mandoc_ohash_init(&mpages, 6, offsetof(struct mpage, inodev)); in mandocdb()
506 offsetof(struct mpage, inodev)); in mandocdb()
991 struct mpage *mpage; in mlink_add() local
1019 mpage = ohash_find(&mpages, slot); in mlink_add()
1020 if (NULL == mpage) { in mlink_add()
1021 mpage = mandoc_calloc(1, sizeof(struct mpage)); in mlink_add()
1022 mpage->inodev.st_ino = inodev.st_ino; in mlink_add()
1023 mpage->inodev.st_dev = inodev.st_dev; in mlink_add()
1024 mpage->form = FORM_NONE; in mlink_add()
1025 mpage->next = mpage_head; in mlink_add()
1026 mpage_head = mpage; in mlink_add()
1027 ohash_insert(&mpages, slot, mpage); in mlink_add()
1029 mlink->next = mpage->mlinks; in mlink_add()
1030 mpage->mlinks = mlink; in mlink_add()
1031 mlink->mpage = mpage; in mlink_add()
1048 struct mpage *mpage; in mpages_free() local
1051 while ((mpage = mpage_head) != NULL) { in mpages_free()
1052 while ((mlink = mpage->mlinks) != NULL) { in mpages_free()
1053 mpage->mlinks = mlink->next; in mpages_free()
1056 mpage_head = mpage->next; in mpages_free()
1057 free(mpage->sec); in mpages_free()
1058 free(mpage->arch); in mpages_free()
1059 free(mpage->title); in mpages_free()
1060 free(mpage->desc); in mpages_free()
1061 free(mpage); in mpages_free()
1072 mlinks_undupe(struct mpage *mpage) in mlinks_undupe() argument
1079 mpage->form = FORM_CAT; in mlinks_undupe()
1080 prev = &mpage->mlinks; in mlinks_undupe()
1083 mpage->form = FORM_NONE; in mlinks_undupe()
1109 mlink_check(struct mpage *mpage, struct mlink *mlink) in mlink_check() argument
1123 if (FORM_SRC == mpage->form && in mlink_check()
1124 strcasecmp(mpage->sec, mlink->dsec)) in mlink_check()
1126 mpage->sec, mlink->dsec); in mlink_check()
1141 if (strcasecmp(mpage->arch, mlink->arch)) in mlink_check()
1143 "\"%s\" directory", mpage->arch, mlink->arch); in mlink_check()
1150 if (FORM_CAT == mpage->form) in mlink_check()
1175 struct mpage *mpage, *mpage_dest; in mpages_merge() local
1181 for (mpage = mpage_head; mpage != NULL; mpage = mpage->next) { in mpages_merge()
1182 mlinks_undupe(mpage); in mpages_merge()
1183 if ((mlink = mpage->mlinks) == NULL) in mpages_merge()
1221 mpage_dest = mlink_dest->mpage; in mpages_merge()
1223 mlink->mpage = mpage_dest; in mpages_merge()
1245 mlink_dest->next = mpage->mlinks; in mpages_merge()
1246 mpage->mlinks = NULL; in mpages_merge()
1252 mpage->form = FORM_SRC; in mpages_merge()
1253 mpage->sec = meta->msec; in mpages_merge()
1254 mpage->sec = mandoc_strdup( in mpages_merge()
1255 mpage->sec == NULL ? "" : mpage->sec); in mpages_merge()
1256 mpage->arch = meta->arch; in mpages_merge()
1257 mpage->arch = mandoc_strdup( in mpages_merge()
1258 mpage->arch == NULL ? "" : mpage->arch); in mpages_merge()
1259 mpage->title = mandoc_strdup(meta->title); in mpages_merge()
1262 mpage->form = FORM_SRC; in mpages_merge()
1263 mpage->sec = mandoc_strdup(meta->msec); in mpages_merge()
1264 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1265 mpage->title = mandoc_strdup(meta->title); in mpages_merge()
1270 assert(mpage->desc == NULL); in mpages_merge()
1272 mpage->sec = mandoc_strdup(mlink->dsec); in mpages_merge()
1273 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1274 mpage->title = mandoc_strdup(mlink->name); in mpages_merge()
1276 mpage->form = FORM_CAT; in mpages_merge()
1277 parse_cat(mpage, fd); in mpages_merge()
1279 mpage->form = FORM_SRC; in mpages_merge()
1281 parse_mdoc(mpage, meta, meta->first); in mpages_merge()
1283 parse_man(mpage, meta, meta->first); in mpages_merge()
1284 if (mpage->desc == NULL) { in mpages_merge()
1285 mpage->desc = mandoc_strdup(mlink->name); in mpages_merge()
1291 for (mlink = mpage->mlinks; in mpages_merge()
1294 putkey(mpage, mlink->name, NAME_FILE); in mpages_merge()
1296 mlink_check(mpage, mlink); in mpages_merge()
1299 dbadd(dba, mpage); in mpages_merge()
1308 parse_cat(struct mpage *mpage, int fd) in parse_cat() argument
1317 mlink = mpage->mlinks; in parse_cat()
1339 free(mpage->sec); in parse_cat()
1340 mpage->sec = mandoc_strndup(sec, p - sec); in parse_cat()
1342 strcasecmp(mpage->sec, mlink->dsec)) in parse_cat()
1345 mpage->sec, mlink->dsec); in parse_cat()
1441 mpage->desc = mandoc_strndup(p, 150); in parse_cat()
1450 putkey(const struct mpage *mpage, char *value, uint64_t type) in putkey() argument
1452 putkeys(mpage, value, strlen(value), type); in putkey()
1459 putmdockey(const struct mpage *mpage, in putmdockey() argument
1467 putmdockey(mpage, n->child, m, taboo); in putmdockey()
1469 putkey(mpage, n->string, m); in putmdockey()
1474 parse_man(struct mpage *mpage, const struct roff_meta *meta, in parse_man() argument
1539 putkey(mpage, start, NAME_TITLE); in parse_man()
1540 if ( ! (mpage->name_head_done || in parse_man()
1542 putkey(mpage, start, NAME_HEAD); in parse_man()
1543 mpage->name_head_done = 1; in parse_man()
1558 putkey(mpage, start, NAME_TITLE); in parse_man()
1559 if ( ! (mpage->name_head_done || in parse_man()
1561 putkey(mpage, start, NAME_HEAD); in parse_man()
1562 mpage->name_head_done = 1; in parse_man()
1590 mpage->desc = mandoc_strndup(start, 150); in parse_man()
1597 if (NULL != mpage->desc) in parse_man()
1599 parse_man(mpage, meta, n); in parse_man()
1604 parse_mdoc(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc() argument
1624 (*handler->fp)(mpage, meta, n) == 0) in parse_mdoc()
1627 putmdockey(mpage, n->child, in parse_mdoc()
1634 parse_mdoc(mpage, meta, n); in parse_mdoc()
1639 parse_mdoc_Fa(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Fa() argument
1648 putmdockey(mpage, n->child, mask, 0); in parse_mdoc_Fa()
1653 parse_mdoc_Fd(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Fd() argument
1692 putkeys(mpage, start, end - start + 1, TYPE_In); in parse_mdoc_Fd()
1697 parse_mdoc_fname(struct mpage *mpage, const struct roff_node *n) in parse_mdoc_fname() argument
1712 putkeys(mpage, cp, sz, TYPE_Fn); in parse_mdoc_fname()
1714 putkeys(mpage, cp, sz, NAME_SYN); in parse_mdoc_fname()
1718 parse_mdoc_Fn(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Fn() argument
1726 parse_mdoc_fname(mpage, n->child); in parse_mdoc_Fn()
1733 putmdockey(mpage, n, mask, 0); in parse_mdoc_Fn()
1740 parse_mdoc_Fo(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Fo() argument
1748 parse_mdoc_fname(mpage, n->child); in parse_mdoc_Fo()
1754 parse_mdoc_Va(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Va() argument
1770 putkey(mpage, cp, TYPE_Vt | (n->tok == MDOC_Va || in parse_mdoc_Va()
1779 parse_mdoc_Xr(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Xr() argument
1788 putkey(mpage, n->string, TYPE_Xr); in parse_mdoc_Xr()
1793 putkey(mpage, cp, TYPE_Xr); in parse_mdoc_Xr()
1799 parse_mdoc_Nd(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Nd() argument
1804 deroff(&mpage->desc, n); in parse_mdoc_Nd()
1809 parse_mdoc_Nm(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Nm() argument
1814 putmdockey(mpage, n->child, NAME_TITLE, 0); in parse_mdoc_Nm()
1817 putkey(mpage, meta->name, NAME_SYN); in parse_mdoc_Nm()
1819 putmdockey(mpage, n->child, NAME_SYN, 0); in parse_mdoc_Nm()
1821 if ( ! (mpage->name_head_done || in parse_mdoc_Nm()
1824 putkey(mpage, n->child->string, NAME_HEAD); in parse_mdoc_Nm()
1825 mpage->name_head_done = 1; in parse_mdoc_Nm()
1831 parse_mdoc_Sh(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_Sh() argument
1839 parse_mdoc_head(struct mpage *mpage, const struct roff_meta *meta, in parse_mdoc_head() argument
1852 putkeys(const struct mpage *mpage, char *cp, size_t sz, uint64_t v) in putkeys() argument
1871 say(mpage->mlinks->file, in putkeys()
1879 say(mpage->mlinks->file, in putkeys()
1888 if (NULL != s && mpage == s->mpage) { in putkeys()
1896 s->mpage = mpage; in putkeys()
2083 dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE); in dbadd_mlink()
2084 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec); in dbadd_mlink()
2085 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec); in dbadd_mlink()
2086 dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch); in dbadd_mlink()
2087 dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file); in dbadd_mlink()
2095 dbadd(struct dba *dba, struct mpage *mpage) in dbadd() argument
2105 mlink = mpage->mlinks; in dbadd()
2135 printf(" - %s\n", mpage->desc); in dbadd()
2142 cp = mpage->desc; in dbadd()
2145 mpage->dba = dba_page_new(dba->pages, in dbadd()
2146 *mpage->arch == '\0' ? mlink->arch : mpage->arch, in dbadd()
2147 cp, mlink->file, mpage->form); in dbadd()
2150 dba_page_add(mpage->dba, DBP_SECT, mpage->sec); in dbadd()
2159 assert(key->mpage == mpage); in dbadd()
2160 dba_page_alias(mpage->dba, key->key, key->mask); in dbadd()
2165 assert(key->mpage == mpage); in dbadd()
2170 key->key, mpage->dba); in dbadd()