summaryrefslogtreecommitdiff
path: root/delcr.c
blob: ab47860fc3ee9ee8c7f4f19187e5136b118c046b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "buffer.h"
#include "exit.h"

main()
{
  register int n;
  register char *x;
  char ch;
  register int flagcr = 0;

  for (;;) {
    n = buffer_feed(buffer_0);
    if (n < 0) _exit(111);
    if (!n) {
      if (flagcr) buffer_PUTC(buffer_1,"\r"[0]);
      buffer_flush(buffer_1);
      _exit(0);
    }
    x = buffer_PEEK(buffer_0);
    buffer_SEEK(buffer_0,n);

    while (n > 0) {
      ch = *x++; --n;
      if (!flagcr) {
        if (ch == '\r') { flagcr = 1; continue; }
	buffer_PUTC(buffer_1,ch);
	continue;
      }
      if (ch != '\n') {
        buffer_PUTC(buffer_1,"\r"[0]);
        if (ch == '\r') continue;
      }
      flagcr = 0;
      buffer_PUTC(buffer_1,ch);
    }
  }
}