2#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 17) 
   10static void print_conn_info(
const char *prefix, 
struct fuse_conn_info *conn)
 
   12        printf(
"%s: want=0x%" PRIx32 
" want_ext=0x%" PRIx64 
"\n", prefix,
 
   20        conn->
want &= ~FUSE_CAP_SPLICE_READ;
 
   30static void test_fuse_fs_init(
struct fuse_conn_info *conn, 
bool new_style)
 
   32        uint64_t want_ext_default = conn->
want_ext;
 
   33        uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
 
   39        conn->
want = want_default;
 
   42                application_init_new_style(conn);
 
   44                application_init_old_style(conn);
 
   46        rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
 
   50static void test_do_init(
struct fuse_conn_info *conn, 
bool new_style)
 
   60        print_conn_info(
"Initial state", conn);
 
   62        uint64_t want_ext_default = conn->
want_ext;
 
   63        uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
 
   66        conn->
want = want_default;
 
   69        test_fuse_fs_init(conn, new_style);
 
   71        rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
 
   88        print_conn_info(
"After init", conn);
 
   91static void test_want_conversion_basic(
void)
 
   95        printf(
"\nTesting basic want conversion:\n");
 
   96        test_do_init(&conn, 
false);
 
   97        test_do_init(&conn, 
true);
 
   98        print_conn_info(
"After init", &conn);
 
  101static void test_want_conversion_conflict(
void)
 
  106        printf(
"\nTesting want conversion conflict:\n");
 
  116        print_conn_info(
"Test conflict initial", &conn);
 
  119        uint64_t want_ext_default_ll = conn.
want_ext;
 
  120        uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
 
  124        conn.
want &= ~FUSE_CAP_SPLICE_READ; 
 
  126        rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
 
  128        assert(rc == -EINVAL);
 
  129        print_conn_info(
"Test conflict after", &conn);
 
  131        printf(
"Want conversion conflict test passed\n");
 
  134static void test_want_conversion_high_bits(
void)
 
  139        printf(
"\nTesting want conversion high bits preservation:\n");
 
  144        print_conn_info(
"Test high bits initial", &conn);
 
  146        uint64_t want_ext_default_ll = conn.
want_ext;
 
  147        uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
 
  149        rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
 
  153        print_conn_info(
"Test high bits after", &conn);
 
  155        printf(
"Want conversion high bits test passed\n");
 
  160        test_want_conversion_basic();
 
  161        test_want_conversion_conflict();
 
  162        test_want_conversion_high_bits();
 
#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