1#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 17) 
   12static void print_conn_info(
const char *prefix, 
struct fuse_conn_info *conn)
 
   14        struct fuse_session *se = container_of(conn, 
struct fuse_session, conn);
 
   16        printf(
"%s: want=0x%" PRIx32 
" want_ext=0x%" PRIx64
 
   17                " want_default=0x%" PRIx32 
" want_ext_default=0x%" PRIx64 
"\n",
 
   26        conn->
want &= ~FUSE_CAP_SPLICE_READ;
 
   43static void test_fuse_fs_init(
struct fuse_conn_info *conn, 
bool new_style)
 
   49                application_init_new_style(conn);
 
   51                application_init_old_style(conn);
 
   54static void test_do_init(
struct fuse_conn_info *conn, 
bool new_style)
 
   67        print_conn_info(
"Initial state", conn);
 
   71        test_fuse_fs_init(conn, new_style);
 
   72        print_conn_info(
"After init", conn);
 
   91        print_conn_info(
"After init", conn);
 
   94static void test_want_conversion_basic(
void)
 
   98        struct fuse_session *se;
 
  103                fprintf(stderr, 
"Failed to add argument\n");
 
  104                errx(1, 
"Failed to add argument");
 
  108        se = fuse_session_new(&args, &ops, 
sizeof(ops), NULL);
 
  111        printf(
"\nTesting basic want conversion, old style:\n");
 
  112        test_do_init(conn, 
false);
 
  115        se = fuse_session_new(&args, &ops, 
sizeof(ops), NULL);
 
  118        printf(
"\nTesting basic want conversion, new style:\n");
 
  119        test_do_init(conn, 
true);
 
  120        print_conn_info(
"After init", conn);
 
  127static void test_want_conversion_conflict(
void)
 
  132        printf(
"\nTesting want conversion conflict:\n");
 
  142        print_conn_info(
"Test conflict initial", &conn);
 
  146        conn.
want &= ~FUSE_CAP_SPLICE_READ; 
 
  149        assert(rc == -EINVAL);
 
  150        print_conn_info(
"Test conflict after", &conn);
 
  152        printf(
"Want conversion conflict test passed\n");
 
  155static void test_want_conversion_high_bits(
void)
 
  160        printf(
"\nTesting want conversion high bits preservation:\n");
 
  165        print_conn_info(
"Test high bits initial", &conn);
 
  170        print_conn_info(
"Test high bits after", &conn);
 
  172        printf(
"Want conversion high bits test passed\n");
 
  177        test_want_conversion_basic();
 
  178        test_want_conversion_conflict();
 
  179        test_want_conversion_high_bits();
 
#define FUSE_CAP_IOCTL_DIR
 
void fuse_unset_feature_flag(struct fuse_conn_info *conn, uint64_t flag)
 
int fuse_convert_to_conn_want_ext(struct fuse_conn_info *conn)
 
bool fuse_set_feature_flag(struct fuse_conn_info *conn, uint64_t flag)
 
#define FUSE_CAP_SPLICE_READ
 
#define FUSE_CAP_ATOMIC_O_TRUNC
 
#define FUSE_CAP_ASYNC_READ
 
#define FUSE_CAP_SPLICE_WRITE
 
#define FUSE_CAP_EXPORT_SUPPORT
 
#define FUSE_CAP_POSIX_LOCKS
 
#define FUSE_CAP_SPLICE_MOVE
 
#define FUSE_CAP_FLOCK_LOCKS
 
void fuse_session_destroy(struct fuse_session *se)
 
int fuse_opt_add_arg(struct fuse_args *args, const char *arg)
 
void fuse_opt_free_args(struct fuse_args *args)
 
#define FUSE_ARGS_INIT(argc, argv)