mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-23 18:05:42 +08:00
cp: use FICLONE instead of BTRFS_IOC_CLONE
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.
This commit is contained in:
parent
c6389a1340
commit
89e1fef97c
@ -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
|
||||
|
16
src/copy.c
16
src/copy.c
@ -74,6 +74,14 @@
|
||||
# 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;
|
||||
|
Loading…
Reference in New Issue
Block a user