72 lines
		
	
	
	
		
			929 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			72 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*/
 | |
| }
 |