version 1.142, 2014/04/23 16:34:50 |
version 1.144, 2014/04/23 21:06:41 |
Line 471 main(int argc, char *argv[]) |
|
Line 471 main(int argc, char *argv[]) |
|
* manpath_parse() wants to do it. |
* manpath_parse() wants to do it. |
*/ |
*/ |
if (argc > 0) { |
if (argc > 0) { |
dirs.paths = mandoc_calloc(argc, |
dirs.paths = mandoc_reallocarray(NULL, |
sizeof(char *)); |
argc, sizeof(char *)); |
dirs.sz = (size_t)argc; |
dirs.sz = (size_t)argc; |
for (i = 0; i < argc; i++) |
for (i = 0; i < argc; i++) |
dirs.paths[i] = mandoc_strdup(argv[i]); |
dirs.paths[i] = mandoc_strdup(argv[i]); |
|
|
fsec[-1] = '\0'; |
fsec[-1] = '\0'; |
|
|
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
strlcpy(mlink->file, path, sizeof(mlink->file)); |
if (strlcpy(mlink->file, path, |
|
sizeof(mlink->file)) >= |
|
sizeof(mlink->file)) { |
|
say(path, "Filename too long"); |
|
free(mlink); |
|
continue; |
|
} |
mlink->dform = dform; |
mlink->dform = dform; |
mlink->dsec = dsec; |
mlink->dsec = dsec; |
mlink->arch = arch; |
mlink->arch = arch; |
Line 819 filescan(const char *file) |
|
Line 825 filescan(const char *file) |
|
say(file, "&stat"); |
say(file, "&stat"); |
return; |
return; |
} |
} |
strlcpy(buf, file, sizeof(buf)); |
if (strlcpy(buf, file, sizeof(buf)) >= sizeof(buf)) { |
|
say(file, "Filename too long"); |
|
return; |
|
} |
start = strstr(buf, basedir) == buf ? |
start = strstr(buf, basedir) == buf ? |
buf + strlen(basedir) + 1 : buf; |
buf + strlen(basedir) + 1 : buf; |
} |
} |
|
|
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
strlcpy(mlink->file, start, sizeof(mlink->file)); |
if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= |
|
sizeof(mlink->file)) { |
|
say(start, "Filename too long"); |
|
return; |
|
} |
|
|
/* |
/* |
* First try to guess our directory structure. |
* First try to guess our directory structure. |
Line 973 mlinks_undupe(struct mpage *mpage) |
|
Line 986 mlinks_undupe(struct mpage *mpage) |
|
mpage->form = FORM_NONE; |
mpage->form = FORM_NONE; |
goto nextlink; |
goto nextlink; |
} |
} |
if (strlcpy(buf, mlink->file, PATH_MAX) >= PATH_MAX) { |
(void)strlcpy(buf, mlink->file, sizeof(buf)); |
if (warnings) |
|
say(mlink->file, "Filename too long"); |
|
goto nextlink; |
|
} |
|
bufp = strstr(buf, "cat"); |
bufp = strstr(buf, "cat"); |
assert(NULL != bufp); |
assert(NULL != bufp); |
memcpy(bufp, "man", 3); |
memcpy(bufp, "man", 3); |
if (NULL != (bufp = strrchr(buf, '.'))) |
if (NULL != (bufp = strrchr(buf, '.'))) |
*++bufp = '\0'; |
*++bufp = '\0'; |
strlcat(buf, mlink->dsec, PATH_MAX); |
(void)strlcat(buf, mlink->dsec, sizeof(buf)); |
if (NULL == ohash_find(&mlinks, |
if (NULL == ohash_find(&mlinks, |
ohash_qlookup(&mlinks, buf))) |
ohash_qlookup(&mlinks, buf))) |
goto nextlink; |
goto nextlink; |
Line 1775 putkeys(const struct mpage *mpage, |
|
Line 1784 putkeys(const struct mpage *mpage, |
|
s->mask |= v; |
s->mask |= v; |
return; |
return; |
} else if (NULL == s) { |
} else if (NULL == s) { |
s = mandoc_calloc(sizeof(struct str) + sz + 1, 1); |
s = mandoc_calloc(1, sizeof(struct str) + sz + 1); |
memcpy(s->key, cp, sz); |
memcpy(s->key, cp, sz); |
ohash_insert(htab, slot, s); |
ohash_insert(htab, slot, s); |
} |
} |
Line 2216 dbopen(int real) |
|
Line 2225 dbopen(int real) |
|
return(0); |
return(0); |
} |
} |
|
|
if (strlcpy(tempfilename, "/tmp/mandocdb.XXXXXX", |
(void)strlcpy(tempfilename, "/tmp/mandocdb.XXXXXX", |
sizeof(tempfilename)) >= sizeof(tempfilename)) { |
sizeof(tempfilename)); |
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say("", "/tmp/mandocdb.XXXXXX: Filename too long"); |
|
return(0); |
|
} |
|
if (NULL == mkdtemp(tempfilename)) { |
if (NULL == mkdtemp(tempfilename)) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |
say("", "&%s", tempfilename); |
say("", "&%s", tempfilename); |
return(0); |
return(0); |
} |
} |
if (strlcat(tempfilename, "/" MANDOC_DB, |
(void)strlcat(tempfilename, "/" MANDOC_DB, |
sizeof(tempfilename)) >= sizeof(tempfilename)) { |
sizeof(tempfilename)); |
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say("", "%s/" MANDOC_DB ": Filename too long", |
|
tempfilename); |
|
return(0); |
|
} |
|
rc = sqlite3_open_v2(tempfilename, &db, ofl, NULL); |
rc = sqlite3_open_v2(tempfilename, &db, ofl, NULL); |
if (SQLITE_OK != rc) { |
if (SQLITE_OK != rc) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
|
hash_halloc(size_t sz, void *arg) |
hash_halloc(size_t sz, void *arg) |
{ |
{ |
|
|
return(mandoc_calloc(sz, 1)); |
return(mandoc_calloc(1, sz)); |
} |
} |
|
|
static void * |
static void * |