FUSE:虚拟目录

时间:2017-04-20 10:06:38

标签: fuse

我正在尝试制作一个基于扩展名(.png,.c,...)组织文件的FUSE。我想在FUSE的根目录中显示一组文件夹,每个文件夹代表一个文件扩展名。当某人cd进入该文件夹时,它应显示具有该扩展名的所有文件(用户将指定安装时要组织的目录)。例如,输出应该是这样的:

mount/$ ls
+c +cpp +png +py
mount/$ cd +c
mount/+c/$ ls
hello.c xyz.c

我使用+替换扩展程序的.

我正在使用set实现并扫描所需目录及其子目录以查找所有文件扩展名,然后在readdir中显示该组的内容。

int my_readdir(const char* path, void* buffer, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi)
{
   filler(buffer,".",NULL,0);
   filler(buffer,"..",NULL,0);
   if(strcmp("/",path)==0)
   {
     int i;
     for(i=0;i<ext_set.length;i++)
     {
       filler(buffer,ext_set.get(i),NULL,0);
     }
   }
}

我得到如上所示的输出,但是它们没有列为目录。 cd +c抛出+c: Not a directory(显然不是这样)。

如何将它们作为虚拟目录?

0 个答案:

没有答案