1 |
dpavlin |
4 |
/* |
2 |
|
|
FUSE: Filesystem in Userspace |
3 |
|
|
Copyright (C) 2001-2004 Miklos Szeredi <miklos@szeredi.hu> |
4 |
|
|
|
5 |
|
|
This program can be distributed under the terms of the GNU GPL. |
6 |
|
|
See the file COPYING. |
7 |
|
|
*/ |
8 |
|
|
|
9 |
|
|
#include <fuse.h> |
10 |
|
|
#include <string.h> |
11 |
|
|
#include <unistd.h> |
12 |
|
|
#include <time.h> |
13 |
|
|
#include <errno.h> |
14 |
|
|
|
15 |
|
|
#define UNUSED(x) x __attribute__((unused)) |
16 |
|
|
|
17 |
|
|
static int null_getattr(const char *path, struct stat *stbuf) |
18 |
|
|
{ |
19 |
|
|
if(strcmp(path, "/") != 0) |
20 |
|
|
return -ENOENT; |
21 |
|
|
|
22 |
|
|
stbuf->st_mode = S_IFREG | 0644; |
23 |
|
|
stbuf->st_nlink = 1; |
24 |
|
|
stbuf->st_uid = getuid(); |
25 |
|
|
stbuf->st_gid = getgid(); |
26 |
|
|
stbuf->st_size = (1ULL << 32); /* 4G */ |
27 |
|
|
stbuf->st_blocks = 0; |
28 |
|
|
stbuf->st_atime = stbuf->st_mtime = stbuf->st_ctime = time(NULL); |
29 |
|
|
|
30 |
|
|
return 0; |
31 |
|
|
} |
32 |
|
|
|
33 |
|
|
static int null_truncate(const char *path, off_t UNUSED(size)) |
34 |
|
|
{ |
35 |
|
|
if(strcmp(path, "/") != 0) |
36 |
|
|
return -ENOENT; |
37 |
|
|
|
38 |
|
|
return 0; |
39 |
|
|
} |
40 |
|
|
|
41 |
|
|
static int null_open(const char *path, int UNUSED(flags)) |
42 |
|
|
{ |
43 |
|
|
if(strcmp(path, "/") != 0) |
44 |
|
|
return -ENOENT; |
45 |
|
|
|
46 |
|
|
return 0; |
47 |
|
|
} |
48 |
|
|
|
49 |
|
|
static int null_read(const char *path, char *UNUSED(buf), size_t size, |
50 |
|
|
off_t UNUSED(offset)) |
51 |
|
|
{ |
52 |
|
|
if(strcmp(path, "/") != 0) |
53 |
|
|
return -ENOENT; |
54 |
|
|
|
55 |
|
|
return size; |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
static int null_write(const char *path, const char *UNUSED(buf), size_t size, |
59 |
|
|
off_t UNUSED(offset)) |
60 |
|
|
{ |
61 |
|
|
if(strcmp(path, "/") != 0) |
62 |
|
|
return -ENOENT; |
63 |
|
|
|
64 |
|
|
return size; |
65 |
|
|
} |
66 |
|
|
|
67 |
|
|
static struct fuse_operations null_oper = { |
68 |
|
|
.getattr = null_getattr, |
69 |
|
|
.truncate = null_truncate, |
70 |
|
|
.open = null_open, |
71 |
|
|
.read = null_read, |
72 |
|
|
.write = null_write, |
73 |
|
|
}; |
74 |
|
|
|
75 |
|
|
int main(int argc, char *argv[]) |
76 |
|
|
{ |
77 |
|
|
fuse_main(argc, argv, &null_oper); |
78 |
|
|
return 0; |
79 |
|
|
} |