[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00275] Re: a problem with recursive copy
- Subject: [FDclone-users:00275] Re: a problem with recursive copy
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 23 May 2004 03:21:41 +0900
しらいです。
In Message-Id <86fz9tv667.knu@iDaemons.org>
"Akinori MUSHA" <knu@iDaemons.org>さんwrites:
> そして bar にカーソルを合わせて c を押し、「/tmp/」と入力します。
> 「/tmp」だと問題ないのですが、「/tmp/」だと、コピー中に
>
> bar/baz: No such file or directory
>
> とエラーが出て処理が中断してしまいます。
directory 構成は余り関係なくて、destination path 指定時に
「/」を suffix すると常に生じる支障のようです。
trace してみると「/tmp/bar/baz」ではなく「/tmp/ar/baz」を
作ろうとしていますね。「tmp」の後ろの「/」が「bar」の先頭を
上書きしたといった感じ。
脳書きはともかく patch です。
---- Cut Here ----
diff -u old/apply.c new/apply.c
--- old/apply.c Tue Jan 6 10:12:40 2004
+++ new/apply.c Sun May 23 03:13:26 2004
@@ -526,7 +526,9 @@
break;
}
if (destdir) free(destdir);
- destdir = strdup2(&(dest[strlen(destpath) + 1]));
+ destdir = &(dest[strlen(destpath)]);
+ while (*destdir == _SC_) destdir++;
+ destdir = strdup2(destdir);
return(0);
}
---- Cut Here ----
> 末尾に / を付けるのはまったく正しい記法だし、既存のディレクトリを
> 補完したときも末尾に / が付くので、これは対処の必要があると思います。
system call 的には path delimiter の「/」は幾つ重複してい
ても構わなくて、特に指し示す path が file ではなく directory
の時には任意の「/」を suffix 出来るという仕様が多いと思いま
す。
確か POSIX 的にもそれで正しかったかと思いますが、この仕様
が通用しない環境がどこかにあって、FDclone ではそういう環境を
考慮した実装にしてあった記憶があります。
それで、pathname を評価する際には重複する「/」を uniq して
る処理が入ってるんですが、suffix の「/」に対する処理の方は甘
かったみたいですね。
しらい たかし