diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2001-11-06 15:07:17 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2001-11-06 15:07:17 +0000 |
commit | 2df1c04f30802df9a23a19e22042884430c429d2 (patch) | |
tree | b1175acab6d7d4673b5d59f9d3b6e7c49532f195 /fusepro.c | |
parent | 21ed360572b816a11e7a37824907105882686446 (diff) | |
download | libfuse-2df1c04f30802df9a23a19e22042884430c429d2.tar.gz |
cleanups
Diffstat (limited to 'fusepro.c')
-rw-r--r-- | fusepro.c | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/fusepro.c b/fusepro.c deleted file mode 100644 index ce32000..0000000 --- a/fusepro.c +++ /dev/null @@ -1,314 +0,0 @@ -#ifdef linux -/* For pread()/pwrite() */ -#define _XOPEN_SOURCE 500 -#endif - -#include <fuse.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <dirent.h> -#include <errno.h> -#include <signal.h> -#include <utime.h> -#include <fcntl.h> - -static struct fuse *pro_fuse; - -static int pro_getattr(struct fuse_cred *cred, const char *path, - struct stat *stbuf) -{ - int res; - - res = lstat(path, stbuf); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_readlink(struct fuse_cred *cred, const char *path, char *buf, - size_t size) -{ - int res; - - res = readlink(path, buf, size - 1); - if(res == -1) - return -errno; - - buf[res] = '\0'; - return 0; -} - - -static int pro_getdir(struct fuse_cred *cred, const char *path, fuse_dirh_t h, - fuse_dirfil_t filler) -{ - DIR *dp; - struct dirent *de; - int res; - - dp = opendir(path); - if(dp == NULL) - return -errno; - - while((de = readdir(dp)) != NULL) { - res = filler(h, de->d_name, de->d_type); - if(res != 0) - break; - } - - closedir(dp); - return res; -} - -static int pro_mknod(struct fuse_cred *cred, const char *path, mode_t mode, - dev_t rdev) -{ - int res; - - res = mknod(path, mode, rdev); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_mkdir(struct fuse_cred *cred, const char *path, mode_t mode) -{ - int res; - - res = mkdir(path, mode); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_unlink(struct fuse_cred *cred, const char *path) -{ - int res; - - res = unlink(path); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_rmdir(struct fuse_cred *cred, const char *path) -{ - int res; - - res = rmdir(path); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_symlink(struct fuse_cred *cred, const char *from, - const char *to) -{ - int res; - - res = symlink(from, to); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_rename(struct fuse_cred *cred, const char *from, const char *to) -{ - int res; - - res = rename(from, to); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_link(struct fuse_cred *cred, const char *from, const char *to) -{ - int res; - - res = link(from, to); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_chmod(struct fuse_cred *cred, const char *path, mode_t mode) -{ - int res; - - res = chmod(path, mode); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_chown(struct fuse_cred *cred, const char *path, uid_t uid, - gid_t gid) -{ - int res; - - res = lchown(path, uid, gid); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_truncate(struct fuse_cred *cred, const char *path, off_t size) -{ - int res; - - res = truncate(path, size); - if(res == -1) - return -errno; - - return 0; -} - -static int pro_utime(struct fuse_cred *cred, const char *path, - struct utimbuf *buf) -{ - int res; - - res = utime(path, buf); - if(res == -1) - return -errno; - - return 0; -} - - -static int pro_open(struct fuse_cred *cred, const char *path, int flags) -{ - int res; - - res = open(path, flags); - if(res == -1) - return -errno; - - close(res); - return 0; -} - -static int pro_read(struct fuse_cred *cred, const char *path, char *buf, - size_t size, off_t offset) -{ - int fd; - int res; - - fd = open(path, O_RDONLY); - if(fd == -1) - return -errno; - - res = pread(fd, buf, size, offset); - if(res == -1) - res = -errno; - - close(fd); - return res; -} - -static int pro_write(struct fuse_cred *cred, const char *path, const char *buf, - size_t size, off_t offset) -{ - int fd; - int res; - - fd = open(path, O_WRONLY); - if(fd == -1) - return -errno; - - res = pwrite(fd, buf, size, offset); - if(res == -1) - res = -errno; - - close(fd); - return res; -} - -static void exit_handler() -{ - exit(0); -} - -static void set_signal_handlers() -{ - struct sigaction sa; - - sa.sa_handler = exit_handler; - sigemptyset(&(sa.sa_mask)); - sa.sa_flags = 0; - - if (sigaction(SIGHUP, &sa, NULL) == -1 || - sigaction(SIGINT, &sa, NULL) == -1 || - sigaction(SIGTERM, &sa, NULL) == -1) { - - perror("Cannot set exit signal handlers"); - exit(1); - } - - sa.sa_handler = SIG_IGN; - - if(sigaction(SIGPIPE, &sa, NULL) == -1) { - perror("Cannot set ignored signals"); - exit(1); - } -} - -static void cleanup() -{ - fuse_unmount(pro_fuse); - fuse_destroy(pro_fuse); -} - -static struct fuse_operations pro_oper = { - getattr: pro_getattr, - readlink: pro_readlink, - getdir: pro_getdir, - mknod: pro_mknod, - mkdir: pro_mkdir, - symlink: pro_symlink, - unlink: pro_unlink, - rmdir: pro_rmdir, - rename: pro_rename, - link: pro_link, - chmod: pro_chmod, - chown: pro_chown, - truncate: pro_truncate, - utime: pro_utime, - open: pro_open, - read: pro_read, - write: pro_write, -}; - -int main(int argc, char *argv[]) -{ - int res; - if(argc != 2) { - fprintf(stderr, "usage: %s mount_dir\n", argv[0]); - exit(1); - } - - set_signal_handlers(); - atexit(cleanup); - - pro_fuse = fuse_new(0); - res = fuse_mount(pro_fuse, argv[1]); - if(res == -1) - exit(1); - - fuse_set_operations(pro_fuse, &pro_oper); - fuse_loop(pro_fuse); - - return 0; -} |