Activity log for bug #1161425

Date Who What changed Old value New value Message
2013-03-28 14:34:22 Xu Zhen bug added bug
2013-03-28 14:34:22 Xu Zhen attachment added 03-save-data-per-user.patch https://bugs.launchpad.net/bugs/1161425/+attachment/3603647/+files/03-save-data-per-user.patch
2013-03-28 14:35:56 Xu Zhen description 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执行mkdir和cp,完全没必要额外开三个进程,而且还无法得知创建目录/复制文件是否成功。而且最后还用cmd.toAscii(),这样就无法应对路径中含有非ascii字符的情况 ========================== 我另外写了个03-save-data-per-user.patch,针对以上问题做了修改: 1&2、直接用内建的QDesktopServices类来获取数据目录,用这种方法取得的目录应该是$HOME/.local/share/data 3、用QDir和QFile提供的方法来创建目录/复制文件 chinese-calendar 0.7.6-0ubuntu4中的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执行mkdir和cp,完全没必要额外开三个进程,而且还无法得知创建目录/复制文件是否成功。而且最后还用cmd.toAscii(),这样就无法应对路径中含有非ascii字符的情况 ========================== 我另外写了个03-save-data-per-user.patch,针对以上问题做了修改: 1&2、直接用内建的QDesktopServices类来获取数据目录,用这种方法取得的目录应该是$HOME/.local/share/data 3、用QDir和QFile提供的方法来创建目录/复制文件
2013-03-31 13:48:17 Jack Yu chinese-calendar: importance Undecided High
2013-03-31 13:48:37 Jack Yu chinese-calendar: assignee Abel Liu (guiltyritter)
2013-04-01 00:53:45 Abel Liu chinese-calendar: status New In Progress
2013-04-01 01:21:39 Abel Liu chinese-calendar: milestone 0.7.6
2013-04-01 02:30:41 Abel Liu chinese-calendar: status In Progress Fix Committed
2013-04-18 01:36:33 Abel Liu chinese-calendar: status Fix Committed Fix Released