Fix #3242 Actually deprecate 'binary' buffer encoding
This commit is contained in:
parent
e85927119c
commit
5979f096d1
@ -33,13 +33,14 @@ encoding method. Here are the different string encodings.
|
|||||||
|
|
||||||
* `'base64'` - Base64 string encoding.
|
* `'base64'` - Base64 string encoding.
|
||||||
|
|
||||||
* `'binary'` - A way of encoding raw binary data into strings by using only
|
|
||||||
the first 8 bits of each character. This encoding method is deprecated and
|
|
||||||
should be avoided in favor of `Buffer` objects where possible. This encoding
|
|
||||||
will be removed in future versions of Node.
|
|
||||||
|
|
||||||
* `'hex'` - Encode each byte as two hexadecimal characters.
|
* `'hex'` - Encode each byte as two hexadecimal characters.
|
||||||
|
|
||||||
|
If you need direct access to the bytes, then the best way is to use a
|
||||||
|
Buffer object directly, rather than any string encoding. In the past,
|
||||||
|
there were options for `'binary'`, `'raw'`, and others, but these all
|
||||||
|
involve unnecessary copying. Just use Buffers directly if you need
|
||||||
|
access to the actual bytes.
|
||||||
|
|
||||||
## Class: Buffer
|
## Class: Buffer
|
||||||
|
|
||||||
The Buffer class is a global type for dealing with binary data directly.
|
The Buffer class is a global type for dealing with binary data directly.
|
||||||
|
@ -22,6 +22,15 @@
|
|||||||
var SlowBuffer = process.binding('buffer').SlowBuffer;
|
var SlowBuffer = process.binding('buffer').SlowBuffer;
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
|
|
||||||
|
// Deprecate the 'binary' encoding.
|
||||||
|
// TODO: Remove it entirely in v0.9.
|
||||||
|
var binaryWarned = false;
|
||||||
|
function binaryWarn() {
|
||||||
|
if (binaryWarned) return;
|
||||||
|
binaryWarned = true;
|
||||||
|
console.error('The binary buffer encoding is deprecated.');
|
||||||
|
}
|
||||||
|
|
||||||
exports.INSPECT_MAX_BYTES = 50;
|
exports.INSPECT_MAX_BYTES = 50;
|
||||||
|
|
||||||
|
|
||||||
@ -82,6 +91,7 @@ SlowBuffer.prototype.toString = function(encoding, start, end) {
|
|||||||
return this.asciiSlice(start, end);
|
return this.asciiSlice(start, end);
|
||||||
|
|
||||||
case 'binary':
|
case 'binary':
|
||||||
|
binaryWarn();
|
||||||
return this.binarySlice(start, end);
|
return this.binarySlice(start, end);
|
||||||
|
|
||||||
case 'base64':
|
case 'base64':
|
||||||
@ -168,6 +178,7 @@ SlowBuffer.prototype.write = function(string, offset, length, encoding) {
|
|||||||
return this.asciiWrite(string, offset, length);
|
return this.asciiWrite(string, offset, length);
|
||||||
|
|
||||||
case 'binary':
|
case 'binary':
|
||||||
|
binaryWarn();
|
||||||
return this.binaryWrite(string, offset, length);
|
return this.binaryWrite(string, offset, length);
|
||||||
|
|
||||||
case 'base64':
|
case 'base64':
|
||||||
@ -368,6 +379,7 @@ Buffer.prototype.write = function(string, offset, length, encoding) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'binary':
|
case 'binary':
|
||||||
|
binaryWarn();
|
||||||
ret = this.parent.binaryWrite(string, this.offset + offset, length);
|
ret = this.parent.binaryWrite(string, this.offset + offset, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -424,6 +436,7 @@ Buffer.prototype.toString = function(encoding, start, end) {
|
|||||||
return this.parent.asciiSlice(start, end);
|
return this.parent.asciiSlice(start, end);
|
||||||
|
|
||||||
case 'binary':
|
case 'binary':
|
||||||
|
binaryWarn();
|
||||||
return this.parent.binarySlice(start, end);
|
return this.parent.binarySlice(start, end);
|
||||||
|
|
||||||
case 'base64':
|
case 'base64':
|
||||||
@ -536,6 +549,7 @@ Buffer.prototype.utf8Slice = function(start, end) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Buffer.prototype.binarySlice = function(start, end) {
|
Buffer.prototype.binarySlice = function(start, end) {
|
||||||
|
binaryWarn();
|
||||||
return this.toString('binary', start, end);
|
return this.toString('binary', start, end);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -548,6 +562,7 @@ Buffer.prototype.utf8Write = function(string, offset) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Buffer.prototype.binaryWrite = function(string, offset) {
|
Buffer.prototype.binaryWrite = function(string, offset) {
|
||||||
|
binaryWarn();
|
||||||
return this.write(string, offset, 'binary');
|
return this.write(string, offset, 'binary');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
16
src/node.cc
16
src/node.cc
@ -1104,16 +1104,18 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
|
|||||||
} else if (strcasecmp(*encoding, "ucs-2") == 0) {
|
} else if (strcasecmp(*encoding, "ucs-2") == 0) {
|
||||||
return UCS2;
|
return UCS2;
|
||||||
} else if (strcasecmp(*encoding, "binary") == 0) {
|
} else if (strcasecmp(*encoding, "binary") == 0) {
|
||||||
|
fprintf(stderr, "The 'binary' buffer encoding is deprecated. "
|
||||||
|
"Use a Buffer object directly.\n");
|
||||||
return BINARY;
|
return BINARY;
|
||||||
} else if (strcasecmp(*encoding, "hex") == 0) {
|
} else if (strcasecmp(*encoding, "hex") == 0) {
|
||||||
return HEX;
|
return HEX;
|
||||||
} else if (strcasecmp(*encoding, "raw") == 0) {
|
} else if (strcasecmp(*encoding, "raw") == 0) {
|
||||||
fprintf(stderr, "'raw' (array of integers) has been removed. "
|
fprintf(stderr, "'raw' (array of integers) has been removed. "
|
||||||
"Use 'binary'.\n");
|
"Use a Buffer object directly.\n");
|
||||||
return BINARY;
|
return BINARY;
|
||||||
} else if (strcasecmp(*encoding, "raws") == 0) {
|
} else if (strcasecmp(*encoding, "raws") == 0) {
|
||||||
fprintf(stderr, "'raws' encoding has been renamed to 'binary'. "
|
fprintf(stderr, "'raws' (array of integers) has been removed. "
|
||||||
"Please update your code.\n");
|
"Use a Buffer object directly.\n");
|
||||||
return BINARY;
|
return BINARY;
|
||||||
} else {
|
} else {
|
||||||
return _default;
|
return _default;
|
||||||
@ -1147,8 +1149,8 @@ ssize_t DecodeBytes(v8::Handle<v8::Value> val, enum encoding encoding) {
|
|||||||
HandleScope scope;
|
HandleScope scope;
|
||||||
|
|
||||||
if (val->IsArray()) {
|
if (val->IsArray()) {
|
||||||
fprintf(stderr, "'raw' encoding (array of integers) has been removed. "
|
fprintf(stderr, "'raw' (array of integers) has been removed. "
|
||||||
"Use 'binary'.\n");
|
"Use a Buffer object directly.\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1184,8 +1186,8 @@ ssize_t DecodeWrite(char *buf,
|
|||||||
// http://groups.google.com/group/v8-users/browse_thread/thread/1f83b0ba1f0a611
|
// http://groups.google.com/group/v8-users/browse_thread/thread/1f83b0ba1f0a611
|
||||||
|
|
||||||
if (val->IsArray()) {
|
if (val->IsArray()) {
|
||||||
fprintf(stderr, "'raw' encoding (array of integers) has been removed. "
|
fprintf(stderr, "'raw' (array of integers) has been removed. "
|
||||||
"Use 'binary'.\n");
|
"Use a Buffer object directly.\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user