version 1.99, 2014/04/23 16:33:37 |
version 1.100, 2014/04/23 19:08:52 |
|
|
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; |
|
|
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. |
|
|
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; |
|
|
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; |