Permalink
Browse files

Fix #3407 os.tmpDir()

  • Loading branch information...
1 parent 0dba4ad commit a11bf99ce0dae4d8f4de8a9c0c32159c1a9ecfbf @isaacs isaacs committed Jun 13, 2012
Showing with 25 additions and 0 deletions.
  1. +4 −0 doc/api/os.markdown
  2. +9 −0 lib/os.js
  3. +12 −0 test/simple/test-os.js
View
@@ -6,6 +6,10 @@ Provides a few basic operating-system related utility functions.
Use `require('os')` to access this module.
+## os.tmpDir()
+
+Returns the operating system's default directory for temp files.
+
## os.hostname()
Returns the hostname of the operating system.
View
@@ -30,13 +30,22 @@ exports.cpus = binding.getCPUs;
exports.type = binding.getOSType;
exports.release = binding.getOSRelease;
exports.networkInterfaces = binding.getInterfaceAddresses;
+
exports.arch = function() {
return process.arch;
};
+
exports.platform = function() {
return process.platform;
};
+exports.tmpDir = function() {
+ return process.env.TMPDIR ||
+ process.env.TMP ||
+ process.env.TEMP ||
+ (process.platform === 'win32' ? 'c:\\windows\\temp' : '/tmp');
@AndreasMadsen

AndreasMadsen Jun 13, 2012

Member

Should this not use some windows env there tell where the windows directory exist and then add the \\temp postfix?

I think it is process.env.WINDIR + "\\temp".

@fb55

fb55 Jun 13, 2012

+1. Not every windows-installation is on the C: drive, it's even possible to have no C: drive (at least as far as I remember). This code is (probably) buggy.

@bnoordhuis

bnoordhuis Jun 13, 2012

Owner

I think it is process.env.WINDIR + "\temp"

What if WINDIR is not set?

@Mithgol

Mithgol Mar 16, 2013

Putting the temp files in process.env.WINDIR + "\\temp" is sometimes going against the admin's intentions if process.env.TEMP and process.env.TMP are different. The latter should be used.

+};
+
exports.getNetworkInterfaces = function() {
return exports.networkInterfaces();
};
View
@@ -27,6 +27,18 @@ var assert = require('assert');
var os = require('os');
+process.env.TMPDIR = '/tmpdir';
+process.env.TMP = '/tmp';
+process.env.TEMP = '/temp';
+var t = ( process.platform === 'win32' ? 'c:\\windows\\temp' : '/tmp' );
@npcode

npcode Mar 16, 2013

What occurs if windows is installed in D drive? Is it okay?

+assert.equal(os.tmpDir(), '/tmpdir');
+process.env.TMPDIR = '';
+assert.equal(os.tmpDir(), '/tmp');
+process.env.TMP = '';
+assert.equal(os.tmpDir(), '/temp');
+process.env.TEMP = '';
+assert.equal(os.tmpDir(), t);
+
var hostname = os.hostname();
console.log('hostname = %s', hostname);
assert.ok(hostname.length > 0);

1 comment on commit a11bf99

Member

jbergstroem commented on a11bf99 Mar 16, 2013

For reference, here's pythons current logic: http://docs.python.org/2/library/tempfile.html#tempfile.tempdir

Please sign in to comment.