annotate 3rdparty/packages/uemacs/uefileio.c @ 1097:264588ae1cd4

Fixed cc-1.1 to cc
author boisy
date Wed, 09 Apr 2003 16:06:26 +0000
parents 48c646212b1c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
995
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
1 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
2 * The routines in this file read and write ASCII files from the disk. All of
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
3 * the knowledge about files are here. A better message writing scheme should
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
4 * be used.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
5 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
6 #include <stdio.h>
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
7 #include "ueed.h"
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
8
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
9 FILE *ffp; /* File pointer, all functions. */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
10
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
11 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
12 * Open a file for reading.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
13 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
14 ffropen(fn)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
15 char *fn;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
16 {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
17 if ((ffp=fopen(fn, "r")) == NULL)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
18 return (FIOFNF);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
19 return (FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
20 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
21
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
22 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
23 * Open a file for writing. Return TRUE if all is well, and FALSE on error
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
24 * (cannot create).
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
25 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
26 ffwopen(fn)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
27 char *fn;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
28 {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
29 #ifdef VMS
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
30 register int fd;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
31
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
32 if ((fd=creat(fn, 0666, "rfm=var", "rat=cr")) < 0
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
33 || (ffp=fdopen(fd, "w")) == NULL) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
34 #else
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
35 if ((ffp=fopen(fn, "w")) == NULL) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
36 #endif
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
37 mlwrite("Cannot open file for writing");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
38 return (FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
39 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
40 return (FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
41 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
42
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
43 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
44 * Close a file. Should look at the status in all systems.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
45 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
46 ffclose()
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
47 {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
48 #ifdef V7
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
49 if (fclose(ffp) != FALSE) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
50 mlwrite("Error closing file");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
51 return(FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
52 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
53 return(FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
54 #endif
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
55 fclose(ffp);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
56 return (FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
57 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
58
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
59 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
60 * Write a line to the already opened file. The "buf" points to the buffer,
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
61 * and the "nbuf" is its length, less the free newline. Return the status.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
62 * Check only at the newline.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
63 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
64 ffputline(buf, nbuf)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
65 char buf[];
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
66 {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
67 register int i;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
68 for (i = 0; i < nbuf; ++i)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
69 putc(buf[i]&0xFF, ffp);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
70
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
71 putc('\n', ffp);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
72
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
73 if (ferror(ffp)) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
74 mlwrite("Write I/O error");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
75 return (FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
76 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
77
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
78 return (FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
79 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
80
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
81 /*
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
82 * Read a line from a file, and store the bytes in the supplied buffer. The
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
83 * "nbuf" is the length of the buffer. Complain about long lines and lines
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
84 * at the end of the file that don't have a newline present. Check for I/O
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
85 * errors too. Return status.
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
86 */
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
87 ffgetline(buf, nbuf)
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
88 register char buf[];
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
89 {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
90 register int c;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
91 register int i;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
92
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
93 i = 0;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
94
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
95 while ((c = fgetc(ffp)) != EOF && c != '\n') {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
96 if (i >= nbuf-1) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
97 mlwrite("File has long line");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
98 return (FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
99 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
100 buf[i++] = c;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
101 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
102
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
103 if (c == EOF) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
104 if (ferror(ffp)) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
105 mlwrite("File read error");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
106 return (FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
107 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
108
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
109 if (i != 0) {
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
110 mlwrite("File has funny line at EOF");
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
111 return (FIOERR);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
112 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
113 return (FIOEOF);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
114 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
115
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
116 buf[i] = 0;
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
117 return (FIOSUC);
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
118 }
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
119
48c646212b1c 'microEMACS' for OS-9.
roug
parents:
diff changeset
120