diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2004-02-20 16:38:45 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2004-02-20 16:38:45 +0000 |
commit | c40748abd7f911b3c622600bd23b8517bd8f09c4 (patch) | |
tree | 3921bd77bcb57f36365cff93fb2bbe54af19b1d1 /kernel/dev.c | |
parent | b59586199b5c53fa7002e9e1e6accc08a515f420 (diff) | |
download | libfuse-c40748abd7f911b3c622600bd23b8517bd8f09c4.tar.gz |
fix
Diffstat (limited to 'kernel/dev.c')
-rw-r--r-- | kernel/dev.c | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/kernel/dev.c b/kernel/dev.c index a31615d..43af356 100644 --- a/kernel/dev.c +++ b/kernel/dev.c @@ -611,10 +611,17 @@ static struct file_operations fuse_dev_operations = { .release = fuse_dev_release, }; -int fuse_dev_init() +static int read_version(char *page, char **start, off_t off, int count, + int *eof, void *data) { - int ret; + char *s = page; + s += sprintf(s, "%i.%i\n", FUSE_KERNEL_VERSION, + FUSE_KERNEL_MINOR_VERSION); + return s - page; +} +int fuse_dev_init() +{ proc_fs_fuse = NULL; proc_fuse_dev = NULL; @@ -624,33 +631,31 @@ int fuse_dev_init() if(!fuse_req_cachep) return -ENOMEM; - ret = -ENOMEM; proc_fs_fuse = proc_mkdir("fuse", proc_root_fs); - if(!proc_fs_fuse) { - printk("fuse: failed to create directory in /proc/fs\n"); - goto err; - } - - proc_fs_fuse->owner = THIS_MODULE; - proc_fuse_dev = create_proc_entry("dev", S_IFSOCK | 0666, proc_fs_fuse); - if(!proc_fuse_dev) { - printk("fuse: failed to create entry in /proc/fs/fuse\n"); - goto err; + if(proc_fs_fuse) { + struct proc_dir_entry *de; + + proc_fs_fuse->owner = THIS_MODULE; + proc_fuse_dev = create_proc_entry("dev", S_IFSOCK | 0666, + proc_fs_fuse); + if(proc_fuse_dev) { + proc_fuse_dev->owner = THIS_MODULE; + proc_fuse_dev->proc_fops = &fuse_dev_operations; + } + de = create_proc_entry("version", S_IFREG | 0444, proc_fs_fuse); + if (de) { + de->owner = THIS_MODULE; + de->read_proc = read_version; + } } - - proc_fuse_dev->proc_fops = &fuse_dev_operations; - return 0; - - err: - fuse_dev_cleanup(); - return ret; } void fuse_dev_cleanup() { if(proc_fs_fuse) { remove_proc_entry("dev", proc_fs_fuse); + remove_proc_entry("version", proc_fs_fuse); remove_proc_entry("fuse", proc_root_fs); } |