X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Frealpath.c;h=c962aac2c900406b4c1f32c489be42280b428d03;hp=94b4699d197978a4897e78d00fadb82612f279ba;hb=3062d425fac0473eb5aa2efc0bb002f6ce0cb028;hpb=c740b47fa11cbfe4416bbcfb991ad714f82610a8 diff --git a/src/realpath.c b/src/realpath.c index 94b4699..c962aac 100644 --- a/src/realpath.c +++ b/src/realpath.c @@ -137,7 +137,7 @@ static int cygwin_readlink (const char * name, char * buf, int size) { int n = readlink (name, buf, size); - if (n < 0) + if (n < 0 && errno == EINVAL) { /* The file may exist, but isn't a symlink. Try to find the right name. */ @@ -208,6 +208,9 @@ xrealpath (const char *path, char resolved_path []) if (abslen == 2 || abslen == 3) { strncpy (new_path, path, abslen); + /* Make sure drive letter is lowercased. */ + if (abslen == 3) + *new_path = tolower (*new_path); new_path += abslen; path += abslen; } @@ -299,7 +302,11 @@ xrealpath (const char *path, char resolved_path []) if (n < 0) { /* EINVAL means the file exists but isn't a symlink. */ - if (errno != EINVAL) +#ifdef CYGWIN + if (errno != EINVAL && errno != ENOENT) +#else + if (errno != EINVAL) +#endif return NULL; } else @@ -345,10 +352,5 @@ xrealpath (const char *path, char resolved_path []) /* Make sure it's null terminated. */ *new_path = '\0'; -#ifdef WIN32_NATIVE - if (ABS_LENGTH (resolved_path) == 3) - /* Lowercase drive letter. */ - *resolved_path = tolower (*resolved_path); -#endif return resolved_path; }