diff options
Diffstat (limited to 'util/riscos.c')
-rw-r--r-- | util/riscos.c | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/util/riscos.c b/util/riscos.c index 835730d79..2b4e92bd5 100644 --- a/util/riscos.c +++ b/util/riscos.c @@ -70,18 +70,6 @@ is_read_only(const char *filename) return 0; } -static void -set_filetype(const char *filename, const int type) -{ - _kernel_swi_regs r; - - r.r[0] = 18; - r.r[1] = (int) filename; - r.r[2] = type; - - if (_kernel_swi(OS_File, &r, &r)) - log_fatal("Can't set filetype for file %s!\nIs the file on a read-only file system?\n", filename); -} /* exported RISC OS functions */ @@ -126,124 +114,6 @@ riscos_kill(pid_t pid, int sig) return __set_errno(ESRCH); } -FILE * -riscos_fopen(const char *filename, const char *mode) -{ - FILE *fp; - _kernel_swi_regs r; - _kernel_oserror *e; - int filetype; - - r.r[0] = 17; - r.r[1] = (int) filename; - if (e =_kernel_swi(OS_File, &r, &r)) - log_fatal("Can't retrieve object information for %s!\n", filename); - if (r.r[0] == 2) { - errno = EISDIR; - return NULL; - } - if (r.r[0] == 3) { - /* setting file to to non-image file, after fopening, restore */ - filetype = (r.r[2] >> 8) & 0xfff; - set_filetype(filename, 0xfff); - fp = fopen(filename, mode); - set_filetype(filename, filetype); - } - else { - fp = fopen(filename, mode); - } - return fp; -} - -int -riscos_open(const char *filename, int oflag, ...) -{ - va_list ap; - _kernel_swi_regs r; - _kernel_oserror *e; - int fd, mode, filetype; - - r.r[0] = 17; - r.r[1] = (int) filename; - if (e =_kernel_swi(OS_File, &r, &r)) - log_fatal("Can't retrieve object information for %s!\n", filename); - if (r.r[0] == 2) { - errno = EISDIR; - return NULL; - } - - va_start(ap, oflag); - mode = va_arg(ap, int); - va_end(ap); - - if (r.r[0] == 3) { - /* setting file to to non-image file, after opening, restore */ - filetype = (r.r[2] >> 8) & 0xfff; - set_filetype(filename, 0xfff); - if (!mode) - fd = open(filename, oflag); - else - fd = open(filename, oflag, mode); - set_filetype(filename, filetype); - } - else { - if (!mode) - fd = open(filename, oflag); - else - fd = open(filename, oflag, mode); - } - return fd; -} - -int -riscos_fstat(int fildes, struct stat *buf) -{ - _kernel_swi_regs r; - _kernel_oserror *e; - char *filename; - int rc, filetype; - int handle = (int) __u->fd[fildes].handle; - - r.r[0] = 7; - r.r[1] = handle; - r.r[2] = 0; - r.r[5] = 0; - if (e = _kernel_swi(OS_Args, &r, &r)) - log_fatal("Can't convert from file handle to name!\n"); - - filename = m_alloc(1 - r.r[5]); - - r.r[0] = 7; - r.r[1] = handle; - r.r[2] = (int) filename; - r.r[5] = 1-r.r[5]; - if (e = _kernel_swi(OS_Args, &r, &r)) - log_fatal("Can't convert from file handle to name!\n"); - - r.r[0] = 17; - r.r[1] = (int) filename; - if (e =_kernel_swi(OS_File, &r, &r)) - log_fatal("Can't retrieve object information for %s!\n", filename); - if (r.r[0] == 2) { - errno = EISDIR; - return NULL; - } - if (r.r[0] == 3) { - /* setting file to to non-image file, after fstating, restore */ - filetype = (r.r[2] >> 8) & 0xfff; - set_filetype(filename, 0xfff); - rc = fstat(fildes, buf); - set_filetype(filename, filetype); - } - else { - rc = fstat(fildes, buf); - } - - m_free(filename); - - return rc; -} - int riscos_access(const char *path, int amode) { |