Skip to content

Commit

Permalink
file_copy: replace loff_t with off_t for portability (bug 617778)
Browse files Browse the repository at this point in the history
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@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@gentoo.org>
Acked-by: Brian Dolbec <dolsen@gentoo.org>
  • Loading branch information
zmedico committed May 9, 2017
1 parent dac5089 commit 1a7aeb5
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
5 changes: 4 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,10 @@ def run(self):
['$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,
Expand Down
6 changes: 3 additions & 3 deletions src/portage_util_file_copy_reflink_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 1a7aeb5

Please sign in to comment.