* %End-Header%
*/
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
#include "ext2fs.h"
#define EXT2FS_MAX_NESTED_LINKS 8
+static inline int ext2fsP_is_disk_device(mode_t mode)
+{
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ return S_ISBLK(mode) || S_ISCHR(mode);
+#else
+ return S_ISBLK(mode);
+#endif
+}
+
/*
* Badblocks list
*/
void * buffer;
blk64_t buffer_blk;
int cache_last;
- int cache_size;
+ unsigned int cache_size;
int refcount;
struct ext2_inode_cache_ent *cache;
};
struct ext2_inode *inode;
};
+/*
+ * NLS defintions
+ */
+struct ext2fs_nls_table {
+ int version;
+ const struct ext2fs_nls_ops *ops;
+};
+
+struct ext2fs_nls_ops {
+ int (*casefold)(const struct ext2fs_nls_table *charset,
+ const unsigned char *str, size_t len,
+ unsigned char *dest, size_t dlen);
+};
+
/* Function prototypes */
extern int ext2fs_process_dir_block(ext2_filsys fs,
int ref_offset,
void *priv_data);
-extern errcode_t ext2fs_inline_data_init(ext2_filsys fs, ext2_ino_t ino);
-extern errcode_t ext2fs_inline_data_size(ext2_filsys fs, ext2_ino_t ino,
- size_t *size);
extern errcode_t ext2fs_inline_data_ea_remove(ext2_filsys fs, ext2_ino_t ino);
extern errcode_t ext2fs_inline_data_expand(ext2_filsys fs, ext2_ino_t ino);
extern int ext2fs_inline_data_dir_iterate(ext2_filsys fs,
ext2_ino_t ino,
void *priv_data);
-extern errcode_t ext2fs_inline_data_get(ext2_filsys fs, ext2_ino_t ino,
- struct ext2_inode *inode,
- void *buf, size_t *size);
-extern errcode_t ext2fs_inline_data_set(ext2_filsys fs, ext2_ino_t ino,
- struct ext2_inode *inode,
- void *buf, size_t size);
/* Generic numeric progress meter */
extern int ext2fs_file_block_offset_too_big(ext2_filsys fs,
struct ext2_inode *inode,
blk64_t offset);
+
+/* atexit support */
+typedef void (*ext2_exit_fn)(void *);
+errcode_t ext2fs_add_exit_fn(ext2_exit_fn fn, void *data);
+errcode_t ext2fs_remove_exit_fn(ext2_exit_fn fn, void *data);
+
+#define EXT2FS_BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2*!!(cond)]))