⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuse.h

📁 LINUX下读写NTFS分区的工具。 已经集成了通过LIBCONV库支持中文的代码。
💻 H
📖 第 1 页 / 共 2 页
字号:
/*    FUSE: Filesystem in Userspace    Copyright (C) 2001-2007  Miklos Szeredi <miklos@szeredi.hu>    This program can be distributed under the terms of the GNU LGPLv2.    See the file COPYING.LIB.*/#ifndef _FUSE_H_#define _FUSE_H_/** @file * * This file defines the library interface of FUSE */#include "fuse_common.h"#include <fcntl.h>#include <time.h>#include <utime.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/statvfs.h>#ifdef __cplusplusextern "C" {#endif/* ----------------------------------------------------------- * * Basic FUSE API                                              * * ----------------------------------------------------------- *//** Handle for a FUSE filesystem */struct fuse;/** Structure containing a raw command */struct fuse_cmd;/** Function to add an entry in a readdir() operation * * @param buf the buffer passed to the readdir() operation * @param name the file name of the directory entry * @param stat file attributes, can be NULL * @param off offset of the next entry or zero * @return 1 if buffer is full, zero otherwise */typedef int (*fuse_fill_dir_t) (void *buf, const char *name,                                const struct stat *stbuf, off_t off);/** * The file system operations: * * Most of these should work very similarly to the well known UNIX * file system operations.  A major exception is that instead of * returning an error in 'errno', the operation should return the * negated error value (-errno) directly. * * All methods are optional, but some are essential for a useful * filesystem (e.g. getattr).  Open, flush, release, fsync, opendir, * releasedir, fsyncdir, access, create, ftruncate, fgetattr, lock, * init and destroy are special purpose methods, without which a full * featured filesystem can still be implemented. */struct fuse_operations {    /** Get file attributes.     *     * Similar to stat().  The 'st_dev' and 'st_blksize' fields are     * ignored.  The 'st_ino' field is ignored except if the 'use_ino'     * mount option is given.     */    int (*getattr) (const char *, struct stat *);    /** Read the target of a symbolic link     *     * The buffer should be filled with a null terminated string.  The     * buffer size argument includes the space for the terminating     * null character.  If the linkname is too long to fit in the     * buffer, it should be truncated.  The return value should be 0     * for success.     */    int (*readlink) (const char *, char *, size_t);    /** Create a file node     *     * This is called for creation of all non-directory, non-symlink     * nodes.  If the filesystem defines a create() method, then for     * regular files that will be called instead.     */    int (*mknod) (const char *, mode_t, dev_t);    /** Create a directory */    int (*mkdir) (const char *, mode_t);    /** Remove a file */    int (*unlink) (const char *);    /** Remove a directory */    int (*rmdir) (const char *);    /** Create a symbolic link */    int (*symlink) (const char *, const char *);    /** Rename a file */    int (*rename) (const char *, const char *);    /** Create a hard link to a file */    int (*link) (const char *, const char *);    /** Change the permission bits of a file */    int (*chmod) (const char *, mode_t);    /** Change the owner and group of a file */    int (*chown) (const char *, uid_t, gid_t);    /** Change the size of a file */    int (*truncate) (const char *, off_t);    /** Change the access and/or modification times of a file     *     * Deprecated, use utimens() instead.     */    int (*utime) (const char *, struct utimbuf *);    /** File open operation     *     * No creation, or truncation flags (O_CREAT, O_EXCL, O_TRUNC)     * will be passed to open().  Unless the 'default_permissions'     * mount option is given, open should check if the operation     * is permitted for the given flags.  Optionally open may also     * return an arbitrary filehandle in the fuse_file_info structure,     * which will be passed to all file operations.     *     * Changed in version 2.2     */    int (*open) (const char *, struct fuse_file_info *);    /** Read data from an open file     *     * Read should return exactly the number of bytes requested except     * on EOF or error, otherwise the rest of the data will be     * substituted with zeroes.  An exception to this is when the     * 'direct_io' mount option is specified, in which case the return     * value of the read system call will reflect the return value of     * this operation.     *     * Changed in version 2.2     */    int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);    /** Write data to an open file     *     * Write should return exactly the number of bytes requested     * except on error.  An exception to this is when the 'direct_io'     * mount option is specified (see read operation).     *     * Changed in version 2.2     */    int (*write) (const char *, const char *, size_t, off_t,                  struct fuse_file_info *);    /** Get file system statistics     *     * The 'f_frsize', 'f_favail', 'f_fsid' and 'f_flag' fields are ignored     *     * Replaced 'struct statfs' parameter with 'struct statvfs' in     * version 2.5     */    int (*statfs) (const char *, struct statvfs *);    /** Possibly flush cached data     *     * BIG NOTE: This is not equivalent to fsync().  It's not a     * request to sync dirty data.     *     * Flush is called on each close() of a file descriptor.  So if a     * filesystem wants to return write errors in close() and the file     * has cached dirty data, this is a good place to write back data     * and return any errors.  Since many applications ignore close()     * errors this is not always useful.     *     * NOTE: The flush() method may be called more than once for each     * open().  This happens if more than one file descriptor refers     * to an opened file due to dup(), dup2() or fork() calls.  It is     * not possible to determine if a flush is final, so each flush     * should be treated equally.  Multiple write-flush sequences are     * relatively rare, so this shouldn't be a problem.     *     * Filesystems shouldn't assume that flush will always be called     * after some writes, or that if will be called at all.     *     * Changed in version 2.2     */    int (*flush) (const char *, struct fuse_file_info *);    /** Release an open file     *     * Release is called when there are no more references to an open     * file: all file descriptors are closed and all memory mappings     * are unmapped.     *     * For every open() call there will be exactly one release() call     * with the same flags and file descriptor.  It is possible to     * have a file opened more than once, in which case only the last     * release will mean, that no more reads/writes will happen on the     * file.  The return value of release is ignored.     *     * Changed in version 2.2     */    int (*release) (const char *, struct fuse_file_info *);    /** Synchronize file contents     *     * If the datasync parameter is non-zero, then only the user data     * should be flushed, not the meta data.     *     * Changed in version 2.2     */    int (*fsync) (const char *, int, struct fuse_file_info *);    /** Set extended attributes */    int (*setxattr) (const char *, const char *, const char *, size_t, int);    /** Get extended attributes */    int (*getxattr) (const char *, const char *, char *, size_t);    /** List extended attributes */    int (*listxattr) (const char *, char *, size_t);    /** Remove extended attributes */    int (*removexattr) (const char *, const char *);    /** Open directory     *     * This method should check if the open operation is permitted for     * this  directory     *     * Introduced in version 2.3     */    int (*opendir) (const char *, struct fuse_file_info *);    /** Read directory     *     * The filesystem may choose between two modes of operation:     *     * 1) The readdir implementation ignores the offset parameter, and     * passes zero to the filler function's offset.  The filler     * function will not return '1' (unless an error happens), so the     * whole directory is read in a single readdir operation.     *     * 2) The readdir implementation keeps track of the offsets of the     * directory entries.  It uses the offset parameter and always     * passes non-zero offset to the filler function.  When the buffer     * is full (or an error happens) the filler function will return     * '1'.     *     * Introduced in version 2.3     */    int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t,                    struct fuse_file_info *);    /** Release directory     *     * Introduced in version 2.3     */    int (*releasedir) (const char *, struct fuse_file_info *);    /** Synchronize directory contents     *     * If the datasync parameter is non-zero, then only the user data     * should be flushed, not the meta data     *     * Introduced in version 2.3     */    int (*fsyncdir) (const char *, int, struct fuse_file_info *);    /**     * Initialize filesystem     *     * The return value will passed in the private_data field of     * fuse_context to all file operations and as a parameter to the     * destroy() method.     *     * Introduced in version 2.3     * Changed in version 2.6     */    void *(*init) (struct fuse_conn_info *conn);    /**     * Clean up filesystem     *     * Called on filesystem exit.     *     * Introduced in version 2.3     */    void (*destroy) (void *);    /**     * Check file access permissions     *     * This will be called for the access() system call.  If the     * 'default_permissions' mount option is given, this method is not     * called.     *     * This method is not called under Linux kernel versions 2.4.x     *     * Introduced in version 2.5     */    int (*access) (const char *, int);    /**     * Create and open a file     *     * If the file does not exist, first create it with the specified     * mode, and then open it.     *     * If this method is not implemented or under Linux kernel     * versions earlier than 2.6.15, the mknod() and open() methods     * will be called instead.     *     * Introduced in version 2.5     */    int (*create) (const char *, mode_t, struct fuse_file_info *);    /**     * Change the size of an open file     *     * This method is called instead of the truncate() method if the     * truncation was invoked from an ftruncate() system call.     *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -