diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 11:58:26 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 11:58:26 +0300 |
commit | 765c7494b3dac62207e6cd57fb839997e237f292 (patch) | |
tree | f7da12ffdb85d9f82671cb3122775b2ce73f7ad9 /atari/textrd.c | |
parent | cce5115e21db1702e0617afdca36633e7e2c9eae (diff) | |
download | egawk-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.c | 30 |
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); +} |