version 1.34, 2011/12/16 08:04:34 |
version 1.35, 2011/12/16 12:06:35 |
Line 752 pg_show(const struct req *req, char *path) |
|
Line 752 pg_show(const struct req *req, char *path) |
|
size_t sz; |
size_t sz; |
char *sub; |
char *sub; |
char file[MAXPATHLEN]; |
char file[MAXPATHLEN]; |
const char *fn, *cp; |
const char *cp; |
int rc; |
int rc, catm; |
unsigned int vol, rec, mr; |
unsigned int vol, rec, mr; |
DB *idx; |
DB *idx; |
DBT key, val; |
DBT key, val; |
Line 824 pg_show(const struct req *req, char *path) |
|
Line 824 pg_show(const struct req *req, char *path) |
|
if (0 != (rc = (*idx->get)(idx, &key, &val, 0))) { |
if (0 != (rc = (*idx->get)(idx, &key, &val, 0))) { |
rc < 0 ? resp_baddb() : resp_error400(); |
rc < 0 ? resp_baddb() : resp_error400(); |
goto out; |
goto out; |
} |
} else if (0 == val.size) { |
|
resp_baddb(); |
|
goto out; |
|
} |
|
|
cp = (char *)val.data; |
cp = (char *)val.data; |
|
catm = 'c' == *cp++; |
|
|
if (NULL == (fn = memchr(cp, '\0', val.size))) |
if (NULL == memchr(cp, '\0', val.size - 1)) |
resp_baddb(); |
resp_baddb(); |
else if (++fn - cp >= (int)val.size) |
|
resp_baddb(); |
|
else if (NULL == memchr(fn, '\0', val.size - (fn - cp))) |
|
resp_baddb(); |
|
else { |
else { |
file[(int)sz] = '\0'; |
file[(int)sz] = '\0'; |
strlcat(file, "/", MAXPATHLEN); |
strlcat(file, "/", MAXPATHLEN); |
strlcat(file, fn, MAXPATHLEN); |
strlcat(file, cp, MAXPATHLEN); |
if (0 == strcmp(cp, "cat")) |
if (catm) |
catman(req, file); |
catman(req, file); |
else |
else |
format(req, file); |
format(req, file); |