[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00274] Re: wildcard expansion problem



 しらいです。

In Message-Id <86hdu9v6l5.knu@iDaemons.org>
        "Akinori MUSHA" <knu@iDaemons.org>さんwrites:
>  /usr\/* と "/usr/"* はうまく行きましたが、 '/usr/'* は展開
> されませんでした。もう少し。

 んー、普通の meta character と違って「/」は '' の中でも有
効なんでしたね。そもそも厳密には shell の meta character で
はないし。
 path delimiter character が path delimiter としての意味を
失うケースって、MS-DOS 環境の漢字 2byte 目だけでしたっけ?他
にないなら対処可能ですが。MS-DOS 版では「\」は meta character
にしてないし。

 という訳で [FDclone-users:00266] に対する patch の形で。

---- Cut Here ----
diff -u old/pathname.c new/pathname.c
--- old/pathname.c	Sun May 23 02:04:49 2004
+++ new/pathname.c	Sun May 23 02:14:10 2004
@@ -1340,9 +1340,9 @@

	if (wp -> fixed.len) addstrbuf(&(wp -> path), _SS_, 1);

-	for (i = w = 0; wp -> s[i]; i++) {
+	for (i = w = 0; wp -> s[i] && wp -> s[i] != _SC_; i++) {
		pc = parsechar(&(wp -> s[i]), -1,
-			_SC_, 0, &(wp -> quote), NULL);
+			'\0', 0, &(wp -> quote), NULL);
		if (pc == PC_OPQUOTE || pc == PC_CLQUOTE) {
			if (!(wp -> flags & EA_STRIPQ))
				addstrbuf(&(wp -> fixed), &(wp -> s[i]), 1);
@@ -1368,7 +1368,6 @@
			}
			i++;
		}
-		else if (pc == _SC_) break;
		else if (pc == PC_NORMAL && strchr("?*[", wp -> s[i])) {
			if (w >= 0 && wp -> s[i] == '*') w++;
			else w = -1;
---- Cut Here ----

                                               しらい たかし