Lines Matching refs:mlink

91 	struct mlink	*mlinks;  /* singly linked list */
96 struct mlink { struct
102 struct mlink *next; /* singly linked list */ argument
122 static void dbadd_mlink(const struct mlink *mlink); argument
131 static void mlink_add(struct mlink *, const struct stat *);
132 static void mlink_check(struct mpage *, struct mlink *);
133 static void mlink_free(struct mlink *);
429 mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); in mandocdb()
503 offsetof(struct mlink, file)); in mandocdb()
577 struct mlink *mlink; in treescan() local
680 mlink = mandoc_calloc(1, sizeof(struct mlink)); in treescan()
681 if (strlcpy(mlink->file, path, in treescan()
682 sizeof(mlink->file)) >= in treescan()
683 sizeof(mlink->file)) { in treescan()
685 free(mlink); in treescan()
688 mlink->dform = dform; in treescan()
689 mlink->dsec = dsec; in treescan()
690 mlink->arch = arch; in treescan()
691 mlink->name = ff->fts_name; in treescan()
692 mlink->fsec = fsec; in treescan()
693 mlink->gzip = gzip; in treescan()
694 mlink_add(mlink, ff->fts_statp); in treescan()
785 struct mlink *mlink; in filescan() local
858 mlink = mandoc_calloc(1, sizeof(struct mlink)); in filescan()
859 mlink->dform = FORM_NONE; in filescan()
860 if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= in filescan()
861 sizeof(mlink->file)) { in filescan()
863 free(mlink); in filescan()
890 mlink->dform = FORM_SRC; in filescan()
891 mlink->dsec = start + 3; in filescan()
893 mlink->dform = FORM_CAT; in filescan()
894 mlink->dsec = start + 3; in filescan()
898 if (NULL != mlink->dsec && NULL != (p = strchr(start, '/'))) { in filescan()
900 mlink->arch = start; in filescan()
915 mlink->fsec = p; in filescan()
922 mlink->name = start; in filescan()
924 mlink->name = p + 1; in filescan()
927 mlink_add(mlink, &st); in filescan()
931 mlink_add(struct mlink *mlink, const struct stat *st) in mlink_add() argument
937 assert(NULL != mlink->file); in mlink_add()
939 mlink->dsec = mandoc_strdup(mlink->dsec ? mlink->dsec : ""); in mlink_add()
940 mlink->arch = mandoc_strdup(mlink->arch ? mlink->arch : ""); in mlink_add()
941 mlink->name = mandoc_strdup(mlink->name ? mlink->name : ""); in mlink_add()
942 mlink->fsec = mandoc_strdup(mlink->fsec ? mlink->fsec : ""); in mlink_add()
944 if ('0' == *mlink->fsec) { in mlink_add()
945 free(mlink->fsec); in mlink_add()
946 mlink->fsec = mandoc_strdup(mlink->dsec); in mlink_add()
947 mlink->fform = FORM_CAT; in mlink_add()
948 } else if ('1' <= *mlink->fsec && '9' >= *mlink->fsec) in mlink_add()
949 mlink->fform = FORM_SRC; in mlink_add()
951 mlink->fform = FORM_NONE; in mlink_add()
953 slot = ohash_qlookup(&mlinks, mlink->file); in mlink_add()
955 ohash_insert(&mlinks, slot, mlink); in mlink_add()
972 mlink->next = mpage->mlinks; in mlink_add()
973 mpage->mlinks = mlink; in mlink_add()
974 mlink->mpage = mpage; in mlink_add()
978 mlink_free(struct mlink *mlink) in mlink_free() argument
981 free(mlink->dsec); in mlink_free()
982 free(mlink->arch); in mlink_free()
983 free(mlink->name); in mlink_free()
984 free(mlink->fsec); in mlink_free()
985 free(mlink); in mlink_free()
992 struct mlink *mlink; in mpages_free() local
995 while ((mlink = mpage->mlinks) != NULL) { in mpages_free()
996 mpage->mlinks = mlink->next; in mpages_free()
997 mlink_free(mlink); in mpages_free()
1018 struct mlink **prev; in mlinks_undupe()
1019 struct mlink *mlink; in mlinks_undupe() local
1024 while (NULL != (mlink = *prev)) { in mlinks_undupe()
1025 if (FORM_CAT != mlink->dform) { in mlinks_undupe()
1029 (void)strlcpy(buf, mlink->file, sizeof(buf)); in mlinks_undupe()
1035 (void)strlcat(buf, mlink->dsec, sizeof(buf)); in mlinks_undupe()
1040 say(mlink->file, "Man source exists: %s", buf); in mlinks_undupe()
1043 *prev = mlink->next; in mlinks_undupe()
1044 mlink_free(mlink); in mlinks_undupe()
1052 mlink_check(struct mpage *mpage, struct mlink *mlink) in mlink_check() argument
1067 strcasecmp(mpage->sec, mlink->dsec)) in mlink_check()
1068 say(mlink->file, "Section \"%s\" manual in %s directory", in mlink_check()
1069 mpage->sec, mlink->dsec); in mlink_check()
1084 if (strcasecmp(mpage->arch, mlink->arch)) in mlink_check()
1085 say(mlink->file, "Architecture \"%s\" manual in " in mlink_check()
1086 "\"%s\" directory", mpage->arch, mlink->arch); in mlink_check()
1101 slot = ohash_qlookup(&names, mlink->name); in mlink_check()
1105 say(mlink->file, "Name missing in NAME section"); in mlink_check()
1119 struct mlink *mlink, *mlink_dest; in mpages_merge() local
1126 if ((mlink = mpage->mlinks) == NULL) in mpages_merge()
1135 if ((fd = mparse_open(mp, mlink->file)) == -1) { in mpages_merge()
1136 say(mlink->file, "&open"); in mpages_merge()
1144 if (mlink->dform != FORM_CAT || mlink->fform != FORM_CAT) { in mpages_merge()
1145 mparse_readfd(mp, fd, mlink->file); in mpages_merge()
1166 mlink->mpage = mpage_dest; in mpages_merge()
1178 dbadd_mlink(mlink); in mpages_merge()
1180 if (mlink->next == NULL) in mpages_merge()
1182 mlink = mlink->next; in mpages_merge()
1187 mlink->next = mlink_dest->next; in mpages_merge()
1205 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1214 mpage->sec = mandoc_strdup(mlink->dsec); in mpages_merge()
1215 mpage->arch = mandoc_strdup(mlink->arch); in mpages_merge()
1216 mpage->title = mandoc_strdup(mlink->name); in mpages_merge()
1223 mpage->desc = mandoc_strdup(mlink->name); in mpages_merge()
1225 say(mlink->file, "No one-line description, " in mpages_merge()
1226 "using filename \"%s\"", mlink->name); in mpages_merge()
1229 for (mlink = mpage->mlinks; in mpages_merge()
1230 mlink != NULL; in mpages_merge()
1231 mlink = mlink->next) { in mpages_merge()
1232 putkey(mpage, mlink->name, NAME_FILE); in mpages_merge()
1234 mlink_check(mpage, mlink); in mpages_merge()
1249 struct mlink *mlink; in parse_cat() local
1255 mlink = mpage->mlinks; in parse_cat()
1256 stream = fd == -1 ? fopen(mlink->file, "r") : fdopen(fd, "r"); in parse_cat()
1261 say(mlink->file, "&fopen"); in parse_cat()
1279 if (warnings && *mlink->dsec != '\0' && in parse_cat()
1280 strcasecmp(mpage->sec, mlink->dsec)) in parse_cat()
1281 say(mlink->file, in parse_cat()
1283 mpage->sec, mlink->dsec); in parse_cat()
1336 say(mlink->file, "Cannot find NAME section"); in parse_cat()
1355 say(mlink->file, "No dash in title line, " in parse_cat()
2019 dbadd_mlink(const struct mlink *mlink) in dbadd_mlink() argument
2021 dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE); in dbadd_mlink()
2022 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec); in dbadd_mlink()
2023 dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec); in dbadd_mlink()
2024 dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch); in dbadd_mlink()
2025 dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file); in dbadd_mlink()
2035 struct mlink *mlink; in dbadd() local
2043 mlink = mpage->mlinks; in dbadd()
2054 while (NULL != mlink) { in dbadd()
2055 fputs(mlink->name, stdout); in dbadd()
2056 if (NULL == mlink->next || in dbadd()
2057 strcmp(mlink->dsec, mlink->next->dsec) || in dbadd()
2058 strcmp(mlink->fsec, mlink->next->fsec) || in dbadd()
2059 strcmp(mlink->arch, mlink->next->arch)) { in dbadd()
2061 if ('\0' == *mlink->dsec) in dbadd()
2062 fputs(mlink->fsec, stdout); in dbadd()
2064 fputs(mlink->dsec, stdout); in dbadd()
2065 if ('\0' != *mlink->arch) in dbadd()
2066 printf("/%s", mlink->arch); in dbadd()
2069 mlink = mlink->next; in dbadd()
2070 if (NULL != mlink) in dbadd()
2078 say(mlink->file, "Adding to database"); in dbadd()
2084 *mpage->arch == '\0' ? mlink->arch : mpage->arch, in dbadd()
2085 cp, mlink->file, mpage->form); in dbadd()
2090 while (mlink != NULL) { in dbadd()
2091 dbadd_mlink(mlink); in dbadd()
2092 mlink = mlink->next; in dbadd()