Module rdstdin

This module contains code for reading from stdin. On UNIX the linenoise library is wrapped and set up to provide default key bindings (e.g. you can navigate with the arrow keys). On Windows system.readLine is used. This suffices because Windows' console already provides the wanted functionality.

Consts

VK_SHIFT = 16
  Source Edit
VK_CONTROL = 17
  Source Edit
VK_MENU = 18
  Source Edit
KEY_EVENT = 1
  Source Edit

Procs

proc readLineFromStdin(prompt: string): TaintedString {.
tags: [ReadIOEffect, WriteIOEffect], raises: [IOError]
.}
Reads a line from stdin.   Source Edit
proc readLineFromStdin(prompt: string; line: var TaintedString): bool {.
tags: [ReadIOEffect, WriteIOEffect], raises: [IOError]
.}
Reads a line from stdin. line must not be nil! May throw an IO exception. A line of text may be delimited by CR, LF or CRLF. The newline character(s) are not part of the returned string. Returns false if the end of the file has been reached, true otherwise. If false is returned line contains no new data.   Source Edit
proc readConsoleInputW(hConsoleInput: Handle; lpBuffer: var INPUT_RECORD;
                      nLength: uint32; lpNumberOfEventsRead: var uint32): WINBOOL {.
stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW"
.}
  Source Edit
proc readPasswordFromStdin(prompt: string; password: var TaintedString): bool {.
tags: [ReadIOEffect, WriteIOEffect], raises: [IOError]
.}
Reads a password from stdin without printing it. password must not be nil! Returns false if the end of the file has been reached, true otherwise.   Source Edit
proc readPasswordFromStdin(prompt: string): TaintedString {.
raises: [IOError], tags: [ReadIOEffect, WriteIOEffect]
.}
Reads a password from stdin without printing it.   Source Edit