[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