On Apr 26, 2007, at 3:02 PM, Allan Odgaard wrote:
Commands should generally use mktemp to create their temporary files.
The added UID or user name is to prevent files from clashing with other users, but that’s not a problem when using mktemp. And since OS X is primarily a one-user system, keeping temporary files categorized by user is IMO not a big priority (TM commands that use temporary files SHOULD (though I would like to say MUST) cleanup their temporary files).
mktemp will use TMPDIR [1] (if set). So in practice we could set TMPDIR in bash_init.sh (granted, this would only be for shell commands).
But the only value I see in this is, to better pinpoint bundles that do not cleanup after themselves.
[1] Unfortunately some bundles does (IIRC) need to use mktemp with an absolute path, those ought to use "${TMPDIR:-/tmp}" for where to place the file though (not sure if they do).
Perhaps mine is a bit of an oddball case. For my bundle command, I'm downloading a file from a wiki via curl, allowing it to be edited in TextMate, and then published back to the wiki. It's preferable to have the basename of the URL as the filename so that the TextMate window title reflects the wiki page name. So that implies a per-user temporary directory.
Since my bundle doesn't clean up the documents it creates (it's not clear when would be the appropriate time to delete the file[1]), I decided to use a fixed temporary directory as opposed to "mktemp -d". Otherwise the bundle would be polluting[2] /tmp over time with temporary directories (until /tmp is cleaned up at system reboot).
Anyway, I chose "/tmp/`id -u`/moinedit/<basename of URL>" which works well-enough.
So that's what precipitated the original message.
j.
[1] doesn't make sense to delete the file when the document is published since there is still an open TextMate buffer backed by the file.