Check exit code

This commit is contained in:
anseki 2015-04-01 19:36:00 +09:00
parent 6dffd81b65
commit b4bdf19667
2 changed files with 13 additions and 12 deletions

View file

@ -81,7 +81,7 @@ function writeTTY(text) {
} catch (e) { } catch (e) {
WScript.StdErr.WriteLine('TTY Write Error: ' + e.number + WScript.StdErr.WriteLine('TTY Write Error: ' + e.number +
'\n' + e.description + '\n' + PS_MSG); '\n' + e.description + '\n' + PS_MSG);
WScript.Quit(1); WScript.Quit(e.number || 1);
} }
} }
@ -92,7 +92,7 @@ function readByFSO() {
} catch (e) { } catch (e) {
WScript.StdErr.WriteLine('TTY Read Error: ' + e.number + WScript.StdErr.WriteLine('TTY Read Error: ' + e.number +
'\n' + e.description + '\n' + PS_MSG); '\n' + e.description + '\n' + PS_MSG);
WScript.Quit(1); WScript.Quit(e.number || 1);
} }
return text; return text;
} }
@ -111,7 +111,7 @@ function readByPW() {
} catch (e) { } catch (e) {
WScript.StdErr.WriteLine('ScriptPW.Password Error: ' + e.number + WScript.StdErr.WriteLine('ScriptPW.Password Error: ' + e.number +
'\n' + e.description + '\n' + PS_MSG); '\n' + e.description + '\n' + PS_MSG);
WScript.Quit(1); WScript.Quit(e.number || 1);
} }
writeTTY('\n'); writeTTY('\n');
return text; return text;

View file

@ -39,14 +39,11 @@ if ($options.encoded) {
} }
[string] $inputTTY = '' [string] $inputTTY = ''
[bool] $isInputLine = $False [string] $displaySave = $options.display
[bool] $silent = (-not $options.display) -and
$options.keyIn -and $options.noEchoBack -and (-not $options.mask)
[bool] $isCooked = (-not $options.noEchoBack) -and (-not $options.keyIn) [bool] $isCooked = (-not $options.noEchoBack) -and (-not $options.keyIn)
function writeTTY ($text) {
execWithTTY ('Write-Host ''' + ($text -replace '''', '''''') + ''' -NoNewline')
$script:isInputLine = $True
}
# Instant method that opens TTY without CreateFile via P/Invoke in .NET Framework # Instant method that opens TTY without CreateFile via P/Invoke in .NET Framework
# **NOTE** Don't include special characters of DOS in $command when $getRes is True. # **NOTE** Don't include special characters of DOS in $command when $getRes is True.
# [string] $cmdPath = $Env:ComSpec # [string] $cmdPath = $Env:ComSpec
@ -54,20 +51,24 @@ function writeTTY ($text) {
function execWithTTY ($command, $getRes = $False) { function execWithTTY ($command, $getRes = $False) {
if ($getRes) { if ($getRes) {
$res = (cmd.exe /C "<CON powershell.exe -Command $command") $res = (cmd.exe /C "<CON powershell.exe -Command $command")
if ($LastExitCode -ne 0) { exit 1 } if ($LastExitCode -ne 0) { exit $LastExitCode }
return $res return $res
} else { } else {
$command | cmd.exe /C ">CON powershell.exe -Command -" $command | cmd.exe /C ">CON powershell.exe -Command -"
if ($LastExitCode -ne 0) { exit 1 } if ($LastExitCode -ne 0) { exit $LastExitCode }
} }
} }
function writeTTY ($text) {
execWithTTY ('Write-Host ''' + ($text -replace '''', '''''') + ''' -NoNewline')
}
if ($options.display -ne '') { if ($options.display -ne '') {
writeTTY $options.display writeTTY $options.display
$options.display = '' $options.display = ''
} }
if ($options.noEchoBack -and (-not $options.keyIn) -and ($options.mask -eq '*')) { if ((-not $options.keyIn) -and $options.noEchoBack -and ($options.mask -eq '*')) {
$inputTTY = execWithTTY ('$inputTTY = Read-Host -AsSecureString;' + $inputTTY = execWithTTY ('$inputTTY = Read-Host -AsSecureString;' +
'$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($inputTTY);' + '$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($inputTTY);' +
'[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)') $True '[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)') $True