| ... | @@ -764,7 +764,6 @@ pub const DeleteFileError = error{ | ... | @@ -764,7 +764,6 @@ pub const DeleteFileError = error{ |
| 764 | Unexpected, | 764 | Unexpected, |
| 765 | NotDir, | 765 | NotDir, |
| 766 | IsDir, | 766 | IsDir, |
| 767 | DirNotEmpty, | | |
| 768 | }; | 767 | }; |
| 769 | | 768 | |
| 770 | pub const DeleteFileOptions = struct { | 769 | pub const DeleteFileOptions = struct { |
| ... | @@ -819,7 +818,7 @@ pub fn DeleteFile(sub_path_w: []const u16, options: DeleteFileOptions) DeleteFil | ... | @@ -819,7 +818,7 @@ pub fn DeleteFile(sub_path_w: []const u16, options: DeleteFileOptions) DeleteFil |
| 819 | 0, | 818 | 0, |
| 820 | ); | 819 | ); |
| 821 | switch (rc) { | 820 | switch (rc) { |
| 822 | .SUCCESS => CloseHandle(tmp_handle), | 821 | .SUCCESS => return CloseHandle(tmp_handle), |
| 823 | .OBJECT_NAME_INVALID => unreachable, | 822 | .OBJECT_NAME_INVALID => unreachable, |
| 824 | .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, | 823 | .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, |
| 825 | .INVALID_PARAMETER => unreachable, | 824 | .INVALID_PARAMETER => unreachable, |
| ... | @@ -827,21 +826,6 @@ pub fn DeleteFile(sub_path_w: []const u16, options: DeleteFileOptions) DeleteFil | ... | @@ -827,21 +826,6 @@ pub fn DeleteFile(sub_path_w: []const u16, options: DeleteFileOptions) DeleteFil |
| 827 | .NOT_A_DIRECTORY => return error.NotDir, | 826 | .NOT_A_DIRECTORY => return error.NotDir, |
| 828 | else => return unexpectedStatus(rc), | 827 | else => return unexpectedStatus(rc), |
| 829 | } | 828 | } |
| 830 | | | |
| 831 | // If a directory fails to be deleted, CloseHandle will still report success | | |
| 832 | // Check if the directory still exists and return error.DirNotEmpty if true | | |
| 833 | if (options.remove_dir) { | | |
| 834 | var basic_info: FILE_BASIC_INFORMATION = undefined; | | |
| 835 | switch (ntdll.NtQueryAttributesFile(&attr, &basic_info)) { | | |
| 836 | .SUCCESS => return error.DirNotEmpty, | | |
| 837 | .OBJECT_NAME_NOT_FOUND => return, | | |
| 838 | .OBJECT_PATH_NOT_FOUND => return, | | |
| 839 | .INVALID_PARAMETER => unreachable, | | |
| 840 | .ACCESS_DENIED => return error.AccessDenied, | | |
| 841 | .OBJECT_PATH_SYNTAX_BAD => unreachable, | | |
| 842 | else => |urc| return unexpectedStatus(urc), | | |
| 843 | } | | |
| 844 | } | | |
| 845 | } | 829 | } |
| 846 | | 830 | |
| 847 | pub const MoveFileError = error{ FileNotFound, Unexpected }; | 831 | pub const MoveFileError = error{ FileNotFound, Unexpected }; |