FTPでファイル有無調査に関して
CFtpFileFindで特定のフォルダのファイル有無の調査をしていた所、
SunOS下のフォルダのファイル有無調査で失敗してしまいました。
ちなみに、Linuxで行うとうまくいきます。
「SunOS 5.10」が対応されていないのか、使い方が悪いのか、解りません。
ご教授をお願いします。
以下のようにロジックを組んでいます。
bRet = clFind.FindFile(_T(SunOS/ccc/));
bRet = clFind.FindNextFile();
strTmp = clFind.GetFilePath();
strTmpの中身
SunOS/ccc/11・ 15:00 ファイル名
->本来はが「SunOS/ccc/ファイル名」が正しいのですが・・・
<環境>
Microsoft Visual Studio 2008
Windows7
サーバ:SunOS 5.10
それは仕様というか制約事項というか・・・
ftp のプロトコル上 ftpd (サーバ側) の返事フォーマットは厳密に定まっていない。
テストに使った linux (上の ftpd) に対する ls -l の返事と
同上 SunOS 5.10 (上の ftpd) に対する ls -l の返事と
形式が違っているはず。
(妄想と憶測するに前者は全部英語、後者は一部に日本語が混じっている)
(ないしは情報の出力順や、出力されるカラム位置が違う)
CFtpFindFile は ftpd の返した「文字列」を適宜解釈して、その文字列から
ファイル名や日付を取り出すので、知らない形式を返す ftpd に対しては誤動作する。
SunOS 5.10 の ftpd の設定を変えて CFtpFileFind が知っている形式を返させるか
SunOS 5.10 の ftpd を CFtpFileFind が知っている形式を返すものに入れ替えるか
その辺の対処が必要。 Windows 側をいくらいじっても無駄。
申し訳ありません。
FTPにはあまり詳しくなく、「ftpd の設定を変更する」というのは
具体的にどのような事をすればいいですか?
それは SunOS のマニュアル参照・・・ってことになるのかな。
ウチにあるのは HPUX / Linux だけなので解説できないよ、と。
まずは ftpd の具体的ファイル名を調べて man ftpd (なり man proftpd なり) から。
SunOS の root の人とっつかまえて聞いてみる方が解決が早いかも。
っつうか、俺のコメントは Linux の ftpd の応答と SunOS の ftpd の応答が違う
ことを前提として書いているわけだが、本当に違うかどうか確認した?
ftp 上で ls -l したときの応答が同じなのに CFtpFileFind が値を返さないのなら
原因は違うところにあるわけで。
調べてみました。
LinuxとSunOSでは、「ls -l」の応答は異なるようです。
ftpdについて、manで調べてみます。