aboutsummaryrefslogtreecommitdiffstats
path: root/atari/textrd.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-16 11:58:26 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-16 11:58:26 +0300
commit765c7494b3dac62207e6cd57fb839997e237f292 (patch)
treef7da12ffdb85d9f82671cb3122775b2ce73f7ad9 /atari/textrd.c
parentcce5115e21db1702e0617afdca36633e7e2c9eae (diff)
downloadegawk-765c7494b3dac62207e6cd57fb839997e237f292.tar.gz
egawk-765c7494b3dac62207e6cd57fb839997e237f292.tar.bz2
egawk-765c7494b3dac62207e6cd57fb839997e237f292.zip
Moving to 2.13.2.
Diffstat (limited to 'atari/textrd.c')
-rw-r--r--atari/textrd.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/atari/textrd.c b/atari/textrd.c
new file mode 100644
index 00000000..07ed0905
--- /dev/null
+++ b/atari/textrd.c
@@ -0,0 +1,30 @@
+/*
+ * From gnulib Atari ST sources - with a fix for a bug causing
+ * a premature EOF when only characters read are CR's.
+ * Written by Eric R. Smith and placed in the public domain.
+ * Fix - Michal Jaegermann, June 1991.
+ */
+#include <stdio.h>
+#include <unistd.h>
+int
+_text_read(fd, buf, nbytes)
+ int fd;
+ char *buf;
+ int nbytes;
+{
+ char *to, *from;
+ int r;
+ do {
+ r = read(fd, buf, nbytes);
+ if (r <= 0) /* if EOF or read error - return */
+ return r;
+ to = from = buf;
+ do {
+ if (*from == '\r')
+ from++;
+ else
+ *to++ = *from++;
+ } while (--r);
+ } while (buf == to); /* only '\r's? - try to read next nbytes */
+ return (to - buf);
+}