1 --- src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp.orig 2017-03-08 17:15:20 UTC 2 +++ src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp 3 @@ -71,8 +71,8 @@ 4 # include <net/if.h> 5 # include <pwd.h> /* getpwuid */ 6 # include <unistd.h> 7 -# if !defined(RT_OS_OS2) && !defined(RT_OS_FREEBSD) && !defined(RT_OS_HAIKU) 8 -# include <utmpx.h> /** @todo FreeBSD 9 should have this. */ 9 +# if !defined(RT_OS_OS2) && !defined(RT_OS_HAIKU) 10 +# include <utmpx.h> 11 # endif 12 # ifdef RT_OS_OS2 13 # include <net/if_dl.h> 14 @@ -531,7 +531,7 @@ static void vgsvcVMInfoWriteFixedPropert 15 } 16 17 18 -#if defined(VBOX_WITH_DBUS) && defined(RT_OS_LINUX) /* Not yet for Solaris/FreeBSB. */ 19 +#if defined(VBOX_WITH_DBUS) && (defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)) /* Not yet for Solaris. */ 20 /* 21 * Simple wrapper to work around compiler-specific va_list madness. 22 */ 23 @@ -562,12 +562,6 @@ static int vgsvcVMInfoWriteUsers(void) 24 rc = VERR_NOT_IMPLEMENTED; 25 # endif 26 27 -#elif defined(RT_OS_FREEBSD) 28 - /** @todo FreeBSD: Port logged on user info retrieval. 29 - * However, FreeBSD 9 supports utmpx, so we could use the code 30 - * block below (?). */ 31 - rc = VERR_NOT_IMPLEMENTED; 32 - 33 #elif defined(RT_OS_HAIKU) 34 /** @todo Haiku: Port logged on user info retrieval. */ 35 rc = VERR_NOT_IMPLEMENTED; 36 @@ -593,7 +587,7 @@ static int vgsvcVMInfoWriteUsers(void) 37 while ( (ut_user = getutxent()) 38 && RT_SUCCESS(rc)) 39 { 40 -# ifdef RT_OS_DARWIN /* No ut_user->ut_session on Darwin */ 41 +# if defined(RT_OS_DARWIN) || defined(RT_OS_FREEBSD) /* No ut_user->ut_session on Darwin/FreeBSD */ 42 VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32)\n", ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid); 43 # else 44 VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32, session: %RU32)\n", 45 @@ -628,7 +622,7 @@ static int vgsvcVMInfoWriteUsers(void) 46 } 47 48 # ifdef VBOX_WITH_DBUS 49 -# if defined(RT_OS_LINUX) /* Not yet for Solaris/FreeBSB. */ 50 +# if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) /* Not yet for Solaris. */ 51 DBusError dbErr; 52 DBusConnection *pConnection = NULL; 53 int rc2 = RTDBusLoadLib(); 54 @@ -837,7 +831,7 @@ static int vgsvcVMInfoWriteUsers(void) 55 if ( fHaveLibDbus 56 && dbus_error_is_set(&dbErr)) 57 dbus_error_free(&dbErr); 58 -# endif /* RT_OS_LINUX */ 59 +# endif /* RT_OS_LINUX || RT_OS_FREEBSD */ 60 # endif /* VBOX_WITH_DBUS */ 61 62 /** @todo Fedora/others: Handle systemd-loginctl. */ 63 @@ -874,7 +868,7 @@ static int vgsvcVMInfoWriteUsers(void) 64 RTMemFree(papszUsers); 65 66 endutxent(); /* Close utmpx file. */ 67 -#endif /* !RT_OS_WINDOWS && !RT_OS_FREEBSD && !RT_OS_HAIKU && !RT_OS_OS2 */ 68 +#endif /* !RT_OS_WINDOWS && !RT_OS_HAIKU && !RT_OS_OS2 */ 69 70 Assert(RT_FAILURE(rc) || cUsersInList == 0 || (pszUserList && *pszUserList)); 71 72