Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 1 | # Temporary file name allocation |
| 2 | |
| 3 | import posix |
| 4 | import path |
| 5 | |
| 6 | |
| 7 | # Changeable parameters (by clients!)... |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 8 | |
| 9 | tempdir = '/usr/tmp' |
| 10 | template = '@' |
| 11 | |
Guido van Rossum | cff3454 | 1992-01-14 18:31:56 +0000 | [diff] [blame] | 12 | # Use environment variable $TMPDIR to override default tempdir. |
| 13 | |
| 14 | if posix.environ.has_key('TMPDIR'): |
| 15 | # XXX Could check that it's a writable directory... |
| 16 | tempdir = posix.environ['TMPDIR'] |
| 17 | |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 18 | |
Guido van Rossum | 4a3a41f | 1991-12-26 13:10:50 +0000 | [diff] [blame] | 19 | # Counter for generating unique names |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 20 | |
Guido van Rossum | 4a3a41f | 1991-12-26 13:10:50 +0000 | [diff] [blame] | 21 | counter = 0 |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 22 | |
| 23 | |
| 24 | # User-callable function |
| 25 | # XXX Should this have a parameter, like C's mktemp()? |
| 26 | # XXX Should we instead use the model of Standard C's tempnam()? |
| 27 | # XXX By all means, avoid a mess with four different functions like C... |
| 28 | |
| 29 | def mktemp(): |
Guido van Rossum | 4a3a41f | 1991-12-26 13:10:50 +0000 | [diff] [blame] | 30 | global counter |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 31 | while 1: |
Guido van Rossum | 4a3a41f | 1991-12-26 13:10:50 +0000 | [diff] [blame] | 32 | counter = counter+1 |
| 33 | file = tempdir+'/'+template+`posix.getpid()`+'.'+`counter` |
Guido van Rossum | eee9498 | 1991-11-12 15:38:08 +0000 | [diff] [blame] | 34 | if not path.exists(file): |
| 35 | break |
| 36 | return file |