rtorrent 目前滿新的 bt client。比起 bitornado 有更好的 ncurse ui 和 UTF-8 support。但在 ncurse UI 方面卻不能顯示正確的寬字元。
檢查一下 source code ,發現作者已經有wide character support,只是註解掉。所以說,我只是把他顯示的地方做點小修改,就正常了。
diff 檔如下:
diff -Nur rtorrent-0.6.2/debian/control rtorrent-0.6.2-mod/debian/control
--- rtorrent-0.6.2/debian/control 2006-10-27 11:08:40.000000000 +0800
+++ rtorrent-0.6.2-mod/debian/control 2006-10-27 11:01:44.686785750 +0800
@@ -3,7 +3,7 @@
Priority: extra
Maintainer: Jose Luis Rivas
Uploaders: Arnaud Fontaine
-Build-Depends: debhelper (>= 5.0.37.2), libtorrent9-dev(>= 0.10.1), libsigc++-2.0-dev, libcurl3-openssl-dev, libncurses5-dev, bc
+Build-Depends: debhelper (>= 5.0.37.2), libtorrent9-dev(>= 0.10.1), libsigc++-2.0-dev, libcurl3-openssl-dev, libncursesw5-dev, bc
Standards-Version: 3.7.2
Package: rtorrent
diff -Nur rtorrent-0.6.2/src/display/window_file_list.cc rtorrent-0.6.2-mod/src/display/window_file_list.cc
--- rtorrent-0.6.2/src/display/window_file_list.cc 2006-10-27 11:08:40.000000000 +0800
+++ rtorrent-0.6.2-mod/src/display/window_file_list.cc 2006-10-27 11:00:45.171066250 +0800
@@ -55,6 +55,7 @@
}
+
std::wstring
hack_wstring(const std::string& src) {
size_t length = ::mbstowcs(NULL, src.c_str(), src.size());
@@ -70,7 +71,6 @@
return dest;
}
-
void
WindowFileList::redraw() {
m_slotSchedule(this, (cachedTime + rak::timer::from_seconds(10)).round_seconds());
@@ -100,10 +100,10 @@
while (range.first != range.second) {
torrent::File e = fl.get(range.first);
- std::wstring path = e.path_str();
+ std::wstring path = hack_wstring(e.path_str());
if (path.length() <= 50)
- path = path + std::string(50 - path.length(), ' ');
+ path = path + std::wstring(50 - path.length(), ' ');
else
path = path.substr(0, 50);
@@ -127,7 +127,7 @@
break;
};
- m_canvas->print(0, pos, "%c %s %6.1f %s %3d %9s",
+ m_canvas->print(0, pos, "%c %ls %6.1f %s %3d %9s",
range.first == *m_focus ? '*' : ' ',
path.c_str(),
(double)e.size_bytes() / (double)(1 << 20),
請新建立 deb 檔案後,就能正常使用了。該檔案已送 wishlist,希望 maintainer 能加入該功能
昨天寫了一整天的 sysfs 的 code,因為我一直想要把這個東西搞清楚。但過程真的滿辛苦的,因為文件並不是很多,所以我一氣之下,決定直接看 sysfs.h, kobject.h, device.h, sysdev.h 來找 sysfs 提供的 API。
我 trace 的程式是 cpufreq,推薦一下這個程式,裡面有完整的 kobject initial、如何套到一個 sys_device 上、ktype的宣告等。裡面也有一些不錯的寫程式技巧,減低了重覆宣告 kyte 的 attribute 和 ops(這些技巧在kernel code中常出現,想必是不錯的撰寫風格),想了解 sysfs 的話,我想 cpufreq 算是不錯的範例格式。
果然皇天不負苦心人,更清楚了解 kobject, ktype, kset, sub-system, attribute 的用處。
至於動態建立 node 並非 sysfs 的工作(still depends on him), 是由 hotplug 接收 kset 中的hotplug ops 來傳送信號並傳送給 udev 來建立 device node的(這又是一篇懸疑小說了),以後有空再寫。
昨天晚上把 proc 的檔案加入 proc_write 的處理,可以傳值進去並回應給我正確的資料。
今天把它改寫成 seqfile 的格式,seqfile 還滿有趣的,現在可也以seqfile的read, write 都可以用了,明天來改寫成 sysfs 的格式,順便當作 presentation 時的範例好了。
昨天假日快點把進度追上,好不容易把 dpkg.po 翻完了,剩下的進度,夭壽,aptitude還這麼多,今天會送出 dpkg 的,回家之後再把 debconf 和 apt 快點搞定。
應該趕得上 22 號才是,加油。
sylpheed是我以前最常用的 E-Mail Client,好處就是快又功能完整,雖然無法直譯 HTML,但可以另外fork x-browser 來流灠,gnupu的搭配也很齊全。
main window
composing
現在新版本已經改成了 gtk2 的toolkit,字型上的設定更方便了,現在多語系就更完整了。
最近我買了一個無線滑鼠,無線天貂
會用到無線滑鼠是因為我的KVM只支援ps2,而現在用的滑鼠不能用轉接頭接PS2,索性就買了一隻新滑鼠吧。
這是我第一次使用無線的,該款要用二顆3號電池,使得整體變得有點重,只不過沒關係,第一隻就算是嘗鮮吧,畢竟450而已,就不用挑惕太多了。
目前正快樂的使用中。
由於公司的firewall只允許通過 isa server 連線,所以我很多軟體就不能用了,像 drivel, gnome-post...以及我最愛用的 IRC...
現在總算裝好了 openvpn,在公司透過 openvpn 連線到家中的 nat 再連線出去上 irc 和 blog,所以我現在就能用 drivel 寫 blog 了,真是棒阿!
特別寫一篇來慶祝一下。 :-)
Etch 裡面的 Nvidia 的driver 似乎很久沒有修正了,不能像之前直接 aptitude install nvidia-kernel-xxx。
在急著想用 nvidia driver 的關係,我只好到 nvidia.com 下戴,我安裝的方式如下:
./xxx --x-module-path=/usr/lib/xorg/modules
但這樣以後就得不斷地自已maintain 這個 pkg 的更新...
因為讀書會的關係,大部份都是閱讀Understanding Linux Kernel 3.e,只是閱讀歸閱讀,其實還滿無聊的,所以就來學習一下 kernel Thread 的相關機制。
User space的thread果然不能和Kernel thread 混為一談,寫著寫著,thread就停不下來,死佔著CPU。感謝Kernel developer,利用 wait queue 和 wait_event*, wake_up*的機制,解決了在寫 thread 的麻煩。(kernel 2.6)
最近會持續折解 LVM 和 device mapper 的東西,目前 LVM 的主要 .c 已經 trace 完了,明天要來了解 lvm 如何包成 dm 的 structure 然後送給 dm 做處理的。
另外,要來準備一下 sysfs 的 present,老闆希望下次 meeting 能報告這個新機制,我也會提一下 hotplug, udev, hal, d-bus 等架構,說不定 team 裡面的人會做出不可思議的產品喔 :D
嘿嘿,最近研究的東西真是過癮,列一下 TODO
1. 折解 LVM: functions(追完了), data structure(目前正在看的)
2. 折解 device mapper kernel driver, 這個東西真的很有趣,未來的目標是能垮過這一層,直接access 到實體層的 hd,這就要好好折解 dm, md 如何包裝 bio 了
3. Understanding Linux kernel 3.e ch16, accessing file
4. sysfs 的 present
額外想做的:
1. 介紹 user-mode Linux, xen,讓team的同事方便測試driver的functionality
2. systemtap:好物,昨天聽完意猶未竟,下星期要在自已的debian裝看看,拿來trace kernel space 的資料最好用了。
最後,祝大家中秋節快樂!