- 主题:[smthbbs] 升级转换数据出错的同志们...
contrib/smth11to12/README 有 wisi 同学写的文档,升级之前一定要好好阅读。
特别是要核对转换程序里面原系统数据结构的定义是否和你的老系统是一样的。
援引 README ...
从老的代码的 src/struct.h 找到 struct userec 的定义,替换掉cnv_passwd_define2.c 当中 struct userec1 的定义;从 smthbbs-1.2 代码的src/struct.h 找到 struct userec的定义,替换掉 cnv_passwd_define2.c 当中struct userec2 的定义。
从老的代码的 src/struct.h 找到 struct boardheader 的定义,替换掉 cnv_bh_3.c 当中 struct boardheader2 的定义;从 smthbbs-1.2 代码的src/struct.h 找到 struct boardheader 的定义,替换掉 cnv_bh_3.c 当中struct boardheader3 的定义。
参考老代码的 site.h 中 fileheader 修改 local_utl/strip_fh.c 中的fileheader_v1_2 结构,一定要保证二者完全一致,修改 fileheader_v1_2 时,数组的长度建议使用数字,而不是使用宏。
2.6 启动并测试 以上转换程序执行时会使用一些共享内存,请先把它们清除掉。
这些地方特别要注意...
--
FROM 128.12.155.*
恩。我就是这样做的。
但是现在是变得整个bbs目录下面都是乱码了啊?
版面是转成功了。
可以通过注册一个帐号看到。
但是原来帐号全部失效了啊。
【 在 atppp (Big Mouse) 的大作中提到: 】
: contrib/smth11to12/README 有 wisi 同学写的文档,升级之前一定要好好阅读。
: 特别是要核对转换程序里面原系统数据结构的定义是否和你的老系统是一样的。
: 援引 README ...
: ...................
--
FROM 202.197.75.*
什么叫都是乱码?
你的问题看起来是转换账号的程序里面原来的用户结构定义有问题。
还有,清共享内存了吗
【 在 marly (玛丽) 的大作中提到: 】
: 恩。我就是这样做的。
: 但是现在是变得整个bbs目录下面都是乱码了啊?
: 版面是转成功了。
: ...................
--
FROM 128.12.155.*
在老代码中
struct userec { /* Structure used to hold information in */
char userid[IDLEN + 2]; /* PASSFILE */
char flags; /*一些标志,戒网,版面排序之类的*/
unsigned char title; /*用户级别*/
time_t firstlogin;
char lasthost[16];
unsigned int numlogins;
unsigned int numposts;
#ifdef CONV_PASS
char passwd[OLDPASSLEN];
char unused_padding[2];
#endif
char username[NAMELEN];
unsigned int club_read_rights[MAXCLUB>>5];
unsigned int club_write_rights[MAXCLUB>>5];
unsigned char md5passwd[MD5PASSLEN];
unsigned userlevel;
time_t lastlogin;
time_t stay;
int signature;
unsigned int userdefine;
time_t notedate;
int noteline;
int notemode;
time_t exittime;
/* 生日数据转移到 userdata 结构中 */
unsigned int usedspace; /* used space of user's mailbox, in bytes */
#ifdef HAVE_USERMONEY
int money;
int score;
char unused[20];
#endif
};
新代码中
struct userec { /* Structure used to hold information in */
char userid[IDLEN + 2]; /* PASSFILE */
char flags; /*一些标志,戒网,版面排序之类的 */
unsigned char title; /*用户级别 */
time_t firstlogin;
char lasthost[16];
unsigned int numlogins;
unsigned int numposts;
#ifdef CONV_PASS
char passwd[OLDPASSLEN];
char unused_padding[2];
#endif
char username[NAMELEN];
unsigned int club_read_rights[MAXCLUB >> 5];
unsigned int club_write_rights[MAXCLUB >> 5];
unsigned char md5passwd[MD5PASSLEN];
unsigned userlevel;
time_t lastlogin;
time_t stay;
int signature;
unsigned int userdefine[2];
time_t notedate;
int noteline;
int notemode;
time_t exittime;
/*
* 生日数据转移到 userdata 结构中
*/
unsigned int usedspace; /* used space of user's mailbox, in bytes */
#ifdef HAVE_USERMONEY
int money;
int score;
char unused[20];
#endif
};
那是不是在cnv_passwd_define2.cz这个文件中的两个结构体中改成一样呢?
【 在 atppp (Big Mouse) 的大作中提到: 】
: contrib/smth11to12/README 有 wisi 同学写的文档,升级之前一定要好好阅读。
: 特别是要核对转换程序里面原系统数据结构的定义是否和你的老系统是一样的。
: 援引 README ...
: ...................
--
FROM 202.197.75.*
共享内存是清除了。
看来以前和现在的有点差别~!
【 在 atppp (Big Mouse) 的大作中提到: 】
: 什么叫都是乱码?
: 你的问题看起来是转换账号的程序里面原来的用户结构定义有问题。
: 还有,清共享内存了吗
--
FROM 202.197.75.*
主机上面/home/bbs目录乱码是吧?只能用备份先回复/home/bbs了。
那是转化.PASSWDS出错了。特别检查一下,新老代码的#define HAVE_WFORM的定义一样不一样。
【 在 marly (玛丽) 的大作中提到: 】
: 恩。我就是这样做的。
: 但是现在是变得整个bbs目录下面都是乱码了啊?
: 版面是转成功了。
: ...................
--
FROM 202.232.87.*
是一样的。都是#define HAVE_WFORUM 1
这个是没有问题的。
现在是恢复以后再转化试试~!
【 在 wisi (誓心) 的大作中提到: 】
: 主机上面/home/bbs目录乱码是吧?只能用备份先回复/home/bbs了。
: 那是转化.PASSWDS出错了。特别检查一下,新老代码的#define HAVE_WFORM的定义一样不一样。
--
FROM 202.197.75.*
修改struct userec1
和老代码的struct userec一样,如果你原先没有定义#define HAVE_WFORM 1
那么,务必要把struct userec1当中这部分删除。
确认你原先有没有#define HAVE_WFORM 1 比较简单的方法是用vi -b .PASSWDS然后用
:%!xxd直接看看,或者拉到windowz的机器上用UE打开这个二进制文件看看有没有这些money score之类的东东,慢慢数数字节数吧:)
#ifdef HAVE_USERMONEY
int money;
int score;
char unused[20];
#endif
【 在 marly (玛丽) 的大作中提到: 】
: 在老代码中
: struct userec { /* Structure used to hold information in */
: char userid[IDLEN + 2]; /* PASSFILE */
: ...................
--
FROM 202.232.87.*
其实可以看 .PASSWD 文件的大小,然后看总账号数和 sizeof struct userec,
而且后面两个可能只要知道一个就够了,看能不能整除,哈哈...
【 在 wisi (誓心) 的大作中提到: 】
: 修改struct userec1
: 和老代码的struct userec一样,如果你原先没有定义#define HAVE_WFORM 1
: 那么,务必要把struct userec1当中这部分删除。
: ...................
--
FROM 128.12.155.*
hehe /哈哈。
好了/
终于升级成功。
数据转换成功~!
在次深深的感谢atppp和wisi的大力支持~!
和各网友的宝贵意见~!。。。,
再次感谢~·》》》。
【 在 atppp (Big Mouse) 的大作中提到: 】
: 其实可以看 .PASSWD 文件的大小,然后看总账号数和 sizeof struct userec,
: 而且后面两个可能只要知道一个就够了,看能不能整除,哈哈...
--
FROM 202.197.75.*