… | |
… | |
1006 | |
1006 | |
1007 | /* according to source inspection, this is correct, and useful behaviour */ |
1007 | /* according to source inspection, this is correct, and useful behaviour */ |
1008 | if (sbytes) |
1008 | if (sbytes) |
1009 | res = sbytes; |
1009 | res = sbytes; |
1010 | |
1010 | |
1011 | # elif defined (__APPLE__) |
1011 | # elif defined (__APPLE__) && 0 /* broken, as everything on os x */ |
1012 | off_t sbytes = count; |
1012 | off_t sbytes = count; |
1013 | res = sendfile (ifd, ofd, offset, &sbytes, 0, 0); |
1013 | res = sendfile (ifd, ofd, offset, &sbytes, 0, 0); |
1014 | |
1014 | |
1015 | /* according to the manpage, sbytes is always valid */ |
1015 | /* according to the manpage, sbytes is always valid */ |
1016 | if (sbytes) |
1016 | if (sbytes) |
… | |
… | |
1305 | flags &= ~(EIO_READDIR_DIRS_FIRST | EIO_READDIR_STAT_ORDER); |
1305 | flags &= ~(EIO_READDIR_DIRS_FIRST | EIO_READDIR_STAT_ORDER); |
1306 | |
1306 | |
1307 | X_LOCK (wrklock); |
1307 | X_LOCK (wrklock); |
1308 | /* the corresponding closedir is in ETP_WORKER_CLEAR */ |
1308 | /* the corresponding closedir is in ETP_WORKER_CLEAR */ |
1309 | self->dirp = dirp = opendir (req->ptr1); |
1309 | self->dirp = dirp = opendir (req->ptr1); |
|
|
1310 | |
|
|
1311 | if (req->flags & EIO_FLAG_PTR1_FREE) |
|
|
1312 | free (req->ptr1); |
1310 | |
1313 | |
1311 | req->flags |= EIO_FLAG_PTR1_FREE | EIO_FLAG_PTR2_FREE; |
1314 | req->flags |= EIO_FLAG_PTR1_FREE | EIO_FLAG_PTR2_FREE; |
1312 | req->ptr1 = dents = flags ? malloc (dentalloc * sizeof (eio_dirent)) : 0; |
1315 | req->ptr1 = dents = flags ? malloc (dentalloc * sizeof (eio_dirent)) : 0; |
1313 | req->ptr2 = names = malloc (namesalloc); |
1316 | req->ptr2 = names = malloc (namesalloc); |
1314 | X_UNLOCK (wrklock); |
1317 | X_UNLOCK (wrklock); |