hoho,贡献一个弱程序
放到local_utl/下面,local_utl/Makefile.am里面加上
~bbs/etc/rcmdbrd文件是推荐版面列表,格式是每行一个英文版名。
本程序就是从这个文件里面获取列表产生xml
设想可以把这个文件的编辑放入系统档案编辑菜单,然后如果改完了就执行一下这个
弱程序。这样就可以由管理站务来干这个了...
/* 推荐版面 */
#include <stdio.h>
#include "bbs.h"
//#define NEED_CHINESE
#ifdef NEED_CHINESE
#include "urlencode.c"
#endif
int gen_rcmdbrd_xml()
{
FILE *fp;
FILE *fp1;
char buf[256];
char *ptr;
struct boardheader *bptr;
#ifdef NEED_CHINESE
char cname[256];
char xml_buf[256];
char url_buf[256];
#endif
if ((fp = fopen("xml/rcmdbrd.xml", "w")) == NULL)
return -1;
fprintf(fp, "<?xml version=\"1.0\" encoding=\"GBK\"?>\n");
fprintf(fp, "<RecommendBoards>\n");
if(( fp1=fopen("etc/rcmdbrd", "r"))!=NULL) {
while(fgets(buf, sizeof(buf), fp1)) {
if ((ptr = strstr(buf, "\n")) != NULL)
*ptr = '\0';
if (strlen(buf) == 0) continue;
bptr = getbcache(buf);
if (bptr == NULL) continue;
fprintf(fp, "<Board>\n<EnglishName>%s</EnglishName>\n", buf);
// 英文名就假设都是字母数字吧,我就不 encode 了... 麻烦~~~~
#ifdef NEED_CHINESE
strcpy(cname, bptr->title+13);
fprintf(fp, "<ChineseName>%s</ChineseName>\n",
encode_url(url_buf,encode_xml(xml_buf, cname, sizeof(xml_buf)),sizeof(url_buf)));
#endif
fprintf(fp, "</Board>\n");
}
fclose(fp1);
}
fprintf(fp, "</RecommendBoards>\n");
fclose(fp);
}
int main(int argc, char **argv)
{
chdir(BBSHOME);
resolve_boards();
gen_rcmdbrd_xml();
return 0;
}
【 在 widewolf (弓满月) 的大作中提到: 】
: 大部分搞定了,但是rcmdbrd.xml手工编辑以后好像不太对劲!
: 出现错误:
: Warning: /usr/local/bbs/xml/rcmdbrd.xml:1: in /var/www/html/mainpage.php
: ...................
--
修改:atppp FROM 128.12.155.*
FROM 128.12.155.*