On Nov 25, 2015, at 6:52 AM, René J.V. Bertin <[email protected]<mailto:[email protected]>> wrote:
Thiago Macieira wrote: >> You're missing a detail. On OS X, $TMPDIR (and QDir::tempPath()) *are* user >> specific. They're also very "immemorable"... > > They're not required to be. If we can detect that they are, then sure, we > could use it as XDG_RUNTIME_DIR. >> > It could be a subdir of $TMPDIR, but then we run into a race condition >> > problem of creating a secure subdir with a well-established name among >> > applications. That's why the XDG spec says that XDG_RUNTIME_DIR *must* >> > have been created when the user logs in and must be removed when the user >> > fully logs out. It sounds like all this is hard to enforce without checking before returning a location. NB: that's what KDE does with the directory that is supposed to act as ... the trashbin! Note that OS X has NSString *NSTemporaryDirectory(), and also that QSP is already half set up to determine TempLocation via kTemporaryFolderType : kTemporaryFolderType = 'temp', /* On Mac OS X, each user has their own temporary items folder, and the Folder Manager attempts to set permissions of these*/ /* folders such that other users can not access the data inside. On Mac OS X 10.4 and later the data inside the temporary*/ /* items folder is deleted at logout and at boot, but not otherwise. Earlier version of Mac OS X would delete items inside*/ /* the temporary items folder after a period of inaccess. You can ask for a temporary item in a specific domain or on a */ /* particular volume by FSVolumeRefNum. If you want a location for temporary items for a short time, then use either*/ /* ( kUserDomain, kkTemporaryFolderType ) or ( kSystemDomain, kTemporaryFolderType ). The kUserDomain varient will always be*/ /* on the same volume as the user's home folder, while the kSystemDomain version will be on the same volume as /var/tmp/ ( and*/ /* will probably be on the local hard drive in case the user's home is a network volume ). If you want a location for a temporary*/ /* file or folder to use for saving a document, especially if you want to use FSpExchangeFile() to implement a safe-save, then*/ /* ask for the temporary items folder on the same volume as the file you are safe saving.*/ /* However, be prepared for a failure to find a temporary folder in any domain or on any volume. Some volumes may not have*/ /* a location for a temporary folder, or the permissions of the volume may be such that the Folder Manager can not return*/ /* a temporary folder for the volume.*/ /* If your application creates an item in a temporary items folder you should delete that item as soon as it is not needed,*/ /* and certainly before your application exits, since otherwise the item is consuming disk space until the user logs out or*/ /* restarts. Any items left inside a temporary items folder should be moved into a folder inside the Trash folder on the disk*/ /* when the user logs in, inside a folder named "Recovered items", in case there is anything useful to the end user.*/ The only open question is what `macLocation` domain should be returned by QSP::TempLocation: kUserDomain, kSystemDomain or kOnAppropriateDisk . Maybe Jake Petroules already addressed that question? In 5.7 QStandardPaths just uses QDir::tempPath(); there are no more calls to the Carbon File Manager. R. _______________________________________________ Development mailing list [email protected]<mailto:[email protected]> http://lists.qt-project.org/mailman/listinfo/development -- Jake Petroules - [email protected]<mailto:[email protected]> Consulting Services Engineer - The Qt Company
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
