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 *);
434 mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); in mandocdb()
508 offsetof(struct mlink, file)); in mandocdb()
582 struct mlink *mlink; in treescan() local
687 mlink = mandoc_calloc(1, sizeof(struct mlink)); in treescan()
688 if (strlcpy(mlink->file, path, in treescan()
689 sizeof(mlink->file)) >= in treescan()
690 sizeof(mlink->file)) { in treescan()
692 free(mlink); in treescan()
695 mlink->dform = dform; in treescan()
696 mlink->dsec = dsec; in treescan()
697 mlink->arch = arch; in treescan()
698 mlink->name = ff->fts_name; in treescan()
699 mlink->fsec = fsec; in treescan()
700 mlink->gzip = gzip; in treescan()
701 mlink_add(mlink, ff->fts_statp); in treescan()
791 struct mlink *mlink; in filescan() local
913 mlink = mandoc_calloc(1, sizeof(struct mlink)); in filescan()
914 mlink->dform = FORM_NONE; in filescan()
915 if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= in filescan()
916 sizeof(mlink->file)) { in filescan()
918 free(mlink); in filescan()
946 mlink->dform = FORM_SRC; in filescan()
947 mlink->dsec = start + 3; in filescan()
949 mlink->dform = FORM_CAT; in filescan()
950 mlink->dsec = start + 3; in filescan()
954 if (mlink->dsec != NULL && (p = strchr(start, '/')) != NULL) { in filescan()
956 mlink->arch = start; in filescan()
971 mlink->fsec = p; in filescan()
978 mlink->name = start; in filescan()
980 mlink->name = p + 1; in filescan()
983 mlink_add(mlink, &st); in filescan()
988 mlink_add(struct mlink *mlink, const struct stat *st) in mlink_add() argument
994 assert(NULL != mlink->file); in mlink_add()
996 mlink->dsec = mandoc_strdup(mlink->dsec ? mlink->dsec : ""); in mlink_add()
997 mlink->arch = mandoc_strdup(mlink->arch ? mlink->arch : ""); in mlink_add()
998 mlink->name = mandoc_strdup(mlink->name ? mlink->name : ""); in mlink_add()
999 mlink->fsec = mandoc_strdup(mlink->fsec ? mlink->fsec : ""); in mlink_add()
1001 if ('0' == *mlink->fsec) { in mlink_add()
1002 free(mlink->fsec); in mlink_add()
1003 mlink->fsec = mandoc_strdup(mlink->dsec); in mlink_add()
1004 mlink->fform = FORM_CAT; in mlink_add()
1005 } else if ('1' <= *mlink->fsec && '9' >= *mlink->fsec) in mlink_add()
1006 mlink->fform = FORM_SRC; in mlink_add()
1008 mlink->fform = FORM_NONE; in mlink_add()
1010 slot = ohash_qlookup(&mlinks, mlink->file); in mlink_add()
1012 ohash_insert(&mlinks, slot, mlink); 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()
1035 mlink_free(struct mlink *mlink) in mlink_free() argument
1038 free(mlink->dsec); in mlink_free()
1039 free(mlink->arch); in mlink_free()
1040 free(mlink->name); in mlink_free()
1041 free(mlink->fsec); in mlink_free()
1042 free(mlink); in mlink_free()
1049 struct mlink *mlink; in mpages_free() local
1052 while ((mlink = mpage->mlinks) != NULL) { in mpages_free()
1053 mpage->mlinks = mlink->next; in mpages_free()
1054 mlink_free(mlink); in mpages_free()
1075 struct mlink **prev; in mlinks_undupe()
1076 struct mlink *mlink; in mlinks_undupe() local
1081 while (NULL != (mlink = *prev)) { in mlinks_undupe()
1082 if (FORM_CAT != mlink->dform) { in mlinks_undupe()
1086 (void)strlcpy(buf, mlink->file, sizeof(buf)); in mlinks_undupe()
1092 (void)strlcat(buf, mlink->dsec, sizeof(buf)); in mlinks_undupe()
1097 say(mlink->file, "Man source exists: %s", buf); in mlinks_undupe()
1100 *prev = mlink->next; in mlinks_undupe()
1101 mlink_free(mlink); in mlinks_undupe()
1109 mlink_check(struct mpage *mpage, struct mlink *mlink) in mlink_check() argument
1124 strcasecmp(mpage->sec, mlink->dsec)) in mlink_check()
1125 say(mlink->file, "Section \"%s\" manual in %s directory", in mlink_check()
1126 mpage->sec, mlink->dsec); in mlink_check()
1141 if (strcasecmp(mpage->arch, mlink->arch)) in mlink_check()
1142 say(mlink->file, "Architecture \"%s\" manual in " in mlink_check()
1143 "\"%s\" directory", mpage->arch, mlink->arch); in mlink_check()
1158 slot = ohash_qlookup(&names, mlink->name); in mlink_check()
1162 say(mlink->file, "Name missing in NAME section"); in mlink_check()
1176 struct mlink *mlink, *mlink_dest; in mpages_merge() local
1183 if ((mlink = mpage->mlinks) == NULL) in mpages_merge()
1192 if ((fd = mparse_open(mp, mlink->file)) == -1) { in mpages_merge()
1193 say(mlink->file, "&open"); in mpages_merge()
1201 if (mlink->dform != FORM_CAT || mlink->fform != FORM_CAT) { in mpages_merge()
1202 mparse_readfd(mp, fd, mlink->file); in mpages_merge()
1223 mlink->mpage = mpage_dest; in mpages_merge()
1235 dbadd_mlink(mlink); in mpages_merge()
1237 if (mlink->next == NULL) in mpages_merge()
1239 mlink = mlink->next; in mpages_merge()
1244 mlink->next = mlink_dest->next; in mpages_merge()
1264 mpage->arch = mandoc_strdup(mlink->arch); 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()
1285 mpage->desc = mandoc_strdup(mlink->name); in mpages_merge()
1287 say(mlink->file, "No one-line description, " in mpages_merge()
1288 "using filename \"%s\"", mlink->name); in mpages_merge()
1291 for (mlink = mpage->mlinks; in mpages_merge()
1292 mlink != NULL; in mpages_merge()
1293 mlink = mlink->next) { in mpages_merge()
1294 putkey(mpage, mlink->name, NAME_FILE); in mpages_merge()
1296 mlink_check(mpage, mlink); in mpages_merge()
1311 struct mlink *mlink; in parse_cat() local
1317 mlink = mpage->mlinks; in parse_cat()
1318 stream = fd == -1 ? fopen(mlink->file, "r") : fdopen(fd, "r"); in parse_cat()
1323 say(mlink->file, "&fopen"); in parse_cat()
1341 if (warnings && *mlink->dsec != '\0' && in parse_cat()
1342 strcasecmp(mpage->sec, mlink->dsec)) in parse_cat()
1343 say(mlink->file, in parse_cat()
1345 mpage->sec, mlink->dsec); in parse_cat()
1398 say(mlink->file, "Cannot find NAME section"); in parse_cat()
1417 say(mlink->file, "No dash in title line, " in parse_cat()
2081 dbadd_mlink(const struct mlink *mlink) in dbadd_mlink() argument
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()
2097 struct mlink *mlink; in dbadd() local
2105 mlink = mpage->mlinks; in dbadd()
2116 while (NULL != mlink) { in dbadd()
2117 fputs(mlink->name, stdout); in dbadd()
2118 if (NULL == mlink->next || in dbadd()
2119 strcmp(mlink->dsec, mlink->next->dsec) || in dbadd()
2120 strcmp(mlink->fsec, mlink->next->fsec) || in dbadd()
2121 strcmp(mlink->arch, mlink->next->arch)) { in dbadd()
2123 if ('\0' == *mlink->dsec) in dbadd()
2124 fputs(mlink->fsec, stdout); in dbadd()
2126 fputs(mlink->dsec, stdout); in dbadd()
2127 if ('\0' != *mlink->arch) in dbadd()
2128 printf("/%s", mlink->arch); in dbadd()
2131 mlink = mlink->next; in dbadd()
2132 if (NULL != mlink) in dbadd()
2140 say(mlink->file, "Adding to database"); in dbadd()
2146 *mpage->arch == '\0' ? mlink->arch : mpage->arch, in dbadd()
2147 cp, mlink->file, mpage->form); in dbadd()
2152 while (mlink != NULL) { in dbadd()
2153 dbadd_mlink(mlink); in dbadd()
2154 mlink = mlink->next; in dbadd()