aboutsummaryrefslogtreecommitdiffstats
path: root/unixio.c
diff options
context:
space:
mode:
Diffstat (limited to 'unixio.c')
-rw-r--r--unixio.c170
1 files changed, 170 insertions, 0 deletions
diff --git a/unixio.c b/unixio.c
new file mode 100644
index 0000000..ec235b9
--- /dev/null
+++ b/unixio.c
@@ -0,0 +1,170 @@
+/*********************************************************************/
+/* */
+/* This Program Written By Paul Edwards. */
+/* Released to the public domain. */
+/* */
+/*********************************************************************/
+/*********************************************************************/
+/* */
+/* unixio - Unix I/O functions written in terms of standard C */
+/* functions. */
+/* */
+/*********************************************************************/
+
+#include <stdio.h>
+
+#ifdef fileno
+#undef fileno
+#endif
+
+#include "unixio.h"
+
+static FILE *files[FOPEN_MAX];
+/*char *environ[] = { NULL };*/
+
+int open(const char *fnm, int mode, ...)
+{
+ int x;
+ char *modestr;
+
+ for (x = 3; x < FOPEN_MAX; x++)
+ {
+ if (files[x] == NULL)
+ {
+ break;
+ }
+ }
+ if (x == FOPEN_MAX)
+ {
+ return (-1);
+ }
+ if (mode == O_RDONLY)
+ {
+ modestr = "r";
+ }
+ else if (mode == O_WRONLY)
+ {
+ modestr = "w";
+ }
+ else if (mode == O_RDWR)
+ {
+ modestr = "r+";
+ }
+ files[x] = fopen(fnm, modestr);
+ if (files[x] == NULL)
+ {
+ return (-1);
+ }
+ return (x);
+}
+
+int read(int fno, void *buf, size_t bytes)
+{
+ size_t rb;
+
+ if (fno < 3)
+ {
+ rb = fread(buf, 1, bytes, stdin);
+ }
+ else
+ {
+ rb = fread(buf, 1, bytes, files[fno]);
+ }
+ return ((int)rb);
+}
+
+int write(int fno, const void *buf, size_t bytes)
+{
+ size_t wb = 0;
+
+ if (fno == 1)
+ {
+ wb = fwrite(buf, 1, bytes, stdout);
+ }
+ else if (fno == 2)
+ {
+ wb = fwrite(buf, 1, bytes, stderr);
+ }
+ else if (fno > 2)
+ {
+ wb = fwrite(buf, 1, bytes, files[fno]);
+ }
+ return ((int)wb);
+}
+
+int close(int fno)
+{
+ if (fno >= 3)
+ {
+ fclose(files[fno]);
+ files[fno] = NULL;
+ }
+ return (0);
+}
+
+char *getcwd(char *buf, int len)
+{
+ if (len != 0)
+ {
+ *buf = '\0';
+ }
+ return (buf);
+}
+
+void unlink(char *f)
+{
+ remove(f);
+ return;
+}
+
+int stat(char *f, struct stat *buf)
+{
+ memset(buf, '\0', sizeof *buf);
+ return (0);
+}
+
+int fileno(FILE *fp)
+{
+ return (0);
+}
+
+int access(char *f, int n)
+{
+ return (1);
+}
+
+int fstat(int fh, struct stat *buf)
+{
+ memset(buf, '\0', sizeof *buf);
+ return (0);
+}
+
+int pwait(int a, int *b, int c)
+{
+ return (0);
+}
+
+int putenv(char *x)
+{
+ return (0);
+}
+
+char *mktemp(char *s)
+{
+ return (tmpnam(s));
+}
+
+int chdir(char *path)
+{
+ return (0);
+}
+
+int rmdir(char *path)
+{
+ return (0);
+}
+
+int mkdir(char *path, int permissions)
+{
+ return (0);
+}
Un proyecto texto-plano.xyz