FluffOS 的 MySQL 问题求帮忙@@
本帖最后由 fanzeyi 于 2011-12-5 05:51 PM 编辑嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照 http://wiki.desolation.org/MUD_D ... _to_MudOS.2FFluffOS 这里.. 嗯
然后在这里 http://lpmuds.net/smf/index.php?topic=634.0 找到了一个样例程序.. 然后随便下了个lima的 lib 写了个mysql命令.. 调用 db_connect 嗯..
先是一直出 Database security violation attempted 错误.. 然后查源码查到 packages/db.c 的 valid_database 函数..
if (ret && (ret == (svalue_t *)-1 || (ret->type == T_STRING || (ret->type == T_NUMBER && ret->u.number))))
return ret;
error("Database security violation attempted\n");// 这一行
}
嗯.. 不太熟悉 MySQL 的 C @.@ 求解..
还有个问题就是, 在 db.c 文件中的 f_db_connect 的定义是 void f_db_connect (void), 但是在LPC中调用的时候是 db_connect(server, db, username)
通过 grep 找到:
$ grep -lr "db_connect" .
./ChangeLog.alpha
./efun_defs.c
./obj/interpret.o
./obj/db.o
./obj/lex.o
./driver
./efunctions.h
./packages/db.c
./packages/packages.a
./packages/db_spec.c
./driver.old
./opc.h
./efun_protos.h
./func_spec.cpp
这些文件都看了下.. 应该是一个从LPC函数向C函数映射的东西.. 但是纠结于参数表..
还有就是用gdb调试的时候找到一个变量 sp .. 没有找到定义的地方.. @@ 这几个问题 求解
switch (st_num_arg) {
case 4: type = (sp - (args++))->u.number;
case 3: user = (sp - (args++))->u.string;
case 2: database = (sp - (args++))->u.string;
case 1: host = (sp - (args++))->u.string;
}
以及就是 没有找到哪里是用来提供密码的 ..
=========================================
update:
(gdb) p st_num_arg
$6 = 3
(gdb) p user
$7 = 0x8149554 ""
(gdb) p host
$8 = 0x8149554 ""
(gdb) p database
$9 = 0x8149554 ""
刚刚发贴的时候感觉这个 sp 就是LPC调用时候的参数表。。 st_num_arg 表示调用时的参数数量.. 很奇怪在gdb里面发现我传进去的参数全都变成 空字符串 了.. 继续研究
=========================
继续 update ...
好吧我明白为什么我的参数表都是 "" 了.. 我调用错函数了... 函数名太像不能怪我 TAT.. 还是在纠结 password .. 准备自己改下 db_connect 这个函数.. 是饭团吗? 我是roth, 最近超级忙,很久没有上gtalk了.
在钻研FluffOS啊,有空我看看呵,先mark一下. 回复 2# rothsdad
是啊@@ 我只是无聊玩玩 不算钻研... 回复 4# huacuoh
@@ 我的目标是当 wiz 不是机器人@@ 嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照这里.. 嗯
然后在这里找到了一 ...
fanzeyi 发表于 2011-12-5 05:28 PM http://pkuxkx.com/forum/images/common/back.gif
你的lib里是否实现valid_database这个函数了。 回复 6# jason
这个是使用 FluffOS 里面的 valid_database 函数吧.. 我给 error 那一行注释掉之后就能向后执行了不过后面就是段错误了.. @@ valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数负责返回用户名和密码,也负责做权限检查。比如只有admin才可以用数据库。
不实现这个函数,mysql是不能用的 valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数 ...
jason 发表于 2011-12-5 06:05 PM http://pkuxkx.com/forum/images/common/back.gif
明白了!! 我去实现一个去.. 感谢~
页:
[1]