dbuenzli / bos

Basic OS interaction for OCaml
http://erratique.ch/software/bos
ISC License
63 stars 16 forks source link

OS.File.write fails on read-only Windows file with permission denied #98

Open jonahbeckford opened 10 months ago

jonahbeckford commented 10 months ago

This issue has similar symptoms to #59 but different causes.

Problem

With code like:

OS.File.write ~mode:0x755 target_fp script

we will get:

FATAL: rename C:\Users\WDAGUtilityAccount\AppData\Local\opam\playground\.dkml\init-system\scripts\bos-fbb292.tmp to C:\Users\WDAGUtilityAccount\AppData\Local\opam\playground\.dkml\init-system\scripts\cache-vsstudio.bat: Permission denied

when the file is read-only:

PS C:\Users\WDAGUtilityAccount> dir C:\Users\WDAGUtilityAccount\AppData\Local\opam\playground\.dkml\init-system\scripts\cache-vsstudio.bat

    Directory: C:\Users\WDAGUtilityAccount\AppData\Local\opam\playground\.dkml\init-system\scripts

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-ar---        11/22/2023  11:31 AM           1119 cache-vsstudio.bat

Solution

I mitigated it here https://github.com/diskuv/diskuvbox/blob/0e07c70e57c785f23041ae02ebca03ee007fe10c/src/lib/diskuvbox.ml#L124C1-L140 a long time ago, and (sorry!) forgot to open an issue then.