This is ostext.c in view mode; [Download] [Up]
/* unix/ostext.c */
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "elvis.h"
char id_ostext[] = "$Id: ostext.c,v 2.4 1995/11/22 01:08:41 steve Exp $";
/* This is the filedescriptor of the file being read */
static int fd;
/* Open a text file for reading (if rwa is 'r') or create/overwrite
* a file for writing (if rwa is 'w') or appending (if rwa is 'a').
* When overwriting an existing file, the file's original permissions
* should be preserved. Returns 0 if successful, -1 if no permission,
* -2 if not a regular file (e.g., a directory), or -3 for other errors.
*/
int txtopen(filename, rwa, binary)
char *filename; /* name of file */
_char_ rwa; /* 'r'=read, 'w'=write, 'a'=append */
BOOLEAN binary; /* (ignored) */
{
assert(rwa == 'r' || rwa == 'w' || rwa == 'a');
switch (rwa)
{
case 'r': fd = open(filename, O_RDONLY); break;
case 'w': fd = creat(filename, 0666); break;
case 'a': fd = open(filename, O_WRONLY|O_APPEND); break;
}
if (fd < 0)
{
if (errno == EPERM || EACCES)
return -1;
else if (errno == EISDIR)
return -2;
else
return -3;
}
return 0;
}
/* Close the file that was opened by txtopen(). */
void txtclose()
{
close(fd);
}
/* Append text to a file which has been opened for writing.
* Returns nbytes if successful, or 0 if the disk is full.
* Should perform any necessary translations for converting
* elvis' idea of text into the local OS's idea of text.
*/
int txtwrite(buf, nbytes)
CHAR *buf; /* buffer, holds text to be written */
int nbytes; /* number of characters to bewritten */
{
return write(fd, buf, (size_t)nbytes);
}
/* Read the next chunk of text from a file. nbytes is the maximum
* number to read. Returns the number of characters actually read
* after any conversions such as CRLF->LF translation.
*/
int txtread(buf, nbytes)
CHAR *buf; /* buffer where text should be read into */
int nbytes; /* maximum number of bytes to read */
{
return read(fd, buf, (size_t)nbytes);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.