summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/interact.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/interact.cc')
-rw-r--r--Build/source/utils/asymptote/interact.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/interact.cc b/Build/source/utils/asymptote/interact.cc
index 044b46fc6e8..cc172984ac8 100644
--- a/Build/source/utils/asymptote/interact.cc
+++ b/Build/source/utils/asymptote/interact.cc
@@ -13,6 +13,7 @@
#include <unistd.h>
#include <csignal>
#include <cstdio>
+#include <cstring>
#include "interact.h"
#include "runhistory.h"
@@ -85,10 +86,21 @@ FILE *fin=NULL;
char *readpipeline(const char *prompt)
{
+#if _POSIX_VERSION >= 200809L
char *line=NULL;
size_t n;
getline(&line,&n,fin);
return line;
+#else
+ const int max_size=256;
+ static char buf[max_size];
+ ostringstream s;
+ do {
+ if(fgets(buf,max_size-1,fin) == NULL) break;
+ s << buf;
+ } while(buf[std::strlen(buf)-1] != '\n');
+ return StrdupMalloc(s.str());
+#endif
}
void pre_readline()