Modified os.removeFile to act correctly when deleting a file that doesn't exist.
This commit is contained in:
parent
30aef21def
commit
ab2eb884a0
1 changed files with 9 additions and 3 deletions
|
|
@ -972,15 +972,21 @@ proc moveFile*(source, dest: string) {.rtl, extern: "nos$1",
|
||||||
|
|
||||||
when not defined(ENOENT):
|
when not defined(ENOENT):
|
||||||
var ENOENT {.importc, header: "<errno.h>".}: cint
|
var ENOENT {.importc, header: "<errno.h>".}: cint
|
||||||
|
when not defined(EACCES):
|
||||||
|
var EACCES {.importc, header: "<errno.h>".}: cint
|
||||||
|
|
||||||
proc removeFile*(file: string) {.rtl, extern: "nos$1", tags: [FWriteDir].} =
|
proc removeFile*(file: string) {.rtl, extern: "nos$1", tags: [FWriteDir].} =
|
||||||
## Removes the `file`. If this fails, `EOS` is raised. This does not fail
|
## Removes the `file`. If this fails, `EOS` is raised. This does not fail
|
||||||
## if the file never existed in the first place.
|
## if the file never existed in the first place.
|
||||||
## On Windows, ignores the read-only attribute.
|
## On Windows, ignores the read-only attribute.
|
||||||
when defined(Windows):
|
|
||||||
setFilePermissions(file, {fpUserWrite})
|
|
||||||
if cremove(file) != 0'i32 and errno != ENOENT:
|
if cremove(file) != 0'i32 and errno != ENOENT:
|
||||||
raise newException(EOS, $strerror(errno))
|
when defined(Windows):
|
||||||
|
if errno == EACCES: # Turn this into a case stmt?
|
||||||
|
setFilePermissions(file, {fpUserWrite}) # Use lower level code?
|
||||||
|
if cremove(file) != 0'i32 and errno != ENOENT:
|
||||||
|
raise newException(EOS, $strerror(errno))
|
||||||
|
else:
|
||||||
|
raise newException(EOS, $strerror(errno))
|
||||||
|
|
||||||
proc execShellCmd*(command: string): int {.rtl, extern: "nos$1",
|
proc execShellCmd*(command: string): int {.rtl, extern: "nos$1",
|
||||||
tags: [FExecIO].} =
|
tags: [FExecIO].} =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue