mes: read-string: Take optional port argument.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 21 Oct 2018 10:00:00 +0000 (12:00 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 21 Oct 2018 10:00:00 +0000 (12:00 +0200)
* src/posix.c (read_string): Take optional port argument.
* mes/module/mes/guile.mes (read-string): Remove.

mes/module/mes/guile.mes
src/posix.c

index 6516941591167ebc9524c5562f16e8cab7545279..ab1e2455438557b058aa731401d6189bd3c0316f 100644 (file)
 (mes-use-module (srfi srfi-16))
 (mes-use-module (mes display))
 
-(if #t ;;(not (defined? 'read-string))
-    (define (read-string)
-      (define (read-string c)
-        (if (eq? c #\*eof*) '()
-            (cons c (read-string (read-char)))))
-      (let ((string (list->string (read-string (read-char)))))
-        (if (and=> (getenv "MES_DEBUG") (compose (lambda (o) (> o 3)) string->number))
-            (core:display-error (string-append "drained: `" string "'\n")))
-        string)))
-
 (define (drain-input port) (read-string))
 
 (define (make-string n . fill)
index acd77e485e65be2bc17af49de9a8fdb1870dd924..eba767a416c595ab9cccd8476640420f254b3cde 100644 (file)
@@ -112,8 +112,11 @@ write_char (SCM i) ///((arity . n))
 }
 
 SCM
-read_string ()
+read_string (SCM port) ///((arity . n))
 {
+  int fd = g_stdin;
+  if (TYPE (port) == TPAIR && TYPE (car (port)) == TNUMBER)
+    g_stdin = VALUE (CAR (port));
   SCM lst = cell_nil;
   SCM c = read_char ();
   while (VALUE (c) != -1)
@@ -121,6 +124,7 @@ read_string ()
       lst = append2 (lst, cons (c, cell_nil));
       c = read_char ();
     }
+  g_stdin = fd;
   return MAKE_STRING (lst);
 }