为何hal无法探测出NTFS/FAT分区的中文标签?
时间:2009-10-06
来源:互联网
请问怎么解决?
作者: ashmer 发布时间: 2009-10-06
作者: ashmer
我使用的是KDE 4.3 。在 kubuntu/freebsd 中,都可以探测出我的NTFS/FAT分区的中文标签,可是在archlinux 中却探测不出中文标签,只是显示"5555"之类的数字。
请问怎么解决? |
freebsd 下可能使用src/hal-0.5.13/hald/freebsd/probing/probe-volume.c
作者: 沙漠之子 发布时间: 2009-10-06
作者: 沙漠之子
在archlinux 使用src/hal-0.5.13/hald/linux/probing/probe-volume.c
freebsd 下可能使用src/hal-0.5.13/hald/freebsd/probing/probe-volume.c |
不清楚是哪里的配置问题。
作者: ashmer 发布时间: 2009-10-06
作者: ashmer
与hal的代码无关吧?同学的kubuntu中也是能够正确检测出中文标签的。
不清楚是哪里的配置问题。 |
作者: 沙漠之子 发布时间: 2009-10-06
作者: jarryson 发布时间: 2009-10-06
难道还跟src/hal-0.5.13/debian/下的东东有关??
还有在hal在ubuntu的依赖信息中有
freebsd-utils
文件来自
https://launchpad.net/ubuntu/+source/hal
作者: 沙漠之子 发布时间: 2009-10-06
作者: luyaotang 发布时间: 2009-10-06
作者: luyaotang
同样是这样的问题。记得1个多月前是可以的,以前是可以探测出如“DATA_数据2"之类的,但现在都是“DATA_551”之类的标签了。各位可以用#lshal来查一下你们的hal探测的中文标签正常不?
|
作者: 沙漠之子 发布时间: 2009-10-06
char *volume_label;
/* we need to be sure for a utf8 valid label, because dbus accept only utf8 valid strings */
volume_label = strdup_valid_utf8 (label);
if( volume_label != NULL ) {
libhal_changeset_set_property_string (cs, "volume.label", volume_label);
HAL_DEBUG(("volume.label = '%s'", volume_label));
if (volume_label[0] != '\0') {
libhal_changeset_set_property_string (cs, "info.product", volume_label);
g_free(volume_label);
return;
}
g_free(volume_label);
}
}
strdup_valid_utf8 (const char *str)
{
char *endchar;
char *newstr;
unsigned int fixes;
if (str == NULL)
return NULL;
newstr = g_strdup (str);
fixes = 0;
while (!g_utf8_validate (newstr, -1, (const char **) &endchar)) {
*endchar = '_';
++fixes;
}
/* If we had to fix more than 20% of the characters, give up */
if (fixes > 0 && g_utf8_strlen (newstr, -1) / fixes < 5) {
g_free (newstr);
newstr = g_strdup("");
}
return newstr;
}
作者: 沙漠之子 发布时间: 2009-10-30
/src/hal-0.5.13/hald/linux/blockdev.c
if (volume_label) {
hal_device_property_set_string (d, "volume.label", volume_label);
if (volume_label[0] != '\0') {
hal_device_property_set_string (d, "info.product", volume_label);
}
g_free(volume_label);
}
volume_label = g_convert (hotplug_event->sysfs.fslabel, 255, "UTF-8", "GBK", NULL, NULL, NULL);
初步实现 中文标签 但是不完整
比如我的u盘fat16的卷标:沙漠之子
最后显示为:沙漠之73
$ -> lshal |grep 沙漠 info.product = '沙漠之73' (string) volume.label = '沙漠之73' (string) volume.mount_point = '/media/沙漠之73' (string)
有能力的大大们也来帮忙研究一下亚
作者: 沙漠之子 发布时间: 2009-10-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28