* path.cc (dot_special_chars): New global variable.
(special_name): Make files ending in "." special. (fnunmunge): Allow encoded ".". (mount_item::fnmunge): Handle trailing ".".
This commit is contained in:
parent
a4666b3d1b
commit
7825ed016f
|
@ -1,3 +1,10 @@
|
||||||
|
2003-10-28 Igor Pechtchanski <pechtcha@cs.nyu.edu>
|
||||||
|
|
||||||
|
* path.cc (dot_special_chars): New global variable.
|
||||||
|
(special_name): Make files ending in "." special.
|
||||||
|
(fnunmunge): Allow encoded ".".
|
||||||
|
(mount_item::fnmunge): Handle trailing ".".
|
||||||
|
|
||||||
2003-10-28 Christopher Faylor <cgf@redhat.com>
|
2003-10-28 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* include/stdint.h: Duplicate below effort for rest of *64_*.
|
* include/stdint.h: Duplicate below effort for rest of *64_*.
|
||||||
|
|
|
@ -1141,7 +1141,8 @@ set_flags (unsigned *flags, unsigned val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char special_chars[] =
|
static char dot_special_chars[] =
|
||||||
|
"."
|
||||||
"\001" "\002" "\003" "\004" "\005" "\006" "\007" "\010"
|
"\001" "\002" "\003" "\004" "\005" "\006" "\007" "\010"
|
||||||
"\011" "\012" "\013" "\014" "\015" "\016" "\017" "\020"
|
"\011" "\012" "\013" "\014" "\015" "\016" "\017" "\020"
|
||||||
"\021" "\022" "\023" "\024" "\025" "\026" "\027" "\030"
|
"\021" "\022" "\023" "\024" "\025" "\026" "\027" "\030"
|
||||||
|
@ -1151,6 +1152,7 @@ static char special_chars[] =
|
||||||
"I" "J" "K" "L" "M" "N" "O" "P"
|
"I" "J" "K" "L" "M" "N" "O" "P"
|
||||||
"Q" "R" "S" "T" "U" "V" "W" "X"
|
"Q" "R" "S" "T" "U" "V" "W" "X"
|
||||||
"Y" "Z";
|
"Y" "Z";
|
||||||
|
static char *special_chars = dot_special_chars + 1;
|
||||||
static char special_introducers[] =
|
static char special_introducers[] =
|
||||||
"anpcl";
|
"anpcl";
|
||||||
|
|
||||||
|
@ -1178,6 +1180,11 @@ special_name (const char *s, int inc = 1)
|
||||||
if (strpbrk (s, special_chars))
|
if (strpbrk (s, special_chars))
|
||||||
return !strncasematch (s, "%2f", 3);
|
return !strncasematch (s, "%2f", 3);
|
||||||
|
|
||||||
|
if (strcasematch (s, ".") || strcasematch (s, ".."))
|
||||||
|
return false;
|
||||||
|
if (s[strlen (s)-1] == '.')
|
||||||
|
return true;
|
||||||
|
|
||||||
const char *p;
|
const char *p;
|
||||||
if (strcasematch (s, "conin$") || strcasematch (s, "conout$"))
|
if (strcasematch (s, "conin$") || strcasematch (s, "conout$"))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1212,7 +1219,7 @@ fnunmunge (char *dst, const char *src)
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*src)
|
while (*src)
|
||||||
if (!(c = special_char (src)))
|
if (!(c = special_char (src, dot_special_chars)))
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1243,6 +1250,12 @@ mount_item::fnmunge (char *dst, const char *src)
|
||||||
*d++ = *src++;
|
*d++ = *src++;
|
||||||
else
|
else
|
||||||
d += __small_sprintf (d, "%%%02x", (unsigned char) *src++);
|
d += __small_sprintf (d, "%%%02x", (unsigned char) *src++);
|
||||||
|
|
||||||
|
if (*--d != '.')
|
||||||
|
d++;
|
||||||
|
else
|
||||||
|
d += __small_sprintf (d, "%%%02x", (unsigned char) '.');
|
||||||
|
|
||||||
*d = *src;
|
*d = *src;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue