[samba-jp:20322] ファイル生成時刻の扱いについて
KAWASUMI Junji
touchan @ papa-net.bpl.jp
2008年 8月 12日 (火) 01:05:34 JST
川澄@愛知県知多郡在住 と申します。
8月9日のOSC名古屋で太田さんに質問させていただいた、FFS2あるい
はUFS2等のファイル生成時刻をサポートしたファイルシステム上にお
いてsambaの実装はどうなっているのかと質問したものです。
ものはためしで、クイックハックでパッチを作ってみました。
Windowsでプロパティを見てみたらバッチリイイ感じでしたので投稿
します。
NetBSD版も同様にやってみるつもりですが、でもよくよく考えてみる
と、これは samba本体というより、FS依存なので各ディストリビュー
ションに投げた方がいいのかなとも思い始めました。
そもそも struct stat の st_birthtime なんてposixにあるのか??
と微妙な気持ちになってきました。
samba側でサポートすべきかOS側のsambaビルド時のパッチに組み入れ
るべきか、判断がつきません。
賢者の方々のご意見を頂きたく。
環境:OS FreeBSD-6.3 / samba-3.0.28.1
パッチ内容 (ktermからの切り貼りなのでタブがスペース化されてます。
======================= ちょきちょきちょき ===========================
--- samba-3.0.28/source/lib/time.c 2007-11-15 12:15:03.000000000 +0900
+++ ../work.new/samba-3.0.28/source/lib/time.c 2008-08-12 00:42:36.000000000 +0900
@@ -823,30 +823,36 @@
}
/****************************************************************************
Return the best approximation to a 'create time' under UNIX from a stat
structure.
****************************************************************************/
time_t get_create_time(const SMB_STRUCT_STAT *st,BOOL fake_dirs)
{
time_t ret, ret1;
if(S_ISDIR(st->st_mode) && fake_dirs) {
return (time_t)315493200L; /* 1/1/1980 */
}
+/* create time patch start for FreeBSD */
+ ret = st->st_birthtime;
+ if (ret > (time_t)0) {
+ return ret;
+ }
+/* patch end */
ret = MIN(st->st_ctime, st->st_mtime);
ret1 = MIN(ret, st->st_atime);
if(ret1 != (time_t)0) {
return ret1;
}
/*
* One of ctime, mtime or atime was zero (probably atime).
* Just return MIN(ctime, mtime).
*/
return ret;
}
struct timespec get_create_timespec(const SMB_STRUCT_STAT *st,BOOL fake_dirs)
======================= ちょきちょきちょき ===========================
以上です
--
-- 川澄 淳治
-- KAWASUMI Junji <touchan @ papa-net.bpl.jp>
-- 愛知県知多郡在住 (JR武豊線沿線)
-- 〜 みんなで幸せになろうよ。。。〜
--
samba-jp メーリングリストの案内