Changeset 33948 in vbox for trunk/src/VBox/Runtime/common/vfs
- Timestamp:
- Nov 10, 2010 7:36:49 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 67609
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp
r33945 r33948 440 440 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, UINT32_MAX); 441 441 return rtVfsObjRelease(pThis); 442 } 443 444 445 RTDECL(RTVFS) RTVfsObjToVfs(RTVFSOBJ hVfsObj) 446 { 447 RTVFSOBJINTERNAL *pThis = hVfsObj; 448 if (pThis != NIL_RTVFSOBJ) 449 { 450 AssertPtrReturn(pThis, NIL_RTVFS); 451 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFS); 452 453 if (pThis->pOps->enmType == RTVFSOBJTYPE_VFS) 454 { 455 rtVfsObjRetainVoid(pThis); 456 return RT_FROM_MEMBER(pThis, RTVFSINTERNAL, Base); 457 } 458 } 459 return NIL_RTVFS; 460 } 461 462 463 RTDECL(RTVFSFSSTREAM) RTVfsObjToFsStream(RTVFSOBJ hVfsObj) 464 { 465 RTVFSOBJINTERNAL *pThis = hVfsObj; 466 if (pThis != NIL_RTVFSOBJ) 467 { 468 AssertPtrReturn(pThis, NIL_RTVFSFSSTREAM); 469 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSFSSTREAM); 470 471 if (pThis->pOps->enmType == RTVFSOBJTYPE_FS_STREAM) 472 { 473 rtVfsObjRetainVoid(pThis); 474 return RT_FROM_MEMBER(pThis, RTVFSFSSTREAMINTERNAL, Base); 475 } 476 } 477 return NIL_RTVFSFSSTREAM; 478 } 479 480 481 RTDECL(RTVFSDIR) RTVfsObjToDir(RTVFSOBJ hVfsObj) 482 { 483 RTVFSOBJINTERNAL *pThis = hVfsObj; 484 if (pThis != NIL_RTVFSOBJ) 485 { 486 AssertPtrReturn(pThis, NIL_RTVFSDIR); 487 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSDIR); 488 489 if (pThis->pOps->enmType == RTVFSOBJTYPE_VFS) 490 { 491 rtVfsObjRetainVoid(pThis); 492 return RT_FROM_MEMBER(pThis, RTVFSDIRINTERNAL, Base); 493 } 494 } 495 return NIL_RTVFSDIR; 496 } 497 498 499 RTDECL(RTVFSIOSTREAM) RTVfsObjToIoStream(RTVFSOBJ hVfsObj) 500 { 501 RTVFSOBJINTERNAL *pThis = hVfsObj; 502 if (pThis != NIL_RTVFSOBJ) 503 { 504 AssertPtrReturn(pThis, NIL_RTVFSIOSTREAM); 505 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSIOSTREAM); 506 507 if (pThis->pOps->enmType == RTVFSOBJTYPE_VFS) 508 { 509 rtVfsObjRetainVoid(pThis); 510 return RT_FROM_MEMBER(pThis, RTVFSIOSTREAMINTERNAL, Base); 511 } 512 } 513 return NIL_RTVFSIOSTREAM; 514 } 515 516 517 RTDECL(RTVFSFILE) RTVfsObjToFile(RTVFSOBJ hVfsObj) 518 { 519 RTVFSOBJINTERNAL *pThis = hVfsObj; 520 if (pThis != NIL_RTVFSOBJ) 521 { 522 AssertPtrReturn(pThis, NIL_RTVFSFILE); 523 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSFILE); 524 525 if (pThis->pOps->enmType == RTVFSOBJTYPE_VFS) 526 { 527 rtVfsObjRetainVoid(pThis); 528 return RT_FROM_MEMBER(pThis, RTVFSFILEINTERNAL, Stream.Base); 529 } 530 } 531 return NIL_RTVFSFILE; 532 } 533 534 535 RTDECL(RTVFSSYMLINK) RTVfsObjToSymlink(RTVFSOBJ hVfsObj) 536 { 537 RTVFSOBJINTERNAL *pThis = hVfsObj; 538 if (pThis != NIL_RTVFSOBJ) 539 { 540 AssertPtrReturn(pThis, NIL_RTVFSSYMLINK); 541 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSSYMLINK); 542 543 if (pThis->pOps->enmType == RTVFSOBJTYPE_VFS) 544 { 545 rtVfsObjRetainVoid(pThis); 546 return RT_FROM_MEMBER(pThis, RTVFSSYMLINKINTERNAL, Base); 547 } 548 } 549 return NIL_RTVFSSYMLINK; 550 } 551 552 553 RTDECL(RTVFSOBJ) RTVfsObjFromVfs(RTVFS hVfs) 554 { 555 if (hVfs != NIL_RTVFS) 556 { 557 RTVFSOBJINTERNAL *pThis = &hVfs->Base; 558 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 559 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 560 561 rtVfsObjRetainVoid(pThis); 562 return pThis; 563 } 564 return NIL_RTVFSOBJ; 565 } 566 567 568 RTDECL(RTVFSOBJ) RTVfsObjFromFsStream(RTVFSFSSTREAM hVfsFss) 569 { 570 if (hVfsFss != NIL_RTVFSFSSTREAM) 571 { 572 RTVFSOBJINTERNAL *pThis = &hVfsFss->Base; 573 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 574 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 575 576 rtVfsObjRetainVoid(pThis); 577 return pThis; 578 } 579 return NIL_RTVFSOBJ; 580 } 581 582 583 RTDECL(RTVFSOBJ) RTVfsObjFromDir(RTVFSDIR hVfsDir) 584 { 585 if (hVfsDir != NIL_RTVFSDIR) 586 { 587 RTVFSOBJINTERNAL *pThis = &hVfsDir->Base; 588 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 589 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 590 591 rtVfsObjRetainVoid(pThis); 592 return pThis; 593 } 594 return NIL_RTVFSOBJ; 595 } 596 597 598 RTDECL(RTVFSOBJ) RTVfsObjFromIoStream(RTVFSIOSTREAM hVfsIos) 599 { 600 if (hVfsIos != NIL_RTVFSIOSTREAM) 601 { 602 RTVFSOBJINTERNAL *pThis = &hVfsIos->Base; 603 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 604 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 605 606 rtVfsObjRetainVoid(pThis); 607 return pThis; 608 } 609 return NIL_RTVFSOBJ; 610 } 611 612 613 RTDECL(RTVFSOBJ) RTVfsObjFromFile(RTVFSFILE hVfsFile) 614 { 615 if (hVfsFile != NIL_RTVFSFILE) 616 { 617 RTVFSOBJINTERNAL *pThis = &hVfsFile->Stream.Base; 618 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 619 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 620 621 rtVfsObjRetainVoid(pThis); 622 return pThis; 623 } 624 return NIL_RTVFSOBJ; 625 } 626 627 628 RTDECL(RTVFSOBJ) RTVfsObjFromSymlink(RTVFSSYMLINK hVfsSym) 629 { 630 if (hVfsSym != NIL_RTVFSSYMLINK) 631 { 632 RTVFSOBJINTERNAL *pThis = &hVfsSym->Base; 633 AssertPtrReturn(pThis, NIL_RTVFSOBJ); 634 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, NIL_RTVFSOBJ); 635 636 rtVfsObjRetainVoid(pThis); 637 return pThis; 638 } 639 return NIL_RTVFSOBJ; 640 } 641 642 643 644 RTDECL(int) RTVfsObjQueryInfo(RTVFSOBJ hVfsObj, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttr) 645 { 646 RTVFSOBJINTERNAL *pThis = hVfsObj; 647 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 648 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, VERR_INVALID_HANDLE); 649 650 rtVfsObjReadLock(pThis); 651 int rc = pThis->pOps->pfnQueryInfo(pThis->pvThis, pObjInfo, enmAddAttr); 652 rtVfsObjReadUnlock(pThis); 653 return rc; 442 654 } 443 655 … … 861 1073 862 1074 1075 1076 1077 /* 1078 * 1079 * F I L E S Y S T E M S T R E A M 1080 * F I L E S Y S T E M S T R E A M 1081 * F I L E S Y S T E M S T R E A M 1082 * 1083 */ 1084 1085 1086 RTDECL(int) RTVfsNewIoStream(PCRTVFSFSSTREAMOPS pFsStreamOps, size_t cbInstance, RTVFS hVfs, RTSEMRW hSemRW, 1087 PRTVFSFSSTREAM phVfsFss, void **ppvInstance) 1088 { 1089 return VERR_NOT_IMPLEMENTED; 1090 } 1091 1092 1093 RTDECL(uint32_t) RTVfsFsStrmRetain(RTVFSFSSTREAM hVfsFss) 1094 { 1095 RTVFSFSSTREAMINTERNAL *pThis = hVfsFss; 1096 AssertPtrReturn(pThis, UINT32_MAX); 1097 AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, UINT32_MAX); 1098 return rtVfsObjRetain(&pThis->Base); 1099 } 1100 1101 1102 RTDECL(uint32_t) RTVfsFsStrmRelease(RTVFSFSSTREAM hVfsFss) 1103 { 1104 RTVFSFSSTREAMINTERNAL *pThis = hVfsFss; 1105 AssertPtrReturn(pThis, UINT32_MAX); 1106 AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, UINT32_MAX); 1107 return rtVfsObjRelease(&pThis->Base); 1108 } 1109 1110 1111 RTDECL(int) RTVfsFsStrmQueryInfo(RTVFSFSSTREAM hVfsFss, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttr) 1112 { 1113 RTVFSFSSTREAMINTERNAL *pThis = hVfsFss; 1114 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 1115 AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, VERR_INVALID_HANDLE); 1116 return RTVfsObjQueryInfo(&pThis->Base, pObjInfo, enmAddAttr); 1117 } 1118 1119 1120 RTDECL(int) RTVfsFsStrmNext(RTVFSFSSTREAM hVfsFss, char **ppszName, RTVFSOBJTYPE *penmType, PRTVFSOBJ phVfsObj) 1121 { 1122 RTVFSFSSTREAMINTERNAL *pThis = hVfsFss; 1123 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 1124 AssertReturn(pThis->uMagic == RTVFSDIR_MAGIC, VERR_INVALID_HANDLE); 1125 AssertPtrNullReturn(ppszName, VERR_INVALID_POINTER); 1126 if (ppszName) 1127 *ppszName = NULL; 1128 AssertPtrNullReturn(penmType, VERR_INVALID_POINTER); 1129 if (penmType) 1130 *penmType = RTVFSOBJTYPE_INVALID; 1131 AssertPtrNullReturn(penmType, VERR_INVALID_POINTER); 1132 if (phVfsObj) 1133 *phVfsObj = NIL_RTVFSOBJ; 1134 1135 return pThis->pOps->pfnNext(pThis->Base.pvThis, ppszName, penmType, phVfsObj); 1136 } 1137 1138 1139 1140 863 1141 /* 864 1142 * … … 1026 1304 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 1027 1305 AssertReturn(pThis->uMagic == RTVFSIOSTREAM_MAGIC, VERR_INVALID_HANDLE); 1028 1029 rtVfsObjReadLock(&pThis->Base); 1030 int rc = pThis->pOps->Obj.pfnQueryInfo(pThis->Base.pvThis, pObjInfo, enmAddAttr); 1031 rtVfsObjReadUnlock(&pThis->Base); 1032 return rc; 1306 return RTVfsObjQueryInfo(&pThis->Base, pObjInfo, enmAddAttr); 1033 1307 } 1034 1308
Note:
See TracChangeset
for help on using the changeset viewer.