Tcl Source Code

Artifact [6809929440]
Login

Artifact 6809929440d2ca37cb479a7596ec2273e177ea42:

Attachment "403001.patch" to ticket [403001ffff] added by hobbs 2001-03-24 08:57:43. Also attachment "403001.patch" to ticket [403001ffff] added by hobbs 2001-03-24 08:57:10. Also attachment "403001.patch" to ticket [403001ffff] added by hobbs 2001-03-24 08:56:06.
Index: win/tclWinFile.c
===================================================================
RCS file: /cvsroot/tcl/tcl/win/tclWinFile.c,v
retrieving revision 1.9
diff -b -c -r1.9 tclWinFile.c
*** win/tclWinFile.c	2000/10/27 01:58:00	1.9
--- win/tclWinFile.c	2001/03/24 01:29:17
***************
*** 795,802 ****
--- 795,806 ----
  {
      Tcl_DString ds;
      TCHAR *nativePath;
+ #if OLD_API
      WIN32_FIND_DATAT data;
      HANDLE handle;
+ #else
+     WIN32_FILE_ATTRIBUTE_DATA data;
+ #endif
      DWORD attr;
      WCHAR nativeFullPath[MAX_PATH];
      TCHAR *nativePart;
***************
*** 808,813 ****
--- 812,819 ----
       * call to FindFirstFile() will expand them, matching some other file.
       */
  
+ 
+ #if OLD_API
      if (strpbrk(path, "?*") != NULL) {
  	Tcl_SetErrno(ENOENT);
  	return -1;
***************
*** 838,843 ****
--- 844,857 ----
      } else {
  	FindClose(handle);
      }
+ #else
+     nativePath = Tcl_WinUtfToTChar(path, -1, &ds);
+     if(GetFileAttributesExW((unsigned short *)nativePath,
+                           GetFileExInfoStandard,&data) != TRUE) {
+       Tcl_SetErrno(ENOENT);
+       return -1;
+     }
+ #endif
  
      (*tclWinProcs->getFullPathNameProc)(nativePath, MAX_PATH, nativeFullPath,
  	    &nativePart);
***************
*** 884,890 ****
--- 898,908 ----
      }
      Tcl_DStringFree(&ds);
  
+ #if OLD_API
      attr = data.a.dwFileAttributes;
+ #else
+     attr = data.dwFileAttributes;
+ #endif
      mode  = (attr & FILE_ATTRIBUTE_DIRECTORY) ? S_IFDIR | S_IEXEC : S_IFREG;
      mode |= (attr & FILE_ATTRIBUTE_READONLY) ? S_IREAD : S_IREAD | S_IWRITE;
      p = strrchr(path, '.');
***************
*** 912,921 ****
--- 930,946 ----
      statPtr->st_uid	= 0;
      statPtr->st_gid	= 0;
      statPtr->st_rdev	= (dev_t) dev;
+ #if OLD_API
      statPtr->st_size	= data.a.nFileSizeLow;
      statPtr->st_atime	= ToCTime(data.a.ftLastAccessTime);
      statPtr->st_mtime	= ToCTime(data.a.ftLastWriteTime);
      statPtr->st_ctime	= ToCTime(data.a.ftCreationTime);
+ #else
+     statPtr->st_size  = data.nFileSizeLow;
+     statPtr->st_atime = ToCTime(data.ftLastAccessTime);
+     statPtr->st_mtime = ToCTime(data.ftLastWriteTime);
+     statPtr->st_ctime = ToCTime(data.ftCreationTime);
+ #endif
      return 0;
  }