放到家目录下".程序名"的做法已经是不被推荐的了。根据Linux Standard Base Desktop Specification中Base Directory Spec一节的要求,应该按照XDG Base Directory Specification(http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html),将数据放到$XDG_DATA_HOME(默认$HOME/.local/share),配置放到 $XDG_CONFIG_HOME(默认$HOME/.config)。
03-save- data-per- user.diff 存在以下问题:
1、获取用户家目录的方式
现在的做法是从环境变量中取得用 户名,再判断是否是root, 再选择/root/ .chinese- calendar或/ home/用户名/ .chinese- calendar作为存放数据库 的目录
这么做有个大问题, 用户家目录实际上是在/ etc/passwd中指定, 非root用户不见得就是/ home/用户名/ 。而且,从环境变量中取得数据的 方法也大有问题。 environment. filter( "USER") .at(0). split(" =").at( 1),如果用户有其他包含" USER"字串的环境变量( 甚至只要变量值中含有USER) ,就可能导致取得错误的目录
2、数据库文件存放的目录
放到家目录下" .程序名"的做法已经是不被推荐 的了。根据Linux Standard Base Desktop Specification中Base Directory Spec一节的要求,应该按照XDG Base Directory Specification(http:// standards. freedesktop. org/basedir- spec/basedir- spec-0. 6.html),将数据放到$ XDG_DATA_ HOME(默认$ HOME/.local/ share), 配置放到 $XDG_CONFIG_ HOME(默认$ HOME/.config) 。
3、复制数据库的问题
现在是通过system( )来调用shell执行mkdi r和cp,完全没必要额外开三个 进程,而且还无法得知创建目录/ 复制文件是否成功。 而且最后还用cmd. toAscii( ),这样就无法应对路径中含有非 ascii字符的情况
======= ======= ======= =====
我另外写了个03- save-data- per-user. patch,针对以上问题做了修 改: topServices类来获取 数据目录,用这种方法取得的目录 应该是$HOME/ .local/ share/data 的方法来创建目录/ 复制文件
1&2、直接用内建的QDesk
3、用QDir和QFile提供