diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/ext/io.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/include/mruby/ext/io.h b/include/mruby/ext/io.h new file mode 100644 index 000000000..7ecf0a4a4 --- /dev/null +++ b/include/mruby/ext/io.h @@ -0,0 +1,60 @@ +/* +** io.h - IO class +*/ + +#ifndef MRUBY_IO_H +#define MRUBY_IO_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include <errno.h> + +#include <unistd.h> +#include <fcntl.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/wait.h> +#include <stdio.h> +#include <string.h> +#include <limits.h> + +struct mrb_io { + int fd; /* file descriptor */ + int fd2; /* file descriptor */ + int pid; /* child's pid (for pipes) */ +}; + +struct mrb_io_type { + const char *struct_name; + void (*dfree)(mrb_state *mrb, void *); +}; + +#define FMODE_READABLE 0x00000001 +#define FMODE_WRITABLE 0x00000002 +#define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE) +#define FMODE_BINMODE 0x00000004 +#define FMODE_SYNC 0x00000008 +#define FMODE_TTY 0x00000010 +#define FMODE_DUPLEX 0x00000020 +#define FMODE_APPEND 0x00000040 +#define FMODE_CREATE 0x00000080 +#define FMODE_WSPLIT 0x00000200 +#define FMODE_WSPLIT_INITIALIZED 0x00000400 +#define FMODE_TRUNC 0x00000800 +#define FMODE_TEXTMODE 0x00001000 +#define FMODE_SETENC_BY_BOM 0x00100000 + +#define E_IO_ERROR (mrb_class_obj_get(mrb, "IOError")) +#define E_EOF_ERROR (mrb_class_obj_get(mrb, "EOFError")) + +mrb_value mrb_open_file(mrb_state *mrb, int argc, mrb_value *argv, mrb_value io); +void fptr_finalize(mrb_state *mrb, struct mrb_io *fptr, int noraise); +mrb_value mrb_file_exist(mrb_state *mrb, mrb_value fname); + +#if defined(__cplusplus) +} /* extern "C" { */ +#endif +#endif /* MRUBY_IO_H */ |
