60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
| /*#######################################################################
 | |
| # RDOS operating system
 | |
| # Copyright (C) 1988-2006, Leif Ekblad
 | |
| #
 | |
| # This library is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU Lesser General Public License as published
 | |
| # by the Free Software Foundation; either version 2.1 of the License, or
 | |
| # (at your option) any later version.
 | |
| #
 | |
| # This library is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| # GNU Lesser General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU Lesser General Public
 | |
| # License along with this library; if not, write to the Free Software
 | |
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
 | |
| #
 | |
| # The author of this program may be contacted at leif@rdos.net
 | |
| #
 | |
| # open.c                                                                
 | |
| # open function implementation
 | |
| #
 | |
| ##########################################################################*/
 | |
| 
 | |
| #include "config.h"
 | |
| #include <_ansi.h>
 | |
| #include <_syslist.h>
 | |
| #include <fcntl.h>
 | |
| #include <errno.h>
 | |
| #include "rdos.h"
 | |
| #include <stdarg.h>
 | |
| 
 | |
| int open(const char *file, int flags, ...)
 | |
| {
 | |
| 	int handle;
 | |
| 	int pos;
 | |
| 
 | |
| 	if (flags & O_CREAT)
 | |
| 		handle = RdosCreateFile(file, flags);
 | |
| 	else
 | |
| 		handle = RdosOpenFile(file, flags);
 | |
| 
 | |
| 	if (handle >= 0)
 | |
| 	{
 | |
| 		if (flags & O_APPEND)
 | |
| 		{
 | |
| 			pos = RdosGetFileSize(handle);
 | |
| 			RdosSetFilePos(handle, pos);
 | |
| 		}
 | |
| 
 | |
| 		if (flags & O_TRUNC)
 | |
| 			RdosSetFileSize(handle, 0);
 | |
| 	
 | |
| 		return handle;
 | |
| 	}
 | |
| 	else
 | |
| 		return -1;
 | |
| }
 |