]> www.ginac.de Git - ginac.git/blobdiff - ginsh/ginsh_lexer.lpp
[PATCH] Make ginsh evaluate line-by-line in non-interactive mode.
[ginac.git] / ginsh / ginsh_lexer.lpp
index 8692b1ac4fea6a7e1a80d0445939b5c9c6e6e7b9..5169ecef82865567ab8097f91f277a667e6a422f 100644 (file)
@@ -203,8 +203,16 @@ static int ginsh_input(char *buf, int max_size)
                        YY_FATAL_ERROR("input in flex scanner failed");
                result = n;
 #endif
-       } else if (((result = fread(buf, 1, max_size, yyin)) == 0) && ferror(yyin))
-               YY_FATAL_ERROR("input in flex scanner failed");
+       } else {
+               int c = '*', n;
+               for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\n'; ++n)
+                       buf[n] = (char)c;
+               if (c == '\n')
+                       buf[n++] = (char)c;
+               if (c == EOF && ferror(yyin))
+                       YY_FATAL_ERROR("input in flex scanner failed");
+               result = n;
+       }
 
        return result;
 }