ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.xs
(Generate patch)

Comparing IO-AIO/AIO.xs (file contents):
Revision 1.196 by root, Tue Sep 27 00:41:51 2011 UTC vs.
Revision 1.198 by root, Tue Sep 27 02:16:49 2011 UTC

617 break; 617 break;
618 618
619 case EIO_STAT: 619 case EIO_STAT:
620 case EIO_LSTAT: 620 case EIO_LSTAT:
621 case EIO_FSTAT: 621 case EIO_FSTAT:
622 PL_laststype = req->type == EIO_LSTAT ? OP_LSTAT : OP_STAT; 622 PL_laststype = req->type == EIO_LSTAT ? OP_LSTAT : OP_STAT;
623
623 PL_laststatval = req->result; 624 if (!(PL_laststatval = req->result))
624 /* if compilation fails here then perl's Stat_t is not struct _stati64 */ 625 /* if compilation fails here then perl's Stat_t is not struct _stati64 */
625 PL_statcache = *(EIO_STRUCT_STAT *)(req->ptr2); 626 PL_statcache = *(EIO_STRUCT_STAT *)(req->ptr2);
627
626 PUSHs (sv_result); 628 PUSHs (sv_result);
627 break; 629 break;
628 630
629 case EIO_READ: 631 case EIO_READ:
630 { 632 {
818 XPUSHs (req_sv (req, aio_req_stash)); 820 XPUSHs (req_sv (req, aio_req_stash));
819 821
820static void 822static void
821req_set_path (aio_req req, SV *path, SV **wdsv, SV **pathsv, eio_wd *wd, void **ptr) 823req_set_path (aio_req req, SV *path, SV **wdsv, SV **pathsv, eio_wd *wd, void **ptr)
822{ 824{
823 if (SvROK (path)) 825 if (expect_false (SvROK (path)))
824 { 826 {
825 AV *av = (AV *)SvRV (path); 827 AV *av = (AV *)SvRV (path);
826 SV *wdob; 828 SV *wdob;
827 829
828 if (SvTYPE (av) != SVt_PVAV || AvFILLp (av) != 1) 830 if (SvTYPE (av) != SVt_PVAV || AvFILLp (av) != 1)
1359 PPCODE: 1361 PPCODE:
1360{ 1362{
1361 dREQ; 1363 dREQ;
1362 1364
1363 req->type = EIO_READDIR; 1365 req->type = EIO_READDIR;
1364 req->sv1 = newSVsv (pathname);
1365 req->ptr1 = SvPVbyte_nolen (req->sv1);
1366 req->int1 = flags | EIO_READDIR_DENTS | EIO_READDIR_CUSTOM1; 1366 req->int1 = flags | EIO_READDIR_DENTS | EIO_READDIR_CUSTOM1;
1367 1367
1368 if (flags & EIO_READDIR_DENTS) 1368 if (flags & EIO_READDIR_DENTS)
1369 req->int1 |= EIO_READDIR_CUSTOM2; 1369 req->int1 |= EIO_READDIR_CUSTOM2;
1370
1371 req_set_path1 (req, pathname);
1370 1372
1371 REQ_SEND; 1373 REQ_SEND;
1372} 1374}
1373 1375
1374void 1376void

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines