commit: 1a7aeb58c4e687e4d4012054b56373f27941a067 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Sun May 7 23:32:19 2017 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Tue May 9 16:22:45 2017 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=1a7aeb58
file_copy: replace loff_t with off_t for portability (bug 617778) The loff_t type is a GNU extension, so use the portable off_t type instead. Also, enable Large File Support macros in setup.py, for 64-bit offsets. Reported-by: Patrick Steinhardt <ps <AT> pks.im> X-Gentoo-bug: 617778 X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=617778 Acked-by: Anthony G. Basile <blueness <AT> gentoo.org> Acked-by: Brian Dolbec <dolsen <AT> gentoo.org> setup.py | 5 ++++- src/portage_util_file_copy_reflink_linux.c | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index e99317792..1ba6f87f8 100755 --- a/setup.py +++ b/setup.py @@ -676,7 +676,10 @@ setup( ['$sysconfdir/portage/repo.postsync.d', ['cnf/repo.postsync.d/example']], ], - ext_modules = [Extension(name=n, sources=m) for n, m in x_c_helpers.items()], + ext_modules = [Extension(name=n, sources=m, + extra_compile_args=['-D_FILE_OFFSET_BITS=64', + '-D_LARGEFILE_SOURCE', '-D_LARGEFILE64_SOURCE']) + for n, m in x_c_helpers.items()], cmdclass = { 'build': x_build, diff --git a/src/portage_util_file_copy_reflink_linux.c b/src/portage_util_file_copy_reflink_linux.c index b031d962d..2fb17a0f5 100644 --- a/src/portage_util_file_copy_reflink_linux.c +++ b/src/portage_util_file_copy_reflink_linux.c @@ -66,7 +66,7 @@ initreflink_linux(void) * (errno is set appropriately). */ static ssize_t -cfr_wrapper(int fd_out, int fd_in, loff_t *off_out, size_t len) +cfr_wrapper(int fd_out, int fd_in, off_t *off_out, size_t len) { #ifdef __NR_copy_file_range return syscall(__NR_copy_file_range, fd_in, NULL, fd_out, @@ -96,7 +96,7 @@ cfr_wrapper(int fd_out, int fd_in, loff_t *off_out, size_t len) * reaches EOF. */ static off_t -do_lseek_data(int fd_out, int fd_in, loff_t *off_out) { +do_lseek_data(int fd_out, int fd_in, off_t *off_out) { #ifdef SEEK_DATA /* Use lseek SEEK_DATA/SEEK_HOLE for sparse file support, * as suggested in the copy_file_range man page. @@ -189,7 +189,7 @@ _reflink_linux_file_copy(PyObject *self, PyObject *args) ssize_t buf_bytes, buf_offset, copyfunc_ret; struct stat stat_in, stat_out; char* buf; - ssize_t (*copyfunc)(int, int, loff_t *, size_t); + ssize_t (*copyfunc)(int, int, off_t *, size_t); if (!PyArg_ParseTuple(args, "ii", &fd_in, &fd_out)) return NULL;
