你怎么修改支持分散目录的?需要转换 .DIR 和版目录结构,这个工作做了吗?
最主要的修改是 site.h 和 site.c 文件。
#define GET_POSTFILENAME(x,y) get_postfilename(x,y,1)
#define GET_MAILFILENAME(x,y) get_postfilename(x,y,0)
#define VALID_FILENAME(x) valid_filename(x,1)
#define POSTFILE_BASENAME(x) (((char *)(x))+2)
#define MAILFILE_BASENAME(x) (x)
/**
* 精华区相关函数。
*/
int ann_get_postfilename(char *filename, struct fileheader *fileinfo, MENU * pm)
{
char fname[PATHLEN];
char *ip;
if (fileinfo->filename[1] == '/')
strcpy(filename, fileinfo->filename + 2);
else
strcpy(filename, fileinfo->filename);
sprintf(fname, "%s/%s", pm->path, filename);
ip = &filename[strlen(filename) - 1];
while (dashf(fname)) {
if (*ip == 'Z')
ip++, *ip = 'A', *(ip + 1) = '\0';
else
(*ip)++;
sprintf(fname, "%s/%s", pm->path, filename);
}
return 0;
}
/**
* 文章相关函数。
*/
time_t get_posttime(const struct fileheader * fileinfo)
{
if (fileinfo->filename[1] == '/')
return fileinfo->posttime;
else
return atoi(fileinfo->filename + 2);
}
void set_posttime(struct fileheader *fileinfo)
{
if (fileinfo->filename[1] == '/')
fileinfo->posttime = atoi(fileinfo->filename + 4);
}
void set_posttime2(struct fileheader *dest, struct fileheader *src)
{
dest->posttime = src->posttime;
}
/**
* 版面相关。
*/
void build_board_structure(const char *board)
{
int i;
int len;
char buf[STRLEN];
len = strlen(alphabet);
for (i = 0; i < len; i++) {
snprintf(buf, sizeof(buf), "boards/%s/%c", board, alphabet[i]);
mkdir(buf, 0755);
}
return;
}
【 在 lotusin (跟着水木一条道走到黑) 的大作中提到: 】
: 用了分散目录,版名下一堆a~Z
: web方式无法修改或者删除文章,提示为“匆匆过客不能修改文章,请先登录! ”、
: “错误的版名或者文件名”。
: ...................
--
FROM 221.216.159.*