Lines Matching refs:mlink

92 	struct mlink	*mlinks;  /* singly linked list */
97 struct mlink { struct
103 struct mlink *next; /* singly linked list */ argument
123 static void dbadd_mlink(const struct mlink *); argument
132 static void mlink_add(struct mlink *, const struct stat *);
133 static void mlink_check(struct mpage *, struct mlink *);
134 static void mlink_free(struct mlink *);
436 mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); in mandocdb()
510 offsetof(struct mlink, file)); in mandocdb()
587 struct mlink *mlink; in treescan() local
692 mlink = mandoc_calloc(1, sizeof(struct mlink)); in treescan()
693 if (strlcpy(mlink->file, path, in treescan()
694 sizeof(mlink->file)) >= in treescan()
695 sizeof(mlink->file)) { in treescan()
697 free(mlink); in treescan()
700 mlink->dform = dform; in treescan()
701 mlink->dsec = dsec; in treescan()
702 mlink->arch = arch; in treescan()
703 mlink->name = ff->fts_name; in treescan()
704 mlink->fsec = fsec; in treescan()
705 mlink->gzip = gzip; in treescan()
706 mlink_add(mlink, ff->fts_statp); in treescan()
796 struct mlink *mlink; in filescan() local
918 mlink = mandoc_calloc(1, sizeof(struct mlink)); in filescan()
919 mlink->dform = FORM_NONE; in filescan()
920 if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= in filescan()
921 sizeof(mlink->file)) { in filescan()
923 free(mlink); in filescan()
951 mlink->dform = FORM_SRC; in filescan()
952 mlink->dsec = start + 3; in filescan()
954 mlink->dform = FORM_CAT; in filescan()
955 mlink->dsec = start + 3; in filescan()
959 if (mlink->dsec != NULL && (p = strchr(start, '/')) != NULL) { in filescan()
961 mlink->arch = start; in filescan()
976 mlink->fsec = p; in filescan()
983 mlink->name = start; in filescan()
985 mlink->name = p + 1; in filescan()
988 mlink_add(mlink, &st); in filescan()
993 mlink_add(struct mlink *mlink, const struct stat *st) in mlink_add() argument
999 assert(NULL != mlink->file); in mlink_add()
1001 mlink->dsec = mandoc_strdup(mlink->dsec ? mlink->dsec : ""); in mlink_add()
1002 mlink->arch = mandoc_strdup(mlink->arch ? mlink->arch : ""); in mlink_add()
1003 mlink->name = mandoc_strdup(mlink->name ? mlink->name : ""); in mlink_add()
1004 mlink->fsec = mandoc_strdup(mlink->fsec ? mlink->fsec : ""); in mlink_add()
1006 if ('0' == *mlink->fsec) { in mlink_add()
1007 free(mlink->fsec); in mlink_add()
1008 mlink->fsec = mandoc_strdup(mlink->dsec); in mlink_add()
1009 mlink->fform = FORM_CAT; in mlink_add()
1010 } else if ('1' <= *mlink->fsec && '9' >= *mlink->fsec) in mlink_add()
1011 mlink->fform = FORM_SRC; in mlink_add()
1013 mlink->fform = FORM_NONE; in mlink_add()
1015 slot = ohash_qlookup(&mlinks, mlink->file); in mlink_add()
1017 ohash_insert(&mlinks, slot, mlink); in mlink_add()
1034 mlink->next = mpage->mlinks; in mlink_add()
1035 mpage->mlinks = mlink; in mlink_add()
1036 mlink->mpage = mpage; in mlink_add()
1040 mlink_free(struct mlink *mlink) in mlink_free() argument
1043 free(mlink->dsec); in mlink_free()
1044 free(mlink->arch); in mlink_free()
1045 free(mlink->name); in mlink_free()
1046 free(mlink->fsec); in mlink_free()
1047 free(mlink); in mlink_free()
1054 struct mlink *mlink; in mpages_free() local
1057 while ((mlink = mpage->mlinks) != NULL) { in mpages_free()
1058 mpage->mlinks = mlink->next; in mpages_free()
1059 mlink_free(mlink); in mpages_free()
1080 struct mlink **prev; in mlinks_undupe()
1081 struct mlink *mlink; in mlinks_undupe() local
1086 while (NULL != (mlink = *prev)) { in mlinks_undupe()
1087 if (FORM_CAT != mlink->dform) { in mlinks_undupe()
1091 (void)strlcpy(buf, mlink->file, sizeof(buf)); in mlinks_undupe()
1097 (void)strlcat(buf, mlink->dsec, sizeof(buf)); in mlinks_undupe()
1102 say(mlink->file, "Man source exists: %s", buf); in mlinks_undupe()
1105 *prev = mlink->next; in mlinks_undupe()
1106 mlink_free(mlink); in mlinks_undupe()
1114 mlink_check(struct mpage *mpage, struct mlink *mlink) in mlink_check() argument
1129 strcasecmp(mpage->sec, mlink->dsec)) in mlink_check()
1130 say(mlink->file, "Section \"%s\" manual in %s directory", in mlink_check()
1131 mpage->sec, mlink->dsec); in mlink_check()
1146 if (strcasecmp(mpage->arch, mlink->arch)) in mlink_check()
1147 say(mlink->file, "Architecture \"%s\" manual in " in mlink_check()
1148 "\"%s\" directory", mpage->arch, mlink->arch); in mlink_check()
1163 slot = ohash_qlookup(&names, mlink->name); in mlink_check()
1167 say(mlink->file, "Name missing in NAME section"); in mlink_check()
1181 struct mlink *mlink, *mlink_dest; in mpages_merge() local
1188 if ((mlink = mpage->mlinks) == NULL) in mpages_merge()
1197 if ((fd = mparse_open(mp, mlink->file)) == -1) { in mpages_merge()
1198 say(mlink->file, "&open"); in mpages_merge()
1206 if (mlink->dform != FORM_CAT || mlink->fform != FORM_CAT) { in mpages_merge()
1207 mparse_readfd(mp, fd, mlink->file); in mpages_merge()
1228 mlink->mpage = mpage_dest; in mpages_merge()
1240 dbadd_mlink(mlink); in mpages_merge()
1242 if (mlink->next == NULL) in mpages_merge()
1244 mlink = mlink->next; in mpages_merge()
1249 mlink->next = mlink_dest->next; in mpages_merge()
1269 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1277 mpage->sec = mandoc_strdup(mlink->dsec); in mpages_merge()
1278 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1279 mpage->title = mandoc_strdup(mlink->name); in mpages_merge()
1290 mpage->desc = mandoc_strdup(mlink->name); in mpages_merge()
1292 say(mlink->file, "No one-line description, " in mpages_merge()
1293 "using filename \"%s\"", mlink->name); in mpages_merge()
1296 for (mlink = mpage->mlinks; in mpages_merge()
1297 mlink != NULL; in mpages_merge()
1298 mlink = mlink->next) { in mpages_merge()
1299 putkey(mpage, mlink->name, NAME_FILE); in mpages_merge()
1301 mlink_check(mpage, mlink); in mpages_merge()
1316 struct mlink *mlink; in parse_cat() local
1322 mlink = mpage->mlinks; in parse_cat()
1323 stream = fd == -1 ? fopen(mlink->file, "r") : fdopen(fd, "r"); in parse_cat()
1328 say(mlink->file, "&fopen"); in parse_cat()
1346 if (warnings && *mlink->dsec != '\0' && in parse_cat()
1347 strcasecmp(mpage->sec, mlink->dsec)) in parse_cat()
1348 say(mlink->file, in parse_cat()
1350 mpage->sec, mlink->dsec); in parse_cat()
1403 say(mlink->file, "Cannot find NAME section"); in parse_cat()
1422 say(mlink->file, "No dash in title line, " in parse_cat()
2101 dbadd_mlink(const struct mlink *mlink) in dbadd_mlink() argument
2103 dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE); in dbadd_mlink()
2104 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec); in dbadd_mlink()
2105 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec); in dbadd_mlink()
2106 dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch); in dbadd_mlink()
2107 dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file); in dbadd_mlink()
2117 struct mlink *mlink; in dbadd() local
2125 mlink = mpage->mlinks; in dbadd()
2136 while (NULL != mlink) { in dbadd()
2137 fputs(mlink->name, stdout); in dbadd()
2138 if (NULL == mlink->next || in dbadd()
2139 strcmp(mlink->dsec, mlink->next->dsec) || in dbadd()
2140 strcmp(mlink->fsec, mlink->next->fsec) || in dbadd()
2141 strcmp(mlink->arch, mlink->next->arch)) { in dbadd()
2143 if ('\0' == *mlink->dsec) in dbadd()
2144 fputs(mlink->fsec, stdout); in dbadd()
2146 fputs(mlink->dsec, stdout); in dbadd()
2147 if ('\0' != *mlink->arch) in dbadd()
2148 printf("/%s", mlink->arch); in dbadd()
2151 mlink = mlink->next; in dbadd()
2152 if (NULL != mlink) in dbadd()
2160 say(mlink->file, "Adding to database"); in dbadd()
2166 *mpage->arch == '\0' ? mlink->arch : mpage->arch, in dbadd()
2167 cp, mlink->file, mpage->form); in dbadd()
2172 while (mlink != NULL) { in dbadd()
2173 dbadd_mlink(mlink); in dbadd()
2174 mlink = mlink->next; in dbadd()