Changeset 39295 in vbox
- Timestamp:
- Nov 14, 2011 12:43:15 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 74846
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.c
r39278 r39295 385 385 386 386 /* 387 * get information about a file (or directory)387 * file/directory information conversions. 388 388 */ 389 static void 390 sfprov_fmode_from_mode(RTFMODE *fMode, mode_t mode) 391 { 392 RTFMODE m = 0; 393 394 #define mode_set(r) ((mode & (S_##r)) ? RTFS_UNIX_##r : 0) 395 m = mode_set (ISUID); 396 m |= mode_set (ISGID); 397 m |= (mode & S_ISVTX) ? RTFS_UNIX_ISTXT : 0; 398 m |= mode_set (IRUSR); 399 m |= mode_set (IWUSR); 400 m |= mode_set (IXUSR); 401 m |= mode_set (IRGRP); 402 m |= mode_set (IWGRP); 403 m |= mode_set (IXGRP); 404 m |= mode_set (IROTH); 405 m |= mode_set (IWOTH); 406 m |= mode_set (IXOTH); 407 408 if (S_ISDIR(mode)) 409 m |= RTFS_TYPE_DIRECTORY; 410 else if (S_ISREG(mode)) 411 m |= RTFS_TYPE_FILE; 412 else if (S_ISFIFO(mode)) 413 m |= RTFS_TYPE_FIFO; 414 else if (S_ISCHR(mode)) 415 m |= RTFS_TYPE_DEV_CHAR; 416 else if (S_ISBLK(mode)) 417 m |= RTFS_TYPE_DEV_BLOCK; 418 else if (S_ISLNK(mode)) 419 m |= RTFS_TYPE_SYMLINK; 420 else if (S_ISSOCK(mode)) 421 m |= RTFS_TYPE_SOCKET; 422 else 423 m |= RTFS_TYPE_FILE; 424 425 *fMode = m; 426 } 427 389 428 static void 390 429 sfprov_mode_from_fmode(mode_t *mode, RTFMODE fMode) … … 579 618 580 619 RT_ZERO(info); 581 if (mask & AT_MODE) { 582 #define mode_set(r) ((mode & (S_##r)) ? RTFS_UNIX_##r : 0) 583 584 info.Attr.fMode = mode_set (ISUID); 585 info.Attr.fMode |= mode_set (ISGID); 586 info.Attr.fMode |= (mode & S_ISVTX) ? RTFS_UNIX_ISTXT : 0; 587 info.Attr.fMode |= mode_set (IRUSR); 588 info.Attr.fMode |= mode_set (IWUSR); 589 info.Attr.fMode |= mode_set (IXUSR); 590 info.Attr.fMode |= mode_set (IRGRP); 591 info.Attr.fMode |= mode_set (IWGRP); 592 info.Attr.fMode |= mode_set (IXGRP); 593 info.Attr.fMode |= mode_set (IROTH); 594 info.Attr.fMode |= mode_set (IWOTH); 595 info.Attr.fMode |= mode_set (IXOTH); 596 597 if (S_ISDIR(mode)) 598 info.Attr.fMode |= RTFS_TYPE_DIRECTORY; 599 else if (S_ISREG(mode)) 600 info.Attr.fMode |= RTFS_TYPE_FILE; 601 else if (S_ISFIFO(mode)) 602 info.Attr.fMode |= RTFS_TYPE_FIFO; 603 else if (S_ISCHR(mode)) 604 info.Attr.fMode |= RTFS_TYPE_DEV_CHAR; 605 else if (S_ISBLK(mode)) 606 info.Attr.fMode |= RTFS_TYPE_DEV_BLOCK; 607 else if (S_ISLNK(mode)) 608 info.Attr.fMode |= RTFS_TYPE_SYMLINK; 609 else if (S_ISSOCK(mode)) 610 info.Attr.fMode |= RTFS_TYPE_SOCKET; 611 else 612 info.Attr.fMode |= RTFS_TYPE_FILE; 613 } 614 620 if (mask & AT_MODE) 621 sfprov_fmode_from_mode(&info.Attr.fMode, mode); 615 622 if (mask & AT_ATIME) 616 623 sfprov_timespec_from_ftime(&info.AccessTime, atime);
Note:
See TracChangeset
for help on using the changeset viewer.