发信人 hightman (明明鱼), 信区 BBS_plan
标 题 在2.70怎么本中修改使得活动看板读取note版精华
发信站 明鱼醉月风情站 (Wed Dec 8 19:17:07 1999), 转信
─────────────────────────────
这样可以用来像MAPLE一样的点歌!
(1)修改more.c如下
最开头
#define MAXMOVIE 11 /* add by hightman 懒得去bbs.h改MAXnettyLN */
struct ACSHM {
char data[ACBOARD_MAXLINE][ACBOARD_BUFSIZE];
/* ~~~本来是line,现在做data modify by hightman 991207 */
int movielines;
int movieitems; //增加的
time_t update;
};
int
NNread_init() /*这个函数修改较多 hightman */
{
struct fileheader fh;
FILE *fp;
char *ptr;
char buf[ACBOARD_BUFSIZE], buf2[ACBOARD_BUFSIZE + 10];
struct stat st;
int max = 0, i = 0, j = 0, x, y = 0;
int flag; /* flag = 1 即为过虑掉 "--\n" 以後之任何内容
*/
if (movieshm == NULL) {
movieshm = (void *) attach_shm("ACBOARD_SHMKEY", 4123, sizeo
f(*m
ovieshm));
max = 1; /* 初次使用 .. */
}
if (stat("boards/note/.DIGEST", &st) < 0) {
empty_movie(1);
return 1;
}
if (movieshm->update <= st.st_mtime && max == 0) {
empty_movie(2);
return 1;
} else if (movieshm->update > st.st_mtime && max == 1)
return 1;
for (i = 0; i < ACBOARD_MAXLINE; i++)
movieshm->data[i][0] = 0;
max = get_num_records("boards/note/.DIGEST", sizeof(fh));
i = 1;
while (i <= max && j < ACBOARD_MAXLINE) {
get_record("boards/note/.DIGEST", &fh, sizeof(fh), i++);
sprintf(buf, "boards/note/%s", fh.filename);
fp = fopen(buf, "r");
if (fp == NULL)
continue;
y++; /* record how many files have been append */
/* if title[0] is '$' mean this is no header file */
if (fh.title[0] != '$') {
for (x = 0; x < 4; x++)
fgets(buf, ACBOARD_BUFSIZE, fp);
} else {
for (x = 0; x < (int) (fh.title[1] - '0'); x++)
fgets(buf, ACBOARD_BUFSIZE, fp);
}
flag = 0;
for (x = 0; x < MAXMOVIE - 1; x++) {
if (fgets(buf, ACBOARD_BUFSIZE, fp) != 0) {
if (flag == 1 || strcmp(buf, "--\n") == 0) {
strcpy(buf2, "");
flag = (flag == 0) ? 1 : flag;
}
ptr = movieshm->data[j];
if (flag == 0) {
strcpy(buf2, "");
strcat(buf2, buf);
}
memcpy(ptr, buf2, sizeof(buf2));
} else {
/* no data handling */
strcpy(movieshm->data[j], "");
}
j++;
}
fclose(fp);
}
if (j == 0) {
empty_movie(3);
return 1;
}
movieshm->movielines = j;
movieshm->movieitems = y;
movieshm->update = time(0);
sprintf(buf, "活动看板更新, 共 %d 行, %d 部份.", j, y);
report(buf);
return 1;
}
//改完了
--
FROM 210.32.151.44