summaryrefslogtreecommitdiff
path: root/libc/stdio1/fopen.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdio1/fopen.c')
-rw-r--r--libc/stdio1/fopen.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/libc/stdio1/fopen.c b/libc/stdio1/fopen.c
deleted file mode 100644
index 1265ff5..0000000
--- a/libc/stdio1/fopen.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* simplified linux fopen.c
- Copyright (C) 1995 Joel N. Weber II
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#include "stdio.h"
-#include <malloc.h>
-
-FILE * fopen(name, openmode)
-char *name;
-char *openmode;
-{
- FILE *new;
- int openplus=0;
- char basemode;
-
- basemode = openmode[0];
- while (openmode[0] != 0){
- switch(openmode[0]){
- case '+': openplus=1; break;
- }
- openmode++;
- }
-
- new = malloc(sizeof(new));
- if( new == 0 ) return 0;
- new->bufread = new->bufpos = new->bufstart = malloc(BUFSIZ);
- if( new->bufstart == 0 ) { free(new) ; return 0; }
-
- new->bufend = new->bufstart + BUFSIZ;
- new->buffer_mode = _IOFBF;
- new->iotrans = 0;
- new->fd = -1;
- if (openplus){
- new->file_mode = _MODE_RDWR;
- switch (basemode){
- case 'a':
- new->fd = open(name, O_RDWR | O_APPEND | O_CREAT);
- break;
- case 'r':
- new->fd = open(name, O_RDWR);
- break;
- case 'w':
- new->fd = open(name, O_RDWR | O_TRUNC | O_CREAT);
- break;
- }
- } else switch (basemode){
- case 'a':
- new->fd = open(name, O_WRONLY | O_APPEND | O_CREAT);
- new->file_mode = _MODE_WRITE;
- break;
- case 'r':
- new->fd = open(name, O_RDONLY);
- new->file_mode = _MODE_READ;
- break;
- case 'w':
- new->fd = open(name, O_WRONLY | O_TRUNC | O_CREAT);
- new->file_mode = _MODE_WRITE;
- break;
- }
- if( new->fd < 0 )
- {
- free(new->bufstart);
- free(new);
- return 0;
- }
- return new;
-}