From 4e58aa129c384884d3b9863ac62859e75c1a8b4b Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Sun, 20 Jan 2013 16:15:48 +0000 Subject: - Another portion of _T replacement (patch from person) git-svn-id: http://svn.miranda-ng.org/main/trunk@3191 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Msg_Export/src/FileViewer.cpp | 18 ++++++++--------- plugins/Msg_Export/src/Glob.h | 2 +- plugins/Msg_Export/src/main.cpp | 30 +++++++++++++-------------- plugins/Msg_Export/src/options.cpp | 38 +++++++++++++++++------------------ plugins/Msg_Export/src/utils.cpp | 37 +++++++++++++++++----------------- 5 files changed, 62 insertions(+), 63 deletions(-) (limited to 'plugins/Msg_Export') diff --git a/plugins/Msg_Export/src/FileViewer.cpp b/plugins/Msg_Export/src/FileViewer.cpp index 39ee4305c0..065a4b5f32 100755 --- a/plugins/Msg_Export/src/FileViewer.cpp +++ b/plugins/Msg_Export/src/FileViewer.cpp @@ -234,7 +234,7 @@ int CLStreamRTFInfo::nWriteHeader( char * pszTarget , int nLen ) if( nSrcLen > nLen ) { - MessageBox( NULL , LPGENT("Failed to write to the RichEdit the buffer was to small."),MSG_BOX_TITEL,MB_OK ); + MessageBox( NULL , TranslateT("Failed to write to the RichEdit the buffer was to small."), MSG_BOX_TITEL, MB_OK ); return 0; // target buffer to small } @@ -267,7 +267,7 @@ int CLStreamRTFInfo::nLoadFileStream( LPBYTE pbBuff , LONG cb ) if( nOptimalReadLen < 500 ) { - MessageBox( NULL , LPGENT("Error: Optimal buffer size decrecied to a to low size !!"),MSG_BOX_TITEL,MB_OK ); + MessageBox( NULL , TranslateT("Error: Optimal buffer size decrecied to a to low size !!"), MSG_BOX_TITEL, MB_OK ); return 0; } @@ -357,7 +357,7 @@ int CLStreamRTFInfo::nLoadFileStream( LPBYTE pbBuff , LONG cb ) LONG lExtraRead = (n+1) - dwRead; if( lExtraRead >= 0 ) - MessageBox( NULL , LPGENT("Internal error !! (lExtraRead >= 0)"),MSG_BOX_TITEL,MB_OK ); + MessageBox( NULL , TranslateT("Internal error !! (lExtraRead >= 0)"), MSG_BOX_TITEL, MB_OK ); SetFilePointer( hFile , lExtraRead , NULL , FILE_CURRENT ); bCheckFirstForNick = true; return dwCurrent; @@ -677,9 +677,9 @@ bool bLoadFile( HWND hwndDlg , CLHistoryDlg * pclDlg ) DWORD dwStart = GetTickCount(); HWND hRichEdit = GetDlgItem( hwndDlg , IDC_RICHEDIT ); - if( ! hRichEdit ) + if( !hRichEdit ) { - MessageBox( hwndDlg , LPGENT("Failed to get handle to RichEdit!"),MSG_BOX_TITEL,MB_OK ); + MessageBox( hwndDlg , TranslateT("Failed to get handle to RichEdit!"), MSG_BOX_TITEL, MB_OK ); return false; } @@ -770,7 +770,7 @@ bool bLoadFile( HWND hwndDlg , CLHistoryDlg * pclDlg ) //delete [] pabFileData; _TCHAR szTmp[100]; - mir_sntprintf( szTmp , 99, LPGENT("File open time %d\n") , GetTickCount() - dwStart ); + mir_sntprintf( szTmp , 99, _T("File open time %d\n") , GetTickCount() - dwStart ); OutputDebugString( szTmp ); @@ -944,7 +944,7 @@ LRESULT CALLBACK EditSubclassProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP res = (int)SendMessage(hwnd, EM_FINDTEXTW, (WPARAM)fr->Flags,(LPARAM)&ft); if(res == -1) { - MessageBox( hwnd , LPGENT("Search string was not found !"),MSG_BOX_TITEL,MB_OK ); + MessageBox( hwnd , TranslateT("Search string was not found !"), MSG_BOX_TITEL, MB_OK ); return 0; } } @@ -1276,12 +1276,12 @@ static INT_PTR CALLBACK DlgProcFileViewer(HWND hwndDlg, UINT msg, WPARAM wParam, LRESULT nWriteOk = SendMessage(hRichEdit, EM_STREAMOUT, (WPARAM)SF_RTF , (LPARAM)&eds); if( nWriteOk <= 0 || eds.dwError != 0 ) { - DisplayLastError( LPGENT("Failed to save file") ); + DisplayLastError( TranslateT("Failed to save file") ); CloseHandle( hFile ); return TRUE; } CloseHandle( hFile ); - tstring sReport = LPGENT("History was saved successfully in file\r\n"); + tstring sReport = TranslateT("History was saved successfully in file\r\n"); sReport += sFile; MessageBox( NULL , sReport.c_str() ,MSG_BOX_TITEL ,MB_OK ); return TRUE; diff --git a/plugins/Msg_Export/src/Glob.h b/plugins/Msg_Export/src/Glob.h index ec898ac3f1..2fba4e868d 100755 --- a/plugins/Msg_Export/src/Glob.h +++ b/plugins/Msg_Export/src/Glob.h @@ -22,7 +22,7 @@ #include #define MODULE "Msg_Export" -#define MSG_BOX_TITEL _T("Miranda (Msg_Export.dll)") +#define MSG_BOX_TITEL TranslateT("Miranda NG (Message Export Plugin)") extern HINSTANCE hInstance; diff --git a/plugins/Msg_Export/src/main.cpp b/plugins/Msg_Export/src/main.cpp index a2a5c63789..15b43dab30 100755 --- a/plugins/Msg_Export/src/main.cpp +++ b/plugins/Msg_Export/src/main.cpp @@ -171,17 +171,17 @@ int MainInit(WPARAM /*wparam*/,LPARAM /*lparam*/) hDBEventAdded = HookEvent( ME_DB_EVENT_ADDED , nExportEvent ); if( !hDBEventAdded ) - MessageBox( NULL , LPGENT("Failed to HookEvent ME_DB_EVENT_ADDED") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to HookEvent ME_DB_EVENT_ADDED"), MSG_BOX_TITEL, MB_OK ); - hDBContactDeleted = HookEvent( ME_DB_CONTACT_DELETED , nContactDeleted ); + hDBContactDeleted = HookEvent(ME_DB_CONTACT_DELETED , nContactDeleted ); if( !hDBContactDeleted ) - MessageBox( NULL , LPGENT("Failed to HookEvent ME_DB_CONTACT_DELETED") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to HookEvent ME_DB_CONTACT_DELETED"), MSG_BOX_TITEL, MB_OK ); - hEventOptionsInitialize = HookEvent( ME_OPT_INITIALISE , OptionsInitialize ); + hEventOptionsInitialize = HookEvent(ME_OPT_INITIALISE, OptionsInitialize ); if( !hEventOptionsInitialize ) - MessageBox( NULL , LPGENT("Failed to HookEvent ME_OPT_INITIALISE") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to HookEvent ME_OPT_INITIALISE"), MSG_BOX_TITEL, MB_OK ); @@ -197,7 +197,7 @@ int MainInit(WPARAM /*wparam*/,LPARAM /*lparam*/) hOpenHistoryMenuItem = Menu_AddContactMenuItem(&mi); if( !hOpenHistoryMenuItem ) - MessageBox( NULL , LPGENT("Failed to add menu item Open Exported History\nCallService(MS_CLIST_ADDCONTACTMENUITEM,...)") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to add menu item Open Exported History\nCallService(MS_CLIST_ADDCONTACTMENUITEM,...)"), MSG_BOX_TITEL, MB_OK ); } @@ -205,7 +205,7 @@ int MainInit(WPARAM /*wparam*/,LPARAM /*lparam*/) hEventSystemShutdown = HookEvent( ME_SYSTEM_SHUTDOWN , nSystemShutdown ); if( !hEventSystemShutdown ) - MessageBox( NULL , _T("Failed to HookEvent ME_SYSTEM_SHUTDOWN") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to HookEvent ME_SYSTEM_SHUTDOWN"), MSG_BOX_TITEL, MB_OK ); /* @@ -307,7 +307,7 @@ int __declspec(dllexport)Load() if( !hEventSystemInit ) { - MessageBox( NULL , LPGENT("Failed to HookEvent ME_SYSTEM_MODULESLOADED") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to HookEvent ME_SYSTEM_MODULESLOADED"), MSG_BOX_TITEL, MB_OK); return 0; } @@ -332,7 +332,7 @@ int __declspec(dllexport)Load() enDeleteAction = (ENDialogAction)db_get_b( NULL , MODULE , "DeleteAction" , enDeleteAction );; // Plugin sweeper support - db_set_ts(NULL,"Uninstall","Message Export",_T(MODULE)); + db_set_ts(NULL, "Uninstall", "Message Export", _T(MODULE)); if( bReplaceHistory ) { @@ -351,18 +351,18 @@ int __declspec(dllexport)Load() } }*/ - if( ! hServiceFunc ) - MessageBox( NULL , LPGENT("Failed to replace Miranda History.\r\nThis is most likely due to changes in Miranda.") , MSG_BOX_TITEL , MB_OK ); + if( !hServiceFunc ) + MessageBox(NULL, TranslateT("Failed to replace Miranda History.\r\nThis is most likely due to changes in Miranda."), MSG_BOX_TITEL, MB_OK); } - if( ! hServiceFunc ) + if( !hServiceFunc ) { - hServiceFunc = CreateServiceFunction(MS_SHOW_EXPORT_HISTORY,ShowExportHistory); + hServiceFunc = CreateServiceFunction(MS_SHOW_EXPORT_HISTORY, ShowExportHistory); } - if( ! hServiceFunc ) + if( !hServiceFunc ) { - MessageBox( NULL , LPGENT("Failed to CreateServiceFunction MS_SHOW_EXPORT_HISTORY") , MSG_BOX_TITEL , MB_OK ); + MessageBox(NULL, _T("Failed to CreateServiceFunction MS_SHOW_EXPORT_HISTORY"), MSG_BOX_TITEL, MB_OK); } hInternalWindowList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST,0,0); diff --git a/plugins/Msg_Export/src/options.cpp b/plugins/Msg_Export/src/options.cpp index b2ba1478eb..0e015acaab 100755 --- a/plugins/Msg_Export/src/options.cpp +++ b/plugins/Msg_Export/src/options.cpp @@ -225,23 +225,23 @@ int nExportCompleatList(HWND hParent , bool bOnlySelected ) if( !hMapUser || nContacts <= 0 ) { - MessageBox( hParent , LPGENT("No contacts found to export"),MSG_BOX_TITEL,MB_OK ); + MessageBox(hParent, TranslateT("No contacts found to export"), MSG_BOX_TITEL, MB_OK); return 0; } - HWND hDlg = CreateDialog( hInstance, MAKEINTRESOURCE( IDD_EXPORT_ALL_DLG ) , hParent , DialogProc ); - HWND hProg = GetDlgItem( hDlg , IDC_EXPORT_PROGRESS ); - HWND hStatus = GetDlgItem( hDlg , IDC_EXP_ALL_STATUS ); + HWND hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_EXPORT_ALL_DLG), hParent , DialogProc); + HWND hProg = GetDlgItem(hDlg, IDC_EXPORT_PROGRESS ); + HWND hStatus = GetDlgItem(hDlg, IDC_EXP_ALL_STATUS ); - SendMessage( hProg , PBM_SETRANGE , 0 , MAKELPARAM( 0 , nContacts ) ); + SendMessage(hProg, PBM_SETRANGE, 0, MAKELPARAM(0, nContacts)); - SetWindowText( hStatus , LPGENT("Reading database information ( Phase 1 of 2 )") ); + SetWindowText(hStatus, TranslateT("Reading database information (Phase 1 of 2)")); { // position and show proigrassbar dialog RECT rParrent; RECT rDlg; - if( GetWindowRect( hParent , &rParrent ) && GetWindowRect( hDlg , &rDlg ) ) + if (GetWindowRect( hParent , &rParrent ) && GetWindowRect( hDlg , &rDlg ) ) { int x = ( (rParrent.right + rParrent.left) / 2 ) - ( (rDlg.right - rDlg.left) / 2 ); int y = ( (rParrent.bottom + rParrent.top) / 2 ) - ( (rDlg.bottom - rDlg.top) / 2 ); @@ -267,9 +267,9 @@ int nExportCompleatList(HWND hParent , bool bOnlySelected ) } sItem.iItem = nCur; - if( ! ListView_GetItem( hMapUser, &sItem ) ) + if(!ListView_GetItem(hMapUser, &sItem)) { - MessageBox( hParent , LPGENT("Failed to export at least one contact"),MSG_BOX_TITEL,MB_OK ); + MessageBox(hParent, TranslateT("Failed to export at least one contact"), MSG_BOX_TITEL, MB_OK); continue; } @@ -404,11 +404,11 @@ BOOL bApplyChanges( HWND hwndDlg ) BOOL bRet = true; _TCHAR szTemp[500]; - int nTmp = GetDlgItemInt( hwndDlg , IDC_MAX_CLOUMN_WIDTH , &bTrans , TRUE ); - if( !bTrans || nTmp < 5 ) + int nTmp = GetDlgItemInt(hwndDlg, IDC_MAX_CLOUMN_WIDTH, &bTrans, TRUE ); + if ( !bTrans || nTmp < 5 ) { - _sntprintf( szTemp , sizeof( szTemp ) ,LPGENT("Max line width must be at least %d"), 5 ); - MessageBox( hwndDlg , szTemp ,MSG_BOX_TITEL,MB_OK ); + _sntprintf(szTemp, sizeof(szTemp), _T("Max line width must be at least %d"), 5); + MessageBox(hwndDlg, szTemp, MSG_BOX_TITEL, MB_OK); bRet = false; } else @@ -434,7 +434,7 @@ BOOL bApplyChanges( HWND hwndDlg ) if( bReplaceHistory != bNewRp ) { bReplaceHistory = bNewRp; - MessageBox( hwndDlg , LPGENT("You need to restart miranda to change the history function") ,MSG_BOX_TITEL,MB_OK ); + MessageBox(hwndDlg, TranslateT("You need to restart miranda to change the history function"), MSG_BOX_TITEL, MB_OK ); } bAppendNewLine = IsDlgButtonChecked( hwndDlg , IDC_APPEND_NEWLINE ) == BST_CHECKED; @@ -649,7 +649,7 @@ void OpenHelp(HWND hwndDlg) } } - MessageBox( hwndDlg , LPGENT("Failed to get the path to Msg_Export.dll\nPlease locate Msg_Export.txt your self"),MSG_BOX_TITEL,MB_OK ); + MessageBox(hwndDlg, TranslateT("Failed to get the path to Msg_Export.dll\nPlease locate Msg_Export.txt your self"), MSG_BOX_TITEL, MB_OK); } ///////////////////////////////////////////////////////////////////// @@ -739,7 +739,7 @@ static INT_PTR CALLBACK DlgProcMsgExportOpts(HWND hwndDlg, UINT msg, WPARAM wPar sItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; sItem.iItem = nUser; sItem.iSubItem = 0; - sItem.iImage = db_get_b(hContact,MODULE,"EnableLog",1); + sItem.iImage = db_get_b(hContact,MODULE, "EnableLog", 1); sItem.lParam = (LPARAM) hContact; @@ -850,7 +850,7 @@ static INT_PTR CALLBACK DlgProcMsgExportOpts(HWND hwndDlg, UINT msg, WPARAM wPar { if( bUnaplyedChanges ) { - DWORD res = MessageBox( hwndDlg , LPGENT("You have unapplyed changes do you wish to apply these first ?"),MSG_BOX_TITEL,MB_YESNOCANCEL ); + DWORD res = MessageBox(hwndDlg, TranslateT("You have unapplyed changes do you wish to apply these first ?"), MSG_BOX_TITEL, MB_YESNOCANCEL); if( res == IDCANCEL ) return TRUE; if( res == IDYES ) @@ -982,7 +982,7 @@ static INT_PTR CALLBACK DlgProcMsgExportOpts(HWND hwndDlg, UINT msg, WPARAM wPar // Get the shells allocator if (FAILED(SHGetMalloc(&pMalloc))) // we need to use this to support old Windows versions { - MessageBox( hwndDlg , LPGENT("Failed to get the shells allocator !"),MSG_BOX_TITEL,MB_OK ); + MessageBox(hwndDlg, _T("Failed to get the shells allocator!"), MSG_BOX_TITEL, MB_OK); return TRUE; // TRUE because we have handled the message , sort of *S* } @@ -991,7 +991,7 @@ static INT_PTR CALLBACK DlgProcMsgExportOpts(HWND hwndDlg, UINT msg, WPARAM wPar if ( ! lpDestDir ) { pMalloc->Release(); - MessageBox( hwndDlg , LPGENT("Failed to Allocate buffer space"),MSG_BOX_TITEL,MB_OK ); + MessageBox(hwndDlg , _T("Failed to Allocate buffer space"), MSG_BOX_TITEL, MB_OK); return TRUE; } diff --git a/plugins/Msg_Export/src/utils.cpp b/plugins/Msg_Export/src/utils.cpp index 134f53ae3d..cad4fd01a5 100755 --- a/plugins/Msg_Export/src/utils.cpp +++ b/plugins/Msg_Export/src/utils.cpp @@ -130,7 +130,7 @@ void ShowDebugInfo() sDebug += _T("\r\nGetFilePathFromUser( NULL ) :"); sDebug += GetFilePathFromUser( NULL ); - MessageBox( NULL , sDebug.c_str() ,MSG_BOX_TITEL,MB_OK ); + MessageBox(NULL, sDebug.c_str(), MSG_BOX_TITEL, MB_OK); } @@ -244,10 +244,10 @@ void DisplayLastError(const _TCHAR * pszError) DWORD error = GetLastError(); _TCHAR szTemp[50]; - _sntprintf( szTemp , sizeof( szTemp ) , LPGENT("\r\nErrorCode : %d\r\n") , error ); + _sntprintf(szTemp, sizeof(szTemp), _T("\r\nErrorCode: %d\r\n"), error); sError += szTemp; sError += sGetErrorString(error); - MessageBox( NULL , sError.c_str() ,MSG_BOX_TITEL ,MB_OK ); + MessageBox(NULL, sError.c_str(), MSG_BOX_TITEL, MB_OK); } @@ -297,7 +297,7 @@ tstring _DBGetStringW(HANDLE hContact,const char *szModule,const char *szSetting { if( dbv.type != DBVT_WCHAR) { - MessageBox(NULL, LPGENT("DB: Attempt to get wrong type of value, string"), MSG_BOX_TITEL,MB_OK); + MessageBox(NULL, TranslateT("DB: Attempt to get wrong type of value, string"), MSG_BOX_TITEL, MB_OK); ret = pszError; } else @@ -319,7 +319,7 @@ string _DBGetStringA(HANDLE hContact,const char *szModule,const char *szSetting { if( dbv.type != DBVT_ASCIIZ) { - MessageBox(NULL, LPGENT("DB: Attempt to get wrong type of value, string"), MSG_BOX_TITEL,MB_OK); + MessageBox(NULL, TranslateT("DB: Attempt to get wrong type of value, string"), MSG_BOX_TITEL, MB_OK); ret = pszError; } else @@ -663,11 +663,11 @@ tstring GetFilePathFromUser( HANDLE hContact ) { tstring sRemoteUser = NickFromHandle(hContact); _sntprintf( szTemp , sizeof( szTemp ) , - LPGENT("File name for the user \"%s\" has changed !\n\nfrom:\t%s\nto:\t%s\n\nDo you wish to rename file ?"), + TranslateT("File name for the user \"%s\" has changed!\n\nfrom:\t%s\nto:\t%s\n\nDo you wish to rename file?"), sRemoteUser.c_str(), sPrevFileName.c_str(), sFilePath.c_str() ); - bTryRename = MessageBox( NULL , szTemp ,MSG_BOX_TITEL ,MB_YESNO ) == IDYES; + bTryRename = MessageBox(NULL, szTemp, MSG_BOX_TITEL, MB_YESNO ) == IDYES; } else bTryRename = true; @@ -684,12 +684,12 @@ tstring GetFilePathFromUser( HANDLE hContact ) while( ! MoveFile( sPrevFileName.c_str(), sFilePath.c_str() ) ) { _sntprintf( szTemp , sizeof( szTemp ) , - LPGENT("Failed to rename file\n\nfrom:\t%s\nto:\t%s\n\nFailed with error: %s"), + TranslateT("Failed to rename file\n\nfrom:\t%s\nto:\t%s\n\nFailed with error: %s"), sPrevFileName.c_str(), sFilePath.c_str() , sGetErrorString().c_str() ); - if( MessageBox( NULL , szTemp ,MSG_BOX_TITEL,MB_RETRYCANCEL ) != IDRETRY ) + if( MessageBox(NULL, szTemp, MSG_BOX_TITEL, MB_RETRYCANCEL) != IDRETRY) break; } } @@ -944,14 +944,13 @@ void UpdateFileToColWidth() void DisplayErrorDialog( const _TCHAR * pszError , tstring& sFilePath , DBEVENTINFO * dbei ) { - tstring sError = TranslateTS( pszError ); + tstring sError = TranslateTS(pszError); sError += sFilePath; - sError += LPGENT("\nError :"); + sError += TranslateT("\nError: "); sError += sGetErrorString(); - sError += _T("\n"); - sError += LPGENT("Message has not been saved !\n"); - sError += LPGENT("Do you wish to save debug information ?"); - if( MessageBox( NULL , sError.c_str() ,MSG_BOX_TITEL,MB_YESNO ) == IDYES ) + sError += TranslateT("\nMessage has not been saved!\n"); + sError += TranslateT("Do you wish to save debug information?"); + if( MessageBox(NULL, sError.c_str(), MSG_BOX_TITEL, MB_YESNO) == IDYES) { OPENFILENAME ofn; // common dialog box structure _TCHAR szFile[260]; // buffer for file name @@ -963,7 +962,7 @@ void DisplayErrorDialog( const _TCHAR * pszError , tstring& sFilePath , DBEVENTI //ofn.hwndOwner = NULL; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); - ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0\0"); + ofn.lpstrFilter = TranslateT("All\0*.*\0Text\0*.TXT\0\0"); ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; @@ -1589,7 +1588,7 @@ SuperBreak: if( pszPrev == pszSrc ) { // this is an programming error we have not moved forward in string - MessageBox( NULL , LPGENT("Programming error on line __LINE__ please report this") ,MSG_BOX_TITEL,MB_OK ); + MessageBox(NULL, _T("Programming error on line __LINE__ please report this"), MSG_BOX_TITEL, MB_OK); break; } } @@ -1652,10 +1651,10 @@ int nContactDeleted(WPARAM wparam,LPARAM /*lparam*/) _TCHAR szTemp[500]; _sntprintf( szTemp , sizeof( szTemp ) , _T("%s\r\n%s") , - LPGENT("User has been deleted do you want to delete the file ?"), sFilePath.c_str() ); + TranslateT("User has been deleted do you want to delete the file?"), sFilePath.c_str()); if( enDeleteAction == eDAAutomatic || - MessageBox( NULL , szTemp ,MSG_BOX_TITEL,MB_YESNO ) == IDYES ) + MessageBox(NULL, szTemp, MSG_BOX_TITEL, MB_YESNO ) == IDYES ) { if( ! DeleteFile( sFilePath.c_str() ) ) { -- cgit v1.2.3