diff options
author | Philip Langdale <philipl@overt.org> | 2013-04-05 14:00:28 -0700 |
---|---|---|
committer | Linus Walleij <triad@df.lth.se> | 2013-04-09 22:41:44 +0200 |
commit | abdd59de34e74dec76930a567679cde849bfbb94 (patch) | |
tree | d5e061a971325dbac88e94bf043a50ec1d4cfc22 | |
parent | 1a5fe0ae4de66d1ca97f7ae712d75b409b1a7841 (diff) | |
download | libmtp-abdd59de34e74dec76930a567679cde849bfbb94.tar.gz |
libmtp: Support > 4GB file transfers
The libmtp specific piece of supporting > 4GB file transfers was
missing.
Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Linus Walleij <triad@df.lth.se>
-rw-r--r-- | src/libmtp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libmtp.c b/src/libmtp.c index dab756d..46edab7 100644 --- a/src/libmtp.c +++ b/src/libmtp.c @@ -6191,8 +6191,12 @@ static int send_file_object_info(LIBMTP_mtpdevice_t *device, LIBMTP_file_t *file if (FLAG_ONLY_7BIT_FILENAMES(ptp_usb)) { strip_7bit_from_utf8(new_file.Filename); } - // We lose precision here. - new_file.ObjectCompressedSize = (uint32_t) filedata->filesize; + if (filedata->filesize > 0xFFFFFFFFL) { + // This is a kludge in the MTP standard for large files. + new_file.ObjectCompressedSize = (uint32_t) 0xFFFFFFFF; + } else { + new_file.ObjectCompressedSize = (uint32_t) filedata->filesize; + } new_file.ObjectFormat = of; new_file.StorageID = store; new_file.ParentObject = localph; |