[simg2img_simple] Don't break when splice doesn't work (over adb for instance)
This commit is contained in:
parent
22c1395462
commit
c85213c6f1
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user