comparison 3rdparty/packages/ed/egets.c @ 994:bef1844de0dc

The ED editor ported from Minix
author roug
date Sun, 23 Feb 2003 21:11:37 +0000
parents
children
comparison
equal deleted inserted replaced
993:57b5e715a417 994:bef1844de0dc
1 /* egets.c */
2 #include <stdio.h>
3 #include "tools.h"
4 #include "ed.h"
5
6 int eightbit = 1; /* save eight bit */
7 int nonascii, nullchar, truncated;
8 int egets(str, size, stream)
9 char *str;
10 int size;
11 FILE *stream;
12 {
13 int c, count;
14 char *cp;
15
16 for (count = 0, cp = str; size > count;) {
17 c = getc(stream);
18 if (c == EOF) {
19 *cp++ = '\n';
20 *cp = EOS;
21 if (count) {
22 printf("[Incomplete last line]\n");
23 }
24 return(count);
25 }
26 if (c == NL) {
27 *cp++ = c;
28 *cp = EOS;
29 return(++count);
30 }
31 if (c > 127) {
32 if (!eightbit) /* if not saving eighth bit */
33 c = c & 127; /* strip eigth bit */
34 nonascii++; /* count it */
35 }
36 if (c) {
37 *cp++ = c; /* not null, keep it */
38 count++;
39 } else
40 nullchar++; /* count nulls */
41 }
42 str[count - 1] = EOS;
43 if (c != NL) {
44 printf("truncating line\n");
45 truncated++;
46 while ((c = getc(stream)) != EOF)
47 if (c == NL) break;
48 }
49 return(count);
50 }
51