From 10e835062da5f477ad46645c596cd8541f41db11 Mon Sep 17 00:00:00 2001 From: Danny Smith Date: Thu, 18 Apr 2002 10:35:41 +0000 Subject: * mingwex/dirent.c (opendir): Convert given pathname to absolute pathname. --- winsup/mingw/ChangeLog | 5 +++++ winsup/mingw/mingwex/dirent.c | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog index 8d1fdb065..c27951cfe 100644 --- a/winsup/mingw/ChangeLog +++ b/winsup/mingw/ChangeLog @@ -1,3 +1,8 @@ +2002-04-18 Pascal Obry + + * mingwex/dirent.c (opendir): Convert given pathname to + absolute pathname. + 2002-04-17 Danny Smith * Makefile.in (INCLUDES): Add "-iwithprefixbefore include" to diff --git a/winsup/mingw/mingwex/dirent.c b/winsup/mingw/mingwex/dirent.c index e3885f0ea..9eb1a502c 100644 --- a/winsup/mingw/mingwex/dirent.c +++ b/winsup/mingw/mingwex/dirent.c @@ -40,6 +40,7 @@ opendir (const char *szPath) { DIR *nd; unsigned int rc; + char szFullPath[MAX_PATH]; errno = 0; @@ -56,7 +57,7 @@ opendir (const char *szPath) } /* Attempt to determine if the given path really is a directory. */ - rc = GetFileAttributes(szPath); + rc = GetFileAttributes (szPath); if (rc == -1) { /* call GetLastError for more error info */ @@ -70,9 +71,12 @@ opendir (const char *szPath) return (DIR *) 0; } + /* Make an absolute pathname. */ + _fullpath (szFullPath, szPath, MAX_PATH); + /* Allocate enough space to store DIR structure and the complete * directory path given. */ - nd = (DIR *) malloc (sizeof (DIR) + strlen (szPath) + strlen (SLASH) + + nd = (DIR *) malloc (sizeof (DIR) + strlen (szFullPath) + strlen (SLASH) + strlen (SUFFIX)); if (!nd) @@ -83,7 +87,7 @@ opendir (const char *szPath) } /* Create the search expression. */ - strcpy (nd->dd_name, szPath); + strcpy (nd->dd_name, szFullPath); /* Add on a slash if the path does not end with one. */ if (nd->dd_name[0] != '\0' && -- cgit v1.2.3