]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
cp: use FICLONE instead of BTRFS_IOC_CLONE
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 9 Sep 2016 22:28:31 +0000 (15:28 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 9 Sep 2016 22:29:07 +0000 (15:29 -0700)
This doesn't affect the generated code on my system; it's merely
a cleaner way to use the recently-introduced Linux-specific API.
* m4/jm-macros.m4 (gl_CHECK_ALL_HEADERS): Check for linux/fs.h.
* src/copy.c: Include <linux.fs.h> if available.
(FICLONE) [__linux__]: Define if not already defined.
(clone_file): Use FICLONE instead of the older BTRFS_IOC_CLONE,
as this ioctl is no longer btrfs-specific.

m4/jm-macros.m4
src/copy.c

index 435c6ff41b74326c253f5a2f164779562ad085e8..a191af1de1eb9fcf84addc6b04212c209250e4fc 100644 (file)
@@ -1,4 +1,4 @@
-#serial 110   -*- autoconf -*-
+#serial 111   -*- autoconf -*-
 
 dnl Misc type-related macros for coreutils.
 
@@ -207,6 +207,7 @@ AC_DEFUN([gl_CHECK_ALL_HEADERS],
   AC_CHECK_HEADERS_ONCE([
     hurd.h
     linux/falloc.h
+    linux/fs.h
     paths.h
     priv.h
     stropts.h
index 191ccaaab5c5c7dd098950fbeb9023d83a61b924..8cc5c5b729da654a6f92f7387059182b5a5f45be 100644 (file)
 # include <linux/falloc.h>
 #endif
 
+#ifdef HAVE_LINUX_FS_H
+# include <linux/fs.h>
+#endif
+
+#if !defined FICLONE && defined __linux__
+# define FICLONE _IOW (0x94, 9, int)
+#endif
+
 #ifndef HAVE_FCHOWN
 # define HAVE_FCHOWN false
 # define fchown(fd, uid, gid) (-1)
@@ -320,12 +328,8 @@ sparse_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
 static inline int
 clone_file (int dest_fd, int src_fd)
 {
-#ifdef __linux__
-# undef BTRFS_IOCTL_MAGIC
-# define BTRFS_IOCTL_MAGIC 0x94
-# undef BTRFS_IOC_CLONE
-# define BTRFS_IOC_CLONE _IOW (BTRFS_IOCTL_MAGIC, 9, int)
-  return ioctl (dest_fd, BTRFS_IOC_CLONE, src_fd);
+#ifdef FICLONE
+  return ioctl (dest_fd, FICLONE, src_fd);
 #else
   (void) dest_fd;
   (void) src_fd;