Changeset 21878 in vbox for trunk/src/VBox/Main/glue
- Timestamp:
- Jul 30, 2009 12:42:08 PM (15 years ago)
- Location:
- trunk/src/VBox/Main/glue
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/glue/ErrorInfo.cpp
r21783 r21878 54 54 #if !defined (VBOX_WITH_XPCOM) 55 55 56 ComPtr 56 ComPtr<IErrorInfo> err; 57 57 rc = ::GetErrorInfo (0, err.asOutParam()); 58 58 if (rc == S_OK && err) … … 61 61 mErrorInfo = err; 62 62 63 ComPtr 64 rc = err.queryInterfaceTo 65 if (SUCCEEDED 63 ComPtr<IVirtualBoxErrorInfo> info; 64 rc = err.queryInterfaceTo(info.asOutParam()); 65 if (SUCCEEDED(rc) && info) 66 66 init (info); 67 67 … … 71 71 72 72 rc = err->GetGUID (mInterfaceID.asOutParam()); 73 gotSomething |= SUCCEEDED 74 if (SUCCEEDED 73 gotSomething |= SUCCEEDED(rc); 74 if (SUCCEEDED(rc)) 75 75 GetInterfaceNameByIID (mInterfaceID, mInterfaceName.asOutParam()); 76 76 77 77 rc = err->GetSource (mComponent.asOutParam()); 78 gotSomething |= SUCCEEDED 78 gotSomething |= SUCCEEDED(rc); 79 79 80 80 rc = err->GetDescription (mText.asOutParam()); 81 gotSomething |= SUCCEEDED 81 gotSomething |= SUCCEEDED(rc); 82 82 83 83 if (gotSomething) … … 92 92 nsCOMPtr <nsIExceptionService> es; 93 93 es = do_GetService (NS_EXCEPTIONSERVICE_CONTRACTID, &rc); 94 if (NS_SUCCEEDED 94 if (NS_SUCCEEDED(rc)) 95 95 { 96 96 nsCOMPtr <nsIExceptionManager> em; 97 97 rc = es->GetCurrentExceptionManager (getter_AddRefs (em)); 98 if (NS_SUCCEEDED 98 if (NS_SUCCEEDED(rc)) 99 99 { 100 ComPtr 100 ComPtr<nsIException> ex; 101 101 rc = em->GetCurrentException (ex.asOutParam()); 102 if (NS_SUCCEEDED 102 if (NS_SUCCEEDED(rc) && ex) 103 103 { 104 104 if (aKeepObj) 105 105 mErrorInfo = ex; 106 106 107 ComPtr 108 rc = ex.queryInterfaceTo 109 if (NS_SUCCEEDED 107 ComPtr<IVirtualBoxErrorInfo> info; 108 rc = ex.queryInterfaceTo(info.asOutParam()); 109 if (NS_SUCCEEDED(rc) && info) 110 110 init (info); 111 111 … … 115 115 116 116 rc = ex->GetResult (&mResultCode); 117 gotSomething |= NS_SUCCEEDED 117 gotSomething |= NS_SUCCEEDED(rc); 118 118 119 119 Utf8Str message; 120 120 rc = ex->GetMessage(message.asOutParam()); 121 121 message.jolt(); 122 gotSomething |= NS_SUCCEEDED 123 if (NS_SUCCEEDED 122 gotSomething |= NS_SUCCEEDED(rc); 123 if (NS_SUCCEEDED(rc)) 124 124 mText = message; 125 125 … … 151 151 #if !defined (VBOX_WITH_XPCOM) 152 152 153 ComPtr 154 ComPtr 155 HRESULT rc = iface.queryInterfaceTo 156 if (SUCCEEDED 153 ComPtr<IUnknown> iface = aI; 154 ComPtr<ISupportErrorInfo> serr; 155 HRESULT rc = iface.queryInterfaceTo(serr.asOutParam()); 156 if (SUCCEEDED(rc)) 157 157 { 158 158 rc = serr->InterfaceSupportsErrorInfo (aIID); 159 if (SUCCEEDED 159 if (SUCCEEDED(rc)) 160 160 init (aKeepObj); 161 161 } … … 184 184 185 185 rc = info->COMGETTER(ResultCode) (&lrc); mResultCode = lrc; 186 gotSomething |= SUCCEEDED 187 gotAll &= SUCCEEDED 186 gotSomething |= SUCCEEDED(rc); 187 gotAll &= SUCCEEDED(rc); 188 188 189 189 Bstr iid; 190 190 rc = info->COMGETTER(InterfaceID) (iid.asOutParam()); 191 gotSomething |= SUCCEEDED 192 gotAll &= SUCCEEDED 193 if (SUCCEEDED 191 gotSomething |= SUCCEEDED(rc); 192 gotAll &= SUCCEEDED(rc); 193 if (SUCCEEDED(rc)) 194 194 { 195 195 mInterfaceID = iid; … … 198 198 199 199 rc = info->COMGETTER(Component) (mComponent.asOutParam()); 200 gotSomething |= SUCCEEDED 201 gotAll &= SUCCEEDED 200 gotSomething |= SUCCEEDED(rc); 201 gotAll &= SUCCEEDED(rc); 202 202 203 203 rc = info->COMGETTER(Text) (mText.asOutParam()); 204 gotSomething |= SUCCEEDED 205 gotAll &= SUCCEEDED 206 207 ComPtr 204 gotSomething |= SUCCEEDED(rc); 205 gotAll &= SUCCEEDED(rc); 206 207 ComPtr<IVirtualBoxErrorInfo> next; 208 208 rc = info->COMGETTER(Next) (next.asOutParam()); 209 if (SUCCEEDED 209 if (SUCCEEDED(rc) && !next.isNull()) 210 210 { 211 211 mNext.reset (new ErrorInfo (next)); … … 216 216 else 217 217 mNext.reset(); 218 gotSomething |= SUCCEEDED 219 gotAll &= SUCCEEDED 218 gotSomething |= SUCCEEDED(rc); 219 gotAll &= SUCCEEDED(rc); 220 220 221 221 mIsBasicAvailable = gotSomething; … … 239 239 return; 240 240 241 ComPtr 241 ComPtr<IVirtualBoxErrorInfo> info; 242 242 HRESULT rc = progress->COMGETTER(ErrorInfo) (info.asOutParam()); 243 if (SUCCEEDED 243 if (SUCCEEDED(rc) && info) 244 244 init (info); 245 245 } … … 257 257 #if !defined (VBOX_WITH_XPCOM) 258 258 259 ComPtr 259 ComPtr<IErrorInfo> err; 260 260 if (!mErrorInfo.isNull()) 261 261 { 262 rc = mErrorInfo.queryInterfaceTo 262 rc = mErrorInfo.queryInterfaceTo(err.asOutParam()); 263 263 AssertComRC (rc); 264 264 } … … 269 269 nsCOMPtr <nsIExceptionService> es; 270 270 es = do_GetService (NS_EXCEPTIONSERVICE_CONTRACTID, &rc); 271 if (NS_SUCCEEDED 271 if (NS_SUCCEEDED(rc)) 272 272 { 273 273 nsCOMPtr <nsIExceptionManager> em; 274 274 rc = es->GetCurrentExceptionManager (getter_AddRefs (em)); 275 if (NS_SUCCEEDED 275 if (NS_SUCCEEDED(rc)) 276 276 { 277 ComPtr 277 ComPtr<nsIException> ex; 278 278 if (!mErrorInfo.isNull()) 279 279 { 280 rc = mErrorInfo.queryInterfaceTo 280 rc = mErrorInfo.queryInterfaceTo(ex.asOutParam()); 281 281 AssertComRC (rc); 282 282 } … … 287 287 #endif // !defined (VBOX_WITH_XPCOM) 288 288 289 if (SUCCEEDED 289 if (SUCCEEDED(rc)) 290 290 { 291 291 mErrorInfo.setNull(); -
trunk/src/VBox/Main/glue/EventQueue.cpp
r16555 r21878 92 92 nsresult rc = NS_GetEventQueueService (getter_AddRefs (mEventQService)); 93 93 94 if (NS_SUCCEEDED 94 if (NS_SUCCEEDED(rc)) 95 95 { 96 96 rc = mEventQService->GetThreadEventQueue (NS_CURRENT_THREAD, … … 99 99 { 100 100 rc = mEventQService->CreateMonitoredThreadEventQueue(); 101 if (NS_SUCCEEDED 101 if (NS_SUCCEEDED(rc)) 102 102 { 103 103 mEQCreated = TRUE; … … 151 151 mEventQ->InitEvent (ev, this, plEventHandler, plEventDestructor); 152 152 HRESULT rc = mEventQ->PostEvent (ev); 153 return NS_SUCCEEDED 153 return NS_SUCCEEDED(rc); 154 154 155 155 #endif -
trunk/src/VBox/Main/glue/SupportErrorInfo.cpp
r20267 r21878 114 114 { 115 115 /* these are mandatory, others -- not */ 116 AssertReturn 116 AssertReturn((!aWarning && FAILED (aResultCode)) || 117 117 (aWarning && aResultCode != S_OK), 118 118 E_FAIL); 119 AssertReturn 120 AssertReturn 119 AssertReturn(aText != NULL, E_FAIL); 120 AssertReturn(*aText != '\0', E_FAIL); 121 121 122 122 /* reset the error severity bit if it's a warning */ … … 129 129 do 130 130 { 131 ComPtr 131 ComPtr<IVirtualBoxErrorInfo> info; 132 132 133 133 #if !defined (VBOX_WITH_XPCOM) 134 134 135 ComPtr 135 ComPtr<IVirtualBoxErrorInfo> curInfo; 136 136 if (preserve) 137 137 { 138 138 /* get the current error info if any */ 139 ComPtr 139 ComPtr<IErrorInfo> err; 140 140 rc = ::GetErrorInfo (0, err.asOutParam()); 141 141 CheckComRCBreakRC (rc); 142 rc = err.queryInterfaceTo 142 rc = err.queryInterfaceTo(curInfo.asOutParam()); 143 143 if (FAILED (rc)) 144 144 { 145 145 /* create a IVirtualBoxErrorInfo wrapper for the native 146 146 * IErrorInfo object */ 147 ComObjPtr 147 ComObjPtr<VirtualBoxErrorInfo> wrapper; 148 148 rc = wrapper.createObject(); 149 if (SUCCEEDED 149 if (SUCCEEDED(rc)) 150 150 { 151 151 rc = wrapper->init (err); 152 if (SUCCEEDED 152 if (SUCCEEDED(rc)) 153 153 curInfo = wrapper; 154 154 } … … 156 156 } 157 157 /* On failure, curInfo will stay null */ 158 Assert (SUCCEEDED 158 Assert (SUCCEEDED(rc) || curInfo.isNull()); 159 159 160 160 /* set the current error info and preserve the previous one if any */ … … 167 167 else 168 168 { 169 ComObjPtr 169 ComObjPtr<VirtualBoxErrorInfoGlue> infoObj; 170 170 rc = infoObj.createObject(); 171 171 CheckComRCBreakRC (rc); … … 183 183 else 184 184 { 185 ComObjPtr 185 ComObjPtr<VirtualBoxErrorInfo> infoObj; 186 186 rc = infoObj.createObject(); 187 187 CheckComRCBreakRC (rc); … … 193 193 } 194 194 195 ComPtr 196 rc = info.queryInterfaceTo 197 if (SUCCEEDED 195 ComPtr<IErrorInfo> err; 196 rc = info.queryInterfaceTo(err.asOutParam()); 197 if (SUCCEEDED(rc)) 198 198 rc = ::SetErrorInfo (0, err); 199 199 … … 202 202 nsCOMPtr <nsIExceptionService> es; 203 203 es = do_GetService (NS_EXCEPTIONSERVICE_CONTRACTID, &rc); 204 if (NS_SUCCEEDED 204 if (NS_SUCCEEDED(rc)) 205 205 { 206 206 nsCOMPtr <nsIExceptionManager> em; … … 208 208 CheckComRCBreakRC (rc); 209 209 210 ComPtr 210 ComPtr<IVirtualBoxErrorInfo> curInfo; 211 211 if (preserve) 212 212 { 213 213 /* get the current error info if any */ 214 ComPtr 214 ComPtr<nsIException> ex; 215 215 rc = em->GetCurrentException (ex.asOutParam()); 216 216 CheckComRCBreakRC (rc); 217 rc = ex.queryInterfaceTo 217 rc = ex.queryInterfaceTo(curInfo.asOutParam()); 218 218 if (FAILED (rc)) 219 219 { 220 220 /* create a IVirtualBoxErrorInfo wrapper for the native 221 221 * nsIException object */ 222 ComObjPtr 222 ComObjPtr<VirtualBoxErrorInfo> wrapper; 223 223 rc = wrapper.createObject(); 224 if (SUCCEEDED 224 if (SUCCEEDED(rc)) 225 225 { 226 226 rc = wrapper->init (ex); 227 if (SUCCEEDED 227 if (SUCCEEDED(rc)) 228 228 curInfo = wrapper; 229 229 } … … 231 231 } 232 232 /* On failure, curInfo will stay null */ 233 Assert (SUCCEEDED 233 Assert (SUCCEEDED(rc) || curInfo.isNull()); 234 234 235 235 /* set the current error info and preserve the previous one if any */ … … 242 242 else 243 243 { 244 ComObjPtr 244 ComObjPtr<VirtualBoxErrorInfoGlue> infoObj; 245 245 rc = infoObj.createObject(); 246 246 CheckComRCBreakRC (rc); … … 259 259 else 260 260 { 261 ComObjPtr 261 ComObjPtr<VirtualBoxErrorInfo> infoObj; 262 262 rc = infoObj.createObject(); 263 263 CheckComRCBreakRC (rc); … … 269 269 } 270 270 271 ComPtr 272 rc = info.queryInterfaceTo 273 if (SUCCEEDED 271 ComPtr<nsIException> ex; 272 rc = info.queryInterfaceTo(ex.asOutParam()); 273 if (SUCCEEDED(rc)) 274 274 rc = em->SetCurrentException (ex); 275 275 } … … 298 298 AssertComRC (rc); 299 299 300 return SUCCEEDED 300 return SUCCEEDED(rc) ? aResultCode : rc; 301 301 } 302 302 -
trunk/src/VBox/Main/glue/VirtualBoxErrorInfo.cpp
r21786 r21878 74 74 return E_POINTER; 75 75 76 mIID.toUtf16().cloneTo 76 mIID.toUtf16().cloneTo(aIID); 77 77 return S_OK; 78 78 } … … 83 83 return E_POINTER; 84 84 85 mComponent.cloneTo 85 mComponent.cloneTo(aComponent); 86 86 return S_OK; 87 87 } … … 92 92 return E_POINTER; 93 93 94 mText.cloneTo 94 mText.cloneTo(aText); 95 95 return S_OK; 96 96 } … … 102 102 103 103 /* this will set aNext to NULL if mNext is null */ 104 return mNext.queryInterfaceTo 104 return mNext.queryInterfaceTo(aNext); 105 105 } 106 106 … … 113 113 HRESULT VirtualBoxErrorInfo::init (IErrorInfo *aInfo) 114 114 { 115 AssertReturn 115 AssertReturn(aInfo, E_FAIL); 116 116 117 117 HRESULT rc = S_OK; … … 172 172 HRESULT VirtualBoxErrorInfo::init (nsIException *aInfo) 173 173 { 174 AssertReturn 174 AssertReturn(aInfo, E_FAIL); 175 175 176 176 HRESULT rc = S_OK; … … 200 200 return NS_ERROR_INVALID_POINTER; 201 201 202 Utf8Str (mText).cloneTo 202 Utf8Str (mText).cloneTo(aMessage); 203 203 return S_OK; 204 204 } … … 250 250 NS_IMETHODIMP VirtualBoxErrorInfo::GetInner (nsIException **aInner) 251 251 { 252 ComPtr 252 ComPtr<IVirtualBoxErrorInfo> info; 253 253 nsresult rv = COMGETTER(Next) (info.asOutParam()); 254 CheckComRCReturnRC 255 return info.queryInterfaceTo 254 CheckComRCReturnRC(rv); 255 return info.queryInterfaceTo(aInner); 256 256 } 257 257 … … 289 289 IVirtualBoxErrorInfo *aTail) 290 290 { 291 AssertReturn 292 AssertReturn 291 AssertReturn(aHead != NULL, E_INVALIDARG); 292 AssertReturn(aTail != NULL, E_INVALIDARG); 293 293 294 294 HRESULT rc = S_OK; 295 295 296 typedef std::list <ComPtr 296 typedef std::list <ComPtr<IVirtualBoxErrorInfo> > List; 297 297 List list; 298 298 299 ComPtr 299 ComPtr<IVirtualBoxErrorInfo> cur = aHead; 300 300 301 301 do 302 302 { 303 ComPtr 303 ComPtr<IVirtualBoxErrorInfo> next; 304 304 rc = cur->COMGETTER(Next) (next.asOutParam()); 305 CheckComRCReturnRC 305 CheckComRCReturnRC(rc); 306 306 307 307 if (next.isNull()) … … 323 323 for (List::iterator it = list.end(), prev = it; it != list.begin(); -- it) 324 324 { 325 ComObjPtr 325 ComObjPtr<VirtualBoxErrorInfoGlue> wrapper; 326 326 rc = wrapper.createObject(); 327 327 CheckComRCBreakRC (rc); … … 354 354 IVirtualBoxErrorInfo *aNext) 355 355 { 356 AssertReturn 356 AssertReturn(aReal != NULL, E_INVALIDARG); 357 357 358 358 mReal = aReal; … … 371 371 372 372 /* this will set aNext to NULL if mNext is null */ 373 return mNext.queryInterfaceTo 373 return mNext.queryInterfaceTo(aNext); 374 374 } 375 375 -
trunk/src/VBox/Main/glue/com.cpp
r13908 r21878 113 113 nsCOMPtr <nsIInterfaceInfoManager> iim = 114 114 do_GetService (NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID, &rv); 115 if (NS_SUCCEEDED 115 if (NS_SUCCEEDED(rv)) 116 116 { 117 117 nsCOMPtr <nsIInterfaceInfo> iinfo; 118 118 rv = iim->GetInfoForIID (&aIID, getter_AddRefs (iinfo)); 119 if (NS_SUCCEEDED 119 if (NS_SUCCEEDED(rv)) 120 120 { 121 121 const char *iname = NULL; 122 122 iinfo->GetNameShared (&iname); 123 123 char *utf8IName = NULL; 124 if (RT_SUCCESS 124 if (RT_SUCCESS(RTStrCurrentCPToUtf8 (&utf8IName, iname))) 125 125 { 126 126 PRTUTF16 utf16IName = NULL; 127 if (RT_SUCCESS 127 if (RT_SUCCESS(RTStrToUtf16 (utf8IName, &utf16IName))) 128 128 { 129 129 *aName = SysAllocString ((OLECHAR *) utf16IName); … … 140 140 int GetVBoxUserHomeDirectory (char *aDir, size_t aDirLen) 141 141 { 142 AssertReturn 143 AssertReturn 142 AssertReturn(aDir, VERR_INVALID_POINTER); 143 AssertReturn(aDirLen > 0, VERR_BUFFER_OVERFLOW); 144 144 145 145 /* start with null */ … … 156 156 char *VBoxUserHomeUtf8 = NULL; 157 157 vrc = RTStrCurrentCPToUtf8 (&VBoxUserHomeUtf8, VBoxUserHome); 158 if (RT_SUCCESS 158 if (RT_SUCCESS(vrc)) 159 159 { 160 160 vrc = RTPathAbs (VBoxUserHomeUtf8, path, sizeof (path)); 161 if (RT_SUCCESS 161 if (RT_SUCCESS(vrc)) 162 162 { 163 163 if (aDirLen < strlen (path) + 1) … … 173 173 /* compose the config directory (full path) */ 174 174 vrc = RTPathUserHome (path, sizeof (path)); 175 if (RT_SUCCESS 175 if (RT_SUCCESS(vrc)) 176 176 { 177 177 size_t len = … … 184 184 185 185 /* ensure the home directory exists */ 186 if (RT_SUCCESS 186 if (RT_SUCCESS(vrc)) 187 187 if (!RTDirExists (aDir)) 188 188 vrc = RTDirCreateFullPath (aDir, 0777); -
trunk/src/VBox/Main/glue/initterm.cpp
r18831 r21878 133 133 const char *aCurrProcDirLocation) 134 134 { 135 AssertReturn 136 AssertReturn 135 AssertReturn(aCompRegLocation, NS_ERROR_INVALID_ARG); 136 AssertReturn(aXPTIDatLocation, NS_ERROR_INVALID_ARG); 137 137 138 138 int vrc = RTStrUtf8ToCurrentCP (&mCompRegLocation, aCompRegLocation); 139 if (RT_SUCCESS 139 if (RT_SUCCESS(vrc)) 140 140 vrc = RTStrUtf8ToCurrentCP (&mXPTIDatLocation, aXPTIDatLocation); 141 if (RT_SUCCESS 141 if (RT_SUCCESS(vrc) && aComponentDirLocation) 142 142 vrc = RTStrUtf8ToCurrentCP (&mComponentDirLocation, aComponentDirLocation); 143 if (RT_SUCCESS 143 if (RT_SUCCESS(vrc) && aCurrProcDirLocation) 144 144 vrc = RTStrUtf8ToCurrentCP (&mCurrProcDirLocation, aCurrProcDirLocation); 145 145 146 return RT_SUCCESS 146 return RT_SUCCESS(vrc) ? NS_OK : NS_ERROR_OUT_OF_MEMORY; 147 147 } 148 148 … … 326 326 rc = NS_GetMainEventQ (getter_AddRefs (eventQ)); 327 327 328 if (NS_SUCCEEDED 328 if (NS_SUCCEEDED(rc)) 329 329 { 330 330 PRBool isOnMainThread = PR_FALSE; 331 331 rc = eventQ->IsOnCurrentThread (&isOnMainThread); 332 if (NS_SUCCEEDED 332 if (NS_SUCCEEDED(rc) && isOnMainThread) 333 333 ++ gXPCOMInitCount; 334 334 } … … 395 395 vrc = RTPathAppPrivateArch (appHomeDir, sizeof (appHomeDir)); 396 396 AssertRC (vrc); 397 if (RT_FAILURE 397 if (RT_FAILURE(vrc)) 398 398 { 399 399 rc = NS_ERROR_FAILURE; … … 431 431 char *appDirCP = NULL; 432 432 vrc = RTStrUtf8ToCurrentCP (&appDirCP, appHomeDir); 433 if (RT_SUCCESS 433 if (RT_SUCCESS(vrc)) 434 434 { 435 435 nsCOMPtr <nsILocalFile> file; 436 436 rc = NS_NewNativeLocalFile (nsEmbedCString (appDirCP), 437 437 PR_FALSE, getter_AddRefs (file)); 438 if (NS_SUCCEEDED 438 if (NS_SUCCEEDED(rc)) 439 439 appDir = do_QueryInterface (file, &rc); 440 440 … … 452 452 char *pathCP = NULL; 453 453 vrc = RTStrUtf8ToCurrentCP (&pathCP, appHomeDir); 454 if (RT_SUCCESS 454 if (RT_SUCCESS(vrc)) 455 455 { 456 456 vrc = RTEnvSet ("VBOX_XPCOM_HOME", pathCP); … … 466 466 appDir, dsProv); 467 467 468 if (NS_SUCCEEDED 468 if (NS_SUCCEEDED(rc)) 469 469 { 470 470 nsCOMPtr <nsIComponentRegistrar> registrar = 471 471 do_QueryInterface (serviceManager, &rc); 472 if (NS_SUCCEEDED 472 if (NS_SUCCEEDED(rc)) 473 473 { 474 474 rc = registrar->AutoRegister (nsnull); 475 if (NS_SUCCEEDED 475 if (NS_SUCCEEDED(rc)) 476 476 { 477 477 /* We succeeded, stop probing paths */ … … 513 513 rc = NS_GetMainEventQ (getter_AddRefs (eventQ)); 514 514 515 if (NS_SUCCEEDED 515 if (NS_SUCCEEDED(rc) || rc == NS_ERROR_NOT_AVAILABLE) 516 516 { 517 517 /* NS_ERROR_NOT_AVAILABLE seems to mean that … … 523 523 524 524 PRBool isOnMainThread = PR_FALSE; 525 if (NS_SUCCEEDED 525 if (NS_SUCCEEDED(rc)) 526 526 { 527 527 rc = eventQ->IsOnCurrentThread (&isOnMainThread); … … 534 534 } 535 535 536 if (NS_SUCCEEDED 536 if (NS_SUCCEEDED(rc) && isOnMainThread) 537 537 { 538 538 /* only the main thread needs to uninitialize XPCOM and only if
Note:
See TracChangeset
for help on using the changeset viewer.