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