(in-package :de.anvi.croatoan)

(defun get-string (window n &key y x)
  "Read a string from the keyboard and return it.

Reading is performed until a newline or carriage return is received.
The terminating character is not included in the returned string.

If n is given, read at most n chars, to prevent a possible input
buffer overflow.

If the destination coordinates y and x are given, move the cursor
there first."
  (let ((winptr (winptr window)))
    (with-foreign-pointer-as-string (string n)
      (cond ((and y x)
             (%mvwgetnstr winptr y x string n))
            (t
             (%wgetnstr winptr string n))))))
