|
|
1.1 root 1: /* atari.c */
2:
3: /* Author:
4: * Guntram Blohm
5: * Buchenstrasse 19
6: * 7904 Erbach, West Germany
7: * Tel. ++49-7305-6997
8: * sorry - no regular network connection
9: */
10:
11: /*
12: * This file contains the 'standard' functions which are not supported
13: * by Atari/Mark Williams, and some other TOS-only requirements.
14: */
15:
16: #include "config.h"
17: #include "vi.h"
18:
19: #if TOS
20: #include <osbind.h>
21:
22: /* vi uses mode==0 only ... */
23: int access(file, mode)
24: char *file;
25: {
26: int fd=Fopen(file, 0);
27: if (fd<0)
28: return -1;
29: Fclose(fd);
30: return 0;
31: }
32:
33: char *mktemp(template)
34: char *template;
35: {
36: return template;
37: }
38:
39: /* read -- text mode, compress \r\n to \n
40: * warning: might fail when maxlen==1 and at eol
41: */
42:
43: int tread(fd, buf, maxlen)
44: int fd;
45: char *buf;
46: int maxlen;
47: {
48: int i, j, nread=read(fd, buf, (unsigned)maxlen);
49:
50: if (nread && buf[nread-1]=='\r')
51: { nread--;
52: lseek(fd, -1l, 1);
53: }
54: for (i=j=0; j<nread; i++,j++)
55: { if (buf[j]=='\r' && buf[j+1]=='\n')
56: j++;
57: buf[i]=buf[j];
58: }
59: return i;
60: }
61:
62: int twrite(fd, buf, maxlen)
63: int fd;
64: char *buf;
65: int maxlen;
66: {
67: int i, j, nwritten=0, hadnl=0;
68: char writbuf[BLKSIZE];
69:
70: for (i=j=0; j<maxlen; )
71: {
72: if ((writbuf[i++]=buf[j++])=='\n')
73: { writbuf[i-1]='\r';
74: if (i<BLKSIZE)
75: writbuf[i++]='\n';
76: else
77: hadnl=1;
78: }
79: if (i==BLKSIZE)
80: {
81: write(fd, writbuf, (unsigned)i);
82: i=0;
83: }
84: if (hadnl)
85: {
86: writbuf[i++]='\n';
87: hadnl=0;
88: }
89: }
90: if (i)
91: write(fd, writbuf, (unsigned)i);
92: return j;
93: }
94: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.