ntfsmount:
Support FUSE versions from 2.3.0 to 2.5.1 under Linux and 2.5.X under FreeBSD. Warning tested only under FUSE-2.4.1. Will test under FUSE-2.5.1 at home.edge.strict_endians
							parent
							
								
									e2450ad61a
								
							
						
					
					
						commit
						63f5ddb8c2
					
				|  | @ -215,12 +215,12 @@ if test "$enable_fuse_module" != "no"; then | |||
| 			fi | ||||
| 		]);; | ||||
| 	freebsd*) | ||||
| 		PKG_CHECK_MODULES(FUSE_MODULE, fuse >= 2.4.2, [ compile_fuse_module=true ], | ||||
| 		PKG_CHECK_MODULES(FUSE_MODULE, fuse >= 2.5.0, [ compile_fuse_module=true ], | ||||
| 		[ | ||||
| 			if test "$enable_fuse_module" = "yes"; then | ||||
| 				AC_MSG_ERROR([ntfsmount requires FUSE version >= 2.4.2 under FreeBSD, because earlier versions have problems with readdir.]) | ||||
| 				AC_MSG_ERROR([ntfsmount requires FUSE version >= 2.5.0 under FreeBSD.]) | ||||
| 			else | ||||
| 				AC_MSG_WARN([ntfsmount requires FUSE version >= 2.4.2 under FreeBSD, because earlier versions have problems with readdir.]) | ||||
| 				AC_MSG_WARN([ntfsmount requires FUSE version >= 2.5.0 under FreeBSD.]) | ||||
| 			fi | ||||
| 		]);; | ||||
| 	*) | ||||
|  |  | |||
|  | @ -92,7 +92,7 @@ if ENABLE_FUSE_MODULE | |||
| ntfsmount_SOURCES	= ntfsmount.c utils.c utils.h | ||||
| ntfsmount_LDADD		= $(AM_LIBS) $(FUSE_MODULE_LIBS) | ||||
| ntfsmount_LDFLAGS	= $(AM_LFLAGS) | ||||
| ntfsmount_CFLAGS	= $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=22 | ||||
| ntfsmount_CFLAGS	= $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=25 | ||||
| endif | ||||
| 
 | ||||
| # We don't distribute these
 | ||||
|  |  | |||
|  | @ -207,7 +207,11 @@ static __inline__ void ntfs_fuse_mark_free_space_outdate(void) | |||
|  * Return 0 on success or -errno on error. | ||||
|  */ | ||||
| static int ntfs_fuse_statfs(const char *path __attribute__((unused)), | ||||
| #if FUSE_VERSION >= 25 | ||||
| 		struct statvfs *sfs) | ||||
| #else | ||||
| 		struct statfs *sfs) | ||||
| #endif | ||||
| { | ||||
| 	long size; | ||||
| 	ntfs_volume *vol; | ||||
|  | @ -219,6 +223,9 @@ static int ntfs_fuse_statfs(const char *path __attribute__((unused)), | |||
| 	sfs->f_type = NTFS_SB_MAGIC; | ||||
| 	/* Optimal transfer block size. */ | ||||
| 	sfs->f_bsize = vol->cluster_size; | ||||
| #if FUSE_VERSION >= 25 | ||||
| 	sfs->f_frsize = vol->cluster_size; | ||||
| #endif | ||||
| 	/*
 | ||||
| 	 * Total data blocks in file system in units of f_bsize and since | ||||
| 	 * inodes are also stored in data blocs ($MFT is a file) this is just | ||||
|  | @ -239,11 +246,11 @@ static int ntfs_fuse_statfs(const char *path __attribute__((unused)), | |||
| 		size = 0; | ||||
| 	sfs->f_ffree = size; | ||||
| 	/* Maximum length of filenames. */ | ||||
| #ifndef __FreeBSD__ | ||||
| 	sfs->f_namelen = NTFS_MAX_NAME_LEN; | ||||
| #else | ||||
| #if FUSE_VERSION >= 25 | ||||
| 	sfs->f_namemax = NTFS_MAX_NAME_LEN; | ||||
| #endif /* __FreeBSD__ */ | ||||
| #else | ||||
| 	sfs->f_namelen = NTFS_MAX_NAME_LEN; | ||||
| #endif | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -1741,8 +1748,11 @@ static int parse_options(int argc, char *argv[]) | |||
| int main(int argc, char *argv[]) | ||||
| { | ||||
| 	char *parsed_options; | ||||
| #if FUSE_VERSION >= 25 | ||||
| 	struct fuse_args margs = FUSE_ARGS_INIT(0, NULL); | ||||
| #endif | ||||
| 	struct fuse *fh; | ||||
| 	int ffd; | ||||
| 	int ffd = 0; | ||||
| 
 | ||||
| 	utils_set_locale(); | ||||
| 	ntfs_log_set_handler(ntfs_log_handler_stderr); | ||||
|  | @ -1770,7 +1780,17 @@ int main(int argc, char *argv[]) | |||
| 	} | ||||
| 	free(opts.device); | ||||
| 	/* Create filesystem. */ | ||||
| #if FUSE_VERSION >= 25 | ||||
| 	if ((fuse_opt_add_arg(&margs, "") == -1 || | ||||
| 			fuse_opt_add_arg(&margs, "-o") == -1 || | ||||
| 			fuse_opt_add_arg(&margs, parsed_options) == -1)) | ||||
| 		ffd = -1; | ||||
| 	if (ffd != -1) | ||||
| 		ffd = fuse_mount(opts.mnt_point, &margs); | ||||
| 	fuse_opt_free_args(&margs); | ||||
| #else | ||||
| 	ffd = fuse_mount(opts.mnt_point, parsed_options); | ||||
| #endif | ||||
| 	if (ffd == -1) { | ||||
| 		ntfs_log_error("fuse_mount failed.\n"); | ||||
| 		ntfs_fuse_destroy(); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue