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@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits