summary refs log tree commit diff stats
path: root/lib/std
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 /lib/std
parent235e4930ab2f5a9a4c94d6cc66d62701ee58550d (diff)
downloadNim-c243639979b795d28a69f19ad988726225e22fcd.tar.gz
`ioutils` are moved to `fusion` (#15822)
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/ioutils.nim85
1 files changed, 0 insertions, 85 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)