Changeset 75913 in vbox
- Timestamp:
- Dec 3, 2018 2:55:56 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp
r75888 r75913 39 39 #include <iprt/rand.h> 40 40 #include <iprt/time.h> 41 #include <VBox/AssertGuest.h> 41 42 42 43 … … 92 93 LogFlowFunc(("\n")); 93 94 94 int rc = VINF_SUCCESS;95 96 try97 {98 95 #ifdef DEBUG 99 96 strmBlk.DumpToLog(); 100 97 #endif 101 98 /* Object name. */ 102 mName = strmBlk.GetString("name"); 103 if (mName.isEmpty()) throw VERR_NOT_FOUND; 104 /* Type. */ 105 Utf8Str strType(strmBlk.GetString("ftype")); 106 if (strType.equalsIgnoreCase("-")) 107 mType = FsObjType_File; 108 else if (strType.equalsIgnoreCase("d")) 109 mType = FsObjType_Directory; 110 /** @todo Add more types! */ 111 else 112 mType = FsObjType_Unknown; 113 if (fLong) 114 { 115 /* Dates. */ 116 mAccessTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_atime"); 117 mBirthTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_birthtime"); 118 mChangeTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_ctime"); 119 mModificationTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_mtime"); 120 } 121 /* Object size. */ 122 rc = strmBlk.GetInt64Ex("st_size", &mObjectSize); 123 if (RT_FAILURE(rc)) throw rc; 124 /** @todo Add complete ls info! */ 125 } 126 catch (int rc2) 127 { 128 rc = rc2; 129 } 130 131 LogFlowFuncLeaveRC(rc); 132 return rc; 133 } 134 135 int GuestFsObjData::FromMkTemp(const GuestProcessStreamBlock &strmBlk) 136 { 137 LogFlowFunc(("\n")); 138 139 int rc; 140 141 try 142 { 143 #ifdef DEBUG 144 strmBlk.DumpToLog(); 145 #endif 146 /* Object name. */ 147 mName = strmBlk.GetString("name"); 148 if (mName.isEmpty()) throw VERR_NOT_FOUND; 149 /* Assign the stream block's rc. */ 150 rc = strmBlk.GetRc(); 151 } 152 catch (int rc2) 153 { 154 rc = rc2; 155 } 156 157 LogFlowFuncLeaveRC(rc); 158 return rc; 159 } 160 161 int GuestFsObjData::FromStat(const GuestProcessStreamBlock &strmBlk) 162 { 163 LogFlowFunc(("\n")); 164 165 int rc = VINF_SUCCESS; 166 167 try 168 { 169 #ifdef DEBUG 170 strmBlk.DumpToLog(); 171 #endif 172 /* Node ID, optional because we don't include this 173 * in older VBoxService (< 4.2) versions. */ 174 mNodeID = strmBlk.GetInt64("node_id"); 175 /* Object name. */ 176 mName = strmBlk.GetString("name"); 177 if (mName.isEmpty()) throw VERR_NOT_FOUND; 178 /* Type. */ 179 Utf8Str strType(strmBlk.GetString("ftype")); 180 if (strType.equalsIgnoreCase("-")) 181 mType = FsObjType_File; 182 else if (strType.equalsIgnoreCase("d")) 183 mType = FsObjType_Directory; 184 else /** @todo Add more types! */ 185 mType = FsObjType_Unknown; 186 /* Dates. */ 99 mName = strmBlk.GetString("name"); 100 ASSERT_GUEST_RETURN(mName.isNotEmpty(), VERR_NOT_FOUND); 101 102 /* Type. */ 103 mType = FsObjType_Unknown; 104 const char *pszType = strmBlk.GetString("ftype"); 105 if (pszType) 106 switch (*pszType) 107 { 108 case '-': mType = FsObjType_File; break; 109 case 'd': mType = FsObjType_Directory; break; 110 case 'l': mType = FsObjType_Symlink; break; 111 case 'c': mType = FsObjType_DevChar; break; 112 case 'b': mType = FsObjType_DevBlock; break; 113 case 'f': mType = FsObjType_Fifo; break; 114 case 's': mType = FsObjType_Socket; break; 115 case 'w': mType = FsObjType_WhiteOut; break; 116 default: AssertMsgFailed(("%s\n", pszType)); 117 } 118 119 /* Dates. */ 120 if (fLong) 121 { 187 122 mAccessTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_atime"); 188 123 mBirthTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_birthtime"); 189 124 mChangeTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_ctime"); 190 125 mModificationTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_mtime"); 191 /* Object size. */ 192 rc = strmBlk.GetInt64Ex("st_size", &mObjectSize); 193 if (RT_FAILURE(rc)) throw rc; 194 /** @todo Add complete stat info! */ 195 } 196 catch (int rc2) 197 { 198 rc = rc2; 199 } 126 } 127 128 /* Object size. */ 129 int rc = strmBlk.GetInt64Ex("st_size", &mObjectSize); 130 ASSERT_GUEST_RC_RETURN(rc, rc); 131 132 /* Owner. */ 133 mUID = strmBlk.GetUInt32("uid"); 134 mGID = strmBlk.GetUInt32("gid"); 135 136 /** @todo Add complete stat info! 137 * int64_t mAllocatedSize; 138 * uint32_t mDeviceNumber; 139 * Utf8Str mFileAttrs; 140 * uint32_t mGenerationID; 141 * Utf8Str mGroupName; 142 * uint32_t mNumHardLinks; 143 * uint32_t mNodeIDDevice; 144 * uint32_t mUserFlags; 145 * Utf8Str mUserName; 146 * Utf8Str mACL; 147 */ 148 149 LogFlowFuncLeave(); 150 return VINF_SUCCESS; 151 } 152 153 int GuestFsObjData::FromMkTemp(const GuestProcessStreamBlock &strmBlk) 154 { 155 LogFlowFunc(("\n")); 156 157 #ifdef DEBUG 158 strmBlk.DumpToLog(); 159 #endif 160 /* Object name. */ 161 mName = strmBlk.GetString("name"); 162 ASSERT_GUEST_RETURN(mName.isNotEmpty(), VERR_NOT_FOUND); 163 164 /* Assign the stream block's rc. */ 165 int rc = strmBlk.GetRc(); 200 166 201 167 LogFlowFuncLeaveRC(rc); 202 168 return rc; 169 } 170 171 int GuestFsObjData::FromStat(const GuestProcessStreamBlock &strmBlk) 172 { 173 LogFlowFunc(("\n")); 174 175 #ifdef DEBUG 176 strmBlk.DumpToLog(); 177 #endif 178 /* Node ID, optional because we don't include this in older VBoxService (< 4.2) versions. */ 179 mNodeID = strmBlk.GetInt64("node_id"); 180 181 /* Object name. */ 182 mName = strmBlk.GetString("name"); 183 ASSERT_GUEST_RETURN(mName.isNotEmpty(), VERR_NOT_FOUND); 184 185 /* Type. */ 186 const char *pszType = strmBlk.GetString("ftype"); 187 if (pszType) 188 switch (*pszType) 189 { 190 case '-': mType = FsObjType_File; break; 191 case 'd': mType = FsObjType_Directory; break; 192 case 'l': mType = FsObjType_Symlink; break; 193 case 'c': mType = FsObjType_DevChar; break; 194 case 'b': mType = FsObjType_DevBlock; break; 195 case 'f': mType = FsObjType_Fifo; break; 196 case 's': mType = FsObjType_Socket; break; 197 case 'w': mType = FsObjType_WhiteOut; break; 198 default: AssertMsgFailed(("%s\n", pszType)); 199 } 200 201 /* Dates. */ 202 mAccessTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_atime"); 203 mBirthTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_birthtime"); 204 mChangeTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_ctime"); 205 mModificationTime = GuestFsObjData::UnixEpochNsFromKey(strmBlk, "st_mtime"); 206 207 /* Object size. */ 208 int rc = strmBlk.GetInt64Ex("st_size", &mObjectSize); 209 ASSERT_GUEST_RC_RETURN(rc, rc); 210 211 /* Owner. */ 212 mUID = strmBlk.GetUInt32("uid"); 213 mGID = strmBlk.GetUInt32("gid"); 214 215 /** @todo Add complete stat info! 216 * int64_t mAllocatedSize; 217 * uint32_t mDeviceNumber; 218 * Utf8Str mFileAttrs; 219 * uint32_t mGenerationID; 220 * Utf8Str mGroupName; 221 * uint32_t mNumHardLinks; 222 * uint32_t mNodeIDDevice; 223 * uint32_t mUserFlags; 224 * Utf8Str mUserName; 225 * Utf8Str mACL; 226 */ 227 228 LogFlowFuncLeave(); 229 return VINF_SUCCESS; 203 230 } 204 231
Note:
See TracChangeset
for help on using the changeset viewer.