| Index: runtime/bin/directory_macos.cc
|
| diff --git a/runtime/bin/directory_macos.cc b/runtime/bin/directory_macos.cc
|
| index c06ffa31fb799cbebf9df059b073ce51b1d39d87..b24b9c8d4b4b4d93a86c5d4d15ad4d66d0ba4ea7 100644
|
| --- a/runtime/bin/directory_macos.cc
|
| +++ b/runtime/bin/directory_macos.cc
|
| @@ -259,7 +259,7 @@ static bool DeleteRecursively(PathBuffer* path) {
|
| struct stat st;
|
| if (NO_RETRY_EXPECTED(lstat(path->AsString(), &st)) == -1) {
|
| return false;
|
| - } else if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) {
|
| + } else if (!S_ISDIR(st.st_mode)) {
|
| return (unlink(path->AsString()) == 0);
|
| }
|
|
|
| @@ -292,6 +292,10 @@ static bool DeleteRecursively(PathBuffer* path) {
|
| case DT_DIR:
|
| ok = DeleteDir(entry.d_name, path);
|
| break;
|
| + case DT_BLK:
|
| + case DT_CHR:
|
| + case DT_FIFO:
|
| + case DT_SOCK:
|
| case DT_REG:
|
| case DT_LNK:
|
| // Treat all links as files. This will delete the link which
|
| @@ -313,7 +317,7 @@ static bool DeleteRecursively(PathBuffer* path) {
|
| path->Reset(path_length);
|
| if (S_ISDIR(entry_info.st_mode)) {
|
| ok = DeleteDir(entry.d_name, path);
|
| - } else if (S_ISREG(entry_info.st_mode) || S_ISLNK(entry_info.st_mode)) {
|
| + } else {
|
| // Treat links as files. This will delete the link which is
|
| // what we want no matter if the link target is a file or a
|
| // directory.
|
| @@ -322,6 +326,8 @@ static bool DeleteRecursively(PathBuffer* path) {
|
| break;
|
| }
|
| default:
|
| + // We should have covered all the bases. If not, let's get an error.
|
| + FATAL1("Unexpected d_type: %d\n", entry.d_type);
|
| break;
|
| }
|
| if (!ok) {
|
|
|