Changeset 20279 in vbox for trunk/src/VBox/HostServices/SharedFolders
- Timestamp:
- Jun 4, 2009 1:18:04 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 48158
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedFolders/vbsf.cpp
r20020 r20279 604 604 * @returns iprt status code 605 605 * @param fShflFlags shared folder create flags 606 * @param fMode file attibutes 606 607 * @retval pfOpen iprt create flags 607 608 */ 608 static int vbsfConvertFileOpenFlags(unsigned fShflFlags, unsigned *pfOpen)609 static int vbsfConvertFileOpenFlags(unsigned fShflFlags, RTFMODE fMode, unsigned *pfOpen) 609 610 { 610 611 unsigned fOpen = 0; 611 612 int rc = VINF_SUCCESS; 613 614 if ( (fMode & RTFS_DOS_MASK) != 0 615 && (fMode & RTFS_UNIX_MASK) == 0) 616 { 617 /* A DOS/Windows guest, make RTFS_UNIX_* from RTFS_DOS_*. 618 * @todo this is based on rtFsModeNormalize/rtFsModeFromDos. 619 * May be better to use RTFsModeNormalize here. 620 */ 621 fMode |= RTFS_UNIX_IRUSR | RTFS_UNIX_IRGRP | RTFS_UNIX_IROTH; 622 /* x for directories. */ 623 if (fMode & RTFS_DOS_DIRECTORY) 624 fMode |= RTFS_TYPE_DIRECTORY | RTFS_UNIX_IXUSR | RTFS_UNIX_IXGRP | RTFS_UNIX_IXOTH; 625 /* writable? */ 626 if (!(fMode & RTFS_DOS_READONLY)) 627 fMode |= RTFS_UNIX_IWUSR | RTFS_UNIX_IWGRP | RTFS_UNIX_IWOTH; 628 } 629 630 /* Set the requested mode. */ 631 fOpen |= (fMode & RTFS_UNIX_MASK) << RTFILE_O_CREATE_MODE_SHIFT; 612 632 613 633 switch (BIT_FLAG(fShflFlags, SHFL_CF_ACCESS_MASK_RW)) … … 650 670 { 651 671 fOpen |= RTFILE_O_ACCESS_ATTR_DEFAULT; 652 /** @todo for posix guests we should allow passing the mode. */653 fOpen |= 0666 << RTFILE_O_CREATE_MODE_SHIFT;654 672 Log(("FLAG: SHFL_CF_ACCESS_ATTR_NONE\n")); 655 673 break; … … 659 677 { 660 678 fOpen |= RTFILE_O_ACCESS_ATTR_READ; 661 /** @todo for posix guests we should allow passing the mode.662 * Additionally this esoteric case - new file with only read663 * access - should be tested with apps depending on this. */664 fOpen |= 0444 << RTFILE_O_CREATE_MODE_SHIFT;665 679 Log(("FLAG: SHFL_CF_ACCESS_ATTR_READ\n")); 666 680 break; … … 670 684 { 671 685 fOpen |= RTFILE_O_ACCESS_ATTR_WRITE; 672 /** @todo for posix guests we should allow passing the mode.673 * Additionally this esoteric case - new file with only write674 * access - should be tested with apps depending on this. */675 fOpen |= 0222 << RTFILE_O_CREATE_MODE_SHIFT;676 686 Log(("FLAG: SHFL_CF_ACCESS_ATTR_WRITE\n")); 677 687 break; … … 681 691 { 682 692 fOpen |= RTFILE_O_ACCESS_ATTR_READWRITE; 683 /** @todo for posix guests we should allow passing the mode. */684 fOpen |= 0666 << RTFILE_O_CREATE_MODE_SHIFT;685 693 Log(("FLAG: SHFL_CF_ACCESS_ATTR_READWRITE\n")); 686 694 break; … … 817 825 static int cErrors; 818 826 819 int rc = vbsfConvertFileOpenFlags(pParms->CreateFlags, &fOpen);827 int rc = vbsfConvertFileOpenFlags(pParms->CreateFlags, pParms->Info.Attr.fMode, &fOpen); 820 828 if (RT_SUCCESS(rc)) 821 829 {
Note:
See TracChangeset
for help on using the changeset viewer.