From 1124de2d76ad7118267d91a08485aa928a5f0865 Mon Sep 17 00:00:00 2001 From: Sakthipriyan Vairamani Date: Mon, 4 Jan 2016 12:06:32 +0530 Subject: [PATCH] fs: deprecate fs.read's string interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `fs.read` supports a deprecated string interface version, which is not documented. It was intended to be deprecated in this commit in 2010 https://github.com/nodejs/node/commit/c93e0aaf062081db3ec40ac45b3e2c979d5759d6 This patch issues a deprecation message saying the usage of this interface is deprecated. PR-URL: https://github.com/nodejs/node/pull/4525 Reviewed-By: James M Snell Reviewed-By: Trevor Norris Reviewed-By: Сковорода Никита Андреевич Reviewed-By: Ben Noordhuis --- lib/fs.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/fs.js b/lib/fs.js index 81c5c7533a86d8..1ffb1a7ab699d1 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -35,6 +35,7 @@ const isWindows = process.platform === 'win32'; const DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); const errnoException = util._errnoException; +const printDeprecation = require('internal/util').printDeprecationMessage; function throwOptionsError(options) { throw new TypeError('Expected options to be either an object or a string, ' + @@ -584,9 +585,14 @@ fs.openSync = function(path, flags, mode) { return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); }; +var readWarned = false; fs.read = function(fd, buffer, offset, length, position, callback) { if (!(buffer instanceof Buffer)) { // legacy string interface (fd, length, position, encoding, callback) + readWarned = printDeprecation('fs.read\'s legacy String interface ' + + 'is deprecated. Use the Buffer API as ' + + 'mentioned in the documentation instead.', + readWarned); const cb = arguments[4]; const encoding = arguments[3]; @@ -636,12 +642,17 @@ function tryToStringWithEnd(buf, encoding, end, callback) { callback(e, buf, end); } +var readSyncWarned = false; fs.readSync = function(fd, buffer, offset, length, position) { var legacy = false; var encoding; if (!(buffer instanceof Buffer)) { // legacy string interface (fd, length, position, encoding, callback) + readSyncWarned = printDeprecation('fs.readSync\'s legacy String interface' + + 'is deprecated. Use the Buffer API as ' + + 'mentioned in the documentation instead.', + readSyncWarned); legacy = true; encoding = arguments[3];