Index: /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 75926)
@@ -482,8 +482,8 @@
  * @param pulFrameHeight may be updated with a desired frame height
  * @param pulBitRate may be updated with a desired bit rate
- * @param ppszFileName may be updated with a desired file name
+ * @param ppszFilename may be updated with a desired file name
  */
 static void parse_environ(uint32_t *pulFrameWidth, uint32_t *pulFrameHeight,
-                          uint32_t *pulBitRate, const char **ppszFileName)
+                          uint32_t *pulBitRate, const char **ppszFilename)
 {
     const char *pszEnvTemp;
@@ -522,5 +522,5 @@
     }
     if ((pszEnvTemp = RTEnvGet("VBOX_RECORDFILE")) != 0)
-        *ppszFileName = pszEnvTemp;
+        *ppszFilename = pszEnvTemp;
 }
 #endif /* VBOX_WITH_RECORDING defined */
@@ -631,6 +631,6 @@
     uint32_t ulRecordVideoHeight = 600;
     uint32_t ulRecordVideoRate = 300000;
-    char szRecordFileName[RTPATH_MAX];
-    const char *pszRecordFileNameTemplate = "VBox-%d.webm"; /* .webm container by default. */
+    char szRecordFilename[RTPATH_MAX];
+    const char *pszRecordFilenameTemplate = "VBox-%d.webm"; /* .webm container by default. */
 #endif /* VBOX_WITH_RECORDING */
 #ifdef RT_OS_WINDOWS
@@ -645,5 +645,5 @@
 #ifdef VBOX_WITH_RECORDING
     /* Parse the environment */
-    parse_environ(&ulRecordVideoWidth, &ulRecordVideoHeight, &ulRecordVideoRate, &pszRecordFileNameTemplate);
+    parse_environ(&ulRecordVideoWidth, &ulRecordVideoHeight, &ulRecordVideoRate, &pszRecordFilenameTemplate);
 #endif
 
@@ -791,5 +791,5 @@
                 break;
             case 'f':
-                pszRecordFileNameTemplate = ValueUnion.psz;
+                pszRecordFilenameTemplate = ValueUnion.psz;
                 break;
 #endif /* VBOX_WITH_RECORDING defined */
@@ -834,5 +834,5 @@
     }
     /* Make sure we only have %d or %u (or none) in the file name specified */
-    char *pcPercent = (char*)strchr(pszRecordFileNameTemplate, '%');
+    char *pcPercent = (char*)strchr(pszRecordFilenameTemplate, '%');
     if (pcPercent != 0 && *(pcPercent + 1) != 'd' && *(pcPercent + 1) != 'u')
     {
@@ -846,5 +846,5 @@
         return 1;
     }
-    RTStrPrintf(&szRecordFileName[0], RTPATH_MAX, pszRecordFileNameTemplate, RTProcSelf());
+    RTStrPrintf(&szRecordFilename[0], RTPATH_MAX, pszRecordFilenameTemplate, RTProcSelf());
 #endif /* defined VBOX_WITH_RECORDING */
 
@@ -972,5 +972,5 @@
             {
                 CHECK_ERROR_BREAK(saRecordScreenScreens[i], COMSETTER(Enabled)(TRUE));
-                CHECK_ERROR_BREAK(saRecordScreenScreens[i], COMSETTER(FileName)(Bstr(szRecordFileName).raw()));
+                CHECK_ERROR_BREAK(saRecordScreenScreens[i], COMSETTER(Filename)(Bstr(szRecordFilename).raw()));
                 CHECK_ERROR_BREAK(saRecordScreenScreens[i], COMSETTER(VideoWidth)(ulRecordVideoWidth));
                 CHECK_ERROR_BREAK(saRecordScreenScreens[i], COMSETTER(VideoHeight)(ulRecordVideoHeight));
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 75926)
@@ -1943,5 +1943,5 @@
 
                 for (size_t i = 0; i < saRecordingScreenScreens.size(); ++i)
-                    CHECK_ERROR_BREAK(saRecordingScreenScreens[i], COMSETTER(FileName)(Bstr(a->argv[3]).raw()));
+                    CHECK_ERROR_BREAK(saRecordingScreenScreens[i], COMSETTER(Filename)(Bstr(a->argv[3]).raw()));
             }
             else if (   !strcmp(a->argv[2], "videores")
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp	(revision 75926)
@@ -192,6 +192,6 @@
 typedef struct DESTFILEENTRY
 {
-    DESTFILEENTRY(Utf8Str strFileName) : mFileName(strFileName) {}
-    Utf8Str mFileName;
+    DESTFILEENTRY(Utf8Str strFilename) : mFilename(strFilename) {}
+    Utf8Str mFilename;
 } DESTFILEENTRY, *PDESTFILEENTRY;
 /*
@@ -571,4 +571,27 @@
 }
 
+/**
+ * Translates a file system objec type to a string.
+ */
+const char *gctlFsObjTypeToName(FsObjType_T enmType)
+{
+    switch (enmType)
+    {
+        case FsObjType_Unknown:     return "unknown";
+        case FsObjType_Fifo:        return "fifo";
+        case FsObjType_DevChar:     return "char-device";
+        case FsObjType_Directory:   return "directory";
+        case FsObjType_DevBlock:    return "block-device";
+        case FsObjType_File:        return "file";
+        case FsObjType_Symlink:     return "symlink";
+        case FsObjType_Socket:      return "socket";
+        case FsObjType_WhiteOut:    return "white-out";
+#ifdef VBOX_WITH_XPCOM_CPP_ENUM_HACK
+        case FsObjType_32BitHack: break;
+#endif
+    }
+    return "unknown";
+}
+
 static int gctlPrintError(com::ErrorInfo &errorInfo)
 {
@@ -2519,34 +2542,73 @@
         if (FAILED(hrc))
         {
-            /* If there's at least one element which does not exist on the guest,
-             * drop out with exitcode 1. */
+            /** @todo r=bird: There might be other reasons why we end up here than
+             * non-existing "element" (object or file, please, nobody calls it elements). */
             if (pCtx->cVerbose)
-                RTPrintf("Cannot stat for element \"%s\": No such element\n", ValueUnion.psz);
+                RTPrintf("Failed to stat '%s': No such file\n", ValueUnion.psz);
             rcExit = RTEXITCODE_FAILURE;
         }
         else
         {
-            FsObjType_T objType;
-            pFsObjInfo->COMGETTER(Type)(&objType); /** @todo What about error checking? */
-            switch (objType)
-            {
-                case FsObjType_File:
-                    RTPrintf("Element \"%s\" found: Is a file\n", ValueUnion.psz);
-                    break;
-
-                case FsObjType_Directory:
-                    RTPrintf("Element \"%s\" found: Is a directory\n", ValueUnion.psz);
-                    break;
-
-                case FsObjType_Symlink:
-                    RTPrintf("Element \"%s\" found: Is a symlink\n", ValueUnion.psz);
-                    break;
-
-                default:
-                    RTPrintf("Element \"%s\" found, type unknown (%ld)\n", ValueUnion.psz, objType);
-                    break;
-            }
-
-            /** @todo Show more information about this element. */
+            RTPrintf("  File: '%s'\n", ValueUnion.psz); /** @todo escape this name. */
+
+            FsObjType_T enmType = FsObjType_Unknown;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(Type)(&enmType));
+            LONG64      cbObject = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(ObjectSize)(&cbObject));
+            LONG64      cbAllocated = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(AllocatedSize)(&cbAllocated));
+            LONG        uid = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(UID)(&uid));
+            LONG        gid = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(GID)(&gid));
+            Bstr        bstrUsername;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(UserName)(bstrUsername.asOutParam()));
+            Bstr        bstrGroupName;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(GroupName)(bstrGroupName.asOutParam()));
+            Bstr        bstrAttribs;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(FileAttributes)(bstrAttribs.asOutParam()));
+            LONG64      idNode = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(NodeId)(&idNode));
+            ULONG       uDevNode = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(NodeIdDevice)(&uDevNode));
+            ULONG       uDeviceNo = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(DeviceNumber)(&uDeviceNo));
+            ULONG       cHardLinks = 1;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(HardLinks)(&cHardLinks));
+            LONG64      nsBirthTime = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(BirthTime)(&nsBirthTime));
+            LONG64      nsChangeTime = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(ChangeTime)(&nsChangeTime));
+            LONG64      nsModificationTime = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(ModificationTime)(&nsModificationTime));
+            LONG64      nsAccessTime = 0;
+            CHECK_ERROR2I(pFsObjInfo, COMGETTER(AccessTime)(&nsAccessTime));
+
+            RTPrintf("  Size: %-17RU64 Alloc: %-19RU64 Type: %s\n", cbObject, cbAllocated, gctlFsObjTypeToName(enmType));
+            RTPrintf("Device: %#-17RX32 INode: %-18RU64 Links: %u\n", uDevNode, idNode, cHardLinks);
+
+            Utf8Str strAttrib(bstrAttribs);
+            char *pszMode    = strAttrib.mutableRaw();
+            char *pszAttribs = strchr(pszMode, ' ');
+            if (pszAttribs)
+                do *pszAttribs++ = '\0';
+                while (*pszAttribs == ' ');
+            else
+                pszAttribs = "";
+            if (uDeviceNo != 0)
+                RTPrintf("  Mode: %-16s Attrib: %-17s Dev ID: %#RX32\n", pszMode, pszAttribs, uDeviceNo);
+            else
+                RTPrintf("  Mode: %-16s Attrib: %s\n", pszMode, pszAttribs);
+
+            RTPrintf(" Owner: %4d/%-12ls Group: %4d/%ls\n", uid, bstrUsername.raw(),  gid, bstrGroupName.raw());
+
+            RTTIMESPEC  TimeSpec;
+            char        szTmp[RTTIME_STR_LEN];
+            RTPrintf(" Birth: %s\n", RTTimeSpecToString(RTTimeSpecSetNano(&TimeSpec, nsBirthTime), szTmp, sizeof(szTmp)));
+            RTPrintf("Change: %s\n", RTTimeSpecToString(RTTimeSpecSetNano(&TimeSpec, nsChangeTime), szTmp, sizeof(szTmp)));
+            RTPrintf("Modify: %s\n", RTTimeSpecToString(RTTimeSpecSetNano(&TimeSpec, nsModificationTime), szTmp, sizeof(szTmp)));
+            RTPrintf("Access: %s\n", RTTimeSpecToString(RTTimeSpecSetNano(&TimeSpec, nsAccessTime), szTmp, sizeof(szTmp)));
+
+            /* Skiping: Generation ID - only the ISO9660 VFS sets this.  FreeBSD user flags. */
         }
 
@@ -2822,5 +2884,5 @@
                                     CHECK_ERROR_BREAK(pCurFile, COMGETTER(Id)(&idFile));
                                     Bstr strName;
-                                    CHECK_ERROR_BREAK(pCurFile, COMGETTER(FileName)(strName.asOutParam()));
+                                    CHECK_ERROR_BREAK(pCurFile, COMGETTER(Filename)(strName.asOutParam()));
                                     FileStatus_T fileStatus;
                                     CHECK_ERROR_BREAK(pCurFile, COMGETTER(Status)(&fileStatus));
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrlListener.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrlListener.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrlListener.cpp	(revision 75926)
@@ -96,5 +96,5 @@
                 CHECK_ERROR_BREAK(pEvent, COMGETTER(Status)(&fileSts));
                 Bstr strPath;
-                CHECK_ERROR_BREAK(pProcess, COMGETTER(FileName)(strPath.asOutParam()));
+                CHECK_ERROR_BREAK(pProcess, COMGETTER(Filename)(strPath.asOutParam()));
                 ULONG uID;
                 CHECK_ERROR_BREAK(pProcess, COMGETTER(Id)(&uID));
@@ -248,5 +248,5 @@
                 CHECK_ERROR_BREAK(pEvent, COMGETTER(Registered)(&fRegistered));
                 Bstr strPath;
-                CHECK_ERROR_BREAK(pFile, COMGETTER(FileName)(strPath.asOutParam()));
+                CHECK_ERROR_BREAK(pFile, COMGETTER(Filename)(strPath.asOutParam()));
 
                 RTPrintf("File \"%s\" %s\n",
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 75926)
@@ -2396,5 +2396,5 @@
         CHECK_ERROR_RET(saRecordingScreenScreens[0], COMGETTER(VideoFPS)(&Fps), rc);
         Bstr  bstrFile;
-        CHECK_ERROR_RET(saRecordingScreenScreens[0], COMGETTER(FileName)(bstrFile.asOutParam()), rc);
+        CHECK_ERROR_RET(saRecordingScreenScreens[0], COMGETTER(Filename)(bstrFile.asOutParam()), rc);
         Bstr  bstrOptions;
         CHECK_ERROR_RET(saRecordingScreenScreens[0], COMGETTER(Options)(bstrOptions.asOutParam()), rc);
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 75926)
@@ -3000,5 +3000,5 @@
 
                         for (size_t i = 0; i < saRecordingScreenScreens.size(); ++i)
-                            CHECK_ERROR(saRecordingScreenScreens[i], COMSETTER(FileName)(bstr.raw()));
+                            CHECK_ERROR(saRecordingScreenScreens[i], COMSETTER(Filename)(bstr.raw()));
                         break;
                     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 75926)
@@ -507,5 +507,5 @@
                 /** @todo r=andy Refine these texts (wrt audio and/or video). */
                 table << UITextTableLine(QApplication::translate("UIDetails", "Recording File", "details (display/recording)"),
-                                         comRecordingScreen0Settings.GetFileName());
+                                         comRecordingScreen0Settings.GetFilename());
                 table << UITextTableLine(QApplication::translate("UIDetails", "Recording Attributes", "details (display/recording)"),
                                          QApplication::translate("UIDetails", "Frame Size: %1x%2, Frame Rate: %3fps, Bit Rate: %4kbps")
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 75926)
@@ -923,5 +923,5 @@
                 strFullData += s_strTableRow2
                     .arg(strToolTip)
-                    .arg(comRecordingScreen0Settings.GetFileName());
+                    .arg(comRecordingScreen0Settings.GetFilename());
                 break;
             }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 75926)
@@ -395,5 +395,5 @@
     {
         oldDisplayData.m_strRecordingFolder = QFileInfo(m_machine.GetSettingsFilePath()).absolutePath();
-        oldDisplayData.m_strRecordingFilePath = recordingScreen0Settings.GetFileName();
+        oldDisplayData.m_strRecordingFilePath = recordingScreen0Settings.GetFilename();
         oldDisplayData.m_iRecordingVideoFrameWidth = recordingScreen0Settings.GetVideoWidth();
         oldDisplayData.m_iRecordingVideoFrameHeight = recordingScreen0Settings.GetVideoHeight();
@@ -1584,5 +1584,5 @@
                     if (fSuccess && newDisplayData.m_strRecordingFilePath != oldDisplayData.m_strRecordingFilePath)
                     {
-                        recordingScreenSettings.SetFileName(newDisplayData.m_strRecordingFilePath);
+                        recordingScreenSettings.SetFilename(newDisplayData.m_strRecordingFilePath);
                         Assert(recordingScreenSettings.isOk());
                         fSuccess = recordingScreenSettings.isOk();
@@ -1654,5 +1654,5 @@
                 if (fSuccess && newDisplayData.m_strRecordingFilePath != oldDisplayData.m_strRecordingFilePath)
                 {
-                    recordingScreenSettings.SetFileName(newDisplayData.m_strRecordingFilePath);
+                    recordingScreenSettings.SetFilename(newDisplayData.m_strRecordingFilePath);
                     Assert(recordingScreenSettings.isOk());
                     fSuccess = recordingScreenSettings.isOk();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp	(revision 75925)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp	(revision 75926)
@@ -1754,5 +1754,5 @@
     {
         /* Recording file: */
-        aReport << comRecordingScreen0Settings.GetFileName();
+        aReport << comRecordingScreen0Settings.GetFilename();
         /* Recording attributes: */
         aReport << QApplication::translate("UIGDetails", "Frame Size: %1x%2, Frame Rate: %3fps, Bit Rate: %4kbps")
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 75925)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 75926)
@@ -4870,5 +4870,5 @@
   <interface
     name="IRecordingScreenSettings" extends="$unknown"
-    uuid="B036627B-9922-4056-8A95-94C60D3BA48A"
+    uuid="678fbd9a-93af-42a7-7f13-79ad6ef1a18d"
     wsmap="managed"
     >
@@ -4913,5 +4913,5 @@
     </attribute>
 
-    <attribute name="fileName" type="wstring">
+    <attribute name="filename" type="wstring">
       <desc>
         This setting determines the filename VirtualBox uses to save
@@ -13947,5 +13947,5 @@
   <interface
     name="IFile" extends="$unknown"
-    uuid="5395b543-0ee9-4d6a-9ecd-580e3a1d0dbb"
+    uuid="59a235ac-2f1a-4d6c-81fc-e3fa843f49ae"
     wsmap="managed"
     reservedMethods="4" reservedAttributes="8"
@@ -13992,5 +13992,5 @@
     <!-- The following attributes just remembers the fileOpen parameters for you.
          Nice for introspection and probably doesn't cost us much. -->
-    <attribute name="fileName" type="wstring" readonly="yes">
+    <attribute name="filename" type="wstring" readonly="yes">
       <desc>Full path of the actual file name of this file.
         <!-- r=bird: The 'actual' file name is too tough, we cannot guarentee
@@ -14205,5 +14205,5 @@
   <interface
     name="IFsObjInfo" extends="$unknown"
-    uuid="ae34e3d5-f884-4141-8d62-618300658805"
+    uuid="081fc833-c6fa-430e-6020-6a505d086387"
     wsmap="managed"
     reservedAttributes="8"
@@ -14213,28 +14213,12 @@
       This can be information about a file or a directory, for example.
     </desc>
-
-    <attribute name="accessTime" type="long long" readonly="yes">
-      <desc>
-        Time of last access (st_atime).
-      </desc>
-    </attribute>
-    <attribute name="allocatedSize" type="long long" readonly="yes">
-      <desc>
-        Disk allocation size (st_blocks * DEV_BSIZE).
-      </desc>
-    </attribute>
-    <attribute name="birthTime" type="long long" readonly="yes">
-      <desc>
-        Time of file birth (st_birthtime).
-      </desc>
-    </attribute>
-        <attribute name="changeTime" type="long long" readonly="yes">
-      <desc>
-        Time of last status change (st_ctime).
-      </desc>
-    </attribute>
-    <attribute name="deviceNumber" type="unsigned long" readonly="yes">
-      <desc>
-        The device number of a character or block device type object (st_rdev).
+    <attribute name="name" type="wstring" readonly="yes">
+      <desc>
+        The object's name.
+      </desc>
+    </attribute>
+    <attribute name="type" type="FsObjType" readonly="yes">
+      <desc>
+        The object type. See <link to="FsObjType" /> for more.
       </desc>
     </attribute>
@@ -14242,44 +14226,4 @@
       <desc>
         File attributes. Not implemented yet.
-      </desc>
-    </attribute>
-    <attribute name="generationId" type="unsigned long" readonly="yes">
-      <desc>
-        The current generation number (st_gen).
-      </desc>
-    </attribute>
-    <attribute name="GID" type="unsigned long" readonly="yes">
-      <desc>
-        The group the filesystem object is assigned (st_gid).
-      </desc>
-    </attribute>
-    <attribute name="groupName" type="wstring" readonly="yes">
-      <desc>
-        The group name.
-      </desc>
-    </attribute>
-    <attribute name="hardLinks" type="unsigned long" readonly="yes">
-      <desc>
-        Number of hard links to this filesystem object (st_nlink).
-      </desc>
-    </attribute>
-    <attribute name="modificationTime" type="long long" readonly="yes">
-      <desc>
-        Time of last data modification (st_mtime).
-      </desc>
-    </attribute>
-    <attribute name="name" type="wstring" readonly="yes">
-      <desc>
-        The object's name.
-      </desc>
-    </attribute>
-    <attribute name="nodeId" type="long long" readonly="yes">
-      <desc>
-        The unique identifier (within the filesystem) of this filesystem object (st_ino).
-      </desc>
-    </attribute>
-    <attribute name="nodeIdDevice" type="unsigned long" readonly="yes">
-      <desc>
-        The device number of the device which this filesystem object resides on (st_dev).
       </desc>
     </attribute>
@@ -14291,12 +14235,76 @@
       </desc>
     </attribute>
-    <attribute name="type" type="FsObjType" readonly="yes">
-      <desc>
-        The object type. See <link to="FsObjType" /> for more.
-      </desc>
-    </attribute>
-    <attribute name="UID" type="unsigned long" readonly="yes">
-      <desc>
-        The user owning the filesystem object (st_uid).
+    <attribute name="allocatedSize" type="long long" readonly="yes">
+      <desc>
+        Disk allocation size (st_blocks * DEV_BSIZE).
+      </desc>
+    </attribute>
+    <!-- Time attributes: -->
+    <attribute name="accessTime" type="long long" readonly="yes">
+      <desc>
+        Time of last access (st_atime).
+      </desc>
+    </attribute>
+    <attribute name="birthTime" type="long long" readonly="yes">
+      <desc>
+        Time of file birth (st_birthtime).
+      </desc>
+    </attribute>
+    <attribute name="changeTime" type="long long" readonly="yes">
+      <desc>
+        Time of last status change (st_ctime).
+      </desc>
+    </attribute>
+    <attribute name="modificationTime" type="long long" readonly="yes">
+      <desc>
+        Time of last data modification (st_mtime).
+      </desc>
+    </attribute>
+    <!-- Ownership attributes: -->
+    <attribute name="UID" type="long" readonly="yes">
+      <desc>
+        The user owning the filesystem object (st_uid).  This is -1 if not available.
+      </desc>
+    </attribute>
+    <attribute name="userName" type="wstring" readonly="yes">
+      <desc>
+        The user name.
+      </desc>
+    </attribute>
+    <attribute name="GID" type="long" readonly="yes">
+      <desc>
+        The group the filesystem object is assigned (st_gid).  This is -1 if not available.
+      </desc>
+    </attribute>
+    <attribute name="groupName" type="wstring" readonly="yes">
+      <desc>
+        The group name.
+      </desc>
+    </attribute>
+    <!-- More esoteric attributes: -->
+    <attribute name="nodeId" type="long long" readonly="yes">
+      <desc>
+        The unique identifier (within the filesystem) of this filesystem object (st_ino).
+        This is zero if not availalbe.
+      </desc>
+    </attribute>
+    <attribute name="nodeIdDevice" type="unsigned long" readonly="yes">
+      <desc>
+        The device number of the device which this filesystem object resides on (st_dev).
+      </desc>
+    </attribute>
+    <attribute name="hardLinks" type="unsigned long" readonly="yes">
+      <desc>
+        Number of hard links to this filesystem object (st_nlink).
+      </desc>
+    </attribute>
+    <attribute name="deviceNumber" type="unsigned long" readonly="yes">
+      <desc>
+        The device number of a character or block device type object (st_rdev).
+      </desc>
+    </attribute>
+    <attribute name="generationId" type="unsigned long" readonly="yes">
+      <desc>
+        The current generation number (st_gen).
       </desc>
     </attribute>
@@ -14306,10 +14314,4 @@
       </desc>
     </attribute>
-    <attribute name="userName" type="wstring" readonly="yes">
-      <desc>
-        The user name.
-      </desc>
-    </attribute>
-
   </interface>
 
Index: /trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h
===================================================================
--- /trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h	(revision 75925)
+++ /trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h	(revision 75926)
@@ -611,5 +611,5 @@
 {
     /** The filename. */
-    Utf8Str                 mFileName;
+    Utf8Str                 mFilename;
     /** The file access mode. */
     FileAccessMode_T        mAccessMode;
@@ -636,6 +636,6 @@
      * @{ */
     int FromLs(const GuestProcessStreamBlock &strmBlk, bool fLong);
+    int FromStat(const GuestProcessStreamBlock &strmBlk);
     int FromMkTemp(const GuestProcessStreamBlock &strmBlk);
-    int FromStat(const GuestProcessStreamBlock &strmBlk);
     /** @}  */
 
@@ -651,24 +651,24 @@
     /** @}  */
 
+    Utf8Str              mName;
+    FsObjType_T          mType;
+    Utf8Str              mFileAttrs;
+    int64_t              mObjectSize;
+    int64_t              mAllocatedSize;
     int64_t              mAccessTime;
-    int64_t              mAllocatedSize;
     int64_t              mBirthTime;
     int64_t              mChangeTime;
-    uint32_t             mDeviceNumber;
-    Utf8Str              mFileAttrs;
-    uint32_t             mGenerationID;
-    uint32_t             mGID;
+    int64_t              mModificationTime;
+    Utf8Str              mUserName;
+    int32_t              mUID;
+    int32_t              mGID;
     Utf8Str              mGroupName;
-    uint32_t             mNumHardLinks;
-    int64_t              mModificationTime;
-    Utf8Str              mName;
+    Utf8Str              mACL;
     int64_t              mNodeID;
     uint32_t             mNodeIDDevice;
-    int64_t              mObjectSize;
-    FsObjType_T          mType;
-    uint32_t             mUID;
+    uint32_t             mNumHardLinks;
+    uint32_t             mDeviceNumber;
+    uint32_t             mGenerationID;
     uint32_t             mUserFlags;
-    Utf8Str              mUserName;
-    Utf8Str              mACL;
 };
 
@@ -781,21 +781,16 @@
 #endif
 
-    int GetInt64Ex(const char *pszKey, int64_t *piVal) const;
-
-    int64_t GetInt64(const char *pszKey) const;
-
-    size_t GetCount(void) const;
-
-    int GetRc(void) const;
-
-    const char* GetString(const char *pszKey) const;
-
-    int GetUInt32Ex(const char *pszKey, uint32_t *puVal) const;
-
-    uint32_t GetUInt32(const char *pszKey) const;
-
-    bool IsEmpty(void) { return mPairs.empty(); }
-
-    int SetValue(const char *pszKey, const char *pszValue);
+    const char *GetString(const char *pszKey) const;
+    size_t      GetCount(void) const;
+    int         GetRc(void) const;
+    int         GetInt64Ex(const char *pszKey, int64_t *piVal) const;
+    int64_t     GetInt64(const char *pszKey) const;
+    int         GetUInt32Ex(const char *pszKey, uint32_t *puVal) const;
+    uint32_t    GetUInt32(const char *pszKey, uint32_t uDefault = 0) const;
+    int32_t     GetInt32(const char *pszKey, int32_t iDefault = 0) const;
+
+    bool        IsEmpty(void) { return mPairs.empty(); }
+
+    int         SetValue(const char *pszKey, const char *pszValue);
 
 protected:
Index: /trunk/src/VBox/Main/include/GuestFileImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/GuestFileImpl.h	(revision 75925)
+++ /trunk/src/VBox/Main/include/GuestFileImpl.h	(revision 75926)
@@ -81,5 +81,5 @@
     HRESULT getOffset(LONG64 *aOffset);
     HRESULT getStatus(FileStatus_T *aStatus);
-    HRESULT getFileName(com::Utf8Str &aFileName);
+    HRESULT getFilename(com::Utf8Str &aFilename);
     HRESULT getAccessMode(FileAccessMode_T *aAccessMode);
     HRESULT getOpenAction(FileOpenAction_T *aOpenAction);
Index: /trunk/src/VBox/Main/include/GuestFsObjInfoImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/GuestFsObjInfoImpl.h	(revision 75925)
+++ /trunk/src/VBox/Main/include/GuestFsObjInfoImpl.h	(revision 75926)
@@ -22,6 +22,6 @@
 #include "GuestCtrlImplPrivate.h"
 
-class ATL_NO_VTABLE GuestFsObjInfo :
-    public GuestFsObjInfoWrap
+class ATL_NO_VTABLE GuestFsObjInfo
+    : public GuestFsObjInfoWrap
 {
 public:
@@ -45,23 +45,23 @@
     /** Wrapped @name IGuestFsObjInfo properties.
      * @{ */
+    HRESULT getName(com::Utf8Str &aName);
+    HRESULT getType(FsObjType_T *aType);
+    HRESULT getFileAttributes(com::Utf8Str &aFileAttributes);
+    HRESULT getObjectSize(LONG64 *aObjectSize);
+    HRESULT getAllocatedSize(LONG64 *aAllocatedSize);
     HRESULT getAccessTime(LONG64 *aAccessTime);
-    HRESULT getAllocatedSize(LONG64 *aAllocatedSize);
     HRESULT getBirthTime(LONG64 *aBirthTime);
     HRESULT getChangeTime(LONG64 *aChangeTime);
-    HRESULT getDeviceNumber(ULONG *aDeviceNumber);
-    HRESULT getFileAttributes(com::Utf8Str &aFileAttributes);
-    HRESULT getGenerationId(ULONG *aGenerationId);
-    HRESULT getGID(ULONG *aGID);
+    HRESULT getModificationTime(LONG64 *aModificationTime);
+    HRESULT getUID(LONG *aUID);
+    HRESULT getUserName(com::Utf8Str &aUserName);
+    HRESULT getGID(LONG *aGID);
     HRESULT getGroupName(com::Utf8Str &aGroupName);
-    HRESULT getHardLinks(ULONG *aHardLinks);
-    HRESULT getModificationTime(LONG64 *aModificationTime);
-    HRESULT getName(com::Utf8Str &aName);
     HRESULT getNodeId(LONG64 *aNodeId);
     HRESULT getNodeIdDevice(ULONG *aNodeIdDevice);
-    HRESULT getObjectSize(LONG64 *aObjectSize);
-    HRESULT getType(FsObjType_T *aType);
-    HRESULT getUID(ULONG *aUID);
+    HRESULT getHardLinks(ULONG *aHardLinks);
+    HRESULT getDeviceNumber(ULONG *aDeviceNumber);
+    HRESULT getGenerationId(ULONG *aGenerationId);
     HRESULT getUserFlags(ULONG *aUserFlags);
-    HRESULT getUserName(com::Utf8Str &aUserName);
     /** @}  */
 
Index: /trunk/src/VBox/Main/include/RecordingScreenSettingsImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/RecordingScreenSettingsImpl.h	(revision 75925)
+++ /trunk/src/VBox/Main/include/RecordingScreenSettingsImpl.h	(revision 75926)
@@ -69,6 +69,6 @@
     HRESULT setDestination(RecordingDestination_T aDestination);
 
-    HRESULT getFileName(com::Utf8Str &aFileName);
-    HRESULT setFileName(const com::Utf8Str &aFileName);
+    HRESULT getFilename(com::Utf8Str &aFilename);
+    HRESULT setFilename(const com::Utf8Str &aFilename);
     HRESULT getMaxTime(ULONG *aMaxTimeS);
     HRESULT setMaxTime(ULONG aMaxTimeS);
Index: /trunk/src/VBox/Main/include/RecordingSettingsImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/RecordingSettingsImpl.h	(revision 75925)
+++ /trunk/src/VBox/Main/include/RecordingSettingsImpl.h	(revision 75926)
@@ -1,7 +1,5 @@
 /* $Id$ */
-
 /** @file
- *
- * VirtualBox COM class implementation - Machine capture settings.
+ * VirtualBox COM class implementation - Machine recording screen settings.
  */
 
@@ -31,6 +29,6 @@
 class RecordingScreenSettings;
 
-class ATL_NO_VTABLE RecordingSettings :
-    public RecordingSettingsWrap
+class ATL_NO_VTABLE RecordingSettings
+    : public RecordingSettingsWrap
 {
 public:
@@ -56,5 +54,5 @@
     void i_applyDefaults(void);
 
-    int i_getDefaultFileName(Utf8Str &strFile, bool fWithFileExtension);
+    int i_getDefaultFilename(Utf8Str &strFile, bool fWithFileExtension);
     bool i_canChangeSettings(void);
     void i_onSettingsChanged(void);
@@ -86,4 +84,5 @@
     Data *m;
 };
-#endif // ____H_RecordSettings
 
+#endif // !____H_RecordSettings
+
Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 75926)
@@ -6943,5 +6943,5 @@
         AssertComRCReturn(hrc, VERR_INVALID_PARAMETER);
         Bstr bstrTemp;
-        hrc = pRecordScreenSettings->COMGETTER(FileName)(bstrTemp.asOutParam());
+        hrc = pRecordScreenSettings->COMGETTER(Filename)(bstrTemp.asOutParam());
         AssertComRCReturn(hrc, VERR_INVALID_PARAMETER);
         RecordScreenSettings.File.strName = bstrTemp;
Index: /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp	(revision 75926)
@@ -85,4 +85,7 @@
  * Initializes this object data with a stream block from VBOXSERVICE_TOOL_LS.
  *
+ * This is also used by FromStat since the output should be identical given that
+ * they use the same output function on the guest side when fLong is true.
+ *
  * @return VBox status code.
  * @param  strmBlk              Stream block to use for initialization.
@@ -92,17 +95,23 @@
 {
     LogFlowFunc(("\n"));
-
 #ifdef DEBUG
     strmBlk.DumpToLog();
 #endif
-        /* Object name. */
+
+    /* Object name. */
     mName = strmBlk.GetString("name");
     ASSERT_GUEST_RETURN(mName.isNotEmpty(), VERR_NOT_FOUND);
 
-    /* Type. */
+    /* Type & attributes. */
+    bool fHaveAttribs = false;
+    char szAttribs[32];
+    memset(szAttribs, '?', sizeof(szAttribs) - 1);
     mType = FsObjType_Unknown;
-    const char *pszType = strmBlk.GetString("ftype");
-    if (pszType)
-        switch (*pszType)
+    const char *psz = strmBlk.GetString("ftype");
+    if (psz)
+    {
+        fHaveAttribs = true;
+        szAttribs[0] = *psz;
+        switch (*psz)
         {
             case '-':   mType = FsObjType_File; break;
@@ -114,39 +123,120 @@
             case 's':   mType = FsObjType_Socket; break;
             case 'w':   mType = FsObjType_WhiteOut; break;
-            default: AssertMsgFailed(("%s\n", pszType));
-        }
-
-    /* Dates. */
+            default:
+                AssertMsgFailed(("%s\n", psz));
+                szAttribs[0] = '?';
+                fHaveAttribs = false;
+                break;
+        }
+    }
+    psz = strmBlk.GetString("owner_mask");
+    if (   psz
+        && (psz[0] == '-' || psz[0] == 'r')
+        && (psz[1] == '-' || psz[1] == 'w')
+        && (psz[2] == '-' || psz[2] == 'x'))
+    {
+        szAttribs[1] = psz[0];
+        szAttribs[2] = psz[1];
+        szAttribs[3] = psz[2];
+        fHaveAttribs = true;
+    }
+    psz = strmBlk.GetString("group_mask");
+    if (   psz
+        && (psz[0] == '-' || psz[0] == 'r')
+        && (psz[1] == '-' || psz[1] == 'w')
+        && (psz[2] == '-' || psz[2] == 'x'))
+    {
+        szAttribs[4] = psz[0];
+        szAttribs[5] = psz[1];
+        szAttribs[6] = psz[2];
+        fHaveAttribs = true;
+    }
+    psz = strmBlk.GetString("other_mask");
+    if (   psz
+        && (psz[0] == '-' || psz[0] == 'r')
+        && (psz[1] == '-' || psz[1] == 'w')
+        && (psz[2] == '-' || psz[2] == 'x'))
+    {
+        szAttribs[7] = psz[0];
+        szAttribs[8] = psz[1];
+        szAttribs[9] = psz[2];
+        fHaveAttribs = true;
+    }
+    szAttribs[10] = ' '; /* Reserve three chars for sticky bits. */
+    szAttribs[11] = ' ';
+    szAttribs[12] = ' ';
+    szAttribs[13] = ' '; /* Separator. */
+    psz = strmBlk.GetString("dos_mask");
+    if (   psz
+        && (psz[ 0] == '-' || psz[ 0] == 'R')
+        && (psz[ 1] == '-' || psz[ 1] == 'H')
+        && (psz[ 2] == '-' || psz[ 2] == 'S')
+        && (psz[ 3] == '-' || psz[ 3] == 'D')
+        && (psz[ 4] == '-' || psz[ 4] == 'A')
+        && (psz[ 5] == '-' || psz[ 5] == 'd')
+        && (psz[ 6] == '-' || psz[ 6] == 'N')
+        && (psz[ 7] == '-' || psz[ 7] == 'T')
+        && (psz[ 8] == '-' || psz[ 8] == 'P')
+        && (psz[ 9] == '-' || psz[ 9] == 'J')
+        && (psz[10] == '-' || psz[10] == 'C')
+        && (psz[11] == '-' || psz[11] == 'O')
+        && (psz[12] == '-' || psz[12] == 'I')
+        && (psz[13] == '-' || psz[13] == 'E'))
+    {
+        memcpy(&szAttribs[14], psz, 14);
+        fHaveAttribs = true;
+    }
+    szAttribs[28] = '\0';
+    if (fHaveAttribs)
+        mFileAttrs = szAttribs;
+
+    /* Object size. */
+    int rc = strmBlk.GetInt64Ex("st_size", &mObjectSize);
+    ASSERT_GUEST_RC_RETURN(rc, rc);
+    strmBlk.GetInt64Ex("alloc", &mAllocatedSize);
+
+    /* INode number and device. */
+    psz = strmBlk.GetString("node_id");
+    if (!psz)
+        psz = strmBlk.GetString("cnode_id"); /* copy & past error fixed in 6.0 RC1 */
+    if (psz)
+        mNodeID = RTStrToInt64(psz);
+    mNodeIDDevice = strmBlk.GetUInt32("inode_dev"); /* (Produced by GAs prior to 6.0 RC1.) */
+
     if (fLong)
     {
+        /* Dates. */
         mAccessTime       = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_atime");
         mBirthTime        = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_birthtime");
         mChangeTime       = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_ctime");
         mModificationTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_mtime");
-    }
-
-    /* Object size. */
-    int rc = strmBlk.GetInt64Ex("st_size", &mObjectSize);
-    ASSERT_GUEST_RC_RETURN(rc, rc);
-
-    /* Owner. */
-    mUID = strmBlk.GetUInt32("uid");
-    mGID = strmBlk.GetUInt32("gid");
-
-    /** @todo Add complete stat info!
-     * int64_t              mAllocatedSize;
-     * uint32_t             mDeviceNumber;
-     * Utf8Str              mFileAttrs;
-     * uint32_t             mGenerationID;
-     * Utf8Str              mGroupName;
-     * uint32_t             mNumHardLinks;
-     * uint32_t             mNodeIDDevice;
-     * uint32_t             mUserFlags;
-     * Utf8Str              mUserName;
-     * Utf8Str              mACL;
-     */
+
+        /* Owner & group. */
+        mUID = strmBlk.GetInt32("uid");
+        psz = strmBlk.GetString("username");
+        if (psz)
+            mUserName = psz;
+        mGID = strmBlk.GetInt32("gid");
+        psz = strmBlk.GetString("groupname");
+        if (psz)
+            mGroupName = psz;
+
+        /* Misc attributes: */
+        mNumHardLinks = strmBlk.GetUInt32("hlinks", 1);
+        mDeviceNumber = strmBlk.GetUInt32("st_rdev");
+        mGenerationID = strmBlk.GetUInt32("st_gen");
+        mUserFlags    = strmBlk.GetUInt32("st_flags");
+
+        /** @todo ACL */
+    }
 
     LogFlowFuncLeave();
     return VINF_SUCCESS;
+}
+
+int GuestFsObjData::FromStat(const GuestProcessStreamBlock &strmBlk)
+{
+    /* Should be identical output. */
+    return GuestFsObjData::FromLs(strmBlk, true /*fLong*/);
 }
 
@@ -169,64 +259,5 @@
 }
 
-int GuestFsObjData::FromStat(const GuestProcessStreamBlock &strmBlk)
-{
-    LogFlowFunc(("\n"));
-
-#ifdef DEBUG
-    strmBlk.DumpToLog();
-#endif
-    /* Node ID, optional because we don't include this in older VBoxService (< 4.2) versions. */
-    mNodeID = strmBlk.GetInt64("node_id");
-
-    /* Object name. */
-    mName = strmBlk.GetString("name");
-    ASSERT_GUEST_RETURN(mName.isNotEmpty(), VERR_NOT_FOUND);
-
-    /* Type. */
-    const char *pszType = strmBlk.GetString("ftype");
-    if (pszType)
-        switch (*pszType)
-        {
-            case '-':   mType = FsObjType_File; break;
-            case 'd':   mType = FsObjType_Directory; break;
-            case 'l':   mType = FsObjType_Symlink; break;
-            case 'c':   mType = FsObjType_DevChar; break;
-            case 'b':   mType = FsObjType_DevBlock; break;
-            case 'f':   mType = FsObjType_Fifo; break;
-            case 's':   mType = FsObjType_Socket; break;
-            case 'w':   mType = FsObjType_WhiteOut; break;
-            default: AssertMsgFailed(("%s\n", pszType));
-        }
-
-    /* Dates. */
-    mAccessTime       = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_atime");
-    mBirthTime        = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_birthtime");
-    mChangeTime       = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_ctime");
-    mModificationTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_mtime");
-
-    /* Object size. */
-    int rc = strmBlk.GetInt64Ex("st_size", &mObjectSize);
-    ASSERT_GUEST_RC_RETURN(rc, rc);
-
-    /* Owner. */
-    mUID = strmBlk.GetUInt32("uid");
-    mGID = strmBlk.GetUInt32("gid");
-
-    /** @todo Add complete stat info!
-     * int64_t              mAllocatedSize;
-     * uint32_t             mDeviceNumber;
-     * Utf8Str              mFileAttrs;
-     * uint32_t             mGenerationID;
-     * Utf8Str              mGroupName;
-     * uint32_t             mNumHardLinks;
-     * uint32_t             mNodeIDDevice;
-     * uint32_t             mUserFlags;
-     * Utf8Str              mUserName;
-     * Utf8Str              mACL;
-     */
-
-    LogFlowFuncLeave();
-    return VINF_SUCCESS;
-}
+
 
 /**
@@ -382,5 +413,5 @@
  * @param   pszKey              Name of key to get the value for.
  */
-const char* GuestProcessStreamBlock::GetString(const char *pszKey) const
+const char *GuestProcessStreamBlock::GetString(const char *pszKey) const
 {
     AssertPtrReturn(pszKey, NULL);
@@ -388,5 +419,5 @@
     try
     {
-        GuestCtrlStreamPairMapIterConst itPairs = mPairs.find(Utf8Str(pszKey));
+        GuestCtrlStreamPairMapIterConst itPairs = mPairs.find(Utf8Str(pszKey)); /** @todo r=bird: this string conversion is excellent performance wise... */
         if (itPairs != mPairs.end())
             return itPairs->second.mValue.c_str();
@@ -403,11 +434,9 @@
  *
  * @return  IPRT status code. VERR_NOT_FOUND if key was not found.
- * @param  pszKey               Name of key to get the value for.
- * @param  puVal                Pointer to value to return.
+ * @param   pszKey              Name of key to get the value for.
+ * @param   puVal               Pointer to value to return.
  */
 int GuestProcessStreamBlock::GetUInt32Ex(const char *pszKey, uint32_t *puVal) const
 {
-    AssertPtrReturn(pszKey, VERR_INVALID_POINTER);
-    AssertPtrReturn(puVal, VERR_INVALID_POINTER);
     const char *pszValue = GetString(pszKey);
     if (pszValue)
@@ -420,15 +449,37 @@
 
 /**
+ * Returns a 32-bit signed integer of a specified key.
+ *
+ * @returns 32-bit signed value
+ * @param   pszKey              Name of key to get the value for.
+ * @param   iDefault            The default to return on error if not found.
+ */
+int32_t GuestProcessStreamBlock::GetInt32(const char *pszKey, int32_t iDefault) const
+{
+    const char *pszValue = GetString(pszKey);
+    if (pszValue)
+    {
+        int32_t iRet;
+        int rc = RTStrToInt32Full(pszValue, 0, &iRet);
+        if (RT_SUCCESS(rc))
+            return iRet;
+        ASSERT_GUEST_MSG_FAILED(("%s=%s\n", pszKey, pszValue));
+    }
+    return iDefault;
+}
+
+/**
  * Returns a 32-bit unsigned integer of a specified key.
  *
  * @return  uint32_t            Value to return, 0 if not found / on failure.
  * @param   pszKey              Name of key to get the value for.
- */
-uint32_t GuestProcessStreamBlock::GetUInt32(const char *pszKey) const
+ * @param   uDefault            The default value to return.
+ */
+uint32_t GuestProcessStreamBlock::GetUInt32(const char *pszKey, uint32_t uDefault /*= 0*/) const
 {
     uint32_t uVal;
     if (RT_SUCCESS(GetUInt32Ex(pszKey, &uVal)))
         return uVal;
-    return 0;
+    return uDefault;
 }
 
Index: /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 75926)
@@ -142,5 +142,5 @@
 {
     LogFlowThisFunc(("pConsole=%p, pSession=%p, aObjectID=%RU32, strPath=%s\n",
-                     pConsole, pSession, aObjectID, openInfo.mFileName.c_str()));
+                     pConsole, pSession, aObjectID, openInfo.mFilename.c_str()));
 
     AssertPtrReturn(pConsole, VERR_INVALID_POINTER);
@@ -264,9 +264,9 @@
 }
 
-HRESULT GuestFile::getFileName(com::Utf8Str &aFileName)
+HRESULT GuestFile::getFilename(com::Utf8Str &aFilename)
 {
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
-    aFileName = mData.mOpenInfo.mFileName;
+    aFilename = mData.mOpenInfo.mFilename;
 
     return S_OK;
@@ -333,5 +333,5 @@
 
     LogFlowThisFunc(("strName=%s, uContextID=%RU32, uFunction=%RU32, pSvcCb=%p\n",
-                     mData.mOpenInfo.mFileName.c_str(), pCbCtx->uContextID, pCbCtx->uFunction, pSvcCb));
+                     mData.mOpenInfo.mFilename.c_str(), pCbCtx->uContextID, pCbCtx->uFunction, pSvcCb));
 
     int vrc;
@@ -360,5 +360,5 @@
 int GuestFile::i_closeFile(int *prcGuest)
 {
-    LogFlowThisFunc(("strFile=%s\n", mData.mOpenInfo.mFileName.c_str()));
+    LogFlowThisFunc(("strFile=%s\n", mData.mOpenInfo.mFilename.c_str()));
 
     int vrc;
@@ -645,5 +645,5 @@
 int GuestFile::i_openFile(uint32_t uTimeoutMS, int *prcGuest)
 {
-    AssertReturn(mData.mOpenInfo.mFileName.isNotEmpty(), VERR_INVALID_PARAMETER);
+    AssertReturn(mData.mOpenInfo.mFilename.isNotEmpty(), VERR_INVALID_PARAMETER);
 
     LogFlowThisFuncEnter();
@@ -652,5 +652,5 @@
 
     LogFlowThisFunc(("strFile=%s, enmAccessMode=0x%x, enmOpenAction=0x%x, uCreationMode=%RU32, mfOpenEx=%RU32\n",
-                     mData.mOpenInfo.mFileName.c_str(), mData.mOpenInfo.mAccessMode, mData.mOpenInfo.mOpenAction,
+                     mData.mOpenInfo.mFilename.c_str(), mData.mOpenInfo.mAccessMode, mData.mOpenInfo.mOpenAction,
                      mData.mOpenInfo.mCreationMode, mData.mOpenInfo.mfOpenEx));
 
@@ -719,6 +719,6 @@
     int i = 0;
     HGCMSvcSetU32(&paParms[i++], pEvent->ContextID());
-    HGCMSvcSetPv(&paParms[i++], (void*)mData.mOpenInfo.mFileName.c_str(),
-                 (ULONG)mData.mOpenInfo.mFileName.length() + 1);
+    HGCMSvcSetPv(&paParms[i++], (void*)mData.mOpenInfo.mFilename.c_str(),
+                 (ULONG)mData.mOpenInfo.mFilename.length() + 1);
     HGCMSvcSetStr(&paParms[i++], pszAccessMode);
     HGCMSvcSetStr(&paParms[i++], pszOpenAction);
@@ -743,5 +743,5 @@
 {
     AssertPtr(mSession);
-    return mSession->i_fsQueryInfo(mData.mOpenInfo.mFileName, FALSE /* fFollowSymlinks */, objData, prcGuest);
+    return mSession->i_fsQueryInfo(mData.mOpenInfo.mFilename, FALSE /* fFollowSymlinks */, objData, prcGuest);
 }
 
@@ -1380,5 +1380,5 @@
 
         hr = setErrorBoth(VBOX_E_IPRT_ERROR, vrc, tr("Reading from file \"%s\" failed: %Rrc"),
-                          mData.mOpenInfo.mFileName.c_str(), vrc);
+                          mData.mOpenInfo.mFilename.c_str(), vrc);
     }
 
@@ -1414,5 +1414,5 @@
 
         hr = setErrorBoth(VBOX_E_IPRT_ERROR, vrc, tr("Reading from file \"%s\" (at offset %RU64) failed: %Rrc"),
-                          mData.mOpenInfo.mFileName.c_str(), aOffset, vrc);
+                          mData.mOpenInfo.mFilename.c_str(), aOffset, vrc);
     }
 
@@ -1456,5 +1456,5 @@
     else
         hr = setErrorBoth(VBOX_E_IPRT_ERROR, vrc, tr("Seeking file \"%s\" (to offset %RI64) failed: %Rrc"),
-                          mData.mOpenInfo.mFileName.c_str(), aOffset, vrc);
+                          mData.mOpenInfo.mFilename.c_str(), aOffset, vrc);
 
     LogFlowFuncLeaveRC(vrc);
@@ -1488,5 +1488,5 @@
     if (RT_FAILURE(vrc))
         hr = setErrorBoth(VBOX_E_IPRT_ERROR, vrc, tr("Writing %zubytes to file \"%s\" failed: %Rrc"),
-                          aData.size(), mData.mOpenInfo.mFileName.c_str(), vrc);
+                          aData.size(), mData.mOpenInfo.mFilename.c_str(), vrc);
 
     LogFlowFuncLeaveRC(vrc);
@@ -1508,5 +1508,5 @@
     if (RT_FAILURE(vrc))
         hr = setErrorBoth(VBOX_E_IPRT_ERROR, vrc, tr("Writing %zubytes to file \"%s\" (at offset %RU64) failed: %Rrc"),
-                          aData.size(), mData.mOpenInfo.mFileName.c_str(), aOffset, vrc);
+                          aData.size(), mData.mOpenInfo.mFilename.c_str(), aOffset, vrc);
 
     LogFlowFuncLeaveRC(vrc);
Index: /trunk/src/VBox/Main/src-client/GuestFsObjInfoImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestFsObjInfoImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/GuestFsObjInfoImpl.cpp	(revision 75926)
@@ -142,5 +142,5 @@
 }
 
-HRESULT GuestFsObjInfo::getGID(ULONG *aGID)
+HRESULT GuestFsObjInfo::getGID(LONG *aGID)
 {
     *aGID = mData.mGID;
@@ -205,5 +205,5 @@
 }
 
-HRESULT GuestFsObjInfo::getUID(ULONG *aUID)
+HRESULT GuestFsObjInfo::getUID(LONG *aUID)
 {
     *aUID = mData.mUID;
Index: /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 75926)
@@ -1486,5 +1486,5 @@
     RT_ZERO(openInfo);
 
-    openInfo.mFileName     = aPath;
+    openInfo.mFilename     = aPath;
     openInfo.mCreationMode = aCreationMode;
     openInfo.mAccessMode   = aAccessMode;
@@ -1506,5 +1506,5 @@
 {
     LogFlowThisFunc(("strFile=%s, enmAccessMode=0x%x, enmOpenAction=0x%x, uCreationMode=%RU32, mfOpenEx=%RU32\n",
-                     openInfo.mFileName.c_str(), openInfo.mAccessMode, openInfo.mOpenAction, openInfo.mCreationMode,
+                     openInfo.mFilename.c_str(), openInfo.mAccessMode, openInfo.mOpenAction, openInfo.mCreationMode,
                      openInfo.mfOpenEx));
 
@@ -1550,5 +1550,5 @@
 
         LogFlowFunc(("Added new guest file \"%s\" (Session: %RU32) (now total %zu files)\n",
-                     openInfo.mFileName.c_str(), mData.mSession.mID, mData.mFiles.size()));
+                     openInfo.mFilename.c_str(), mData.mSession.mID, mData.mFiles.size()));
 
         alock.release(); /* Release lock before firing off event. */
@@ -3618,5 +3618,5 @@
 
     GuestFileOpenInfo openInfo;
-    openInfo.mFileName = aPath;
+    openInfo.mFilename = aPath;
     openInfo.mCreationMode = aCreationMode;
 
Index: /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 75926)
@@ -389,5 +389,5 @@
     GuestFileOpenInfo srcOpenInfo;
     RT_ZERO(srcOpenInfo);
-    srcOpenInfo.mFileName     = strSource;
+    srcOpenInfo.mFilename     = strSource;
     srcOpenInfo.mOpenAction   = FileOpenAction_OpenExisting;
     srcOpenInfo.mAccessMode   = FileAccessMode_ReadOnly;
@@ -788,5 +788,5 @@
     GuestFileOpenInfo dstOpenInfo;
     RT_ZERO(dstOpenInfo);
-    dstOpenInfo.mFileName        = strDestFinal;
+    dstOpenInfo.mFilename        = strDestFinal;
     if (fFileCopyFlags & FileCopyFlag_NoReplace)
         dstOpenInfo.mOpenAction  = FileOpenAction_CreateNew;
@@ -1936,5 +1936,5 @@
             GuestFileOpenInfo dstOpenInfo;
             RT_ZERO(dstOpenInfo);
-            dstOpenInfo.mFileName    = strFileDest;
+            dstOpenInfo.mFilename    = strFileDest;
             dstOpenInfo.mOpenAction  = FileOpenAction_CreateOrReplace;
             dstOpenInfo.mAccessMode  = FileAccessMode_WriteOnly;
Index: /trunk/src/VBox/Main/src-server/RecordingScreenSettingsImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/RecordingScreenSettingsImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-server/RecordingScreenSettingsImpl.cpp	(revision 75926)
@@ -364,5 +364,5 @@
 }
 
-HRESULT RecordingScreenSettings::getFileName(com::Utf8Str &aFileName)
+HRESULT RecordingScreenSettings::getFilename(com::Utf8Str &aFilename)
 {
     AutoCaller autoCaller(this);
@@ -375,15 +375,15 @@
         || m->bd->File.strName.equals("."))
     {
-        int vrc = m->pParent->i_getDefaultFileName(m->bd->File.strName, true /* fWithFileExtension */);
+        int vrc = m->pParent->i_getDefaultFilename(m->bd->File.strName, true /* fWithFileExtension */);
         if (RT_FAILURE(vrc))
             return setError(E_INVALIDARG, tr("Error retrieving default file name"));
     }
 
-    aFileName = m->bd->File.strName;
-
-    return S_OK;
-}
-
-HRESULT RecordingScreenSettings::setFileName(const com::Utf8Str &aFileName)
+    aFilename = m->bd->File.strName;
+
+    return S_OK;
+}
+
+HRESULT RecordingScreenSettings::setFilename(const com::Utf8Str &aFilename)
 {
     AutoCaller autoCaller(this);
@@ -393,5 +393,5 @@
         return setError(E_INVALIDARG, tr("Cannot change file name while recording is enabled"));
 
-    Utf8Str strFile(aFileName);
+    Utf8Str strFile(aFilename);
     if (!RTPathStartsWithRoot(strFile.c_str()))
         return setError(E_INVALIDARG, tr("Recording file name '%s' is not absolute"), strFile.c_str());
@@ -819,5 +819,5 @@
         {
             if (m->bd->File.strName.isEmpty())
-                rc = m->pParent->i_getDefaultFileName(m->bd->File.strName, true /* fWithExtension */);
+                rc = m->pParent->i_getDefaultFilename(m->bd->File.strName, true /* fWithExtension */);
             break;
         }
Index: /trunk/src/VBox/Main/src-server/RecordingSettingsImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/RecordingSettingsImpl.cpp	(revision 75925)
+++ /trunk/src/VBox/Main/src-server/RecordingSettingsImpl.cpp	(revision 75926)
@@ -556,5 +556,5 @@
  * Returns the full path to the default video capture file.
  */
-int RecordingSettings::i_getDefaultFileName(Utf8Str &strFile, bool fWithFileExtension)
+int RecordingSettings::i_getDefaultFilename(Utf8Str &strFile, bool fWithFileExtension)
 {
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
