Revert "Make 'echo' raise IOErrors when appropriate (#16367)" (#18460)

This reverts commit 23d23ecb08.
This commit is contained in:
Miran
2021-07-08 16:09:56 +02:00
committed by GitHub
parent 836b061ae3
commit 0d74f60742
3 changed files with 8 additions and 30 deletions

View File

@@ -24,9 +24,6 @@
- Type mismatch errors now show more context, use `-d:nimLegacyTypeMismatch` for previous
behavior.
- `echo` and `debugEcho` will now raise `IOError` if writing to stdout fails. Previous behavior
silently ignored errors. See #16366. Use `-d:nimLegacyEchoNoRaise` for previous behavior.
- `math.round` now is rounded "away from zero" in JS backend which is consistent
with other backends. See #9125. Use `-d:nimLegacyJsRound` for previous behavior.

View File

@@ -227,9 +227,6 @@ when defined(windows):
# But we cannot call printf directly as the string might contain \0.
# So we have to loop over all the sections separated by potential \0s.
var i = c_fprintf(f, "%s", s)
if i < 0:
if doRaise: raiseEIO("cannot write string to file")
return
while i < s.len:
if s[i] == '\0':
let w = c_fputc('\0', f)
@@ -787,13 +784,6 @@ when declared(stdout):
not defined(nintendoswitch) and not defined(freertos) and
hostOS != "any"
const echoDoRaise = not defined(nimLegacyEchoNoRaise) and not defined(guiapp) # see PR #16366
template checkErrMaybe(succeeded: bool): untyped =
if not succeeded:
when echoDoRaise:
checkErr(stdout)
proc echoBinSafe(args: openArray[string]) {.compilerproc.} =
when defined(androidNDK):
var s = ""
@@ -806,18 +796,20 @@ when declared(stdout):
proc flockfile(f: File) {.importc, nodecl.}
proc funlockfile(f: File) {.importc, nodecl.}
flockfile(stdout)
defer: funlockfile(stdout)
when defined(windows) and compileOption("threads"):
acquireSys echoLock
defer: releaseSys echoLock
for s in args:
when defined(windows):
writeWindows(stdout, s, doRaise = echoDoRaise)
writeWindows(stdout, s)
else:
checkErrMaybe(c_fwrite(s.cstring, cast[csize_t](s.len), 1, stdout) == s.len)
discard c_fwrite(s.cstring, cast[csize_t](s.len), 1, stdout)
const linefeed = "\n"
checkErrMaybe(c_fwrite(linefeed.cstring, linefeed.len, 1, stdout) == linefeed.len)
checkErrMaybe(c_fflush(stdout) == 0)
discard c_fwrite(linefeed.cstring, linefeed.len, 1, stdout)
discard c_fflush(stdout)
when stdOutLock:
funlockfile(stdout)
when defined(windows) and compileOption("threads"):
releaseSys echoLock
when defined(windows) and not defined(nimscript) and not defined(js):

View File

@@ -1,11 +0,0 @@
discard """
action: run
exitcode: 0
targets: "c cpp"
disabled: openbsd
"""
echo "foo1"
close stdout
doAssertRaises(IOError):
echo "foo"