From 118423cf14849d46dc6120638c7c9ae4e115f563 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 15 Aug 2014 07:18:16 -0400 Subject: [PATCH] feature(ischanged) change dir to tmp --- lib/server/ischanged.js | 50 ++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/lib/server/ischanged.js b/lib/server/ischanged.js index 2a5cf348..33016d72 100644 --- a/lib/server/ischanged.js +++ b/lib/server/ischanged.js @@ -1,22 +1,56 @@ (function() { 'use strict'; - var - DIR_JSON = __dirname + '/../../json/', + var fs = require('fs'), + os = require('os'), - fs = require('fs'), Util = require('../util'), time = require('./timem'), - NAME_SHORT = DIR_JSON + 'changes', - NAME = NAME_SHORT + '.json', + WIN = process.platform === 'win32', - Times = {}; + Times = {}, - Util.exec.try(function() { - Times = require(NAME_SHORT); + DIR = getDir() || __dirname + '/../../json/', + NAME_SHORT = DIR + 'changes', + NAME = NAME_SHORT + '.json'; + + makeDir(function(error) { + if (!error) + Util.exec.try(function() { + Times = require(NAME_SHORT); + }); }); + + function getDir() { + var dir; + if (os.tmpdir) { + dir = os.tmpdir(); + dir += '/ischanged'; + + if (!WIN) + dir += '-' + process.getuid() + '/'; + } + + return dir; + } + + function makeDir(callback) { + var ANY_MASK = 0, + umask = process.umask(ANY_MASK); + + fs.mkdir(DIR, function(error) { + process.umask(umask); + + if (error && error.code === 'EEXIST') + callback(); + else + callback(error); + }); + } + + module.exports = function(name, callback) { var readTime = Times[name];