[Lha-users] Re: file と ./file が別ファイル扱いされる

Back to archive index

Koji Arai jca02****@gmail*****
2007年 2月 21日 (水) 13:04:25 JST


新井です。

07/02/21 に OKUMURA N. Shin-ya<oku.n****@dream*****> さんは書きました:
> おくむら@練馬です。
> > もし修正するとしたら、lhadd.c の append_it の中か、あるいは
> > 呼び出し直前で filev 先頭の「./」を取り除くのが安直でいいの
> > かなと考えています(考えてるだけ)。
>
> このアイディアはちょっとナイーブ過ぎますね。
>
> 「./././file」が救えませんから、もう少しスマートな方法にして
> あげないといけなさそうです...

安直に以下だとどうでしょうか?(あまり試してません)

diff -ru lha-1.14i-ac20061008/src/header.c lha/src/header.c
--- lha-1.14i-ac20061008/src/header.c	2006-10-08 23:20:14.000000000 +0900
+++ lha/src/header.c	2007-02-21 12:56:36.690953600 +0900
@@ -1184,17 +1184,21 @@
     char *first = path;
     char *ptr = 0;

+    /* just a ".." */
     if (strcmp(first, "..") == 0) {
         warning("Removing leading `..' from member name.");
         return first+1;         /* change to "." */
     }

-    if (strstr(first, "..") == 0)
+    if (strstr(first, ".") == 0)
         return first;

     while (path && *path) {
-
-        if (strcmp(path, "..") == 0)
+        if (strcmp(path, ".") == 0)
+            ptr = path = path+1;
+        else if (strncmp(path, "./", 2) == 0)
+            ptr = path = path+2;
+        else if (strcmp(path, "..") == 0)
             ptr = path = path+2;
         else if (strncmp(path, "../", 3) == 0)
             ptr = path = path+3;

-- 
Koji Arai



Lha-users メーリングリストの案内
Back to archive index