From 2dd8f27a97bf6dd1634076ae8d9605b2b894768b Mon Sep 17 00:00:00 2001 From: corinna Date: Mon, 31 Jul 2006 07:31:55 +0000 Subject: [PATCH] * cygpath.cc (get_long_name): Fallback to get_long_path_name_w32impl. --- winsup/utils/ChangeLog | 4 ++++ winsup/utils/cygpath.cc | 15 +++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 80b1bfd97d..c818a03d9a 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,7 @@ +2006-07-30 Ilya Bobir + + * cygpath.cc (get_long_name): Fallback to get_long_path_name_w32impl. + 2006-07-27 Corinna Vinschen * cygpath.c (get_long_name): Cover the case that GetLongPathName diff --git a/winsup/utils/cygpath.cc b/winsup/utils/cygpath.cc index 52282a615c..96738b1862 100644 --- a/winsup/utils/cygpath.cc +++ b/winsup/utils/cygpath.cc @@ -241,15 +241,22 @@ get_long_name (const char *filename, DWORD& len) len = GetLongPathName (filename, buf, MAX_PATH); if (len == 0) { - if (GetLastError () == ERROR_INVALID_PARAMETER) + DWORD err = GetLastError (); + + if (err == ERROR_INVALID_PARAMETER) { fprintf (stderr, "%s: cannot create long name of %s\n", prog_name, filename); exit (2); } - buf[0] = '\0'; - strncat (buf, filename, MAX_PATH - 1); - len = strlen (buf); + else if (err == ERROR_FILE_NOT_FOUND) + len = get_long_path_name_w32impl (filename, buf, MAX_PATH); + else + { + buf[0] = '\0'; + strncat (buf, filename, MAX_PATH - 1); + len = strlen (buf); + } } sbuf = (char *) malloc (len + 1); if (!sbuf) -- 2.11.0