digitalmars.D.learn - Advice on : rmdirRecurse and setAttributes in Windows
- Vino (24/24) Apr 21 2018 Hi All,
- WebFreak001 (5/29) Apr 22 2018 This seems very hacky, you should instead just replicate the
Hi All, The function rmdirRecurse does not work in Windows if the file has the READ ONLY permission, so to over come this issue, i have written the below function to set the permission on file and folder using the function "setAttributes" , so can any one advice me whether the below code is fine or what are the other ways to achieve the same. auto aPrivileges(T)(T df) if(df[0].isDir) { auto sDir = Array!string(dirEntries(join([`\\?\`, df[0]]), SpanMode.depth).filter!(a => a.isDir).map!(a => (a.name))); auto sFile = Array!string(dirEntries(join([`\\?\`, df[0]]), SpanMode.depth).filter!(a => a.isFile).map!(a => (a.name))); foreach(sD; parallel(sDir[], 1)) { setAttributes(sD.toUTF16, 66); } foreach(sF; parallel(sFile[], 1)) { setAttributes(sF.toUTF16, 666); } } else { setAttributes(df[0].toUTF16, 666); } } From, Vino.B
Apr 21 2018
On Saturday, 21 April 2018 at 18:39:02 UTC, Vino wrote:Hi All, The function rmdirRecurse does not work in Windows if the file has the READ ONLY permission, so to over come this issue, i have written the below function to set the permission on file and folder using the function "setAttributes" , so can any one advice me whether the below code is fine or what are the other ways to achieve the same. auto aPrivileges(T)(T df) if(df[0].isDir) { auto sDir = Array!string(dirEntries(join([`\\?\`, df[0]]), SpanMode.depth).filter!(a => a.isDir).map!(a => (a.name))); auto sFile = Array!string(dirEntries(join([`\\?\`, df[0]]), SpanMode.depth).filter!(a => a.isFile).map!(a => (a.name))); foreach(sD; parallel(sDir[], 1)) { setAttributes(sD.toUTF16, 66); } foreach(sF; parallel(sFile[], 1)) { setAttributes(sF.toUTF16, 666); } } else { setAttributes(df[0].toUTF16, 666); } } From, Vino.BThis seems very hacky, you should instead just replicate the behaviour of rmdirRecurse. This is what I did in the dub library which does this thing for you: https://github.com/WebFreak001/rm-rf/blob/master/source/rm/rf.d
Apr 22 2018