73 lines
929 B
C
73 lines
929 B
C
/* $Header$ */
|
|
/* SYSTEM DEPENDENT ROUTINES */
|
|
|
|
#include "system.h"
|
|
#include "inputtype.h"
|
|
#include <sys/stat.h>
|
|
|
|
extern long lseek();
|
|
|
|
int
|
|
xopen(name, flag, mode)
|
|
char *name;
|
|
{
|
|
if (name[0] == '-' && name[1] == '\0')
|
|
return (flag == OP_RDONLY) ? 0 : 1;
|
|
|
|
switch (flag) {
|
|
|
|
case OP_RDONLY:
|
|
return open(name, 0);
|
|
case OP_WRONLY:
|
|
return open(name, 1);
|
|
case OP_CREAT:
|
|
return creat(name, mode);
|
|
case OP_APPEND:
|
|
{
|
|
register fd;
|
|
|
|
if ((fd = open(name, 1)) < 0)
|
|
return -1;
|
|
lseek(fd, 0L, 2);
|
|
return fd;
|
|
}
|
|
}
|
|
/*NOTREACHED*/
|
|
}
|
|
|
|
int
|
|
xclose(fildes)
|
|
{
|
|
if (fildes != 0 && fildes != 1)
|
|
return close(fildes);
|
|
return -1;
|
|
}
|
|
|
|
#ifdef READ_IN_ONE
|
|
long
|
|
xfsize(fildes)
|
|
{
|
|
struct stat stbuf;
|
|
|
|
if (fstat(fildes, &stbuf) != 0)
|
|
return -1;
|
|
return stbuf.st_size;
|
|
}
|
|
#endif READ_IN_ONE
|
|
|
|
exit(n)
|
|
{
|
|
_exit(n);
|
|
}
|
|
|
|
xstop(how, stat)
|
|
{
|
|
switch (how) {
|
|
case S_ABORT:
|
|
abort();
|
|
case S_EXIT:
|
|
exit(stat);
|
|
}
|
|
/*NOTREACHED*/
|
|
}
|