[llvm-commits] CVS: llvm/lib/System/Win32/Path.inc Signals.inc

Reid Spencer rspencer at reidspencer.com
Sat Apr 7 13:55:06 PDT 2007


On Sat, 2007-04-07 at 15:47 -0500, Jeff Cohen wrote:
> 
> Changes in directory llvm/lib/System/Win32:
> 
> Path.inc updated: 1.64 -> 1.65
> Signals.inc updated: 1.23 -> 1.24
> ---
> Log message:
> 
> Unbreak VC++ build.

Thanks for cleaning up after me, Jeff. 

Reid.

> 
> ---
> Diffs of the changes:  (+32 -32)
> 
>  Path.inc    |   53 +++++++++++++++++++++++++----------------------------
>  Signals.inc |   11 +++++++----
>  2 files changed, 32 insertions(+), 32 deletions(-)
> 
> 
> Index: llvm/lib/System/Win32/Path.inc
> diff -u llvm/lib/System/Win32/Path.inc:1.64 llvm/lib/System/Win32/Path.inc:1.65
> --- llvm/lib/System/Win32/Path.inc:1.64	Sat Apr  7 13:52:17 2007
> +++ llvm/lib/System/Win32/Path.inc	Sat Apr  7 15:47:27 2007
> @@ -368,11 +368,15 @@
>  
>  bool
>  Path::getDirectoryContents(std::set<Path>& result, std::string* ErrMsg) const {
> -  const FileStatus *Status = getFileStatus(false, ErrMsg);
> -  if (!Status)
> +  WIN32_FILE_ATTRIBUTE_DATA fi;
> +  if (!GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi)) {
> +    MakeErrMsg(ErrMsg, path + ": can't get status of file");
>      return true;
> -  if (!Status->isDir) {
> -    MakeErrMsg(ErrMsg, path + ": not a directory");
> +  }
> +    
> +  if (!(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
> +    if (ErrMsg)
> +      *ErrMsg = path + ": not a directory";
>      return true;
>    }
>  
> @@ -565,28 +569,11 @@
>  
>  bool
>  Path::eraseFromDisk(bool remove_contents, std::string *ErrStr) const {
> -  const FileStatus *Status = getFileStatus(false, ErrStr);
> -  if (!Status)
> -    return false;
> +  WIN32_FILE_ATTRIBUTE_DATA fi;
> +  if (!GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi))
> +    return true;
>      
> -  if (Status->isFile) {
> -    DWORD attr = GetFileAttributes(path.c_str());
> -
> -    // If it doesn't exist, we're done.
> -    if (attr == INVALID_FILE_ATTRIBUTES)
> -      return false;
> -
> -    // Read-only files cannot be deleted on Windows.  Must remove the read-only
> -    // attribute first.
> -    if (attr & FILE_ATTRIBUTE_READONLY) {
> -      if (!SetFileAttributes(path.c_str(), attr & ~FILE_ATTRIBUTE_READONLY))
> -        return MakeErrMsg(ErrStr, path + ": Can't destroy file: ");
> -    }
> -
> -    if (!DeleteFile(path.c_str()))
> -      return MakeErrMsg(ErrStr, path + ": Can't destroy file: ");
> -    return false;
> -  } else if (Status->isDir) {
> +  if (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
>      // If it doesn't exist, we're done.
>      if (!exists())
>        return false;
> @@ -645,9 +632,19 @@
>        return MakeErrMsg(ErrStr, 
>          std::string(pathname) + ": Can't destroy directory: ");
>      return false;
> -  } 
> -  // It appears the path doesn't exist.
> -  return true;
> +  } else {
> +    // Read-only files cannot be deleted on Windows.  Must remove the read-only
> +    // attribute first.
> +    if (fi.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
> +      if (!SetFileAttributes(path.c_str(),
> +                             fi.dwFileAttributes & ~FILE_ATTRIBUTE_READONLY))
> +        return MakeErrMsg(ErrStr, path + ": Can't destroy file: ");
> +    }
> +
> +    if (!DeleteFile(path.c_str()))
> +      return MakeErrMsg(ErrStr, path + ": Can't destroy file: ");
> +    return false;
> +  }
>  }
>  
>  bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
> 
> 
> Index: llvm/lib/System/Win32/Signals.inc
> diff -u llvm/lib/System/Win32/Signals.inc:1.23 llvm/lib/System/Win32/Signals.inc:1.24
> --- llvm/lib/System/Win32/Signals.inc:1.23	Thu Mar 29 14:05:44 2007
> +++ llvm/lib/System/Win32/Signals.inc	Sat Apr  7 15:47:27 2007
> @@ -101,12 +101,15 @@
>  // RemoveDirectoryOnSignal - The public API
>  bool sys::RemoveDirectoryOnSignal(const sys::Path& path, std::string* ErrMsg) {
>    // Not a directory?
> -  const sys::FileStatus *Status =  path.getFileStatus(false, ErrMsg);
> -  if (!Status)
> +  WIN32_FILE_ATTRIBUTE_DATA fi;
> +  if (!GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi)) {
> +    MakeErrMsg(ErrMsg, path.toString() + ": can't get status of file");
>      return true;
> -  if (!Status->isDir) {
> +  }
> +    
> +  if (!(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
>      if (ErrMsg)
> -      *ErrMsg = path.toString() + " is not a directory";
> +      *ErrMsg = path.toString() + ": not a directory";
>      return true;
>    }
>  
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list