# Suppression file for abidiff false positives in libfuse
# This file suppresses ABI changes that are actually compatible but flagged by abidiff

[suppress_type]
# Suppress the fuse_conn_info reserved array transformation
# This change is ABI-compatible: uint32_t[16] -> uint16_t request_timeout + uint16_t[31]
# Both use exactly 64 bytes (16*4 = 32*2 = 64 bytes)
name = fuse_conn_info
# Suppress changes to the reserved field that are size/offset related
change_kind = size-or-offset-change
has_data_member_inserted_at = offset_in_bits(512)

[suppress_type]
# Also suppress the general struct size change for fuse_conn_info
# since the total size remains the same (128 bytes) by a static assertion
# in the code
name = fuse_conn_info
change_kind = size-change

[suppress_type]
# Suppress ALL changes to fuse_operations struct
# These are backward compatible due to the op_size mechanism in fuse_main()
# Applications pass sizeof(struct fuse_operations) at compile time,
# and the library uses memcpy(&fs->op, op, op_size) to safely copy only
# the fields the application knows about. New fields remain NULL.
name = fuse_operations
has_data_member_inserted_at = end
has_size_change = yes

[suppress_type]
# Suppress ALL changes to fuse_lowlevel_ops struct
# These are backward compatible due to the op_size mechanism in fuse_session_new()
# Same pattern as fuse_operations - op_size controls safe copying
name = fuse_lowlevel_ops
has_data_member_inserted_at = end
has_size_change = yes

[suppress_function]
# Suppress const qualification changes to fuse_get_session parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_get_session(struct fuse*)
# to fuse_get_session(const struct fuse*), which is ABI compatible
name = fuse_get_session
parameter = '0 /^(const )?fuse\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_mount parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_mount(struct fuse*, const char*)
# to fuse_mount(const struct fuse*, const char*), which is ABI compatible
name = fuse_mount
parameter = '0 /^(const )?fuse\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_unmount parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_unmount(struct fuse*)
# to fuse_unmount(const struct fuse*), which is ABI compatible
name = fuse_unmount
parameter = '0 /^(const )?fuse\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_remove_signal_handlers parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_remove_signal_handlers(struct fuse_session*)
# to fuse_remove_signal_handlers(const struct fuse_session*), which is ABI compatible
name = fuse_remove_signal_handlers
parameter = '0 /^(const )?fuse_session\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_session_fd parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_session_fd(struct fuse_session*)
# to fuse_session_fd(const struct fuse_session*), which is ABI compatible
name = fuse_session_fd
parameter = '0 /^(const )?fuse_session\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_get_feature_flag parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_get_feature_flag(struct fuse_conn_info*, ...)
# to fuse_get_feature_flag(const struct fuse_conn_info*, ...), which is ABI compatible
name = fuse_get_feature_flag
parameter = '0 /^(const )?fuse_conn_info\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_apply_conn_info_opts parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_apply_conn_info_opts(struct fuse_conn_info_opts*, ...)
# to fuse_apply_conn_info_opts(const struct fuse_conn_info_opts*, ...), which is ABI compatible
name = fuse_apply_conn_info_opts
parameter = '0 /^(const )?fuse_conn_info_opts\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_loop_cfg_convert parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_loop_cfg_convert(..., struct fuse_loop_config_v1*)
# to fuse_loop_cfg_convert(..., const struct fuse_loop_config_v1*), which is ABI compatible
name = fuse_loop_cfg_convert
parameter = '1 /^(const )?fuse_loop_config_v1\\*/
change_kind = function-subtype-change

[suppress_function]
# Suppress const qualification changes to fuse_session_new_versioned parameter
# Adding const to pointer parameters is ABI-compatible (compile-time only)
# The function signature changed from fuse_session_new_versioned(..., struct libfuse_version*, ...)
# to fuse_session_new_versioned(..., const struct libfuse_version*, ...), which is ABI compatible
name = fuse_session_new_versioned
parameter = '3 /^(const )?libfuse_version\\*/
change_kind = function-subtype-change

[suppress_type]
# Suppress struct fuse_session size change - unrelated to const changes
# This is a pre-existing change in the branch
name = fuse_session
change_kind = size-change
