summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMiran <narimiran@disroot.org>2020-11-02 16:52:54 +0100
committerGitHub <noreply@github.com>2020-11-02 16:52:54 +0100
commitc243639979b795d28a69f19ad988726225e22fcd (patch)
tree6da97b21f0d0d36b1189458cb25815227693de79
parent235e4930ab2f5a9a4c94d6cc66d62701ee58550d (diff)
downloadNim-c243639979b795d28a69f19ad988726225e22fcd.tar.gz
`ioutils` are moved to `fusion` (#15822)
-rw-r--r--lib/std/ioutils.nim85
-rw-r--r--tests/stdlib/tioutils.nim49
2 files changed, 0 insertions, 134 deletions
diff --git a/lib/std/ioutils.nim b/lib/std/ioutils.nim
deleted file mode 100644
index bef61c54a..000000000
--- a/lib/std/ioutils.nim
+++ /dev/null
@@ -1,85 +0,0 @@
-when defined(windows):
-  proc c_dup(oldfd: FileHandle): FileHandle {.
-    importc: "_dup", header: "<io.h>".}
-  proc c_dup2(oldfd: FileHandle, newfd: FileHandle): cint {.
-    importc: "_dup2", header: "<io.h>".}
-else:
-  proc c_dup(oldfd: FileHandle): FileHandle{.
-    importc: "dup", header: "<unistd.h>".}
-  proc c_dup2(oldfd: FileHandle, newfd: FileHandle): cint {.
-    importc: "dup2", header: "<unistd.h>".}
-
-# when false:
-#   const SupportIoctlInheritCtl = (defined(linux) or defined(bsd)) and
-#                                 not defined(nimscript)
-#   when SupportIoctlInheritCtl:
-#     var
-#       FIOCLEX {.importc, header: "<sys/ioctl.h>".}: cint
-#       FIONCLEX {.importc, header: "<sys/ioctl.h>".}: cint
-
-## Also defined in std/posix and system/io
-proc strerror(errnum: cint): cstring {.importc, header: "<string.h>".}
-when not defined(nimscript):
-  var errno {.importc, header: "<errno.h>".}: cint ## error variable
-
-template checkError(ret: cint) =
-  if ret == -1:
-    when not defined(nimscript):
-      raise newException(IOError, $strerror(errno))
-    else:
-      doAssert(false)
-
-proc duplicate*(oldfd: FileHandle): FileHandle =
-  ##[
-  Return a copy of the file handle `oldfd`.
-  After a successful return, both `FileHandle` may be used interchangeably.
-  They refer to the same open file description and share file offset and status flags.
-  Calls POSIX function `dup` on Posix platform and `_dup` on Windows
-  ]##
-  runnableExamples:
-    # stdoutDuplicate is a copy of stdout FileHandle that points to STDOUT
-    let stdoutDuplicate = duplicate(stdout.getFileHandle())
-    # Writing to stdoutDuplicate will write to stdout
-    doAssert(stdoutDuplicate != stdout.getFileHandle())
-    # On windows, opening a file from a FileHandle does not work
-    when not defined(windows):
-      var f : File
-      let res = open(f, stdoutDuplicate, mode=fmWrite)
-      let msg = "This is a test message that will be displayed ! \n"
-      f.write(msg)
-      # Output "Test"
-      f.close()
-
-  result = c_dup(oldfd)
-  checkError(result)
-
-proc duplicateTo*(oldfd: FileHandle, newfd: FileHandle) =
-  ##[
-  Perform the same task a `duplicate` but instead of using the lowest unused file descriptor
-  it uses the FileHandle` specified by `newfd`.
-  Calls POSIX function `dup2` on Posix platform and `_dup2` on Windows.
-  ]##
-  runnableExamples:
-    import os
-    # Redirect stdout to a file temporarily
-    let tmpFileName = getTempDir() / "hidden_output.txt"
-    let stdoutFileno = stdout.getFileHandle()
-    let stdoutDupFd = duplicate(stdoutFileno)
-
-    # Create a new file
-    let tmpFile: File = open(tmpFileName, fmAppend)
-    let tmpFileFd: FileHandle = tmpFile.getFileHandle()
-
-    # stdoutFileno now writes to tmpFile
-    duplicateTo(tmpFileFd, stdoutFileno)
-    echo "This is not displayed, but written to tmpFile instead !"
-
-    # Close file & restore stdout
-    tmpFile.close()
-    duplicateTo(stdoutDupFd, stdoutFileno)
-
-    # stdout is now restored !
-    echo "This is displayed"
-
-  let retValue = c_dup2(oldfd, newfd)
-  checkError(retValue)
diff --git a/tests/stdlib/tioutils.nim b/tests/stdlib/tioutils.nim
deleted file mode 100644
index 6854a7c1c..000000000
--- a/tests/stdlib/tioutils.nim
+++ /dev/null
@@ -1,49 +0,0 @@
-discard """
-  output: '''
-hello1
-hello1
-'''
-"""
-
-import std/ioutils
-import os
-from stdtest/specialpaths import buildDir
-
-block: # duplicate, duplicateTo
-  let tmpFileName = buildDir / "tioutils.txt"
-  template captureStdout(body) : untyped =
-    let stdoutFileno = stdout.getFileHandle()
-    # Duplicate stoudFileno
-    let stdout_dupfd = duplicate(stdoutFileno)
-    # Create a new file
-    # You can use append strategy if you'd like
-    let tmpFile: File = open(tmpFileName, fmWrite)
-    # Get the FileHandle (the file descriptor) of your file
-    let tmpFileFd: FileHandle = tmpFile.getFileHandle()
-    # dup2 tmpFileFd to stdoutFileno -> writing to stdoutFileno now writes to tmpFile
-    duplicateTo(tmpFileFd, stdoutFileno)
-    body
-    # Force flush
-    tmpFile.flushFile()
-    # Close tmp
-    tmpFile.close()
-    # Read tmp
-    let ret = readFile(tmpFileName)
-    # Restore stdout
-    duplicateTo(stdout_dupfd, stdoutFileno)
-    ret
-
-  proc duplicateStdout() =
-    var msg = "hello"
-    echo msg & "1"
-
-    let s = captureStdout:
-      echo msg & "2"
-
-    doAssert s == "hello2\n"
-
-  discard tryRemoveFile(tmpFileName)
-  duplicateStdout()
-  # Check it works twice
-  duplicateStdout()
-  doAssert tryRemoveFile(tmpFileName)