X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fos-Linux%2Ffile.c;h=4083bf96c7231c7144dda7ce1828c47a0c855a04;hb=9c920a8402f2bb9bd931801d429b65f4eb6a262b;hp=bda79c1820300cfbc84b7a6df92d5707e4b3a189;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index bda79c182..4083bf96c 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c @@ -8,9 +8,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -18,8 +15,6 @@ #include #include #include -#include -#include #include "os.h" #include "user.h" #include "kern_util.h" @@ -27,8 +22,7 @@ static void copy_stat(struct uml_stat *dst, struct stat64 *src) { *dst = ((struct uml_stat) { - .ust_major = MAJOR(src->st_dev), /* device */ - .ust_minor = MINOR(src->st_dev), + .ust_dev = src->st_dev, /* device */ .ust_ino = src->st_ino, /* inode */ .ust_mode = src->st_mode, /* protection */ .ust_nlink = src->st_nlink, /* number of hard links */ @@ -40,8 +34,6 @@ static void copy_stat(struct uml_stat *dst, struct stat64 *src) .ust_atime = src->st_atime, /* time of last access */ .ust_mtime = src->st_mtime, /* time of last modification */ .ust_ctime = src->st_ctime, /* time of last change */ - .ust_rmajor = MAJOR(src->st_rdev), - .ust_rminor = MINOR(src->st_rdev), }); } @@ -79,29 +71,12 @@ int os_stat_file(const char *file_name, struct uml_stat *ubuf) return(err); } -int os_lstat_file(const char *file_name, struct uml_stat *ubuf) -{ - struct stat64 sbuf; - int err; - - do { - err = lstat64(file_name, &sbuf); - } while((err < 0) && (errno == EINTR)) ; - - if(err < 0) - return(-errno); - - if(ubuf != NULL) - copy_stat(ubuf, &sbuf); - return(err); -} - -int os_access(const char *file, int mode) +int os_access(const char* file, int mode) { int amode, err; - amode=(mode& OS_ACC_R_OK ? R_OK : 0) | (mode& OS_ACC_W_OK ? W_OK : 0) | - (mode& OS_ACC_X_OK ? X_OK : 0) | (mode& OS_ACC_F_OK ? F_OK : 0) ; + amode=(mode&OS_ACC_R_OK ? R_OK : 0) | (mode&OS_ACC_W_OK ? W_OK : 0) | + (mode&OS_ACC_X_OK ? X_OK : 0) | (mode&OS_ACC_F_OK ? F_OK : 0) ; err = access(file, amode); if(err < 0) @@ -110,41 +85,6 @@ int os_access(const char *file, int mode) return(0); } -int os_set_file_time(const char *file, unsigned long access, unsigned long mod) -{ - struct utimbuf buf = ((struct utimbuf){ .actime = access, - .modtime = mod }); - int err; - - err = utime(file, &buf); - if(err < 0) - return(-errno); - - return(0); -} - -int os_set_file_perms(const char *file, int mode) -{ - int err; - - err = chmod(file, mode); - if(err < 0) - return(-errno); - - return(0); -} - -int os_set_file_owner(const char *file, int owner, int group) -{ - int err; - - err = chown(file, owner, group); - if(err < 0) - return(-errno); - - return(0); -} - void os_print_error(int error, const char* str) { errno = error < 0 ? -error : error; @@ -247,8 +187,7 @@ int os_sigio_async(int master, int slave) if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || (fcntl(master, F_SETOWN, os_getpid()) < 0)){ - printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", - errno); + printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", errno); return(-errno); } @@ -279,7 +218,7 @@ int os_file_type(char *file) struct uml_stat buf; int err; - err = os_lstat_file(file, &buf); + err = os_stat_file(file, &buf); if(err < 0) return(err); @@ -326,7 +265,6 @@ int os_open_file(char *file, struct openflags flags, int mode) if(flags.c) f |= O_CREAT; if(flags.t) f |= O_TRUNC; if(flags.e) f |= O_EXCL; - if(flags.d) f |= O_DIRECT; fd = open64(file, f, mode); if(fd < 0) @@ -340,96 +278,6 @@ int os_open_file(char *file, struct openflags flags, int mode) return(fd); } -void *os_open_dir(char *path, int *err_out) -{ - void *dir; - - dir = opendir(path); - *err_out = -errno; - return(dir); -} - -int os_seek_dir(void *stream, unsigned long long pos) -{ - seekdir(stream, pos); - return(0); -} - -int os_read_dir(void *stream, unsigned long long *ino_out, char **name_out) -{ - struct dirent *ent; - - errno = 0; - ent = readdir(stream); - if(ent == NULL){ - if(errno != 0) - return(-errno); - *name_out = NULL; - return(0); - } - - *ino_out = ent->d_ino; - *name_out = ent->d_name; - return(0); -} - -int os_tell_dir(void *stream) -{ - return(telldir(stream)); -} - -int os_close_dir(void *stream) -{ - int err; - - err = closedir(stream); - if(err < 0) - return(-errno); - return(0); -} - -int os_remove_file(const char *file) -{ - int err; - - err = unlink(file); - if(err) - return(-errno); - - return(0); -} - -int os_move_file(const char *from, const char *to) -{ - int err; - - err = rename(from, to); - if(err) - return(-errno); - - return(0); -} - -int os_truncate_fd(int fd, unsigned long long len) -{ - int err; - - err = ftruncate(fd, len); - if(err) - return(-errno); - return(0); -} - -int os_truncate_file(const char *file, unsigned long long len) -{ - int err; - - err = truncate(file, len); - if(err) - return(-errno); - return(0); -} - int os_connect_socket(char *name) { struct sockaddr_un sock; @@ -459,8 +307,7 @@ int os_seek_file(int fd, __u64 offset) __u64 actual; actual = lseek64(fd, offset, SEEK_SET); - if(actual != offset) - return(-errno); + if(actual != offset) return(-errno); return(0); } @@ -548,19 +395,6 @@ int os_file_size(char *file, long long *size_out) return(0); } -int os_fd_size(int fd, long long *size_out) -{ - struct stat buf; - int err; - - err = fstat(fd, &buf); - if(err) - return(-errno); - - *size_out = buf.st_size; - return(0); -} - int os_file_modtime(char *file, unsigned long *modtime) { struct uml_stat buf; @@ -661,16 +495,6 @@ int os_set_fd_async(int fd, int owner) return(0); } -int os_clear_fd_async(int fd) -{ - int flags = fcntl(fd, F_GETFL); - - flags &= ~(O_ASYNC | O_NONBLOCK); - if(fcntl(fd, F_SETFL, flags) < 0) - return(-errno); - return(0); -} - int os_set_fd_block(int fd, int blocking) { int flags; @@ -801,72 +625,6 @@ int os_create_unix_socket(char *file, int len, int close_on_exec) return(sock); } -int os_make_symlink(const char *to, const char *from) -{ - int err; - - err = symlink(to, from); - if(err) - return(-errno); - - return(0); -} - -int os_read_symlink(const char *file, char *buf, int size) -{ - int err; - - err = readlink(file, buf, size); - if(err < 0) - return(-errno); - - return(err); -} - -int os_link_file(const char *to, const char *from) -{ - int err; - - err = link(to, from); - if(err) - return(-errno); - - return(0); -} - -int os_make_dir(const char *dir, int mode) -{ - int err; - - err = mkdir(dir, mode); - if(err) - return(-errno); - - return(0); -} - -int os_make_dev(const char *name, int mode, int major, int minor) -{ - int err; - - err = mknod(name, mode, MKDEV(major, minor)); - if(err) - return(-errno); - - return(0); -} - -int os_remove_dir(const char *dir) -{ - int err; - - err = rmdir(dir); - if(err) - return(-errno); - - return(0); -} - void os_flush_stdout(void) { fflush(stdout); @@ -898,38 +656,6 @@ int os_lock_file(int fd, int excl) return(err); } -int os_stat_filesystem(char *path, long *bsize_out, long long *blocks_out, - long long *bfree_out, long long *bavail_out, - long long *files_out, long long *ffree_out, - void *fsid_out, int fsid_size, long *namelen_out, - long *spare_out) -{ - struct statfs64 buf; - int err; - - err = statfs64(path, &buf); - if(err < 0) - return(-errno); - - *bsize_out = buf.f_bsize; - *blocks_out = buf.f_blocks; - *bfree_out = buf.f_bfree; - *bavail_out = buf.f_bavail; - *files_out = buf.f_files; - *ffree_out = buf.f_ffree; - memcpy(fsid_out, &buf.f_fsid, - sizeof(buf.f_fsid) > fsid_size ? fsid_size : - sizeof(buf.f_fsid)); - *namelen_out = buf.f_namelen; - spare_out[0] = buf.f_spare[0]; - spare_out[1] = buf.f_spare[1]; - spare_out[2] = buf.f_spare[2]; - spare_out[3] = buf.f_spare[3]; - spare_out[4] = buf.f_spare[4]; - spare_out[5] = buf.f_spare[5]; - return(0); -} - /* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically