[simg2img_simple] Don't break when splice doesn't work (over adb for instance)

This commit is contained in:
Pierre-Hugues Husson 2020-05-09 14:02:50 +02:00 committed by tboy1991
parent d9f73e65c1
commit 685e64fda2

View File

@ -42,8 +42,15 @@ typedef struct chunk_header {
*/ */
void nsendfile(int out_fd, int in_fd, size_t count) { void nsendfile(int out_fd, int in_fd, size_t count) {
char buf[1024*1024];
while(count) { while(count) {
ssize_t res = splice(in_fd, NULL, out_fd, NULL, count, 0); ssize_t res = splice(in_fd, NULL, out_fd, NULL, count, 0);
if(res==-1) {
ssize_t sizeToRead = sizeof(buf);
if(count < sizeToRead) sizeToRead = count;
res = read(in_fd, buf, sizeToRead);
if(write(out_fd, buf, res) != res) exit(114);
}
if(res == 0 || res == -1) exit(112); if(res == 0 || res == -1) exit(112);
count -= res; count -= res;
} }