annotate 3rdparty/packages/ed/egets.c @ 1100:9ae08792594e

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