$NetBSD: patch-af,v 1.7 2008/03/08 08:56:47 adam Exp $ --- ntfsprogs/ntfsclone.c.orig 2007-09-19 18:51:09.000000000 +0200 +++ ntfsprogs/ntfsclone.c @@ -61,6 +61,19 @@ */ #define NTFS_DO_NOT_CHECK_ENDIANS +#ifdef __NetBSD__ +# include + /* NetBSD versions later than 2.99.9 have statvfs(2) instead of statfs(2) */ +# if __NetBSD_Version__ >= 299000900 +# include +# define F_TYPE f_fsid +# else +# define F_TYPE f_type +# endif +#else +# define F_TYPE f_type +#endif + #include "debug.h" #include "types.h" #include "support.h" @@ -116,7 +129,11 @@ static struct { int restore_image; char *output; char *volume; +#if defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900) + struct statvfs stfs; +#else struct statfs stfs; +#endif } opt; struct bitmap { @@ -590,7 +607,7 @@ static void copy_cluster(int rescue, u64 if (write_all(&fd_out, buff, csize) == -1) { int err = errno; perr_printf("Write failed"); - if (err == EIO && opt.stfs.f_type == 0x517b) + if (err == EIO && opt.stfs.F_TYPE == 0x517b) Printf("Apparently you tried to clone to a remote " "Windows computer but they don't\nhave " "efficient sparse file handling by default. " @@ -1492,7 +1509,7 @@ static void set_filesize(s64 filesize) Printf("WARNING: Couldn't get filesystem type: " "%s\n", strerror(errno)); else - fs_type = opt.stfs.f_type; + fs_type = opt.stfs.F_TYPE; if (fs_type == 0x52654973) Printf("WARNING: You're using ReiserFS, it has very poor "