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