picox  0.1
Xunionfs

複数のファイルシステムを透過的に扱うインターフェースを提供します [詳解]

Xunionfs 連携図

マクロ定義

#define xunionfs_close   xvfs_close
 
#define xunionfs_closedir   xvfs_closedir
 
#define xunionfs_copyfile2   xvfs_copyfile2
 
#define xunionfs_flush   xvfs_flush
 
#define xunionfs_getc   xvfs_getc
 
#define xunionfs_gets   xvfs_gets
 
#define xunionfs_init_stream   xvfs_init_stream
 
#define xunionfs_printf   xvfs_printf
 
#define xunionfs_putc   xvfs_putc
 
#define xunionfs_puts   xvfs_puts
 
#define xunionfs_read   xvfs_read
 
#define xunionfs_readdir   xvfs_readdir
 
#define xunionfs_seek   xvfs_seek
 
#define xunionfs_tell   xvfs_tell
 
#define xunionfs_vprintf   xvfs_vprintf
 
#define xunionfs_write   xvfs_write
 

関数

XError xunionfs_chdir (const char *path)
 
XError xunionfs_copyfile (const char *src, const char *dst)
 
XError xunionfs_copytree (const char *src, const char *dst)
 
void xunionfs_deinit ()
 xunionfsの終了処理を行います。
 
XError xunionfs_exists (const char *path, bool *exists)
 
XError xunionfs_getcwd (char *buf, size_t size)
 
void xunionfs_init ()
 xunionfsの初期化を行います [詳解]
 
XError xunionfs_is_directory (const char *path, bool *isdir)
 
XError xunionfs_is_regular (const char *path, bool *isreg)
 
XError xunionfs_makedirs (const char *path, bool exist_ok)
 
XError xunionfs_mkdir (const char *path)
 
XError xunionfs_mount (XVirtualFs *vfs, const char *path, const char *realpath)
 仮想ファイルシステムをディレクトリツリーに接続します [詳解]
 
XError xunionfs_open (const char *path, XOpenMode mode, XFile **o_fp)
 
XError xunionfs_opendir (const char *path, XDir **o_dir)
 
XError xunionfs_remove (const char *path)
 
XError xunionfs_rename (const char *oldpath, const char *newpath)
 
XError xunionfs_rmtree (const char *path)
 
XError xunionfs_stat (const char *path, XStat *statbuf)
 
XError xunionfs_umount (const char *path)
 ファイルシステムのマウントを解除(アンマウント)します [詳解]
 
XError xunionfs_utime (const char *path, XTime time)
 
XError xunionfs_walktree (const char *path, XFsTreeWalker walker, void *userptr)
 

詳解

複数のファイルシステムを透過的に扱うインターフェースを提供します

Unix系のシステムが"/"以下に異なるファイルシステムを次々にマウントして、一つ のディレクトリツリーを構成するのと同じアプローチです。 これにより、ファイルシステムをまたいだ操作を簡単に行うことができます。

ただし、FatFs等の組込み向けファイルシステムドライバを直接使用することに比べ て、抽象化によるオーバーヘッドがそれなりに存在することは意識しておくべきです 。アプリケーションにとって、そのオーバーヘッドが無視できる程度なのかどうかを 見極めて使用しましょう。

参照
Xvfs

関数詳解

void xunionfs_init ( )

xunionfsの初期化を行います

全てのxunionfs_xxx()の呼び出し前にこの関数を呼び出してください。 xunionfs_deinit()による終了処理を行わずに、再度この関数を呼び出すことは禁止です。

XError xunionfs_mount ( XVirtualFs vfs,
const char *  path,
const char *  realpath 
)

仮想ファイルシステムをディレクトリツリーに接続します

引数
vfs初期化済みの有効なXVirtualFsオブジェクト
pathマウント先パス
realpathvfs基準のマウント元パス
事前条件
  • vfs != NULL
  • path != NULL
  • realpath != NULL

"/"以外のパスはすでにxunionfs内に存在しているディレクトリである必要があります。 そのため、必然的にはじめのマウントパスは"/"です。

マウント先にもともと存在するエントリは不可視となるため、通常は空のディレクト リに対してマウントを行います。

XError xunionfs_umount ( const char *  path)

ファイルシステムのマウントを解除(アンマウント)します

事前条件
  • path != NULL