2013-01-25 Eli Zaretskii <eliz@gnu.org>
+ * w32.c (readlink): Support DBCS codepages.
+
* w32notify.c (Fw32notify_add_watch): Doc fix. (Bug#13540)
2013-01-25 Dmitry Antipov <dmantipov@yandex.ru>
else
{
size_t size_to_copy = buf_size;
- BYTE *p = lname;
+ BYTE *p = lname, *p2;
BYTE *pend = p + lname_len;
+ int dbcs_p = max_filename_mbslen () > 1;
/* Normalize like dostounix_filename does, but we don't
want to assume that lname is null-terminated. */
- if (*p && p[1] == ':' && *p >= 'A' && *p <= 'Z')
- *p += 'a' - 'A';
+ if (dbcs_p)
+ p2 = CharNextExA (file_name_codepage, p, 0);
+ else
+ p2 = p + 1;
+ if (*p && *p2 == ':' && *p >= 'A' && *p <= 'Z')
+ {
+ *p += 'a' - 'A';
+ p += 2;
+ }
while (p <= pend)
{
if (*p == '\\')
*p = '/';
- ++p;
+ if (dbcs_p)
+ {
+ p = CharNextExA (file_name_codepage, p, 0);
+ /* CharNextExA doesn't advance at null character. */
+ if (!*p)
+ break;
+ }
+ else
+ ++p;
}
/* Testing for null-terminated LNAME is paranoia:
WideCharToMultiByte should always return a