Check that mask is ''

This commit is contained in:
anseki 2015-03-22 14:11:55 +09:00
parent 95d2e9f088
commit a7bb63d3e3
3 changed files with 8 additions and 5 deletions

View file

@ -116,7 +116,7 @@ readlineSync.setPrint(function(display, encoding) {
currentMask = readlineSync.setMask([newMask])
```
Set the mask character that is shown instead of the secret text (e.g. password). (See `noEchoBack` option.) The default is `'*'`. If you want to show nothing, specify `''`. (But it's not user friendly.)
Set the mask character that is shown instead of the secret text (e.g. password). (See `noEchoBack` option.) The default is `'*'`. If you want to show nothing, specify `''`. (But it might be not user friendly in some cases.)
*Note:* The some platforms might use `'*'` or `''` always.
For example:

View file

@ -64,11 +64,12 @@ function getFso() {
function readS() {
var pw;
// Microsoft Windows PowerShell https://technet.microsoft.com/ja-jp/library/hh847837.aspx
shellExec('powershell /?', function(exitCode, stdout, stderr, error) {
if (error || exitCode !== 0) {
pw = scriptPW();
} else {
shellExec('powershell -Command "$text = read-host -AsSecureString;' +
shellExec('powershell -Command "$text = Read-Host -AsSecureString;' +
'$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($text);' +
'[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"',
function(exitCode, stdout, stderr, error) {

View file

@ -155,9 +155,11 @@ function _readlineSync(options) { // options.display is string
if ((chunk = chunk.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g, '')) === '')
{ continue; }
if (!isEditable) {
displayInput = chunk.replace(/[\r\n]/g, '');
if (options.noEchoBack) { displayInput = displayInput.replace(/./g, mask); }
if (!isEditable && (displayInput = chunk.replace(/[\r\n]/g, '')) !== '') {
if (options.noEchoBack) {
displayInput = mask === '' ? '' :
(new Array(displayInput.length + 1)).join(mask);
}
if (displayInput !== '') { fs.writeSync(fdW, displayInput); }
}