Note that there are some explanatory texts on larger screens.

plurals
  1. POFuse Filesystem Problem
    text
    copied!<p>i'm developing a fuse filesystem that stores data in the RAM, but i'm having problems when i write something to a file. The file turns into a blank file.</p> <p>Here's the code:</p> <pre><code>#define FUSE_USE_VERSION 26 #include &lt;fuse/fuse.h&gt; #include &lt;string.h&gt; #include &lt;errno.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; char hello_data[200] = {'h', 'e', 'l', 'l', 'o', '\n'}; int hello_size = 6; int homsifs_getattr(const char* path, struct stat* stbuf) { memset(stbuf, 0, sizeof(struct stat)); if (strcmp(path, "/") == 0) stbuf-&gt;st_mode = S_IFDIR | 0666; else if (strcmp(path, "/hello") == 0) { stbuf-&gt;st_mode = S_IFREG | 0666; stbuf-&gt;st_size = hello_size; } else return -ENOENT; return 0; } int homsifs_readdir(const char* path, void* buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info* fi) { if (strcmp(path, "/") != 0) return -ENOENT; filler(buf, ".", NULL, 0); filler(buf, "..", NULL, 0); filler(buf, "hello", NULL, 0); return 0; } int homsifs_open(const char* path, struct fuse_file_info* fi) { if (strcmp(path, "/hello") != 0) return -ENOENT; return 0; } int homsifs_read(const char* path, char* buf, size_t size, off_t offset, struct fuse_file_info* fi) { int offset_size = hello_size - offset; if (size &gt; offset_size) size = offset_size; memcpy(buf, hello_data + offset, size); return size; } int homsifs_truncate(const char* path, off_t size) { if (size &gt; 200) return -ENOMEM; if (hello_size &lt; size) memset(hello_data + size, 0, size - hello_size); hello_size = size; return 0; } int homsifs_write(const char* path, const char* buf, size_t size, off_t offset, struct fuse_file_info* fi) { if (strcmp(path, "/hello") != 0) return -ENOENT; memcpy(hello_data + offset, buf, size); return size; } struct fuse_operations homsifs_operations = { .getattr = homsifs_getattr, .readdir = homsifs_readdir, .open = homsifs_open, .read = homsifs_read, .truncate = homsifs_truncate, .write = homsifs_write }; int main(int argc, char** argv) { return fuse_main(argc, argv, &amp;homsifs_operations, NULL); } </code></pre> <p>Anyone knows what's wrong?</p> <p>Thanks.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload