Changeset 31000 in vbox
- Timestamp:
- Jul 22, 2010 2:44:22 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
r30999 r31000 251 251 uint32_t cListSize = 32; 252 252 253 254 255 256 257 258 259 while ( (ut_user = getutent()) 253 /* Allocate a first array to hold 32 users max. */ 254 char **aUsers = (char**)RTMemAllocZ(cListSize * sizeof(char*)); 255 if (aUsers == NULL) 256 rc = VERR_NO_MEMORY; 257 258 /* Process all entries in the utmp file. */ 259 while ( (ut_user = getutent()) 260 260 && RT_SUCCESS(rc)) 261 261 { 262 263 264 265 266 267 268 269 270 262 VBoxServiceVerbose(1, "bar: %s\n", ut_user->ut_user); 263 264 if (cUtmpEntries > cListSize) 265 { 266 cListSize += 32; 267 aUsers = (char**)RTMemRealloc(aUsers, cListSize * sizeof(char*)); 268 AssertPtrBreakStmt(aUsers, rc = VERR_NO_MEMORY); 269 } 270 271 271 /* Make sure we don't add user names which are not 272 272 * part of type USER_PROCESS. */ 273 273 if (ut_user->ut_type == USER_PROCESS) 274 { 275 276 277 278 279 274 { 275 cUtmpEntries++; 276 277 bool fFound = false; 278 for (uint32_t u = 0; u < cUsersInList && !fFound; u++) 279 fFound = (strcmp((const char*)aUsers[u], ut_user->ut_user) == 0) ? true : false; 280 280 281 281 if (!fFound) 282 283 284 } 285 282 rc = RTStrAAppend(&aUsers[cUsersInList++], (const char*)ut_user->ut_user); 283 } 284 } 285 286 286 /* Build final user list. */ 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 RTMemFree(aUsers); 302 287 for (uint32_t u = 0; u < cUsersInList; u++) 288 { 289 if (u > 0) 290 { 291 rc = RTStrAAppend(&pszUserList, ","); 292 AssertRCBreakStmt(rc, RTStrFree(pszUserList)); 293 } 294 rc = RTStrAAppend(&pszUserList, (const char*)aUsers[u]); 295 AssertRCBreakStmt(rc, RTStrFree(pszUserList)); 296 } 297 298 /* Cleanup. */ 299 for (uint32_t u = 0; u < cUsersInList; u++) 300 RTStrFree(aUsers[u]); 301 RTMemFree(aUsers); 302 303 303 endutent(); /* Close utmp file. */ 304 304 #endif
Note:
See TracChangeset
for help on using the changeset viewer.