On Thursday 17 November 2011 13:52:55 [email protected] wrote: > Hi David, > > looks good in general. > > I am however concerned about the static removeDir() method. This one is > pretty much the equivalent of a 'rm -rf'. Since it's not limited to > temporary directories, so it doesn't match the class. > > It's also a rather dangerous operation, and I'm worried we'll see bugs in > it's usage leading to users home directories being blown away.
Well this is actually one of the reasons for having it in QTemporaryDir rather than in QDir : to make it clear that this should only be used for programmatically created dirs (mostly temp dirs, but there are a few other use cases like apps saving stuff into dirs). Not as a general QDir method to be used . The method already asserts if the path is empty or is ".", we could make that stricter to catch more bugs (error instead of debug-mode-only assert, and refuse more paths, including the home dir). But I fail to see why "this API could be misused" is a reason for not having it. I mean, one could make the same argument against having QFile::remove in the API -- it could be used to delete the document that a user spent days to write! In any case: see http://developer.qt.nokia.com/forums/viewthread/9860/ for the "popular demand" for such a method. I could be convinced to put it into QDir, I would also be very happy to leave it in QTemporaryDir, for "almost-like a temp dir but not created by QTemporaryDir because a random naming isn't wanted". But I think it would be a mistake to not have any recursive deletion method, available, still, in Qt5. Note that KTemporaryDir had a removeDir method for many many years and nobody ever blamed the kdelibs developers for "bugs in its usage leading to users home dirs being blown away"... If the app developers implement their own version and call it wrongly, then the users still lose data, and worse, we make this more likely by not providing a well-tested method to app developers. E.g. it's not only about the starting directory. There's the issue of not following symlinks to directories. Any naive implementation based on QFileInfo will get this wrong, and will follow symlinks. Ouch! -- David Faure | [email protected] | KDE/Qt Senior Software Engineer KDAB (France) S.A.S., a KDAB Group company Tel. France +33 (0)4 90 84 08 53, Sweden (HQ) +46-563-540090 KDAB - Qt Experts - Platform-independent software solutions _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
