aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Schauer <matthew.schauer@e10x.net>2022-10-31 09:51:27 -0700
committerMatthew Schauer <matthew.schauer@e10x.net>2022-10-31 09:51:27 -0700
commit0ed81b4f2039b2a6d2b18740af9e0288602d7adf (patch)
tree3eb1354170916c695807950a75daed01d7688b9c
parent511e1b910f8c332c0078bef3ae67da7ddbf85a01 (diff)
Add pre-generated bindings for docs.rs builds
-rw-r--r--Cargo.toml8
-rw-r--r--build.rs5
-rw-r--r--src/bindings.rs4091
-rw-r--r--src/lib.rs3
4 files changed, 4106 insertions, 1 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 5f763ea..6f99b89 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "squashfs-ng"
-version = "0.1.1"
+version = "0.1.2"
authors = ["Matthew Schauer <matthew.schauer@e10x.net>"]
edition = "2021"
description = "High-level Rust wrapper for squashfs-tools-ng"
@@ -24,3 +24,9 @@ owning_ref = "0.4"
thiserror = "1.0"
walkdir = "2.3"
xattr = "0.2"
+
+[features]
+hermetic = []
+
+[package.metadata.docs.rs]
+features = ["hermetic"]
diff --git a/build.rs b/build.rs
index 9c08f4f..0cd0f14 100644
--- a/build.rs
+++ b/build.rs
@@ -3,6 +3,7 @@ extern crate bindgen;
use std::env;
use std::path::PathBuf;
+#[cfg(not(feature = "hermetic"))]
fn main() {
println!("cargo:rustc-link-lib=squashfs");
println!("cargo:rerun-if-changed=wrapper.h");
@@ -13,3 +14,7 @@ fn main() {
.expect("Failed to generate SquashFS bindings");
bindings.write_to_file(PathBuf::from(env::var("OUT_DIR").unwrap()).join("bindings.rs")).expect("Failed to write SquashFS bindings");
}
+
+// Don't generate bindings or linking directives if we're building hermetically
+#[cfg(feature = "hermetic")]
+fn main() { }
diff --git a/src/bindings.rs b/src/bindings.rs
new file mode 100644
index 0000000..8260cdc
--- /dev/null
+++ b/src/bindings.rs
@@ -0,0 +1,4091 @@
+/* automatically generated by rust-bindgen */
+
+#[repr(C)]
+#[derive(Default)]
+pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
+impl<T> __IncompleteArrayField<T> {
+ #[inline]
+ pub const fn new() -> Self {
+ __IncompleteArrayField(::std::marker::PhantomData, [])
+ }
+ #[inline]
+ pub fn as_ptr(&self) -> *const T {
+ self as *const _ as *const T
+ }
+ #[inline]
+ pub fn as_mut_ptr(&mut self) -> *mut T {
+ self as *mut _ as *mut T
+ }
+ #[inline]
+ pub unsafe fn as_slice(&self, len: usize) -> &[T] {
+ ::std::slice::from_raw_parts(self.as_ptr(), len)
+ }
+ #[inline]
+ pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
+ ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
+ }
+}
+impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
+ fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ fmt.write_str("__IncompleteArrayField")
+ }
+}
+pub const _SYS_STAT_H: u32 = 1;
+pub const _FEATURES_H: u32 = 1;
+pub const _DEFAULT_SOURCE: u32 = 1;
+pub const __GLIBC_USE_ISOC2X: u32 = 0;
+pub const __USE_ISOC11: u32 = 1;
+pub const __USE_ISOC99: u32 = 1;
+pub const __USE_ISOC95: u32 = 1;
+pub const __USE_POSIX_IMPLICITLY: u32 = 1;
+pub const _POSIX_SOURCE: u32 = 1;
+pub const _POSIX_C_SOURCE: u32 = 200809;
+pub const __USE_POSIX: u32 = 1;
+pub const __USE_POSIX2: u32 = 1;
+pub const __USE_POSIX199309: u32 = 1;
+pub const __USE_POSIX199506: u32 = 1;
+pub const __USE_XOPEN2K: u32 = 1;
+pub const __USE_XOPEN2K8: u32 = 1;
+pub const _ATFILE_SOURCE: u32 = 1;
+pub const __WORDSIZE: u32 = 64;
+pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
+pub const __SYSCALL_WORDSIZE: u32 = 64;
+pub const __TIMESIZE: u32 = 64;
+pub const __USE_MISC: u32 = 1;
+pub const __USE_ATFILE: u32 = 1;
+pub const __USE_FORTIFY_LEVEL: u32 = 0;
+pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
+pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
+pub const _STDC_PREDEF_H: u32 = 1;
+pub const __STDC_IEC_559__: u32 = 1;
+pub const __STDC_IEC_60559_BFP__: u32 = 201404;
+pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
+pub const __STDC_IEC_60559_COMPLEX__: u32 = 201404;
+pub const __STDC_ISO_10646__: u32 = 201706;
+pub const __GNU_LIBRARY__: u32 = 6;
+pub const __GLIBC__: u32 = 2;
+pub const __GLIBC_MINOR__: u32 = 36;
+pub const _SYS_CDEFS_H: u32 = 1;
+pub const __glibc_c99_flexarr_available: u32 = 1;
+pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0;
+pub const __HAVE_GENERIC_SELECTION: u32 = 1;
+pub const _BITS_TYPES_H: u32 = 1;
+pub const _BITS_TYPESIZES_H: u32 = 1;
+pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
+pub const __INO_T_MATCHES_INO64_T: u32 = 1;
+pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
+pub const __STATFS_MATCHES_STATFS64: u32 = 1;
+pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1;
+pub const __FD_SETSIZE: u32 = 1024;
+pub const _BITS_TIME64_H: u32 = 1;
+pub const _STRUCT_TIMESPEC: u32 = 1;
+pub const _BITS_ENDIAN_H: u32 = 1;
+pub const __LITTLE_ENDIAN: u32 = 1234;
+pub const __BIG_ENDIAN: u32 = 4321;
+pub const __PDP_ENDIAN: u32 = 3412;
+pub const _BITS_ENDIANNESS_H: u32 = 1;
+pub const __BYTE_ORDER: u32 = 1234;
+pub const __FLOAT_WORD_ORDER: u32 = 1234;
+pub const __time_t_defined: u32 = 1;
+pub const _BITS_STAT_H: u32 = 1;
+pub const _BITS_STRUCT_STAT_H: u32 = 1;
+pub const __S_IFMT: u32 = 61440;
+pub const __S_IFDIR: u32 = 16384;
+pub const __S_IFCHR: u32 = 8192;
+pub const __S_IFBLK: u32 = 24576;
+pub const __S_IFREG: u32 = 32768;
+pub const __S_IFIFO: u32 = 4096;
+pub const __S_IFLNK: u32 = 40960;
+pub const __S_IFSOCK: u32 = 49152;
+pub const __S_ISUID: u32 = 2048;
+pub const __S_ISGID: u32 = 1024;
+pub const __S_ISVTX: u32 = 512;
+pub const __S_IREAD: u32 = 256;
+pub const __S_IWRITE: u32 = 128;
+pub const __S_IEXEC: u32 = 64;
+pub const UTIME_NOW: u32 = 1073741823;
+pub const UTIME_OMIT: u32 = 1073741822;
+pub const S_IFMT: u32 = 61440;
+pub const S_IFDIR: u32 = 16384;
+pub const S_IFCHR: u32 = 8192;
+pub const S_IFBLK: u32 = 24576;
+pub const S_IFREG: u32 = 32768;
+pub const S_IFIFO: u32 = 4096;
+pub const S_IFLNK: u32 = 40960;
+pub const S_IFSOCK: u32 = 49152;
+pub const S_ISUID: u32 = 2048;
+pub const S_ISGID: u32 = 1024;
+pub const S_ISVTX: u32 = 512;
+pub const S_IRUSR: u32 = 256;
+pub const S_IWUSR: u32 = 128;
+pub const S_IXUSR: u32 = 64;
+pub const S_IRWXU: u32 = 448;
+pub const S_IREAD: u32 = 256;
+pub const S_IWRITE: u32 = 128;
+pub const S_IEXEC: u32 = 64;
+pub const S_IRGRP: u32 = 32;
+pub const S_IWGRP: u32 = 16;
+pub const S_IXGRP: u32 = 8;
+pub const S_IRWXG: u32 = 56;
+pub const S_IROTH: u32 = 4;
+pub const S_IWOTH: u32 = 2;
+pub const S_IXOTH: u32 = 1;
+pub const S_IRWXO: u32 = 7;
+pub const ACCESSPERMS: u32 = 511;
+pub const ALLPERMS: u32 = 4095;
+pub const DEFFILEMODE: u32 = 438;
+pub const S_BLKSIZE: u32 = 512;
+pub const true_: u32 = 1;
+pub const false_: u32 = 0;
+pub const __bool_true_false_are_defined: u32 = 1;
+pub const _STDINT_H: u32 = 1;
+pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_EXT: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
+pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
+pub const _BITS_WCHAR_H: u32 = 1;
+pub const _BITS_STDINT_INTN_H: u32 = 1;
+pub const _BITS_STDINT_UINTN_H: u32 = 1;
+pub const INT8_MIN: i32 = -128;
+pub const INT16_MIN: i32 = -32768;
+pub const INT32_MIN: i32 = -2147483648;
+pub const INT8_MAX: u32 = 127;
+pub const INT16_MAX: u32 = 32767;
+pub const INT32_MAX: u32 = 2147483647;
+pub const UINT8_MAX: u32 = 255;
+pub const UINT16_MAX: u32 = 65535;
+pub const UINT32_MAX: u32 = 4294967295;
+pub const INT_LEAST8_MIN: i32 = -128;
+pub const INT_LEAST16_MIN: i32 = -32768;
+pub const INT_LEAST32_MIN: i32 = -2147483648;
+pub const INT_LEAST8_MAX: u32 = 127;
+pub const INT_LEAST16_MAX: u32 = 32767;
+pub const INT_LEAST32_MAX: u32 = 2147483647;
+pub const UINT_LEAST8_MAX: u32 = 255;
+pub const UINT_LEAST16_MAX: u32 = 65535;
+pub const UINT_LEAST32_MAX: u32 = 4294967295;
+pub const INT_FAST8_MIN: i32 = -128;
+pub const INT_FAST16_MIN: i64 = -9223372036854775808;
+pub const INT_FAST32_MIN: i64 = -9223372036854775808;
+pub const INT_FAST8_MAX: u32 = 127;
+pub const INT_FAST16_MAX: u64 = 9223372036854775807;
+pub const INT_FAST32_MAX: u64 = 9223372036854775807;
+pub const UINT_FAST8_MAX: u32 = 255;
+pub const UINT_FAST16_MAX: i32 = -1;
+pub const UINT_FAST32_MAX: i32 = -1;
+pub const INTPTR_MIN: i64 = -9223372036854775808;
+pub const INTPTR_MAX: u64 = 9223372036854775807;
+pub const UINTPTR_MAX: i32 = -1;
+pub const PTRDIFF_MIN: i64 = -9223372036854775808;
+pub const PTRDIFF_MAX: u64 = 9223372036854775807;
+pub const SIG_ATOMIC_MIN: i32 = -2147483648;
+pub const SIG_ATOMIC_MAX: u32 = 2147483647;
+pub const SIZE_MAX: i32 = -1;
+pub const WINT_MIN: u32 = 0;
+pub const WINT_MAX: u32 = 4294967295;
+pub const SQFS_META_BLOCK_SIZE: u32 = 8192;
+pub const SQFS_MAGIC: u32 = 1936814952;
+pub const SQFS_VERSION_MAJOR: u32 = 4;
+pub const SQFS_VERSION_MINOR: u32 = 0;
+pub const SQFS_DEVBLK_SIZE: u32 = 4096;
+pub const SQFS_MIN_BLOCK_SIZE: u32 = 4096;
+pub const SQFS_MAX_BLOCK_SIZE: u32 = 1048576;
+pub const SQFS_DEFAULT_BLOCK_SIZE: u32 = 131072;
+pub const SQFS_GZIP_DEFAULT_LEVEL: u32 = 9;
+pub const SQFS_GZIP_DEFAULT_WINDOW: u32 = 15;
+pub const SQFS_LZO_DEFAULT_LEVEL: u32 = 8;
+pub const SQFS_ZSTD_DEFAULT_LEVEL: u32 = 15;
+pub const SQFS_GZIP_MIN_LEVEL: u32 = 1;
+pub const SQFS_GZIP_MAX_LEVEL: u32 = 9;
+pub const SQFS_LZO_MIN_LEVEL: u32 = 0;
+pub const SQFS_LZO_MAX_LEVEL: u32 = 9;
+pub const SQFS_ZSTD_MIN_LEVEL: u32 = 1;
+pub const SQFS_ZSTD_MAX_LEVEL: u32 = 22;
+pub const SQFS_GZIP_MIN_WINDOW: u32 = 8;
+pub const SQFS_GZIP_MAX_WINDOW: u32 = 15;
+pub const SQFS_XZ_MIN_LEVEL: u32 = 0;
+pub const SQFS_XZ_MAX_LEVEL: u32 = 9;
+pub const SQFS_XZ_DEFAULT_LEVEL: u32 = 6;
+pub const SQFS_XZ_MIN_LC: u32 = 0;
+pub const SQFS_XZ_MAX_LC: u32 = 4;
+pub const SQFS_XZ_DEFAULT_LC: u32 = 3;
+pub const SQFS_XZ_MIN_LP: u32 = 0;
+pub const SQFS_XZ_MAX_LP: u32 = 4;
+pub const SQFS_XZ_DEFAULT_LP: u32 = 0;
+pub const SQFS_XZ_MIN_PB: u32 = 0;
+pub const SQFS_XZ_MAX_PB: u32 = 4;
+pub const SQFS_XZ_DEFAULT_PB: u32 = 2;
+pub const SQFS_LZMA_MIN_LEVEL: u32 = 0;
+pub const SQFS_LZMA_MAX_LEVEL: u32 = 9;
+pub const SQFS_LZMA_DEFAULT_LEVEL: u32 = 5;
+pub const SQFS_LZMA_MIN_LC: u32 = 0;
+pub const SQFS_LZMA_MAX_LC: u32 = 4;
+pub const SQFS_LZMA_DEFAULT_LC: u32 = 3;
+pub const SQFS_LZMA_MIN_LP: u32 = 0;
+pub const SQFS_LZMA_MAX_LP: u32 = 4;
+pub const SQFS_LZMA_DEFAULT_LP: u32 = 0;
+pub const SQFS_LZMA_MIN_PB: u32 = 0;
+pub const SQFS_LZMA_MAX_PB: u32 = 4;
+pub const SQFS_LZMA_DEFAULT_PB: u32 = 2;
+pub const SQFS_LZMA_MIN_DICT_SIZE: u32 = 8192;
+pub const SQFS_LZMA_MAX_DICT_SIZE: u32 = 1048576;
+pub const SQFS_XZ_MIN_DICT_SIZE: u32 = 8192;
+pub const SQFS_XZ_MAX_DICT_SIZE: u32 = 1048576;
+pub const SQFS_MAX_DIR_ENT: u32 = 256;
+pub type __u_char = ::std::os::raw::c_uchar;
+pub type __u_short = ::std::os::raw::c_ushort;
+pub type __u_int = ::std::os::raw::c_uint;
+pub type __u_long = ::std::os::raw::c_ulong;
+pub type __int8_t = ::std::os::raw::c_schar;
+pub type __uint8_t = ::std::os::raw::c_uchar;
+pub type __int16_t = ::std::os::raw::c_short;
+pub type __uint16_t = ::std::os::raw::c_ushort;
+pub type __int32_t = ::std::os::raw::c_int;
+pub type __uint32_t = ::std::os::raw::c_uint;
+pub type __int64_t = ::std::os::raw::c_long;
+pub type __uint64_t = ::std::os::raw::c_ulong;
+pub type __int_least8_t = __int8_t;
+pub type __uint_least8_t = __uint8_t;
+pub type __int_least16_t = __int16_t;
+pub type __uint_least16_t = __uint16_t;
+pub type __int_least32_t = __int32_t;
+pub type __uint_least32_t = __uint32_t;
+pub type __int_least64_t = __int64_t;
+pub type __uint_least64_t = __uint64_t;
+pub type __quad_t = ::std::os::raw::c_long;
+pub type __u_quad_t = ::std::os::raw::c_ulong;
+pub type __intmax_t = ::std::os::raw::c_long;
+pub type __uintmax_t = ::std::os::raw::c_ulong;
+pub type __dev_t = ::std::os::raw::c_ulong;
+pub type __uid_t = ::std::os::raw::c_uint;
+pub type __gid_t = ::std::os::raw::c_uint;
+pub type __ino_t = ::std::os::raw::c_ulong;
+pub type __ino64_t = ::std::os::raw::c_ulong;
+pub type __mode_t = ::std::os::raw::c_uint;
+pub type __nlink_t = ::std::os::raw::c_ulong;
+pub type __off_t = ::std::os::raw::c_long;
+pub type __off64_t = ::std::os::raw::c_long;
+pub type __pid_t = ::std::os::raw::c_int;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __fsid_t {
+ pub __val: [::std::os::raw::c_int; 2usize],
+}
+#[test]
+fn bindgen_test_layout___fsid_t() {
+ assert_eq!(
+ ::std::mem::size_of::<__fsid_t>(),
+ 8usize,
+ concat!("Size of: ", stringify!(__fsid_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<__fsid_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(__fsid_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(__fsid_t),
+ "::",
+ stringify!(__val)
+ )
+ );
+}
+pub type __clock_t = ::std::os::raw::c_long;
+pub type __rlim_t = ::std::os::raw::c_ulong;
+pub type __rlim64_t = ::std::os::raw::c_ulong;
+pub type __id_t = ::std::os::raw::c_uint;
+pub type __time_t = ::std::os::raw::c_long;
+pub type __useconds_t = ::std::os::raw::c_uint;
+pub type __suseconds_t = ::std::os::raw::c_long;
+pub type __suseconds64_t = ::std::os::raw::c_long;
+pub type __daddr_t = ::std::os::raw::c_int;
+pub type __key_t = ::std::os::raw::c_int;
+pub type __clockid_t = ::std::os::raw::c_int;
+pub type __timer_t = *mut ::std::os::raw::c_void;
+pub type __blksize_t = ::std::os::raw::c_long;
+pub type __blkcnt_t = ::std::os::raw::c_long;
+pub type __blkcnt64_t = ::std::os::raw::c_long;
+pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
+pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
+pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
+pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
+pub type __fsword_t = ::std::os::raw::c_long;
+pub type __ssize_t = ::std::os::raw::c_long;
+pub type __syscall_slong_t = ::std::os::raw::c_long;
+pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
+pub type __loff_t = __off64_t;
+pub type __caddr_t = *mut ::std::os::raw::c_char;
+pub type __intptr_t = ::std::os::raw::c_long;
+pub type __socklen_t = ::std::os::raw::c_uint;
+pub type __sig_atomic_t = ::std::os::raw::c_int;
+pub type time_t = __time_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct timespec {
+ pub tv_sec: __time_t,
+ pub tv_nsec: __syscall_slong_t,
+}
+#[test]
+fn bindgen_test_layout_timespec() {
+ assert_eq!(
+ ::std::mem::size_of::<timespec>(),
+ 16usize,
+ concat!("Size of: ", stringify!(timespec))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<timespec>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(timespec))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<timespec>())).tv_sec as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(timespec),
+ "::",
+ stringify!(tv_sec)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<timespec>())).tv_nsec as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(timespec),
+ "::",
+ stringify!(tv_nsec)
+ )
+ );
+}
+pub type dev_t = __dev_t;
+pub type gid_t = __gid_t;
+pub type ino_t = __ino_t;
+pub type mode_t = __mode_t;
+pub type nlink_t = __nlink_t;
+pub type off_t = __off_t;
+pub type uid_t = __uid_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stat {
+ pub st_dev: __dev_t,
+ pub st_ino: __ino_t,
+ pub st_nlink: __nlink_t,
+ pub st_mode: __mode_t,
+ pub st_uid: __uid_t,
+ pub st_gid: __gid_t,
+ pub __pad0: ::std::os::raw::c_int,
+ pub st_rdev: __dev_t,
+ pub st_size: __off_t,
+ pub st_blksize: __blksize_t,
+ pub st_blocks: __blkcnt_t,
+ pub st_atim: timespec,
+ pub st_mtim: timespec,
+ pub st_ctim: timespec,
+ pub __glibc_reserved: [__syscall_slong_t; 3usize],
+}
+#[test]
+fn bindgen_test_layout_stat() {
+ assert_eq!(
+ ::std::mem::size_of::<stat>(),
+ 144usize,
+ concat!("Size of: ", stringify!(stat))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<stat>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(stat))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_dev as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_dev)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_ino as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_ino)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_nlink as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_mode as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_mode)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_uid as *const _ as usize },
+ 28usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_uid)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_gid as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_gid)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).__pad0 as *const _ as usize },
+ 36usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(__pad0)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_rdev as *const _ as usize },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_rdev)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_size as *const _ as usize },
+ 48usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_blksize as *const _ as usize },
+ 56usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_blksize)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_blocks as *const _ as usize },
+ 64usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_blocks)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_atim as *const _ as usize },
+ 72usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_atim)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_mtim as *const _ as usize },
+ 88usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_mtim)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).st_ctim as *const _ as usize },
+ 104usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(st_ctim)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<stat>())).__glibc_reserved as *const _ as usize },
+ 120usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(stat),
+ "::",
+ stringify!(__glibc_reserved)
+ )
+ );
+}
+extern "C" {
+ pub fn stat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn fstat(__fd: ::std::os::raw::c_int, __buf: *mut stat) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn fstatat(
+ __fd: ::std::os::raw::c_int,
+ __file: *const ::std::os::raw::c_char,
+ __buf: *mut stat,
+ __flag: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn lstat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn chmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn lchmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn fchmod(__fd: ::std::os::raw::c_int, __mode: __mode_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn fchmodat(
+ __fd: ::std::os::raw::c_int,
+ __file: *const ::std::os::raw::c_char,
+ __mode: __mode_t,
+ __flag: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn umask(__mask: __mode_t) -> __mode_t;
+}
+extern "C" {
+ pub fn mkdir(__path: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn mkdirat(
+ __fd: ::std::os::raw::c_int,
+ __path: *const ::std::os::raw::c_char,
+ __mode: __mode_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn mknod(
+ __path: *const ::std::os::raw::c_char,
+ __mode: __mode_t,
+ __dev: __dev_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn mknodat(
+ __fd: ::std::os::raw::c_int,
+ __path: *const ::std::os::raw::c_char,
+ __mode: __mode_t,
+ __dev: __dev_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn mkfifo(__path: *const ::std::os::raw::c_char, __mode: __mode_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn mkfifoat(
+ __fd: ::std::os::raw::c_int,
+ __path: *const ::std::os::raw::c_char,
+ __mode: __mode_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn utimensat(
+ __fd: ::std::os::raw::c_int,
+ __path: *const ::std::os::raw::c_char,
+ __times: *const timespec,
+ __flags: ::std::os::raw::c_int,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn futimens(__fd: ::std::os::raw::c_int, __times: *const timespec)
+ -> ::std::os::raw::c_int;
+}
+pub type size_t = ::std::os::raw::c_ulong;
+pub type wchar_t = ::std::os::raw::c_int;
+#[repr(C)]
+#[repr(align(16))]
+#[derive(Debug, Copy, Clone)]
+pub struct max_align_t {
+ pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
+ pub __bindgen_padding_0: u64,
+ pub __clang_max_align_nonce2: u128,
+}
+#[test]
+fn bindgen_test_layout_max_align_t() {
+ assert_eq!(
+ ::std::mem::size_of::<max_align_t>(),
+ 32usize,
+ concat!("Size of: ", stringify!(max_align_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<max_align_t>(),
+ 16usize,
+ concat!("Alignment of ", stringify!(max_align_t))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce1 as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(max_align_t),
+ "::",
+ stringify!(__clang_max_align_nonce1)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce2 as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(max_align_t),
+ "::",
+ stringify!(__clang_max_align_nonce2)
+ )
+ );
+}
+pub type int_least8_t = __int_least8_t;
+pub type int_least16_t = __int_least16_t;
+pub type int_least32_t = __int_least32_t;
+pub type int_least64_t = __int_least64_t;
+pub type uint_least8_t = __uint_least8_t;
+pub type uint_least16_t = __uint_least16_t;
+pub type uint_least32_t = __uint_least32_t;
+pub type uint_least64_t = __uint_least64_t;
+pub type int_fast8_t = ::std::os::raw::c_schar;
+pub type int_fast16_t = ::std::os::raw::c_long;
+pub type int_fast32_t = ::std::os::raw::c_long;
+pub type int_fast64_t = ::std::os::raw::c_long;
+pub type uint_fast8_t = ::std::os::raw::c_uchar;
+pub type uint_fast16_t = ::std::os::raw::c_ulong;
+pub type uint_fast32_t = ::std::os::raw::c_ulong;
+pub type uint_fast64_t = ::std::os::raw::c_ulong;
+pub type intmax_t = __intmax_t;
+pub type uintmax_t = __uintmax_t;
+pub type sqfs_u8 = u8;
+pub type sqfs_u16 = u16;
+pub type sqfs_u32 = u32;
+pub type sqfs_u64 = u64;
+pub type sqfs_s8 = i8;
+pub type sqfs_s16 = i16;
+pub type sqfs_s32 = i32;
+pub type sqfs_s64 = i64;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_processor_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_dir_writer_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_dir_reader_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_id_table_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_meta_reader_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_meta_writer_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_xattr_reader_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_data_reader_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_hooks_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_xattr_writer_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_frag_table_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_writer_stats_t {
+ _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_object_t {
+ pub destroy: ::std::option::Option<unsafe extern "C" fn(instance: *mut sqfs_object_t)>,
+ pub copy: ::std::option::Option<
+ unsafe extern "C" fn(orig: *const sqfs_object_t) -> *mut sqfs_object_t,
+ >,
+}
+#[test]
+fn bindgen_test_layout_sqfs_object_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_object_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_object_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_object_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_object_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_object_t>())).destroy as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_object_t),
+ "::",
+ stringify!(destroy)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_object_t>())).copy as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_object_t),
+ "::",
+ stringify!(copy)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_free(ptr: *mut ::std::os::raw::c_void);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_fragment_t {
+ pub start_offset: sqfs_u64,
+ pub size: sqfs_u32,
+ pub pad0: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_fragment_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_fragment_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_fragment_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_fragment_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_fragment_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_fragment_t>())).start_offset as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_fragment_t),
+ "::",
+ stringify!(start_offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_fragment_t>())).size as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_fragment_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_fragment_t>())).pad0 as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_fragment_t),
+ "::",
+ stringify!(pad0)
+ )
+ );
+}
+pub const SQFS_BLK_FLAGS_SQFS_BLK_DONT_COMPRESS: SQFS_BLK_FLAGS = 1;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_ALIGN: SQFS_BLK_FLAGS = 2;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_DONT_FRAGMENT: SQFS_BLK_FLAGS = 4;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_DONT_DEDUPLICATE: SQFS_BLK_FLAGS = 8;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_IGNORE_SPARSE: SQFS_BLK_FLAGS = 16;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_DONT_HASH: SQFS_BLK_FLAGS = 32;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_IS_SPARSE: SQFS_BLK_FLAGS = 1024;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_FIRST_BLOCK: SQFS_BLK_FLAGS = 2048;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_LAST_BLOCK: SQFS_BLK_FLAGS = 4096;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_IS_FRAGMENT: SQFS_BLK_FLAGS = 8192;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_FRAGMENT_BLOCK: SQFS_BLK_FLAGS = 16384;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_IS_COMPRESSED: SQFS_BLK_FLAGS = 32768;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_USER_SETTABLE_FLAGS: SQFS_BLK_FLAGS = 63;
+pub const SQFS_BLK_FLAGS_SQFS_BLK_FLAGS_ALL: SQFS_BLK_FLAGS = 64575;
+pub type SQFS_BLK_FLAGS = u32;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_processor_stats_t {
+ pub size: size_t,
+ pub input_bytes_read: sqfs_u64,
+ pub output_bytes_generated: sqfs_u64,
+ pub data_block_count: sqfs_u64,
+ pub frag_block_count: sqfs_u64,
+ pub sparse_block_count: sqfs_u64,
+ pub total_frag_count: sqfs_u64,
+ pub actual_frag_count: sqfs_u64,
+}
+#[test]
+fn bindgen_test_layout_sqfs_block_processor_stats_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_block_processor_stats_t>(),
+ 64usize,
+ concat!("Size of: ", stringify!(sqfs_block_processor_stats_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_block_processor_stats_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_block_processor_stats_t))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).size as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).input_bytes_read as *const _
+ as usize
+ },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(input_bytes_read)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).output_bytes_generated
+ as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(output_bytes_generated)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).data_block_count as *const _
+ as usize
+ },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(data_block_count)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).frag_block_count as *const _
+ as usize
+ },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(frag_block_count)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).sparse_block_count as *const _
+ as usize
+ },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(sparse_block_count)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).total_frag_count as *const _
+ as usize
+ },
+ 48usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(total_frag_count)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_stats_t>())).actual_frag_count as *const _
+ as usize
+ },
+ 56usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_stats_t),
+ "::",
+ stringify!(actual_frag_count)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_processor_desc_t {
+ pub size: sqfs_u32,
+ pub max_block_size: sqfs_u32,
+ pub num_workers: sqfs_u32,
+ pub max_backlog: sqfs_u32,
+ pub cmp: *mut sqfs_compressor_t,
+ pub wr: *mut sqfs_block_writer_t,
+ pub tbl: *mut sqfs_frag_table_t,
+ pub file: *mut sqfs_file_t,
+ pub uncmp: *mut sqfs_compressor_t,
+}
+#[test]
+fn bindgen_test_layout_sqfs_block_processor_desc_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_block_processor_desc_t>(),
+ 56usize,
+ concat!("Size of: ", stringify!(sqfs_block_processor_desc_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_block_processor_desc_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_block_processor_desc_t))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).size as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).max_block_size as *const _
+ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(max_block_size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).num_workers as *const _ as usize
+ },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(num_workers)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).max_backlog as *const _ as usize
+ },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(max_backlog)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).cmp as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(cmp)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).wr as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(wr)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).tbl as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(tbl)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).file as *const _ as usize
+ },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(file)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_processor_desc_t>())).uncmp as *const _ as usize
+ },
+ 48usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_processor_desc_t),
+ "::",
+ stringify!(uncmp)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_block_processor_create(
+ max_block_size: size_t,
+ cmp: *mut sqfs_compressor_t,
+ num_workers: ::std::os::raw::c_uint,
+ max_backlog: size_t,
+ wr: *mut sqfs_block_writer_t,
+ tbl: *mut sqfs_frag_table_t,
+ ) -> *mut sqfs_block_processor_t;
+}
+extern "C" {
+ pub fn sqfs_block_processor_create_ex(
+ desc: *const sqfs_block_processor_desc_t,
+ out: *mut *mut sqfs_block_processor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_begin_file(
+ proc_: *mut sqfs_block_processor_t,
+ inode: *mut *mut sqfs_inode_generic_t,
+ user: *mut ::std::os::raw::c_void,
+ flags: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_append(
+ proc_: *mut sqfs_block_processor_t,
+ data: *const ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_end_file(
+ proc_: *mut sqfs_block_processor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_submit_block(
+ proc_: *mut sqfs_block_processor_t,
+ user: *mut ::std::os::raw::c_void,
+ flags: sqfs_u32,
+ data: *const ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_sync(proc_: *mut sqfs_block_processor_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_finish(proc_: *mut sqfs_block_processor_t)
+ -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_block_processor_get_stats(
+ proc_: *const sqfs_block_processor_t,
+ ) -> *const sqfs_block_processor_stats_t;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_block_writer_t {
+ pub base: sqfs_object_t,
+ pub write_data_block: ::std::option::Option<
+ unsafe extern "C" fn(
+ wr: *mut sqfs_block_writer_t,
+ user: *mut ::std::os::raw::c_void,
+ size: sqfs_u32,
+ checksum: sqfs_u32,
+ flags: sqfs_u32,
+ data: *const sqfs_u8,
+ location: *mut sqfs_u64,
+ ) -> ::std::os::raw::c_int,
+ >,
+ pub get_block_count:
+ ::std::option::Option<unsafe extern "C" fn(wr: *const sqfs_block_writer_t) -> sqfs_u64>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_block_writer_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_block_writer_t>(),
+ 32usize,
+ concat!("Size of: ", stringify!(sqfs_block_writer_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_block_writer_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_block_writer_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_block_writer_t>())).base as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_writer_t),
+ "::",
+ stringify!(base)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_writer_t>())).write_data_block as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_writer_t),
+ "::",
+ stringify!(write_data_block)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_block_writer_t>())).get_block_count as *const _ as usize
+ },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_block_writer_t),
+ "::",
+ stringify!(get_block_count)
+ )
+ );
+}
+pub const SQFS_BLOCK_WRITER_FLAGS_SQFS_BLOCK_WRITER_HASH_COMPARE_ONLY: SQFS_BLOCK_WRITER_FLAGS = 1;
+pub const SQFS_BLOCK_WRITER_FLAGS_SQFS_BLOCK_WRITER_ALL_FLAGS: SQFS_BLOCK_WRITER_FLAGS = 1;
+pub type SQFS_BLOCK_WRITER_FLAGS = u32;
+extern "C" {
+ pub fn sqfs_block_writer_create(
+ file: *mut sqfs_file_t,
+ devblksz: size_t,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_block_writer_t;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_super_t {
+ pub magic: sqfs_u32,
+ pub inode_count: sqfs_u32,
+ pub modification_time: sqfs_u32,
+ pub block_size: sqfs_u32,
+ pub fragment_entry_count: sqfs_u32,
+ pub compression_id: sqfs_u16,
+ pub block_log: sqfs_u16,
+ pub flags: sqfs_u16,
+ pub id_count: sqfs_u16,
+ pub version_major: sqfs_u16,
+ pub version_minor: sqfs_u16,
+ pub root_inode_ref: sqfs_u64,
+ pub bytes_used: sqfs_u64,
+ pub id_table_start: sqfs_u64,
+ pub xattr_id_table_start: sqfs_u64,
+ pub inode_table_start: sqfs_u64,
+ pub directory_table_start: sqfs_u64,
+ pub fragment_table_start: sqfs_u64,
+ pub export_table_start: sqfs_u64,
+}
+#[test]
+fn bindgen_test_layout_sqfs_super_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_super_t>(),
+ 96usize,
+ concat!("Size of: ", stringify!(sqfs_super_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_super_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_super_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).magic as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(magic)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).inode_count as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(inode_count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).modification_time as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(modification_time)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).block_size as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(block_size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_super_t>())).fragment_entry_count as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(fragment_entry_count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).compression_id as *const _ as usize },
+ 20usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(compression_id)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).block_log as *const _ as usize },
+ 22usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(block_log)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).flags as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(flags)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).id_count as *const _ as usize },
+ 26usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(id_count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).version_major as *const _ as usize },
+ 28usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(version_major)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).version_minor as *const _ as usize },
+ 30usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(version_minor)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).root_inode_ref as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(root_inode_ref)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).bytes_used as *const _ as usize },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(bytes_used)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).id_table_start as *const _ as usize },
+ 48usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(id_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_super_t>())).xattr_id_table_start as *const _ as usize
+ },
+ 56usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(xattr_id_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).inode_table_start as *const _ as usize },
+ 64usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(inode_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_super_t>())).directory_table_start as *const _ as usize
+ },
+ 72usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(directory_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_super_t>())).fragment_table_start as *const _ as usize
+ },
+ 80usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(fragment_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_super_t>())).export_table_start as *const _ as usize },
+ 88usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_super_t),
+ "::",
+ stringify!(export_table_start)
+ )
+ );
+}
+pub const SQFS_COMPRESSOR_SQFS_COMP_GZIP: SQFS_COMPRESSOR = 1;
+pub const SQFS_COMPRESSOR_SQFS_COMP_LZMA: SQFS_COMPRESSOR = 2;
+pub const SQFS_COMPRESSOR_SQFS_COMP_LZO: SQFS_COMPRESSOR = 3;
+pub const SQFS_COMPRESSOR_SQFS_COMP_XZ: SQFS_COMPRESSOR = 4;
+pub const SQFS_COMPRESSOR_SQFS_COMP_LZ4: SQFS_COMPRESSOR = 5;
+pub const SQFS_COMPRESSOR_SQFS_COMP_ZSTD: SQFS_COMPRESSOR = 6;
+pub const SQFS_COMPRESSOR_SQFS_COMP_MIN: SQFS_COMPRESSOR = 1;
+pub const SQFS_COMPRESSOR_SQFS_COMP_MAX: SQFS_COMPRESSOR = 6;
+pub type SQFS_COMPRESSOR = u32;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_UNCOMPRESSED_INODES: SQFS_SUPER_FLAGS = 1;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_UNCOMPRESSED_DATA: SQFS_SUPER_FLAGS = 2;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_UNCOMPRESSED_FRAGMENTS: SQFS_SUPER_FLAGS = 8;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_NO_FRAGMENTS: SQFS_SUPER_FLAGS = 16;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_ALWAYS_FRAGMENTS: SQFS_SUPER_FLAGS = 32;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_NO_DUPLICATES: SQFS_SUPER_FLAGS = 64;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_EXPORTABLE: SQFS_SUPER_FLAGS = 128;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_UNCOMPRESSED_XATTRS: SQFS_SUPER_FLAGS = 256;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_NO_XATTRS: SQFS_SUPER_FLAGS = 512;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_COMPRESSOR_OPTIONS: SQFS_SUPER_FLAGS = 1024;
+pub const SQFS_SUPER_FLAGS_SQFS_FLAG_UNCOMPRESSED_IDS: SQFS_SUPER_FLAGS = 2048;
+pub type SQFS_SUPER_FLAGS = u32;
+extern "C" {
+ pub fn sqfs_super_init(
+ super_: *mut sqfs_super_t,
+ block_size: size_t,
+ mtime: sqfs_u32,
+ compressor: SQFS_COMPRESSOR,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_super_write(
+ super_: *const sqfs_super_t,
+ file: *mut sqfs_file_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_super_read(
+ super_: *mut sqfs_super_t,
+ file: *mut sqfs_file_t,
+ ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_compressor_t {
+ pub base: sqfs_object_t,
+ pub get_configuration: ::std::option::Option<
+ unsafe extern "C" fn(cmp: *const sqfs_compressor_t, cfg: *mut sqfs_compressor_config_t),
+ >,
+ pub write_options: ::std::option::Option<
+ unsafe extern "C" fn(
+ cmp: *mut sqfs_compressor_t,
+ file: *mut sqfs_file_t,
+ ) -> ::std::os::raw::c_int,
+ >,
+ pub read_options: ::std::option::Option<
+ unsafe extern "C" fn(
+ cmp: *mut sqfs_compressor_t,
+ file: *mut sqfs_file_t,
+ ) -> ::std::os::raw::c_int,
+ >,
+ pub do_block: ::std::option::Option<
+ unsafe extern "C" fn(
+ cmp: *mut sqfs_compressor_t,
+ in_: *const sqfs_u8,
+ size: sqfs_u32,
+ out: *mut sqfs_u8,
+ outsize: sqfs_u32,
+ ) -> sqfs_s32,
+ >,
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_t>(),
+ 48usize,
+ concat!("Size of: ", stringify!(sqfs_compressor_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_compressor_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_t>())).base as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_t),
+ "::",
+ stringify!(base)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_t>())).get_configuration as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_t),
+ "::",
+ stringify!(get_configuration)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_t>())).write_options as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_t),
+ "::",
+ stringify!(write_options)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_t>())).read_options as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_t),
+ "::",
+ stringify!(read_options)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_t>())).do_block as *const _ as usize },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_t),
+ "::",
+ stringify!(do_block)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sqfs_compressor_config_t {
+ pub id: sqfs_u16,
+ pub flags: sqfs_u16,
+ pub block_size: sqfs_u32,
+ pub level: sqfs_u32,
+ pub opt: sqfs_compressor_config_t__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sqfs_compressor_config_t__bindgen_ty_1 {
+ pub gzip: sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1,
+ pub lzo: sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2,
+ pub xz: sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3,
+ pub lzma: sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3,
+ pub padd0: [sqfs_u64; 2usize],
+ _bindgen_union_align: [u64; 2usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1 {
+ pub window_size: sqfs_u16,
+ pub padd0: [sqfs_u8; 14usize],
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1>(),
+ 16usize,
+ concat!(
+ "Size of: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1)
+ )
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1>(),
+ 2usize,
+ concat!(
+ "Alignment of ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1>()))
+ .window_size as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1),
+ "::",
+ stringify!(window_size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1>())).padd0
+ as *const _ as usize
+ },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_1),
+ "::",
+ stringify!(padd0)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2 {
+ pub algorithm: sqfs_u16,
+ pub padd0: [sqfs_u8; 14usize],
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2>(),
+ 16usize,
+ concat!(
+ "Size of: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2)
+ )
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2>(),
+ 2usize,
+ concat!(
+ "Alignment of ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2>()))
+ .algorithm as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2),
+ "::",
+ stringify!(algorithm)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2>())).padd0
+ as *const _ as usize
+ },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_2),
+ "::",
+ stringify!(padd0)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3 {
+ pub dict_size: sqfs_u32,
+ pub lc: sqfs_u8,
+ pub lp: sqfs_u8,
+ pub pb: sqfs_u8,
+ pub padd0: [sqfs_u8; 9usize],
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>(),
+ 16usize,
+ concat!(
+ "Size of: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3)
+ )
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>(),
+ 4usize,
+ concat!(
+ "Alignment of ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>()))
+ .dict_size as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3),
+ "::",
+ stringify!(dict_size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>())).lc
+ as *const _ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3),
+ "::",
+ stringify!(lc)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>())).lp
+ as *const _ as usize
+ },
+ 5usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3),
+ "::",
+ stringify!(lp)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>())).pb
+ as *const _ as usize
+ },
+ 6usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3),
+ "::",
+ stringify!(pb)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3>())).padd0
+ as *const _ as usize
+ },
+ 7usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1__bindgen_ty_3),
+ "::",
+ stringify!(padd0)
+ )
+ );
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_config_t__bindgen_ty_1() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_config_t__bindgen_ty_1>(),
+ 16usize,
+ concat!(
+ "Size of: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1)
+ )
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_config_t__bindgen_ty_1>(),
+ 8usize,
+ concat!(
+ "Alignment of ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1>())).gzip as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1),
+ "::",
+ stringify!(gzip)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1>())).lzo as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1),
+ "::",
+ stringify!(lzo)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1>())).xz as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1),
+ "::",
+ stringify!(xz)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1>())).lzma as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1),
+ "::",
+ stringify!(lzma)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t__bindgen_ty_1>())).padd0 as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t__bindgen_ty_1),
+ "::",
+ stringify!(padd0)
+ )
+ );
+}
+#[test]
+fn bindgen_test_layout_sqfs_compressor_config_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_compressor_config_t>(),
+ 32usize,
+ concat!("Size of: ", stringify!(sqfs_compressor_config_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_compressor_config_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_compressor_config_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_config_t>())).id as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t),
+ "::",
+ stringify!(id)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_config_t>())).flags as *const _ as usize },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t),
+ "::",
+ stringify!(flags)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_compressor_config_t>())).block_size as *const _ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t),
+ "::",
+ stringify!(block_size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_config_t>())).level as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t),
+ "::",
+ stringify!(level)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_compressor_config_t>())).opt as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_compressor_config_t),
+ "::",
+ stringify!(opt)
+ )
+ );
+}
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_LZ4_HC: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_LZ4_ALL: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_LZMA_EXTREME: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_LZMA_ALL: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_X86: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_POWERPC: SQFS_COMP_FLAG = 2;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_IA64: SQFS_COMP_FLAG = 4;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_ARM: SQFS_COMP_FLAG = 8;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_ARMTHUMB: SQFS_COMP_FLAG = 16;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_SPARC: SQFS_COMP_FLAG = 32;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_EXTREME: SQFS_COMP_FLAG = 256;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_XZ_ALL: SQFS_COMP_FLAG = 319;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_DEFAULT: SQFS_COMP_FLAG = 1;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_FILTERED: SQFS_COMP_FLAG = 2;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_HUFFMAN: SQFS_COMP_FLAG = 4;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_RLE: SQFS_COMP_FLAG = 8;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_FIXED: SQFS_COMP_FLAG = 16;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GZIP_ALL: SQFS_COMP_FLAG = 31;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_UNCOMPRESS: SQFS_COMP_FLAG = 32768;
+pub const SQFS_COMP_FLAG_SQFS_COMP_FLAG_GENERIC_ALL: SQFS_COMP_FLAG = 32768;
+pub type SQFS_COMP_FLAG = u32;
+pub const SQFS_LZO_ALGORITHM_SQFS_LZO1X_1: SQFS_LZO_ALGORITHM = 0;
+pub const SQFS_LZO_ALGORITHM_SQFS_LZO1X_1_11: SQFS_LZO_ALGORITHM = 1;
+pub const SQFS_LZO_ALGORITHM_SQFS_LZO1X_1_12: SQFS_LZO_ALGORITHM = 2;
+pub const SQFS_LZO_ALGORITHM_SQFS_LZO1X_1_15: SQFS_LZO_ALGORITHM = 3;
+pub const SQFS_LZO_ALGORITHM_SQFS_LZO1X_999: SQFS_LZO_ALGORITHM = 4;
+pub type SQFS_LZO_ALGORITHM = u32;
+extern "C" {
+ pub fn sqfs_compressor_config_init(
+ cfg: *mut sqfs_compressor_config_t,
+ id: SQFS_COMPRESSOR,
+ block_size: size_t,
+ flags: sqfs_u16,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_compressor_create(
+ cfg: *const sqfs_compressor_config_t,
+ out: *mut *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_compressor_name_from_id(id: SQFS_COMPRESSOR) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn sqfs_compressor_id_from_name(
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_data_reader_create(
+ file: *mut sqfs_file_t,
+ block_size: size_t,
+ cmp: *mut sqfs_compressor_t,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_data_reader_t;
+}
+extern "C" {
+ pub fn sqfs_data_reader_load_fragment_table(
+ data: *mut sqfs_data_reader_t,
+ super_: *const sqfs_super_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_data_reader_get_fragment(
+ data: *mut sqfs_data_reader_t,
+ inode: *const sqfs_inode_generic_t,
+ size: *mut size_t,
+ out: *mut *mut sqfs_u8,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_data_reader_get_block(
+ data: *mut sqfs_data_reader_t,
+ inode: *const sqfs_inode_generic_t,
+ index: size_t,
+ size: *mut size_t,
+ out: *mut *mut sqfs_u8,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_data_reader_read(
+ data: *mut sqfs_data_reader_t,
+ inode: *const sqfs_inode_generic_t,
+ offset: sqfs_u64,
+ buffer: *mut ::std::os::raw::c_void,
+ size: sqfs_u32,
+ ) -> sqfs_s32;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_dir_header_t {
+ pub count: sqfs_u32,
+ pub start_block: sqfs_u32,
+ pub inode_number: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_dir_header_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_dir_header_t>(),
+ 12usize,
+ concat!("Size of: ", stringify!(sqfs_dir_header_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_dir_header_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_dir_header_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_header_t>())).count as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_header_t),
+ "::",
+ stringify!(count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_header_t>())).start_block as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_header_t),
+ "::",
+ stringify!(start_block)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_header_t>())).inode_number as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_header_t),
+ "::",
+ stringify!(inode_number)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_dir_entry_t {
+ pub offset: sqfs_u16,
+ pub inode_diff: sqfs_s16,
+ pub type_: sqfs_u16,
+ pub size: sqfs_u16,
+ pub name: __IncompleteArrayField<sqfs_u8>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_dir_entry_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_dir_entry_t>(),
+ 8usize,
+ concat!("Size of: ", stringify!(sqfs_dir_entry_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_dir_entry_t>(),
+ 2usize,
+ concat!("Alignment of ", stringify!(sqfs_dir_entry_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_entry_t>())).offset as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_entry_t),
+ "::",
+ stringify!(offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_entry_t>())).inode_diff as *const _ as usize },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_entry_t),
+ "::",
+ stringify!(inode_diff)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_entry_t>())).type_ as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_entry_t),
+ "::",
+ stringify!(type_)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_entry_t>())).size as *const _ as usize },
+ 6usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_entry_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_entry_t>())).name as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_entry_t),
+ "::",
+ stringify!(name)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_dir_index_t {
+ pub index: sqfs_u32,
+ pub start_block: sqfs_u32,
+ pub size: sqfs_u32,
+ pub name: __IncompleteArrayField<sqfs_u8>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_dir_index_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_dir_index_t>(),
+ 12usize,
+ concat!("Size of: ", stringify!(sqfs_dir_index_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_dir_index_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_dir_index_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_index_t>())).index as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_index_t),
+ "::",
+ stringify!(index)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_index_t>())).start_block as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_index_t),
+ "::",
+ stringify!(start_block)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_index_t>())).size as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_index_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_dir_index_t>())).name as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_dir_index_t),
+ "::",
+ stringify!(name)
+ )
+ );
+}
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_DEVICES: SQFS_TREE_FILTER_FLAGS = 1;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_SOCKETS: SQFS_TREE_FILTER_FLAGS = 2;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_FIFO: SQFS_TREE_FILTER_FLAGS = 4;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_SLINKS: SQFS_TREE_FILTER_FLAGS = 8;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_EMPTY: SQFS_TREE_FILTER_FLAGS = 16;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_NO_RECURSE: SQFS_TREE_FILTER_FLAGS = 32;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_STORE_PARENTS: SQFS_TREE_FILTER_FLAGS = 64;
+pub const SQFS_TREE_FILTER_FLAGS_SQFS_TREE_ALL_FLAGS: SQFS_TREE_FILTER_FLAGS = 127;
+pub type SQFS_TREE_FILTER_FLAGS = u32;
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_tree_node_t {
+ pub parent: *mut sqfs_tree_node_t,
+ pub children: *mut sqfs_tree_node_t,
+ pub next: *mut sqfs_tree_node_t,
+ pub inode: *mut sqfs_inode_generic_t,
+ pub uid: sqfs_u32,
+ pub gid: sqfs_u32,
+ pub name: __IncompleteArrayField<sqfs_u8>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_tree_node_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_tree_node_t>(),
+ 40usize,
+ concat!("Size of: ", stringify!(sqfs_tree_node_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_tree_node_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_tree_node_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).parent as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(parent)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).children as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(children)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).next as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(next)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).inode as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(inode)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).uid as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(uid)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).gid as *const _ as usize },
+ 36usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(gid)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_tree_node_t>())).name as *const _ as usize },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_tree_node_t),
+ "::",
+ stringify!(name)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_dir_reader_create(
+ super_: *const sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ file: *mut sqfs_file_t,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_dir_reader_t;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_open_dir(
+ rd: *mut sqfs_dir_reader_t,
+ inode: *const sqfs_inode_generic_t,
+ flags: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_rewind(rd: *mut sqfs_dir_reader_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_find(
+ rd: *mut sqfs_dir_reader_t,
+ name: *const ::std::os::raw::c_char,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_read(
+ rd: *mut sqfs_dir_reader_t,
+ out: *mut *mut sqfs_dir_entry_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_get_inode(
+ rd: *mut sqfs_dir_reader_t,
+ inode: *mut *mut sqfs_inode_generic_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_get_root_inode(
+ rd: *mut sqfs_dir_reader_t,
+ inode: *mut *mut sqfs_inode_generic_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_find_by_path(
+ rd: *mut sqfs_dir_reader_t,
+ start: *const sqfs_inode_generic_t,
+ path: *const ::std::os::raw::c_char,
+ out: *mut *mut sqfs_inode_generic_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_reader_get_full_hierarchy(
+ rd: *mut sqfs_dir_reader_t,
+ idtbl: *const sqfs_id_table_t,
+ path: *const ::std::os::raw::c_char,
+ flags: sqfs_u32,
+ out: *mut *mut sqfs_tree_node_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_tree_destroy(root: *mut sqfs_tree_node_t);
+}
+pub const SQFS_DIR_WRITER_CREATE_FLAGS_SQFS_DIR_WRITER_CREATE_EXPORT_TABLE:
+ SQFS_DIR_WRITER_CREATE_FLAGS = 1;
+pub const SQFS_DIR_WRITER_CREATE_FLAGS_SQFS_DIR_WRITER_CREATE_ALL_FLAGS:
+ SQFS_DIR_WRITER_CREATE_FLAGS = 1;
+pub type SQFS_DIR_WRITER_CREATE_FLAGS = u32;
+extern "C" {
+ pub fn sqfs_dir_writer_create(
+ dm: *mut sqfs_meta_writer_t,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_dir_writer_t;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_begin(
+ writer: *mut sqfs_dir_writer_t,
+ flags: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_add_entry(
+ writer: *mut sqfs_dir_writer_t,
+ name: *const ::std::os::raw::c_char,
+ inode_num: sqfs_u32,
+ inode_ref: sqfs_u64,
+ mode: sqfs_u16,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_end(writer: *mut sqfs_dir_writer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_get_size(writer: *const sqfs_dir_writer_t) -> size_t;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_get_entry_count(writer: *const sqfs_dir_writer_t) -> size_t;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_get_dir_reference(writer: *const sqfs_dir_writer_t) -> sqfs_u64;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_get_index_size(writer: *const sqfs_dir_writer_t) -> size_t;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_create_inode(
+ writer: *const sqfs_dir_writer_t,
+ hlinks: size_t,
+ xattr: sqfs_u32,
+ parent_ino: sqfs_u32,
+ ) -> *mut sqfs_inode_generic_t;
+}
+extern "C" {
+ pub fn sqfs_dir_writer_write_export_table(
+ writer: *mut sqfs_dir_writer_t,
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ root_inode_num: sqfs_u32,
+ root_inode_ref: sqfs_u64,
+ super_: *mut sqfs_super_t,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SQFS_ERROR_SQFS_ERROR_ALLOC: SQFS_ERROR = -1;
+pub const SQFS_ERROR_SQFS_ERROR_IO: SQFS_ERROR = -2;
+pub const SQFS_ERROR_SQFS_ERROR_COMPRESSOR: SQFS_ERROR = -3;
+pub const SQFS_ERROR_SQFS_ERROR_INTERNAL: SQFS_ERROR = -4;
+pub const SQFS_ERROR_SQFS_ERROR_CORRUPTED: SQFS_ERROR = -5;
+pub const SQFS_ERROR_SQFS_ERROR_UNSUPPORTED: SQFS_ERROR = -6;
+pub const SQFS_ERROR_SQFS_ERROR_OVERFLOW: SQFS_ERROR = -7;
+pub const SQFS_ERROR_SQFS_ERROR_OUT_OF_BOUNDS: SQFS_ERROR = -8;
+pub const SQFS_ERROR_SFQS_ERROR_SUPER_MAGIC: SQFS_ERROR = -9;
+pub const SQFS_ERROR_SFQS_ERROR_SUPER_VERSION: SQFS_ERROR = -10;
+pub const SQFS_ERROR_SQFS_ERROR_SUPER_BLOCK_SIZE: SQFS_ERROR = -11;
+pub const SQFS_ERROR_SQFS_ERROR_NOT_DIR: SQFS_ERROR = -12;
+pub const SQFS_ERROR_SQFS_ERROR_NO_ENTRY: SQFS_ERROR = -13;
+pub const SQFS_ERROR_SQFS_ERROR_LINK_LOOP: SQFS_ERROR = -14;
+pub const SQFS_ERROR_SQFS_ERROR_NOT_FILE: SQFS_ERROR = -15;
+pub const SQFS_ERROR_SQFS_ERROR_ARG_INVALID: SQFS_ERROR = -16;
+pub const SQFS_ERROR_SQFS_ERROR_SEQUENCE: SQFS_ERROR = -17;
+pub type SQFS_ERROR = i32;
+extern "C" {
+ pub fn sqfs_frag_table_create(flags: sqfs_u32) -> *mut sqfs_frag_table_t;
+}
+extern "C" {
+ pub fn sqfs_frag_table_read(
+ tbl: *mut sqfs_frag_table_t,
+ file: *mut sqfs_file_t,
+ super_: *const sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_frag_table_write(
+ tbl: *mut sqfs_frag_table_t,
+ file: *mut sqfs_file_t,
+ super_: *mut sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_frag_table_lookup(
+ tbl: *mut sqfs_frag_table_t,
+ index: sqfs_u32,
+ out: *mut sqfs_fragment_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_frag_table_append(
+ tbl: *mut sqfs_frag_table_t,
+ location: sqfs_u64,
+ size: sqfs_u32,
+ index: *mut sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_frag_table_set(
+ tbl: *mut sqfs_frag_table_t,
+ index: sqfs_u32,
+ location: sqfs_u64,
+ size: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_frag_table_get_size(tbl: *mut sqfs_frag_table_t) -> size_t;
+}
+extern "C" {
+ pub fn sqfs_id_table_create(flags: sqfs_u32) -> *mut sqfs_id_table_t;
+}
+extern "C" {
+ pub fn sqfs_id_table_id_to_index(
+ tbl: *mut sqfs_id_table_t,
+ id: sqfs_u32,
+ out: *mut sqfs_u16,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_id_table_write(
+ tbl: *mut sqfs_id_table_t,
+ file: *mut sqfs_file_t,
+ super_: *mut sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_id_table_read(
+ tbl: *mut sqfs_id_table_t,
+ file: *mut sqfs_file_t,
+ super_: *const sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_id_table_index_to_id(
+ tbl: *const sqfs_id_table_t,
+ index: sqfs_u16,
+ out: *mut sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SQFS_INODE_TYPE_SQFS_INODE_DIR: SQFS_INODE_TYPE = 1;
+pub const SQFS_INODE_TYPE_SQFS_INODE_FILE: SQFS_INODE_TYPE = 2;
+pub const SQFS_INODE_TYPE_SQFS_INODE_SLINK: SQFS_INODE_TYPE = 3;
+pub const SQFS_INODE_TYPE_SQFS_INODE_BDEV: SQFS_INODE_TYPE = 4;
+pub const SQFS_INODE_TYPE_SQFS_INODE_CDEV: SQFS_INODE_TYPE = 5;
+pub const SQFS_INODE_TYPE_SQFS_INODE_FIFO: SQFS_INODE_TYPE = 6;
+pub const SQFS_INODE_TYPE_SQFS_INODE_SOCKET: SQFS_INODE_TYPE = 7;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_DIR: SQFS_INODE_TYPE = 8;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_FILE: SQFS_INODE_TYPE = 9;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_SLINK: SQFS_INODE_TYPE = 10;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_BDEV: SQFS_INODE_TYPE = 11;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_CDEV: SQFS_INODE_TYPE = 12;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_FIFO: SQFS_INODE_TYPE = 13;
+pub const SQFS_INODE_TYPE_SQFS_INODE_EXT_SOCKET: SQFS_INODE_TYPE = 14;
+pub type SQFS_INODE_TYPE = u32;
+pub const SQFS_INODE_MODE_SQFS_INODE_OTHERS_X: SQFS_INODE_MODE = 1;
+pub const SQFS_INODE_MODE_SQFS_INODE_OTHERS_W: SQFS_INODE_MODE = 2;
+pub const SQFS_INODE_MODE_SQFS_INODE_OTHERS_R: SQFS_INODE_MODE = 4;
+pub const SQFS_INODE_MODE_SQFS_INODE_OTHERS_MASK: SQFS_INODE_MODE = 7;
+pub const SQFS_INODE_MODE_SQFS_INODE_GROUP_X: SQFS_INODE_MODE = 8;
+pub const SQFS_INODE_MODE_SQFS_INODE_GROUP_W: SQFS_INODE_MODE = 16;
+pub const SQFS_INODE_MODE_SQFS_INODE_GROUP_R: SQFS_INODE_MODE = 32;
+pub const SQFS_INODE_MODE_SQFS_INODE_GROUP_MASK: SQFS_INODE_MODE = 56;
+pub const SQFS_INODE_MODE_SQFS_INODE_OWNER_X: SQFS_INODE_MODE = 64;
+pub const SQFS_INODE_MODE_SQFS_INODE_OWNER_W: SQFS_INODE_MODE = 128;
+pub const SQFS_INODE_MODE_SQFS_INODE_OWNER_R: SQFS_INODE_MODE = 256;
+pub const SQFS_INODE_MODE_SQFS_INODE_OWNER_MASK: SQFS_INODE_MODE = 448;
+pub const SQFS_INODE_MODE_SQFS_INODE_STICKY: SQFS_INODE_MODE = 512;
+pub const SQFS_INODE_MODE_SQFS_INODE_SET_GID: SQFS_INODE_MODE = 1024;
+pub const SQFS_INODE_MODE_SQFS_INODE_SET_UID: SQFS_INODE_MODE = 2048;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_FIFO: SQFS_INODE_MODE = 4096;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_CHR: SQFS_INODE_MODE = 8192;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_DIR: SQFS_INODE_MODE = 16384;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_BLK: SQFS_INODE_MODE = 24576;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_REG: SQFS_INODE_MODE = 32768;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_LNK: SQFS_INODE_MODE = 40960;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_SOCK: SQFS_INODE_MODE = 49152;
+pub const SQFS_INODE_MODE_SQFS_INODE_MODE_MASK: SQFS_INODE_MODE = 61440;
+pub type SQFS_INODE_MODE = u32;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_t {
+ pub type_: sqfs_u16,
+ pub mode: sqfs_u16,
+ pub uid_idx: sqfs_u16,
+ pub gid_idx: sqfs_u16,
+ pub mod_time: sqfs_u32,
+ pub inode_number: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_inode_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).type_ as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(type_)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).mode as *const _ as usize },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(mode)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).uid_idx as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(uid_idx)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).gid_idx as *const _ as usize },
+ 6usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(gid_idx)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).mod_time as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(mod_time)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_t>())).inode_number as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_t),
+ "::",
+ stringify!(inode_number)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_dev_t {
+ pub nlink: sqfs_u32,
+ pub devno: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_dev_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_dev_t>(),
+ 8usize,
+ concat!("Size of: ", stringify!(sqfs_inode_dev_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_dev_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_dev_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dev_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dev_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dev_t>())).devno as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dev_t),
+ "::",
+ stringify!(devno)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_dev_ext_t {
+ pub nlink: sqfs_u32,
+ pub devno: sqfs_u32,
+ pub xattr_idx: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_dev_ext_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_dev_ext_t>(),
+ 12usize,
+ concat!("Size of: ", stringify!(sqfs_inode_dev_ext_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_dev_ext_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_dev_ext_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dev_ext_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dev_ext_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dev_ext_t>())).devno as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dev_ext_t),
+ "::",
+ stringify!(devno)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dev_ext_t>())).xattr_idx as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dev_ext_t),
+ "::",
+ stringify!(xattr_idx)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_ipc_t {
+ pub nlink: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_ipc_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_ipc_t>(),
+ 4usize,
+ concat!("Size of: ", stringify!(sqfs_inode_ipc_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_ipc_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_ipc_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_ipc_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_ipc_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_ipc_ext_t {
+ pub nlink: sqfs_u32,
+ pub xattr_idx: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_ipc_ext_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_ipc_ext_t>(),
+ 8usize,
+ concat!("Size of: ", stringify!(sqfs_inode_ipc_ext_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_ipc_ext_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_ipc_ext_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_ipc_ext_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_ipc_ext_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_ipc_ext_t>())).xattr_idx as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_ipc_ext_t),
+ "::",
+ stringify!(xattr_idx)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_slink_t {
+ pub nlink: sqfs_u32,
+ pub target_size: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_slink_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_slink_t>(),
+ 8usize,
+ concat!("Size of: ", stringify!(sqfs_inode_slink_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_slink_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_slink_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_slink_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_slink_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_slink_t>())).target_size as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_slink_t),
+ "::",
+ stringify!(target_size)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_slink_ext_t {
+ pub nlink: sqfs_u32,
+ pub target_size: sqfs_u32,
+ pub xattr_idx: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_slink_ext_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_slink_ext_t>(),
+ 12usize,
+ concat!("Size of: ", stringify!(sqfs_inode_slink_ext_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_slink_ext_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_slink_ext_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_slink_ext_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_slink_ext_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_slink_ext_t>())).target_size as *const _ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_slink_ext_t),
+ "::",
+ stringify!(target_size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_slink_ext_t>())).xattr_idx as *const _ as usize
+ },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_slink_ext_t),
+ "::",
+ stringify!(xattr_idx)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_file_t {
+ pub blocks_start: sqfs_u32,
+ pub fragment_index: sqfs_u32,
+ pub fragment_offset: sqfs_u32,
+ pub file_size: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_file_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_file_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_inode_file_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_file_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_file_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_t>())).blocks_start as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_t),
+ "::",
+ stringify!(blocks_start)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_file_t>())).fragment_index as *const _ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_t),
+ "::",
+ stringify!(fragment_index)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_file_t>())).fragment_offset as *const _ as usize
+ },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_t),
+ "::",
+ stringify!(fragment_offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_t>())).file_size as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_t),
+ "::",
+ stringify!(file_size)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_file_ext_t {
+ pub blocks_start: sqfs_u64,
+ pub file_size: sqfs_u64,
+ pub sparse: sqfs_u64,
+ pub nlink: sqfs_u32,
+ pub fragment_idx: sqfs_u32,
+ pub fragment_offset: sqfs_u32,
+ pub xattr_idx: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_file_ext_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_file_ext_t>(),
+ 40usize,
+ concat!("Size of: ", stringify!(sqfs_inode_file_ext_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_file_ext_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_file_ext_t))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).blocks_start as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(blocks_start)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).file_size as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(file_size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).sparse as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(sparse)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).nlink as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).fragment_idx as *const _ as usize
+ },
+ 28usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(fragment_idx)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).fragment_offset as *const _ as usize
+ },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(fragment_offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_file_ext_t>())).xattr_idx as *const _ as usize },
+ 36usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_file_ext_t),
+ "::",
+ stringify!(xattr_idx)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_dir_t {
+ pub start_block: sqfs_u32,
+ pub nlink: sqfs_u32,
+ pub size: sqfs_u16,
+ pub offset: sqfs_u16,
+ pub parent_inode: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_dir_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_dir_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_inode_dir_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_dir_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_dir_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_t>())).start_block as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_t),
+ "::",
+ stringify!(start_block)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_t>())).nlink as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_t>())).size as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_t>())).offset as *const _ as usize },
+ 10usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_t),
+ "::",
+ stringify!(offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_t>())).parent_inode as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_t),
+ "::",
+ stringify!(parent_inode)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_inode_dir_ext_t {
+ pub nlink: sqfs_u32,
+ pub size: sqfs_u32,
+ pub start_block: sqfs_u32,
+ pub parent_inode: sqfs_u32,
+ pub inodex_count: sqfs_u16,
+ pub offset: sqfs_u16,
+ pub xattr_idx: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_dir_ext_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_dir_ext_t>(),
+ 24usize,
+ concat!("Size of: ", stringify!(sqfs_inode_dir_ext_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_dir_ext_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_dir_ext_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).nlink as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(nlink)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).size as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).start_block as *const _ as usize
+ },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(start_block)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).parent_inode as *const _ as usize
+ },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(parent_inode)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).inodex_count as *const _ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(inodex_count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).offset as *const _ as usize },
+ 18usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(offset)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_dir_ext_t>())).xattr_idx as *const _ as usize },
+ 20usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_dir_ext_t),
+ "::",
+ stringify!(xattr_idx)
+ )
+ );
+}
+#[repr(C)]
+pub struct sqfs_inode_generic_t {
+ pub base: sqfs_inode_t,
+ pub payload_bytes_available: sqfs_u32,
+ pub payload_bytes_used: sqfs_u32,
+ pub data: sqfs_inode_generic_t__bindgen_ty_1,
+ pub extra: __IncompleteArrayField<sqfs_u32>,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sqfs_inode_generic_t__bindgen_ty_1 {
+ pub dev: sqfs_inode_dev_t,
+ pub dev_ext: sqfs_inode_dev_ext_t,
+ pub ipc: sqfs_inode_ipc_t,
+ pub ipc_ext: sqfs_inode_ipc_ext_t,
+ pub slink: sqfs_inode_slink_t,
+ pub slink_ext: sqfs_inode_slink_ext_t,
+ pub file: sqfs_inode_file_t,
+ pub file_ext: sqfs_inode_file_ext_t,
+ pub dir: sqfs_inode_dir_t,
+ pub dir_ext: sqfs_inode_dir_ext_t,
+ _bindgen_union_align: [u64; 5usize],
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_generic_t__bindgen_ty_1() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_generic_t__bindgen_ty_1>(),
+ 40usize,
+ concat!("Size of: ", stringify!(sqfs_inode_generic_t__bindgen_ty_1))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_generic_t__bindgen_ty_1>(),
+ 8usize,
+ concat!(
+ "Alignment of ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).dev as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(dev)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).dev_ext as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(dev_ext)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).ipc as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(ipc)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).ipc_ext as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(ipc_ext)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).slink as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(slink)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).slink_ext as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(slink_ext)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).file as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(file)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).file_ext as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(file_ext)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).dir as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(dir)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t__bindgen_ty_1>())).dir_ext as *const _
+ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t__bindgen_ty_1),
+ "::",
+ stringify!(dir_ext)
+ )
+ );
+}
+#[test]
+fn bindgen_test_layout_sqfs_inode_generic_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_inode_generic_t>(),
+ 64usize,
+ concat!("Size of: ", stringify!(sqfs_inode_generic_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_inode_generic_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_inode_generic_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_generic_t>())).base as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t),
+ "::",
+ stringify!(base)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t>())).payload_bytes_available as *const _
+ as usize
+ },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t),
+ "::",
+ stringify!(payload_bytes_available)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_inode_generic_t>())).payload_bytes_used as *const _ as usize
+ },
+ 20usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t),
+ "::",
+ stringify!(payload_bytes_used)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_generic_t>())).data as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t),
+ "::",
+ stringify!(data)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_inode_generic_t>())).extra as *const _ as usize },
+ 64usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_inode_generic_t),
+ "::",
+ stringify!(extra)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_inode_get_xattr_index(
+ inode: *const sqfs_inode_generic_t,
+ out: *mut sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_set_xattr_index(
+ inode: *mut sqfs_inode_generic_t,
+ index: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_make_extended(inode: *mut sqfs_inode_generic_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_make_basic(inode: *mut sqfs_inode_generic_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_set_file_size(
+ inode: *mut sqfs_inode_generic_t,
+ size: sqfs_u64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_set_file_block_start(
+ inode: *mut sqfs_inode_generic_t,
+ location: sqfs_u64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_set_frag_location(
+ inode: *mut sqfs_inode_generic_t,
+ index: sqfs_u32,
+ offset: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_get_file_size(
+ inode: *const sqfs_inode_generic_t,
+ size: *mut sqfs_u64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_get_frag_location(
+ inode: *const sqfs_inode_generic_t,
+ index: *mut sqfs_u32,
+ offset: *mut sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_get_file_block_start(
+ inode: *const sqfs_inode_generic_t,
+ location: *mut sqfs_u64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_inode_unpack_dir_index_entry(
+ inode: *const sqfs_inode_generic_t,
+ out: *mut *mut sqfs_dir_index_t,
+ index: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SQFS_FILE_OPEN_FLAGS_SQFS_FILE_OPEN_READ_ONLY: SQFS_FILE_OPEN_FLAGS = 1;
+pub const SQFS_FILE_OPEN_FLAGS_SQFS_FILE_OPEN_OVERWRITE: SQFS_FILE_OPEN_FLAGS = 2;
+pub const SQFS_FILE_OPEN_FLAGS_SQFS_FILE_OPEN_NO_CHARSET_XFRM: SQFS_FILE_OPEN_FLAGS = 4;
+pub const SQFS_FILE_OPEN_FLAGS_SQFS_FILE_OPEN_ALL_FLAGS: SQFS_FILE_OPEN_FLAGS = 7;
+pub type SQFS_FILE_OPEN_FLAGS = u32;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_file_t {
+ pub base: sqfs_object_t,
+ pub read_at: ::std::option::Option<
+ unsafe extern "C" fn(
+ file: *mut sqfs_file_t,
+ offset: sqfs_u64,
+ buffer: *mut ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int,
+ >,
+ pub write_at: ::std::option::Option<
+ unsafe extern "C" fn(
+ file: *mut sqfs_file_t,
+ offset: sqfs_u64,
+ buffer: *const ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int,
+ >,
+ pub get_size: ::std::option::Option<unsafe extern "C" fn(file: *const sqfs_file_t) -> sqfs_u64>,
+ pub truncate: ::std::option::Option<
+ unsafe extern "C" fn(file: *mut sqfs_file_t, size: sqfs_u64) -> ::std::os::raw::c_int,
+ >,
+}
+#[test]
+fn bindgen_test_layout_sqfs_file_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_file_t>(),
+ 48usize,
+ concat!("Size of: ", stringify!(sqfs_file_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_file_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_file_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_file_t>())).base as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_file_t),
+ "::",
+ stringify!(base)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_file_t>())).read_at as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_file_t),
+ "::",
+ stringify!(read_at)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_file_t>())).write_at as *const _ as usize },
+ 24usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_file_t),
+ "::",
+ stringify!(write_at)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_file_t>())).get_size as *const _ as usize },
+ 32usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_file_t),
+ "::",
+ stringify!(get_size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_file_t>())).truncate as *const _ as usize },
+ 40usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_file_t),
+ "::",
+ stringify!(truncate)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_open_file(
+ filename: *const ::std::os::raw::c_char,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_file_t;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_create(
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ start: sqfs_u64,
+ limit: sqfs_u64,
+ ) -> *mut sqfs_meta_reader_t;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_seek(
+ m: *mut sqfs_meta_reader_t,
+ block_start: sqfs_u64,
+ offset: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_get_position(
+ m: *const sqfs_meta_reader_t,
+ block_start: *mut sqfs_u64,
+ offset: *mut size_t,
+ );
+}
+extern "C" {
+ pub fn sqfs_meta_reader_read(
+ m: *mut sqfs_meta_reader_t,
+ data: *mut ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_read_dir_header(
+ m: *mut sqfs_meta_reader_t,
+ hdr: *mut sqfs_dir_header_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_read_dir_ent(
+ m: *mut sqfs_meta_reader_t,
+ ent: *mut *mut sqfs_dir_entry_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_reader_read_inode(
+ ir: *mut sqfs_meta_reader_t,
+ super_: *const sqfs_super_t,
+ block_start: sqfs_u64,
+ offset: size_t,
+ out: *mut *mut sqfs_inode_generic_t,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SQFS_META_WRITER_FLAGS_SQFS_META_WRITER_KEEP_IN_MEMORY: SQFS_META_WRITER_FLAGS = 1;
+pub const SQFS_META_WRITER_FLAGS_SQFS_META_WRITER_ALL_FLAGS: SQFS_META_WRITER_FLAGS = 1;
+pub type SQFS_META_WRITER_FLAGS = u32;
+extern "C" {
+ pub fn sqfs_meta_writer_create(
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ flags: sqfs_u32,
+ ) -> *mut sqfs_meta_writer_t;
+}
+extern "C" {
+ pub fn sqfs_meta_writer_flush(m: *mut sqfs_meta_writer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_writer_append(
+ m: *mut sqfs_meta_writer_t,
+ data: *const ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_writer_get_position(
+ m: *const sqfs_meta_writer_t,
+ block_start: *mut sqfs_u64,
+ offset: *mut sqfs_u32,
+ );
+}
+extern "C" {
+ pub fn sqfs_meta_writer_reset(m: *mut sqfs_meta_writer_t);
+}
+extern "C" {
+ pub fn sqfs_meta_write_write_to_file(m: *mut sqfs_meta_writer_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_meta_writer_write_inode(
+ iw: *mut sqfs_meta_writer_t,
+ n: *const sqfs_inode_generic_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_write_table(
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ data: *const ::std::os::raw::c_void,
+ table_size: size_t,
+ start: *mut sqfs_u64,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_read_table(
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ table_size: size_t,
+ location: sqfs_u64,
+ lower_limit: sqfs_u64,
+ upper_limit: sqfs_u64,
+ out: *mut *mut ::std::os::raw::c_void,
+ ) -> ::std::os::raw::c_int;
+}
+pub const SQFS_XATTR_TYPE_SQFS_XATTR_USER: SQFS_XATTR_TYPE = 0;
+pub const SQFS_XATTR_TYPE_SQFS_XATTR_TRUSTED: SQFS_XATTR_TYPE = 1;
+pub const SQFS_XATTR_TYPE_SQFS_XATTR_SECURITY: SQFS_XATTR_TYPE = 2;
+pub const SQFS_XATTR_TYPE_SQFS_XATTR_FLAG_OOL: SQFS_XATTR_TYPE = 256;
+pub const SQFS_XATTR_TYPE_SQFS_XATTR_PREFIX_MASK: SQFS_XATTR_TYPE = 255;
+pub type SQFS_XATTR_TYPE = u32;
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_xattr_entry_t {
+ pub type_: sqfs_u16,
+ pub size: sqfs_u16,
+ pub key: __IncompleteArrayField<sqfs_u8>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_xattr_entry_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_xattr_entry_t>(),
+ 4usize,
+ concat!("Size of: ", stringify!(sqfs_xattr_entry_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_xattr_entry_t>(),
+ 2usize,
+ concat!("Alignment of ", stringify!(sqfs_xattr_entry_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_entry_t>())).type_ as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_entry_t),
+ "::",
+ stringify!(type_)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_entry_t>())).size as *const _ as usize },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_entry_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_entry_t>())).key as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_entry_t),
+ "::",
+ stringify!(key)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_xattr_value_t {
+ pub size: sqfs_u32,
+ pub value: __IncompleteArrayField<sqfs_u8>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_xattr_value_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_xattr_value_t>(),
+ 4usize,
+ concat!("Size of: ", stringify!(sqfs_xattr_value_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_xattr_value_t>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(sqfs_xattr_value_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_value_t>())).size as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_value_t),
+ "::",
+ stringify!(size)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_value_t>())).value as *const _ as usize },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_value_t),
+ "::",
+ stringify!(value)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqfs_xattr_id_t {
+ pub xattr: sqfs_u64,
+ pub count: sqfs_u32,
+ pub size: sqfs_u32,
+}
+#[test]
+fn bindgen_test_layout_sqfs_xattr_id_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_xattr_id_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_xattr_id_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_xattr_id_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_xattr_id_t))
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_t>())).xattr as *const _ as usize },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_t),
+ "::",
+ stringify!(xattr)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_t>())).count as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_t),
+ "::",
+ stringify!(count)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_t>())).size as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_t),
+ "::",
+ stringify!(size)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct sqfs_xattr_id_table_t {
+ pub xattr_table_start: sqfs_u64,
+ pub xattr_ids: sqfs_u32,
+ pub unused: sqfs_u32,
+ pub locations: __IncompleteArrayField<sqfs_u64>,
+}
+#[test]
+fn bindgen_test_layout_sqfs_xattr_id_table_t() {
+ assert_eq!(
+ ::std::mem::size_of::<sqfs_xattr_id_table_t>(),
+ 16usize,
+ concat!("Size of: ", stringify!(sqfs_xattr_id_table_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<sqfs_xattr_id_table_t>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(sqfs_xattr_id_table_t))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<sqfs_xattr_id_table_t>())).xattr_table_start as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_table_t),
+ "::",
+ stringify!(xattr_table_start)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_table_t>())).xattr_ids as *const _ as usize },
+ 8usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_table_t),
+ "::",
+ stringify!(xattr_ids)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_table_t>())).unused as *const _ as usize },
+ 12usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_table_t),
+ "::",
+ stringify!(unused)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(::std::ptr::null::<sqfs_xattr_id_table_t>())).locations as *const _ as usize },
+ 16usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(sqfs_xattr_id_table_t),
+ "::",
+ stringify!(locations)
+ )
+ );
+}
+extern "C" {
+ pub fn sqfs_get_xattr_prefix(id: SQFS_XATTR_TYPE) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+ pub fn sqfs_get_xattr_prefix_id(key: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_create(flags: sqfs_u32) -> *mut sqfs_xattr_reader_t;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_load(
+ xr: *mut sqfs_xattr_reader_t,
+ super_: *const sqfs_super_t,
+ file: *mut sqfs_file_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_get_desc(
+ xr: *mut sqfs_xattr_reader_t,
+ idx: sqfs_u32,
+ desc: *mut sqfs_xattr_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_seek_kv(
+ xr: *mut sqfs_xattr_reader_t,
+ desc: *const sqfs_xattr_id_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_read_key(
+ xr: *mut sqfs_xattr_reader_t,
+ key_out: *mut *mut sqfs_xattr_entry_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_reader_read_value(
+ xr: *mut sqfs_xattr_reader_t,
+ key: *const sqfs_xattr_entry_t,
+ val_out: *mut *mut sqfs_xattr_value_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_writer_create(flags: sqfs_u32) -> *mut sqfs_xattr_writer_t;
+}
+extern "C" {
+ pub fn sqfs_xattr_writer_begin(
+ xwr: *mut sqfs_xattr_writer_t,
+ flags: sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_writer_add(
+ xwr: *mut sqfs_xattr_writer_t,
+ key: *const ::std::os::raw::c_char,
+ value: *const ::std::os::raw::c_void,
+ size: size_t,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_writer_end(
+ xwr: *mut sqfs_xattr_writer_t,
+ out: *mut sqfs_u32,
+ ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+ pub fn sqfs_xattr_writer_flush(
+ xwr: *const sqfs_xattr_writer_t,
+ file: *mut sqfs_file_t,
+ super_: *mut sqfs_super_t,
+ cmp: *mut sqfs_compressor_t,
+ ) -> ::std::os::raw::c_int;
+}
diff --git a/src/lib.rs b/src/lib.rs
index 24a0727..1640a31 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -37,6 +37,7 @@ use num_derive::FromPrimitive;
use num_traits::FromPrimitive;
use thiserror::Error;
+#[cfg(not(feature = "hermetic"))]
mod bindings {
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
@@ -44,6 +45,8 @@ mod bindings {
#![allow(dead_code)]
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
}
+#[cfg(feature = "hermetic")]
+mod bindings;
use bindings::*;