summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/mwerks/mwfopenrf.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/Mac/mwerks/mwfopenrf.c b/Mac/mwerks/mwfopenrf.c
new file mode 100644
index 0000000..fa2a39b
--- /dev/null
+++ b/Mac/mwerks/mwfopenrf.c
@@ -0,0 +1,47 @@
+/*
+** mwfopenrf - Open resource fork as stdio file for CodeWarrior.
+**
+** Jack Jansen, CWI, August 1995.
+*/
+
+#ifdef __MWERKS__
+#include <stdio.h>
+#include <unix.h>
+#include <errno.h>
+#include "errno_unix.h"
+
+FILE *
+fopenRF(name, mode)
+ char *name;
+ char *mode;
+{
+ int fd;
+ FILE *fp;
+ int modebits = -1;
+ int extramodebits;
+ char *modep;
+
+ for(modep=mode; *modep; modep++) {
+ switch(*modep) {
+ case 'r': modebits = O_RDONLY; break;
+ case 'w': modebits = O_WRONLY; extramodebits |= O_CREAT|O_TRUNC; break;
+ case 'a': modebits = O_RDONLY;
+ extramodebits |= O_CREAT|O_APPEND;
+ extramodebits &= ~O_TRUNC;
+ break;
+ case '+': modebits = O_RDWR;
+ extramodebits &= ~O_TRUNC;
+ break;
+ case 'b': extramodebits |= O_BINARY;
+ break;
+ default:
+ errno = EINVAL;
+ return NULL;
+ }
+ }
+ fd = open(name, modebits|extramodebits|O_RSRC);
+ if ( fd < 0 )
+ return NULL;
+ return fdopen(fd, mode);
+}
+#endif /* __MWERKS__ */