Changeset 34002 in vbox for trunk/src/VBox/Runtime/r3
- Timestamp:
- Nov 11, 2010 5:16:37 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 67667
- Location:
- trunk/src/VBox/Runtime/r3
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r3/fs.cpp
r33540 r34002 37 37 # define DEV_BSIZE S_BLKSIZE /** @todo bird: add DEV_BSIZE to sys/param.h on OS/2. */ 38 38 # endif 39 # include <grp.h> 40 # include <pwd.h> 39 41 #endif 40 42 … … 192 194 } 193 195 194 195 196 #ifndef RT_OS_WINDOWS 197 196 198 /** 197 199 * Internal worker function which setups RTFSOBJINFO based on a UNIX stat struct. … … 300 302 pObjInfo->Attr.u.Unix.Device = pStat->st_rdev; 301 303 } 304 305 306 /** 307 * Set user-owner additional attributes. 308 * 309 * @param pObjInfo The object info to fill add attrs for. 310 * @param uid The user id. 311 */ 312 void rtFsObjInfoAttrSetUnixOwner(PRTFSOBJINFO pObjInfo, RTUID uid) 313 { 314 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_UNIX_OWNER; 315 pObjInfo->Attr.u.UnixOwner.uid = uid; 316 pObjInfo->Attr.u.UnixOwner.szName[0] = '\0'; 317 318 char achBuf[_4K]; 319 struct passwd Pwd; 320 struct passwd *pPwd; 321 int rc = getpwuid_r(uid, &Pwd, achBuf, sizeof(achBuf), &pPwd); 322 if (!rc && pPwd) 323 RTStrCopy(pObjInfo->Attr.u.UnixOwner.szName, sizeof(pObjInfo->Attr.u.UnixOwner.szName), pPwd->pw_name); 324 } 325 326 327 /** 328 * Set user-group additional attributes. 329 * 330 * @param pObjInfo The object info to fill add attrs for. 331 * @param gid The group id. 332 */ 333 void rtFsObjInfoAttrSetUnixGroup(PRTFSOBJINFO pObjInfo, RTUID gid) 334 { 335 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_UNIX_GROUP; 336 pObjInfo->Attr.u.UnixGroup.gid = gid; 337 pObjInfo->Attr.u.UnixGroup.szName[0] = '\0'; 338 339 char achBuf[_4K]; 340 struct group Grp; 341 struct group *pGrp; 342 343 int rc = getgrgid_r(gid, &Grp, achBuf, sizeof(achBuf), &pGrp); 344 if (!rc && pGrp) 345 RTStrCopy(pObjInfo->Attr.u.UnixGroup.szName, sizeof(pObjInfo->Attr.u.UnixGroup.szName), pGrp->gr_name); 346 } 347 302 348 #endif /* !RT_OS_WINDOWS */ 303 349 -
trunk/src/VBox/Runtime/r3/posix/fileio-posix.cpp
r33103 r34002 658 658 switch (enmAdditionalAttribs) 659 659 { 660 case RTFSOBJATTRADD_NOTHING: 661 case RTFSOBJATTRADD_UNIX: 662 /* done */ 663 break; 664 665 case RTFSOBJATTRADD_UNIX_OWNER: 666 rtFsObjInfoAttrSetUnixOwner(pObjInfo, Stat.st_uid); 667 break; 668 669 case RTFSOBJATTRADD_UNIX_GROUP: 670 rtFsObjInfoAttrSetUnixGroup(pObjInfo, Stat.st_gid); 671 break; 672 660 673 case RTFSOBJATTRADD_EASIZE: 661 674 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 662 675 pObjInfo->Attr.u.EASize.cb = 0; 663 break;664 665 case RTFSOBJATTRADD_NOTHING:666 case RTFSOBJATTRADD_UNIX:667 /* done */668 676 break; 669 677 -
trunk/src/VBox/Runtime/r3/posix/path-posix.cpp
r33602 r34002 39 39 #include <sys/types.h> 40 40 #include <pwd.h> 41 #include <grp.h> 41 42 42 43 #include <iprt/path.h> … … 340 341 switch (enmAdditionalAttribs) 341 342 { 343 case RTFSOBJATTRADD_NOTHING: 344 case RTFSOBJATTRADD_UNIX: 345 Assert(pObjInfo->Attr.enmAdditional == RTFSOBJATTRADD_UNIX); 346 break; 347 348 case RTFSOBJATTRADD_UNIX_OWNER: 349 rtFsObjInfoAttrSetUnixOwner(pObjInfo, Stat.st_uid); 350 break; 351 352 case RTFSOBJATTRADD_UNIX_GROUP: 353 rtFsObjInfoAttrSetUnixGroup(pObjInfo, Stat.st_gid); 354 break; 355 342 356 case RTFSOBJATTRADD_EASIZE: 343 357 /** @todo Use SGI extended attribute interface to query EA info. */ 344 358 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 345 359 pObjInfo->Attr.u.EASize.cb = 0; 346 break;347 348 case RTFSOBJATTRADD_NOTHING:349 case RTFSOBJATTRADD_UNIX:350 Assert(pObjInfo->Attr.enmAdditional == RTFSOBJATTRADD_UNIX);351 360 break; 352 361 -
trunk/src/VBox/Runtime/r3/win/dir-win.cpp
r28918 r34002 437 437 break; 438 438 439 case RTFSOBJATTRADD_UNIX_OWNER: 440 pDirEntry->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_OWNER; 441 pDirEntry->Info.Attr.u.UnixOwner.uid = ~0U; 442 pDirEntry->Info.Attr.u.UnixOwner.szName[0] = '\0'; /** @todo return something sensible here. */ 443 break; 444 445 case RTFSOBJATTRADD_UNIX_GROUP: 446 pDirEntry->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_GROUP; 447 pDirEntry->Info.Attr.u.UnixGroup.gid = ~0U; 448 pDirEntry->Info.Attr.u.UnixGroup.szName[0] = '\0'; 449 break; 450 439 451 default: 440 452 AssertMsgFailed(("Impossible!\n")); -
trunk/src/VBox/Runtime/r3/win/fileio-win.cpp
r33540 r34002 680 680 switch (enmAdditionalAttribs) 681 681 { 682 case RTFSOBJATTRADD_EASIZE: 683 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 684 pObjInfo->Attr.u.EASize.cb = 0; 682 case RTFSOBJATTRADD_NOTHING: 683 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; 685 684 break; 686 685 … … 697 696 break; 698 697 699 case RTFSOBJATTRADD_NOTHING: 700 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; 698 case RTFSOBJATTRADD_UNIX_OWNER: 699 pObjInfo->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_OWNER; 700 pObjInfo->Info.Attr.u.UnixOwner.uid = ~0U; 701 pObjInfo->Info.Attr.u.UnixOwner.szName[0] = '\0'; /** @todo return something sensible here. */ 702 break; 703 704 case RTFSOBJATTRADD_UNIX_GROUP: 705 pObjInfo->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_GROUP; 706 pObjInfo->Info.Attr.u.UnixGroup.gid = ~0U; 707 pObjInfo->Info.Attr.u.UnixGroup.szName[0] = '\0'; 708 break; 709 710 case RTFSOBJATTRADD_EASIZE: 711 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 712 pObjInfo->Attr.u.EASize.cb = 0; 701 713 break; 702 714 -
trunk/src/VBox/Runtime/r3/win/path-win.cpp
r33439 r34002 300 300 switch (enmAdditionalAttribs) 301 301 { 302 case RTFSOBJATTRADD_EASIZE: 303 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 304 pObjInfo->Attr.u.EASize.cb = 0; 302 case RTFSOBJATTRADD_NOTHING: 303 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; 305 304 break; 306 305 … … 317 316 break; 318 317 319 case RTFSOBJATTRADD_NOTHING: 320 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; 318 case RTFSOBJATTRADD_UNIX_OWNER: 319 pObjInfo->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_OWNER; 320 pObjInfo->Info.Attr.u.UnixOwner.uid = ~0U; 321 pObjInfo->Info.Attr.u.UnixOwner.szName[0] = '\0'; /** @todo return something sensible here. */ 322 break; 323 324 case RTFSOBJATTRADD_UNIX_GROUP: 325 pObjInfo->Info.Attr.enmAdditional = RTFSOBJATTRADD_UNIX_GROUP; 326 pObjInfo->Info.Attr.u.UnixGroup.gid = ~0U; 327 pObjInfo->Info.Attr.u.UnixGroup.szName[0] = '\0'; 328 break; 329 330 case RTFSOBJATTRADD_EASIZE: 331 pObjInfo->Attr.enmAdditional = RTFSOBJATTRADD_EASIZE; 332 pObjInfo->Attr.u.EASize.cb = 0; 321 333 break; 322 334
Note:
See TracChangeset
for help on using the changeset viewer.