From 4b99b5b4abad1cf12ac5c7bbb8788899ba6a48ab Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 9 Jul 2018 13:03:28 +0300 Subject: massive Variables-related code cleaning (removed TCHAR, manually created unions replaced with MAllString etc) --- plugins/BossKeyPlus/src/BossKey.cpp | 4 +- plugins/ExternalAPI/m_variables.h | 436 ++++++++++++--------------- plugins/ListeningTo/src/listeningto.cpp | 40 +-- plugins/NewAwaySysMod/src/AwaySys.cpp | 26 +- plugins/SimpleStatusMsg/src/main.cpp | 8 +- plugins/SpellChecker/src/autoreplace.cpp | 4 +- plugins/StopSpamMod/src/utilities.cpp | 24 +- plugins/StopSpamPlus/src/utils.cpp | 11 +- plugins/TrafficCounter/src/vars.cpp | 54 ++-- plugins/Variables/src/help.cpp | 52 ++-- plugins/Variables/src/parse_alias.cpp | 10 +- plugins/Variables/src/parse_inet.cpp | 8 +- plugins/Variables/src/parse_logic.cpp | 60 ++-- plugins/Variables/src/parse_math.cpp | 38 +-- plugins/Variables/src/parse_metacontacts.cpp | 6 +- plugins/Variables/src/parse_miranda.cpp | 66 ++-- plugins/Variables/src/parse_regexp.cpp | 12 +- plugins/Variables/src/parse_str.cpp | 219 +++++++------- plugins/Variables/src/parse_system.cpp | 90 +++--- plugins/Variables/src/parse_variables.cpp | 10 +- plugins/Variables/src/stdafx.h | 13 +- plugins/Variables/src/tokenregister.cpp | 40 +-- plugins/Variables/src/variables.cpp | 107 +++---- 23 files changed, 626 insertions(+), 712 deletions(-) (limited to 'plugins') diff --git a/plugins/BossKeyPlus/src/BossKey.cpp b/plugins/BossKeyPlus/src/BossKey.cpp index 486132ee28..01b2d15ea0 100644 --- a/plugins/BossKeyPlus/src/BossKey.cpp +++ b/plugins/BossKeyPlus/src/BossKey.cpp @@ -662,8 +662,8 @@ static int MirandaLoaded(WPARAM, LPARAM) tr.memType = TR_MEM_OWNER; tr.flags = TRF_FIELD | TRF_TCHAR | TRF_PARSEFUNC; - tr.tszTokenString = L"bosskeyname"; - tr.parseFunctionT = VariablesBossKey; + tr.szTokenString.w = L"bosskeyname"; + tr.parseFunctionW = VariablesBossKey; tr.szHelpText = LPGEN("BossKey") "\t" LPGEN("get the BossKey name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); } diff --git a/plugins/ExternalAPI/m_variables.h b/plugins/ExternalAPI/m_variables.h index 0e015f7ce6..3a7605c118 100644 --- a/plugins/ExternalAPI/m_variables.h +++ b/plugins/ExternalAPI/m_variables.h @@ -1,39 +1,35 @@ /* - Variables Plugin for Miranda-IM (www.miranda-im.org) - Copyright 2003-2006 P. Boon - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Variables Plugin for Miranda-IM (www.miranda-im.org) + Copyright 2003-2006 P. Boon + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __M_VARS #define __M_VARS -#if !defined(_TCHAR_DEFINED) - #include -#endif - #if !defined(M_CORE_H__) - #include +#include #endif #ifndef VARIABLES_NOHELPER - #include +#include #endif #ifndef _countof - #include +#include #endif // -------------------------------------------------------------------------- @@ -61,48 +57,27 @@ // Note: The returned pointer needs to be freed using mir_free(). -typedef struct { - int cbSize; // Set this to sizeof(FORMATINFO). - int flags; // Flags to use (see FIF_* below). - union { - char *szFormat; // Text in which the tokens will be replaced (can't be - // NULL). - WCHAR *wszFormat; - TCHAR *tszFormat; - }; - union { - char *szExtraText; // Extra, context-specific string (can be NULL) -> - // The field "extratext" will be replaced by this - // string. (Previously szSource). - WCHAR *wszExtraText; - TCHAR *tszExtraText; - }; - MCONTACT hContact; // Handle to contact (can be NULL) -> The field "subject" - // represents this contact. - int pCount; // (output) Number of succesful parsed tokens, needs to be set - // to 0 before the call - int eCount; // (output) Number of failed tokens, needs to be set to 0 - // before the call - union { - char **szaTemporaryVars; // Temporary variables valid only in the duration of the format call - TCHAR **tszaTemporaryVars; // By pos: [i] is var name, [i + 1] is var value - WCHAR **wszaTemporaryVars; - }; - int cbTemporaryVarsSize; // Number of elements in szaTemporaryVars array - -} FORMATINFO; - -#define FORMATINFOV2_SIZE (sizeof(int)*4+sizeof(void*)*2 + sizeof(HANDLE)) +struct FORMATINFO +{ + int cbSize; // Set this to sizeof(FORMATINFO). + int flags; // Flags to use (see FIF_* below). + MAllStrings szFormat; // Text in which the tokens will be replaced (can't be NULL). + MAllStrings szExtraText; // Extra, context-specific string (can be NULL) -> + // The field "extratext" will be replaced by this + // string. (Previously szSource). + MCONTACT hContact; // Handle to contact (can be NULL) -> The field "subject" + // represents this contact. + int pCount; // (output) Number of succesful parsed tokens, needs to be set + // to 0 before the call + int eCount; // (output) Number of failed tokens, needs to be set to 0 + // before the call + MAllStringArray szTemporaryVars; // Temporary variables valid only in the duration of the format call + int cbTemporaryVarsSize; // Number of elements in szaTemporaryVars array +}; // Possible flags: #define FIF_UNICODE 0x01 // Expects and returns unicode text (WCHAR*). -#if defined(UNICODE) || defined(_UNICODE) -#define FIF_TCHAR FIF_UNICODE // Strings in structure are TCHAR*. -#else -#define FIF_TCHAR 0 -#endif - // Helper functions for easy using: // Helper #1: variables_parse @@ -110,31 +85,29 @@ typedef struct { // The returned string needs to be freed using mir_free. #ifndef VARIABLES_NOHELPER -__inline static TCHAR *variables_parse(TCHAR *tszFormat, TCHAR *tszExtraText, MCONTACT hContact) +__inline static wchar_t *variables_parse(wchar_t *tszFormat, wchar_t *tszExtraText, MCONTACT hContact) { FORMATINFO fi = { sizeof(fi) }; - fi.tszFormat = tszFormat; - fi.tszExtraText = tszExtraText; + fi.szFormat.w = tszFormat; + fi.szExtraText.w = tszExtraText; fi.hContact = hContact; - fi.flags = FIF_TCHAR; - return (TCHAR *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + fi.flags = FIF_UNICODE; + return (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); } #endif -__inline static TCHAR *variables_parse_ex(TCHAR *tszFormat, TCHAR *tszExtraText, MCONTACT hContact, - TCHAR **tszaTemporaryVars, int cbTemporaryVarsSize) { - - FORMATINFO fi = { 0 }; - - ZeroMemory(&fi, sizeof(fi)); +__inline static wchar_t *variables_parse_ex(wchar_t *tszFormat, wchar_t *tszExtraText, MCONTACT hContact, + wchar_t **tszaTemporaryVars, int cbTemporaryVarsSize) +{ + FORMATINFO fi = {}; fi.cbSize = sizeof(fi); - fi.tszFormat = tszFormat; - fi.tszExtraText = tszExtraText; + fi.szFormat.w = tszFormat; + fi.szExtraText.w = tszExtraText; fi.hContact = hContact; - fi.flags = FIF_TCHAR; - fi.tszaTemporaryVars = tszaTemporaryVars; + fi.flags = FIF_UNICODE; + fi.szTemporaryVars.w = tszaTemporaryVars; fi.cbTemporaryVarsSize = cbTemporaryVarsSize; - return (TCHAR *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + return (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); } // Helper #2: variables_parsedup @@ -145,33 +118,33 @@ __inline static TCHAR *variables_parse_ex(TCHAR *tszFormat, TCHAR *tszExtraText, // Note: The returned pointer needs to be released using your own free(). #ifndef VARIABLES_NOHELPER -__inline static TCHAR *variables_parsedup(TCHAR *tszFormat, TCHAR *tszExtraText, MCONTACT hContact) +__inline static wchar_t *variables_parsedup(wchar_t *tszFormat, wchar_t *tszExtraText, MCONTACT hContact) { if (ServiceExists(MS_VARS_FORMATSTRING)) { FORMATINFO fi = { sizeof(fi) }; - fi.tszFormat = tszFormat; - fi.tszExtraText = tszExtraText; + fi.szFormat.w = tszFormat; + fi.szExtraText.w = tszExtraText; fi.hContact = hContact; - fi.flags |= FIF_TCHAR; - TCHAR *tszParsed = (TCHAR *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + fi.flags |= FIF_UNICODE; + wchar_t *tszParsed = (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); if (tszParsed) return tszParsed; } return tszFormat ? mir_wstrdup(tszFormat) : tszFormat; } -__inline static TCHAR *variables_parsedup_ex(TCHAR *tszFormat, TCHAR *tszExtraText, MCONTACT hContact, - TCHAR **tszaTemporaryVars, int cbTemporaryVarsSize) +__inline static wchar_t *variables_parsedup_ex(wchar_t *tszFormat, wchar_t *tszExtraText, MCONTACT hContact, + wchar_t **tszaTemporaryVars, int cbTemporaryVarsSize) { if (ServiceExists(MS_VARS_FORMATSTRING)) { FORMATINFO fi = { sizeof(fi) }; - fi.tszFormat = tszFormat; - fi.tszExtraText = tszExtraText; + fi.szFormat.w = tszFormat; + fi.szExtraText.w = tszExtraText; fi.hContact = hContact; - fi.flags |= FIF_TCHAR; - fi.tszaTemporaryVars = tszaTemporaryVars; + fi.flags |= FIF_UNICODE; + fi.szTemporaryVars.w = tszaTemporaryVars; fi.cbTemporaryVarsSize = cbTemporaryVarsSize; - TCHAR *tszParsed = (TCHAR *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + wchar_t *tszParsed = (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); if (tszParsed) return tszParsed; } @@ -179,8 +152,6 @@ __inline static TCHAR *variables_parsedup_ex(TCHAR *tszFormat, TCHAR *tszExtraTe } #endif - - // -------------------------------------------------------------------------- // Register tokens // -------------------------------------------------------------------------- @@ -205,131 +176,119 @@ __inline static TCHAR *variables_parsedup_ex(TCHAR *tszFormat, TCHAR *tszExtraTe // 'overwritten' if registered twice. // Needed for szService and parseFunction: -typedef struct { - int cbSize; // You need to check if this is >=sizeof(ARGUMENTSINFO) - // (already filled in). - FORMATINFO *fi; // Arguments passed to MS_VARS_FORMATSTRING. - unsigned int argc; // Number of elements in the argv array. - union { - char **argv; // Argv[0] will be the token name, the following elements - // are the additional arguments. - WCHAR **wargv; // If the registered token was registered as a unicode - // token, wargv should be accessed. - TCHAR **targv; - }; - int flags; // (output) You can set flags here (initially 0), use the - // AIF_* flags (see below). -} ARGUMENTSINFO; + +struct ARGUMENTSINFO +{ + int cbSize; // You need to check if this is >=sizeof(ARGUMENTSINFO) + // (already filled in). + FORMATINFO *fi; // Arguments passed to MS_VARS_FORMATSTRING. + unsigned int argc; // Number of elements in the argv array. + MAllStringArray argv; // Argv[0] will be the token name, the following elements + // are the additional arguments. + + int flags; // (output) You can set flags here (initially 0), use the + // AIF_* flags (see below). +}; // Available flags for ARGUMENTSINFO: // Set the flags of the ARGUMENTSINFO struct to any of these to influence // further parsing. #define AIF_DONTPARSE 0x01 // Don't parse the result of this function, - // usually the result of a token is parsed - // again, if the `?` is used as a function - // character. + // usually the result of a token is parsed + // again, if the `?` is used as a function + // character. #define AIF_FALSE 0x02 // The function returned logical false. // Definition of parse/cleanup functions: typedef char* (*VARPARSEFUNCA)(ARGUMENTSINFO *ai); typedef WCHAR* (*VARPARSEFUNCW)(ARGUMENTSINFO *ai); + typedef void (*VARCLEANUPFUNCA)(char *szReturn); typedef void (*VARCLEANUPFUNCW)(WCHAR *wszReturn); -#if defined(UNICODE) || defined(_UNICODE) -#define VARPARSEFUNC VARPARSEFUNCW -#define VARCLEANUPFUNC VARCLEANUPFUNCW -#else -#define VARPARSEFUNC VARPARSEFUNCA -#define VARCLEANUPFUNC VARCLEANUPFUNCA -#endif - -typedef struct { - int cbSize; // Set this to sizeof(TOKENREGISTER). - union { - char *szTokenString; // Name of the new token to be created, without %, - // ?, ! etc. signs (can't be NULL). - WCHAR *wszTokenString; - TCHAR *tszTokenString; - }; - union { - char *szService; // Name of a service that is used to request the - // token's value, if no service is used, a function - // and TRF_PARSEFUNC must be used. - VARPARSEFUNCA parseFunction; // See above, use with TRF_PARSEFUNC. - VARPARSEFUNCW parseFunctionW; - VARPARSEFUNC parseFunctionT; - }; - union { - char *szCleanupService; // Name of a service to be called when the - // memory allocated in szService can be freed - // (only used when flag VRF_CLEANUP is set, - // else set this to NULL). - VARCLEANUPFUNCA cleanupFunction; // See above, use with TRF_CLEANUPFUNC. - VARCLEANUPFUNCW cleanupFunctionW; - VARCLEANUPFUNC cleanupFunctionT; - }; - char *szHelpText; // Help info shown in help dialog (can be NULL). Has to - // be in the following format: - // "subject\targuments\tdescription" - // (Example: "math\t(x, y ,...)\tx + y + ..."), or: - // "subject\tdescription" - // (Example: "miranda\tPath to the Miranda-IM - // executable"). - // Note: subject and description are translated by - // Variables. - int memType; // Describes which method Varibale's plugin needs to use to - // free the returned buffer, use one of the VR_MEM_* values - // (see below). Only valid if the flag VRF_FREEMEM is set, - // use TR_MEM_OWNER otherwise). - int flags; // Flags to use (see below), one of TRF_* (see below). -} TOKENREGISTER; +struct TOKENREGISTER +{ + int cbSize; // Set this to sizeof(TOKENREGISTER). + MAllStrings szTokenString; // Name of the new token to be created, without %, ?, ! etc. signs (can't be NULL). + + union + { + char *szService; // Name of a service that is used to request the + // token's value, if no service is used, a function + // and TRF_PARSEFUNC must be used. + VARPARSEFUNCA parseFunction; // See above, use with TRF_PARSEFUNC. + VARPARSEFUNCW parseFunctionW; + }; + union + { + char *szCleanupService; // Name of a service to be called when the + // memory allocated in szService can be freed + // (only used when flag VRF_CLEANUP is set, + // else set this to NULL). + VARCLEANUPFUNCA cleanupFunction; // See above, use with TRF_CLEANUPFUNC. + VARCLEANUPFUNCW cleanupFunctionW; + }; + char *szHelpText; // Help info shown in help dialog (can be NULL). Has to + // be in the following format: + // "subject\targuments\tdescription" + // (Example: "math\t(x, y ,...)\tx + y + ..."), or: + // "subject\tdescription" + // (Example: "miranda\tPath to the Miranda-IM + // executable"). + // Note: subject and description are translated by + // Variables. + int memType; // Describes which method Varibale's plugin needs to use to + // free the returned buffer, use one of the VR_MEM_* values + // (see below). Only valid if the flag VRF_FREEMEM is set, + // use TR_MEM_OWNER otherwise). + int flags; // Flags to use (see below), one of TRF_* (see below). +}; // Available Memory Storage Types: // These values describe which method Variables Plugin will use to free the // buffer returned by the parse function or service #define TR_MEM_MIRANDA 2 // Memory is allocated using Miranda's Memory - // Manager Interface (using the functions - // returned by MS_SYSTEM_GET_MMI), if - // VRF_FREEMEM is set, the memory will be - // freed by Variables. + // Manager Interface (using the functions + // returned by MS_SYSTEM_GET_MMI), if + // VRF_FREEMEM is set, the memory will be + // freed by Variables. #define TR_MEM_OWNER 3 // Memory is owned by the calling plugin - // (can't be freed by Variables Plugin - // automatically). This should be used if - // VRF_FREEMEM is not specified in the flags. + // (can't be freed by Variables Plugin + // automatically). This should be used if + // VRF_FREEMEM is not specified in the flags. // Available Flags for TOKENREGISTER: #define TRF_FREEMEM 0x01 // Variables Plugin will automatically free the - // pointer returned by the parse function or - // service (which method it will us is - // specified in memType -> see above). + // pointer returned by the parse function or + // service (which method it will us is + // specified in memType -> see above). #define TRF_CLEANUP 0x02 // Call cleanup service or function, notifying - // that the returned buffer can be freed. - // Normally you should use either TRF_FREEMEM - // or TRF_CLEANUP. + // that the returned buffer can be freed. + // Normally you should use either TRF_FREEMEM + // or TRF_CLEANUP. #define TRF_PARSEFUNC 0x40 // parseFunction will be used instead of a - // service. + // service. #define TRF_CLEANUPFUNC 0x80 // cleanupFunction will be used instead of a - // service. + // service. #define TRF_USEFUNCS TRF_PARSEFUNC|TRF_CLEANUPFUNC #define TRF_UNPARSEDARGS 0x04 // Provide the arguments for the parse - // function in their raw (unparsed) form. - // By default, arguments are parsed before - // presenting them to the parse function. + // function in their raw (unparsed) form. + // By default, arguments are parsed before + // presenting them to the parse function. #define TRF_FIELD 0x08 // The token can be used as a %field%. #define TRF_FUNCTION 0x10 // The token can be used as a ?function(). - // Normally you should use either TRF_FIELD or - // TRF_FUNCTION. + // Normally you should use either TRF_FIELD or + // TRF_FUNCTION. #define TRF_UNICODE 0x20 // Strings in structure are unicode (WCHAR*). - // In this case, the strings pointing to the - // arguments in the ARGUMENTS struct are - // unicode also. The returned buffer is - // expected to be unicode also, and the - // unicode parse and cleanup functions are - // called. + // In this case, the strings pointing to the + // arguments in the ARGUMENTS struct are + // unicode also. The returned buffer is + // expected to be unicode also, and the + // unicode parse and cleanup functions are + // called. #if defined(UNICODE) || defined(_UNICODE) -#define TRF_TCHAR TRF_UNICODE // Strings in structure are TCHAR*. +#define TRF_TCHAR TRF_UNICODE // Strings in structure are wchar_t*. #else #define TRF_TCHAR 0 #endif @@ -391,52 +350,53 @@ typedef struct { // ------------------------ // Returns 0 on succes, any other value on error. -typedef struct { - int cbSize; // Set to sizeof(VARHELPINFO). - FORMATINFO *fi; // Used for both input and output. If this pointer is not - // NULL, the information is used as the initial values for - // the dialog. - HWND hwndCtrl; // Used for both input and output. The window text of this - // window will be read and used as the initial input of the - // input dialog. If the user presses the OK button the window - // text of this window will be set to the text of the input - // field and a EN_CHANGE message via WM_COMMAND is send to - // this window. (Can be NULL). - char *szSubjectDesc; // The description of the %subject% token will be set - // to this text, if not NULL. This is translated - // automatically. - char *szExtraTextDesc; // The description of the %extratext% token will be - // set to this text, if not NULL. This is translated - // automatically. - int flags; // Flags, see below. -} VARHELPINFO; +struct VARHELPINFO +{ + int cbSize; // Set to sizeof(VARHELPINFO). + FORMATINFO *fi; // Used for both input and output. If this pointer is not + // NULL, the information is used as the initial values for + // the dialog. + HWND hwndCtrl; // Used for both input and output. The window text of this + // window will be read and used as the initial input of the + // input dialog. If the user presses the OK button the window + // text of this window will be set to the text of the input + // field and a EN_CHANGE message via WM_COMMAND is send to + // this window. (Can be NULL). + char *szSubjectDesc; // The description of the %subject% token will be set + // to this text, if not NULL. This is translated + // automatically. + char *szExtraTextDesc; // The description of the %extratext% token will be + // set to this text, if not NULL. This is translated + // automatically. + int flags; // Flags, see below. +}; // Flags for VARHELPINFO #define VHF_TOKENS 0x00000001 // Create a dialog with the list of - // tokens + // tokens #define VHF_INPUT 0x00000002 // Create a dialog with an input - // field (this contains the list of - // tokens as well). + // field (this contains the list of + // tokens as well). #define VHF_SUBJECT 0x00000004 // Create a dialog to select a - // contact for the %subject% token. + // contact for the %subject% token. #define VHF_EXTRATEXT 0x00000008 // Create a dialog to enter a text - // for the %extratext% token. + // for the %extratext% token. #define VHF_HELP 0x00000010 // Create a dialog with help info. #define VHF_HIDESUBJECTTOKEN 0x00000020 // Hide the %subject% token in the - // list of tokens. + // list of tokens. #define VHF_HIDEEXTRATEXTTOKEN 0x00000040 // Hide the %extratext% token in - // the list of tokens. + // the list of tokens. #define VHF_DONTFILLSTRUCT 0x00000080 // Don't fill the struct with the - // new information if OK is pressed + // new information if OK is pressed #define VHF_FULLFILLSTRUCT 0x00000100 // Fill all members of the struct - // when OK is pressed. By default - // only szFormat is set. With this - // flag on, hContact and - // szExtraText are also set. + // when OK is pressed. By default + // only szFormat is set. With this + // flag on, hContact and + // szExtraText are also set. #define VHF_SETLASTSUBJECT 0x00000200 // Set the last contact that was - // used in the %subject% dialog in - // case fi.hContact is NULL. + // used in the %subject% dialog in + // case fi.hContact is NULL. // Predefined flags #define VHF_FULLDLG VHF_INPUT|VHF_SUBJECT|VHF_EXTRATEXT|VHF_HELP @@ -455,21 +415,22 @@ typedef struct { // Helper function for easy use in standard case: #ifndef VARIABLES_NOHELPER -__inline static int variables_showhelp(HWND hwndDlg, UINT uIDEdit, int flags, char *szSubjectDesc, char *szExtraDesc) { +__inline static int variables_showhelp(HWND hwndDlg, UINT uIDEdit, int flags, char *szSubjectDesc, char *szExtraDesc) +{ - VARHELPINFO vhi; + VARHELPINFO vhi; - ZeroMemory(&vhi, sizeof(VARHELPINFO)); - vhi.cbSize = sizeof(VARHELPINFO); - if (flags == 0) { - flags = VHF_SIMPLEDLG; - } - vhi.flags = flags; - vhi.hwndCtrl = GetDlgItem(hwndDlg, uIDEdit); - vhi.szSubjectDesc = szSubjectDesc; - vhi.szExtraTextDesc = szExtraDesc; + ZeroMemory(&vhi, sizeof(VARHELPINFO)); + vhi.cbSize = sizeof(VARHELPINFO); + if (flags == 0) { + flags = VHF_SIMPLEDLG; + } + vhi.flags = flags; + vhi.hwndCtrl = GetDlgItem(hwndDlg, uIDEdit); + vhi.szSubjectDesc = szSubjectDesc; + vhi.szExtraTextDesc = szExtraDesc; - return CallService(MS_VARS_SHOWHELPEX, (WPARAM)hwndDlg, (LPARAM)&vhi); + return CallService(MS_VARS_SHOWHELPEX, (WPARAM)hwndDlg, (LPARAM)&vhi); } #endif @@ -492,12 +453,12 @@ __inline static int variables_showhelp(HWND hwndDlg, UINT uIDEdit, int flags, ch // VSI_ constants #define VSI_HELPICON 1 // Can be used on the button accessing the - // Variables help dialog. Returns (HICON)hIcon on - // success or NULL on failure; + // Variables help dialog. Returns (HICON)hIcon on + // success or NULL on failure; #define VSI_HELPTIPTEXT 2 // Returns the tooltip text you can use for the - // help button. Returns (char *)szTipText, a - // static, translated buffer containing the help - // text or NULL on error. + // help button. Returns (char *)szTipText, a + // static, translated buffer containing the help + // text or NULL on error. // Helper to set the icon on a button accessing the help dialog. // Preferably a 16x14 MButtonClass control, but it works on a standard @@ -505,9 +466,10 @@ __inline static int variables_showhelp(HWND hwndDlg, UINT uIDEdit, int flags, ch // Variables) the string "V" is shown on the button. If Variables is not // available, the button will be hidden. #ifndef VARIABLES_NOHELPER -__inline static int variables_skin_helpbutton(HWND hwndDlg, UINT uIDButton) { +__inline static int variables_skin_helpbutton(HWND hwndDlg, UINT uIDButton) +{ - TCHAR tszClass[32]; + wchar_t tszClass[32]; HICON hIcon = nullptr; int res = 0; @@ -517,7 +479,7 @@ __inline static int variables_skin_helpbutton(HWND hwndDlg, UINT uIDButton) { GetClassName(GetDlgItem(hwndDlg, uIDButton), tszClass, _countof(tszClass)); if (!mir_wstrcmp(tszClass, L"Button")) { if (hIcon != nullptr) { - SetWindowLongPtr(GetDlgItem(hwndDlg, uIDButton), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, uIDButton), GWL_STYLE)|BS_ICON); + SetWindowLongPtr(GetDlgItem(hwndDlg, uIDButton), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, uIDButton), GWL_STYLE) | BS_ICON); SendMessage(GetDlgItem(hwndDlg, uIDButton), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon); } else { diff --git a/plugins/ListeningTo/src/listeningto.cpp b/plugins/ListeningTo/src/listeningto.cpp index f65198e41e..b8b7f0f02b 100644 --- a/plugins/ListeningTo/src/listeningto.cpp +++ b/plugins/ListeningTo/src/listeningto.cpp @@ -237,53 +237,53 @@ int ModulesLoaded(WPARAM, LPARAM) tr.memType = TR_MEM_MIRANDA; tr.flags = TRF_FREEMEM | TRF_PARSEFUNC | TRF_FIELD | TRF_TCHAR; - tr.tszTokenString = L"listening_info"; - tr.parseFunctionT = VariablesParseInfo; + tr.szTokenString.w = L"listening_info"; + tr.parseFunctionW = VariablesParseInfo; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Listening info as set in the options"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_type"; - tr.parseFunctionT = VariablesParseType; + tr.szTokenString.w = L"listening_type"; + tr.parseFunctionW = VariablesParseType; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Media type: Music, Video, etc."); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_artist"; - tr.parseFunctionT = VariablesParseArtist; + tr.szTokenString.w = L"listening_artist"; + tr.parseFunctionW = VariablesParseArtist; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Artist name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_album"; - tr.parseFunctionT = VariablesParseAlbum; + tr.szTokenString.w = L"listening_album"; + tr.parseFunctionW = VariablesParseAlbum; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Album name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_title"; - tr.parseFunctionT = VariablesParseTitle; + tr.szTokenString.w = L"listening_title"; + tr.parseFunctionW = VariablesParseTitle; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Song name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_track"; - tr.parseFunctionT = VariablesParseTrack; + tr.szTokenString.w = L"listening_track"; + tr.parseFunctionW = VariablesParseTrack; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Track number"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_year"; - tr.parseFunctionT = VariablesParseYear; + tr.szTokenString.w = L"listening_year"; + tr.parseFunctionW = VariablesParseYear; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Song year"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_genre"; - tr.parseFunctionT = VariablesParseGenre; + tr.szTokenString.w = L"listening_genre"; + tr.parseFunctionW = VariablesParseGenre; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Song genre"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_length"; - tr.parseFunctionT = VariablesParseLength; + tr.szTokenString.w = L"listening_length"; + tr.parseFunctionW = VariablesParseLength; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Song length"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); - tr.tszTokenString = L"listening_player"; - tr.parseFunctionT = VariablesParsePlayer; + tr.szTokenString.w = L"listening_player"; + tr.parseFunctionW = VariablesParsePlayer; tr.szHelpText = LPGEN("Listening info") "\t" LPGEN("Player name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); } diff --git a/plugins/NewAwaySysMod/src/AwaySys.cpp b/plugins/NewAwaySysMod/src/AwaySys.cpp index 15777de903..7f0f2f3cf6 100644 --- a/plugins/NewAwaySysMod/src/AwaySys.cpp +++ b/plugins/NewAwaySysMod/src/AwaySys.cpp @@ -478,18 +478,18 @@ INT_PTR srvVariablesHandler(WPARAM, LPARAM lParam) ARGUMENTSINFO *ai = (ARGUMENTSINFO*)lParam; ai->flags = AIF_DONTPARSE; TCString Result; - if (!mir_wstrcmp(ai->targv[0], VAR_AWAYSINCE_TIME)) { - GetTimeFormat(LOCALE_USER_DEFAULT, 0, g_ProtoStates[VarParseData.szProto].m_awaySince, (ai->argc > 1 && *ai->targv[1]) ? ai->targv[1] : L"H:mm", Result.GetBuffer(256), 256); + if (!mir_wstrcmp(ai->argv.w[0], VAR_AWAYSINCE_TIME)) { + GetTimeFormat(LOCALE_USER_DEFAULT, 0, g_ProtoStates[VarParseData.szProto].m_awaySince, (ai->argc > 1 && *ai->argv.w[1]) ? ai->argv.w[1] : L"H:mm", Result.GetBuffer(256), 256); Result.ReleaseBuffer(); } - else if (!mir_wstrcmp(ai->targv[0], VAR_AWAYSINCE_DATE)) { - GetDateFormat(LOCALE_USER_DEFAULT, 0, g_ProtoStates[VarParseData.szProto].m_awaySince, (ai->argc > 1 && *ai->targv[1]) ? ai->targv[1] : nullptr, Result.GetBuffer(256), 256); + else if (!mir_wstrcmp(ai->argv.w[0], VAR_AWAYSINCE_DATE)) { + GetDateFormat(LOCALE_USER_DEFAULT, 0, g_ProtoStates[VarParseData.szProto].m_awaySince, (ai->argc > 1 && *ai->argv.w[1]) ? ai->argv.w[1] : nullptr, Result.GetBuffer(256), 256); Result.ReleaseBuffer(); } - else if (!mir_wstrcmp(ai->targv[0], VAR_STATDESC)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_STATDESC)) { Result = (VarParseData.Flags & VPF_XSTATUS) ? STR_XSTATUSDESC : Clist_GetStatusModeDescription(g_ProtoStates[VarParseData.szProto].m_status, 0); } - else if (!mir_wstrcmp(ai->targv[0], VAR_MYNICK)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_MYNICK)) { if (g_MoreOptPage.GetDBValueCopy(IDC_MOREOPTDLG_MYNICKPERPROTO) && VarParseData.szProto) Result = db_get_s(NULL, VarParseData.szProto, "Nick", (wchar_t*)nullptr); @@ -499,15 +499,15 @@ INT_PTR srvVariablesHandler(WPARAM, LPARAM lParam) if (Result == nullptr) Result = TranslateT("Stranger"); } - else if (!mir_wstrcmp(ai->targv[0], VAR_REQUESTCOUNT)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_REQUESTCOUNT)) { mir_snwprintf(Result.GetBuffer(16), 16, L"%d", db_get_w(ai->fi->hContact, MODULENAME, DB_REQUESTCOUNT, 0)); Result.ReleaseBuffer(); } - else if (!mir_wstrcmp(ai->targv[0], VAR_MESSAGENUM)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_MESSAGENUM)) { mir_snwprintf(Result.GetBuffer(16), 16, L"%d", db_get_w(ai->fi->hContact, MODULENAME, DB_MESSAGECOUNT, 0)); Result.ReleaseBuffer(); } - else if (!mir_wstrcmp(ai->targv[0], VAR_TIMEPASSED)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_TIMEPASSED)) { ULARGE_INTEGER ul_AwaySince, ul_Now; SYSTEMTIME st; GetLocalTime(&st); @@ -524,7 +524,7 @@ INT_PTR srvVariablesHandler(WPARAM, LPARAM lParam) mir_snwprintf(Result, 256, TranslateT("%d seconds"), ul_Now.LowPart); Result.ReleaseBuffer(); } - else if (!mir_wstrcmp(ai->targv[0], VAR_PREDEFINEDMESSAGE)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_PREDEFINEDMESSAGE)) { ai->flags = 0; // reset AIF_DONTPARSE flag if (ai->argc != 2) return NULL; @@ -534,7 +534,7 @@ INT_PTR srvVariablesHandler(WPARAM, LPARAM lParam) TreeCtrl->DBToMem(CString(MODULENAME)); for (int i = 0; i < TreeCtrl->m_value.GetSize(); i++) { - if (!(TreeCtrl->m_value[i].Flags & TIF_GROUP) && !mir_wstrcmpi(TreeCtrl->m_value[i].Title, ai->targv[1])) { + if (!(TreeCtrl->m_value[i].Flags & TIF_GROUP) && !mir_wstrcmpi(TreeCtrl->m_value[i].Title, ai->argv.w[1])) { Result = TreeCtrl->m_value[i].User_Str1; break; } @@ -542,7 +542,7 @@ INT_PTR srvVariablesHandler(WPARAM, LPARAM lParam) if (Result == nullptr) // if we didn't find a message with specified title return NULL; // return it now, as later we change NULL to "" } - else if (!mir_wstrcmp(ai->targv[0], VAR_PROTOCOL)) { + else if (!mir_wstrcmp(ai->argv.w[0], VAR_PROTOCOL)) { if (VarParseData.szProto) { CString AnsiResult; CallProtoService(VarParseData.szProto, PS_GETNAME, 256, (LPARAM)AnsiResult.GetBuffer(256)); @@ -690,7 +690,7 @@ int MirandaLoaded(WPARAM, LPARAM) tr.memType = TR_MEM_OWNER; for (int i = 0; i < _countof(Variables); i++) { tr.flags = Variables[i].Flags | TRF_CALLSVC | TRF_TCHAR; - tr.tszTokenString = Variables[i].Name; + tr.szTokenString.w = Variables[i].Name; tr.szHelpText = Variables[i].Descr; CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); } diff --git a/plugins/SimpleStatusMsg/src/main.cpp b/plugins/SimpleStatusMsg/src/main.cpp index 497ecdf157..13a65ce4ce 100644 --- a/plugins/SimpleStatusMsg/src/main.cpp +++ b/plugins/SimpleStatusMsg/src/main.cpp @@ -1578,14 +1578,14 @@ static int OnModulesLoaded(WPARAM, LPARAM) tr.cbSize = sizeof(TOKENREGISTER); tr.memType = TR_MEM_MIRANDA; tr.flags = TRF_FREEMEM | TRF_FIELD | TRF_TCHAR | TRF_PARSEFUNC; - tr.tszTokenString = L"winampsong"; - tr.parseFunctionT = ParseWinampSong; + tr.szTokenString.w = L"winampsong"; + tr.parseFunctionW = ParseWinampSong; tr.szHelpText = LPGEN("External Applications") "\t" LPGEN("retrieves song name of the song currently playing in Winamp (Simple Status Message compatible)"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); if (db_get_b(NULL, MODULENAME, "ExclDateToken", 0) != 0) { - tr.tszTokenString = L"date"; - tr.parseFunctionT = ParseDate; + tr.szTokenString.w = L"date"; + tr.parseFunctionW = ParseDate; tr.szHelpText = LPGEN("Miranda Related") "\t" LPGEN("get the date (Simple Status Message compatible)"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&tr); } diff --git a/plugins/SpellChecker/src/autoreplace.cpp b/plugins/SpellChecker/src/autoreplace.cpp index e2db8efbae..921f105c7f 100644 --- a/plugins/SpellChecker/src/autoreplace.cpp +++ b/plugins/SpellChecker/src/autoreplace.cpp @@ -169,9 +169,9 @@ CMStringW AutoReplaceMap::autoReplace(const wchar_t * word) wchar_t* AutoReplaceMap::filterText(const wchar_t *find) { wchar_t *ret = mir_wstrdup(find); - int len = mir_wstrlen(ret); + size_t len = mir_wstrlen(ret); int pos = 0; - for (int i = 0; i < len; i++) + for (size_t i = 0; i < len; i++) if (isWordChar(find[i])) ret[pos++] = ret[i]; ret[pos] = 0; diff --git a/plugins/StopSpamMod/src/utilities.cpp b/plugins/StopSpamMod/src/utilities.cpp index 9b3dddc380..e6ecdfb2ca 100755 --- a/plugins/StopSpamMod/src/utilities.cpp +++ b/plugins/StopSpamMod/src/utilities.cpp @@ -91,17 +91,15 @@ int RemoveTmp(WPARAM, LPARAM) wstring variables_parse(wstring const &tstrFormat, MCONTACT hContact) { if (gbVarsServiceExist) { - FORMATINFO fi; - wchar_t *tszParsed; - wstring tstrResult; - - memset(&fi, 0, sizeof(fi)); + FORMATINFO fi = {}; fi.cbSize = sizeof(fi); - fi.tszFormat = wcsdup(tstrFormat.c_str()); + fi.szFormat.w = wcsdup(tstrFormat.c_str()); fi.hContact = hContact; - fi.flags |= FIF_TCHAR; - tszParsed = (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); - free(fi.tszFormat); + fi.flags = FIF_UNICODE; + wchar_t *tszParsed = (wchar_t*)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + free(fi.szFormat.w); + + wstring tstrResult; if (tszParsed) { tstrResult = tszParsed; mir_free(tszParsed); @@ -112,14 +110,12 @@ wstring variables_parse(wstring const &tstrFormat, MCONTACT hContact) } // case-insensitive mir_wstrcmp -//by nullbie as i remember... -#define NEWTSTR_MALLOC(A) (A==NULL) ? NULL : mir_wstrcpy((wchar_t*)mir_alloc(sizeof(wchar_t)*(mir_wstrlen(A)+1)),A) const int Stricmp(const wchar_t *str, const wchar_t *substr) { int i = 0; - wchar_t *str_up = NEWTSTR_MALLOC(str); - wchar_t *substr_up = NEWTSTR_MALLOC(substr); + wchar_t *str_up = mir_wstrdup(str); + wchar_t *substr_up = mir_wstrdup(substr); CharUpperBuff(str_up, (int)mir_wstrlen(str_up)); CharUpperBuff(substr_up, (int)mir_wstrlen(substr_up)); @@ -178,7 +174,7 @@ BOOL IsUrlContains(wchar_t * Str) }; if (Str && mir_wstrlen(Str) > 0) { - wchar_t *StrLower = NEWTSTR_MALLOC(Str); + wchar_t *StrLower = mir_wstrdup(Str); CharLowerBuff(StrLower, (int)mir_wstrlen(StrLower)); for (int i = 0; i < CountUrl; i++) if (wcsstr(StrLower, URL[i])) { diff --git a/plugins/StopSpamPlus/src/utils.cpp b/plugins/StopSpamPlus/src/utils.cpp index a71e829d24..6fb2233318 100644 --- a/plugins/StopSpamPlus/src/utils.cpp +++ b/plugins/StopSpamPlus/src/utils.cpp @@ -34,14 +34,13 @@ bool IsExistMyMessage(MCONTACT hContact) tstring variables_parse(const wchar_t *tstrFormat, MCONTACT hContact) { if (ServiceExists(MS_VARS_FORMATSTRING)) { - FORMATINFO fi; - memset(&fi, 0, sizeof(fi)); + FORMATINFO fi = {}; fi.cbSize = sizeof(fi); - fi.tszFormat = wcsdup(tstrFormat); + fi.szFormat.w = wcsdup(tstrFormat); fi.hContact = hContact; - fi.flags |= FIF_TCHAR; - wchar_t *tszParsed = (wchar_t *)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); - free(fi.tszFormat); + fi.flags = FIF_UNICODE; + wchar_t *tszParsed = (wchar_t*)CallService(MS_VARS_FORMATSTRING, (WPARAM)&fi, 0); + free(fi.szFormat.w); if (tszParsed) { tstring tstrResult = tszParsed; mir_free(tszParsed); diff --git a/plugins/TrafficCounter/src/vars.cpp b/plugins/TrafficCounter/src/vars.cpp index 54f28fc23f..1a9d3b4852 100644 --- a/plugins/TrafficCounter/src/vars.cpp +++ b/plugins/TrafficCounter/src/vars.cpp @@ -30,13 +30,13 @@ static wchar_t* GetTraffic(ARGUMENTSINFO *ai) if (ai->argc != 5) return nullptr; - if (!mir_wstrcmp(ai->targv[1], L"overall")) { + if (!mir_wstrcmp(ai->argv.w[1], L"overall")) { tmpsn = OverallInfo.CurrentSentTraffic; tmprn = OverallInfo.CurrentRecvTraffic; tmpst = OverallInfo.TotalSentTraffic; tmprt = OverallInfo.TotalRecvTraffic; } - else if (!mir_wstrcmp(ai->targv[1], L"summary")) { + else if (!mir_wstrcmp(ai->argv.w[1], L"summary")) { for (ed = 0; ed < NumberOfAccounts; ed++) if (ProtoList[ed].Visible) { tmpsn += ProtoList[ed].CurrentSentTraffic; @@ -49,7 +49,7 @@ static wchar_t* GetTraffic(ARGUMENTSINFO *ai) for (tmp = ed = 0; ed < NumberOfAccounts; ed++) { if (!ProtoList[ed].name) continue; wchar_t *buf = mir_a2u(ProtoList[ed].name); - if (!mir_wstrcmp(buf, ai->targv[1])) { + if (!mir_wstrcmp(buf, ai->argv.w[1])) { tmpsn = ProtoList[ed].CurrentSentTraffic; tmprn = ProtoList[ed].CurrentRecvTraffic; tmpst = ProtoList[ed].TotalSentTraffic; @@ -61,31 +61,31 @@ static wchar_t* GetTraffic(ARGUMENTSINFO *ai) if (tmp != 0xAA) return nullptr; } - if (!mir_wstrcmp(ai->targv[2], L"now")) { - if (!mir_wstrcmp(ai->targv[3], L"sent")) tmp = tmpsn; + if (!mir_wstrcmp(ai->argv.w[2], L"now")) { + if (!mir_wstrcmp(ai->argv.w[3], L"sent")) tmp = tmpsn; else - if (!mir_wstrcmp(ai->targv[3], L"received")) tmp = tmprn; + if (!mir_wstrcmp(ai->argv.w[3], L"received")) tmp = tmprn; else - if (!mir_wstrcmp(ai->targv[3], L"both")) tmp = tmprn + tmpsn; + if (!mir_wstrcmp(ai->argv.w[3], L"both")) tmp = tmprn + tmpsn; else return nullptr; } - else if (!mir_wstrcmp(ai->targv[2], L"total")) { - if (!mir_wstrcmp(ai->targv[3], L"sent")) tmp = tmpst; + else if (!mir_wstrcmp(ai->argv.w[2], L"total")) { + if (!mir_wstrcmp(ai->argv.w[3], L"sent")) tmp = tmpst; else - if (!mir_wstrcmp(ai->targv[3], L"received")) tmp = tmprt; + if (!mir_wstrcmp(ai->argv.w[3], L"received")) tmp = tmprt; else - if (!mir_wstrcmp(ai->targv[3], L"both")) tmp = tmprt + tmpst; + if (!mir_wstrcmp(ai->argv.w[3], L"both")) tmp = tmprt + tmpst; else return nullptr; } else return nullptr; - if (!mir_wstrcmp(ai->targv[4], L"b")) + if (!mir_wstrcmp(ai->argv.w[4], L"b")) ed = 0; - else if (!mir_wstrcmp(ai->targv[4], L"k")) + else if (!mir_wstrcmp(ai->argv.w[4], L"k")) ed = 1; - else if (!mir_wstrcmp(ai->targv[4], L"m")) + else if (!mir_wstrcmp(ai->argv.w[4], L"m")) ed = 2; - else if (!mir_wstrcmp(ai->targv[4], L"d")) + else if (!mir_wstrcmp(ai->argv.w[4], L"d")) ed = 3; else return nullptr; @@ -114,11 +114,11 @@ static wchar_t* GetTime(ARGUMENTSINFO *ai) wchar_t *buf; if (!ProtoList[ed].name) continue; buf = mir_a2u(ProtoList[ed].name); - if (!mir_wstrcmp(buf, ai->targv[1])) { + if (!mir_wstrcmp(buf, ai->argv.w[1])) { flag = 0xAA; - if (!mir_wstrcmp(ai->targv[2], L"now")) + if (!mir_wstrcmp(ai->argv.w[2], L"now")) Duration = ProtoList[ed].Session.Timer; - else if (!mir_wstrcmp(ai->targv[2], L"total")) + else if (!mir_wstrcmp(ai->argv.w[2], L"total")) Duration = ProtoList[ed].Total.Timer; else flag = 0; @@ -127,11 +127,11 @@ static wchar_t* GetTime(ARGUMENTSINFO *ai) mir_free(buf); } - if ((flag != 0xAA) && !mir_wstrcmp(ai->targv[1], L"summary")) { + if ((flag != 0xAA) && !mir_wstrcmp(ai->argv.w[1], L"summary")) { flag = 0xAA; - if (!mir_wstrcmp(ai->targv[2], L"now")) + if (!mir_wstrcmp(ai->argv.w[2], L"now")) Duration = OverallInfo.Session.Timer; - else if (!mir_wstrcmp(ai->targv[2], L"total")) + else if (!mir_wstrcmp(ai->argv.w[2], L"total")) Duration = OverallInfo.Total.Timer; else flag = 0; } @@ -141,12 +141,12 @@ static wchar_t* GetTime(ARGUMENTSINFO *ai) // Получаем форматированную строку и возвращаем указатель на неё. // Сначала узнаем размер буфера. - size_t l = GetDurationFormatM(Duration, ai->targv[3], nullptr, 0); + size_t l = GetDurationFormatM(Duration, ai->argv.w[3], nullptr, 0); wchar_t *res = (wchar_t*)mir_alloc(l * sizeof(wchar_t)); if (!res) return nullptr; - GetDurationFormatM(Duration, ai->targv[3], res, l); + GetDurationFormatM(Duration, ai->argv.w[3], res, l); return res; } @@ -160,15 +160,15 @@ void RegisterVariablesTokens(void) trs.cbSize = sizeof(TOKENREGISTER); // Функция, возвращающая трафик - trs.tszTokenString = L"tc_GetTraffic"; - trs.parseFunctionT = GetTraffic; + trs.szTokenString.w = L"tc_GetTraffic"; + trs.parseFunctionW = GetTraffic; trs.szHelpText = "Traffic counter\t(A,B,C,D)\tGet traffic counter value. A: OR overall OR summary; B: now OR total; C: sent OR received OR both; D: b - in bytes, k - in kilobytes, m - in megabytes, d - dynamic"; trs.flags = TRF_TCHAR | TRF_PARSEFUNC | TRF_FUNCTION | TRF_FREEMEM; trs.memType = TR_MEM_MIRANDA; CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&trs); // Функция, возвращающая время - trs.tszTokenString = L"tc_GetTime"; - trs.parseFunctionT = GetTime; + trs.szTokenString.w = L"tc_GetTime"; + trs.parseFunctionW = GetTime; trs.szHelpText = "Traffic counter\t(A,B,C)\tGet time counter value. A: OR summary; B: now OR total; C: format"; CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM)&trs); } diff --git a/plugins/Variables/src/help.cpp b/plugins/Variables/src/help.cpp index 3e1d5678bd..4b05a3476a 100644 --- a/plugins/Variables/src/help.cpp +++ b/plugins/Variables/src/help.cpp @@ -267,7 +267,7 @@ static wchar_t *getTokenDescription(TOKENREGISTEREX *tr) return nullptr; if (tr->szHelpText == nullptr) - return mir_wstrdup(tr->tszTokenString); + return mir_wstrdup(tr->szTokenString.w); char *helpText = mir_strdup(tr->szHelpText); if (helpText == nullptr) @@ -292,7 +292,7 @@ static wchar_t *getTokenDescription(TOKENREGISTEREX *tr) } else args = nullptr; - size_t len = mir_wstrlen(tr->tszTokenString) + (args!=nullptr?mir_strlen(args):0) + 3; + size_t len = mir_wstrlen(tr->szTokenString.w) + (args!=nullptr?mir_strlen(args):0) + 3; wchar_t *desc = (wchar_t*)mir_calloc(len * sizeof(wchar_t)); if (desc == nullptr) { mir_free(helpText); @@ -305,7 +305,7 @@ static wchar_t *getTokenDescription(TOKENREGISTEREX *tr) if (args != nullptr) tArgs = mir_a2u(args); - mir_snwprintf(desc, len, L"%c%s%s", FUNC_CHAR, tr->tszTokenString, (tArgs!=nullptr?tArgs:L"")); + mir_snwprintf(desc, len, L"%c%s%s", FUNC_CHAR, tr->szTokenString.w, (tArgs!=nullptr?tArgs:L"")); } mir_free(tArgs); @@ -329,10 +329,10 @@ static int CALLBACK compareTokenHelp(LPARAM lParam1, LPARAM lParam2, LPARAM) if (res != 0) return res; - if (tr1->tszTokenString == nullptr || tr2->tszTokenString == nullptr) + if (tr1->szTokenString.w == nullptr || tr2->szTokenString.w == nullptr) return 0; - return mir_wstrcmp(tr1->tszTokenString, tr2->tszTokenString); + return mir_wstrcmp(tr1->szTokenString.w, tr2->szTokenString.w); } static BOOL CALLBACK processTokenListMessage(HWND hwndDlg, UINT msg, WPARAM, LPARAM lParam) @@ -361,18 +361,18 @@ static BOOL CALLBACK processTokenListMessage(HWND hwndDlg, UINT msg, WPARAM, LPA i++; tszHelpDesc = tszTokenDesc = nullptr; tr = getTokenRegister(i); - if ((tr == nullptr) || (tr->tszTokenString == nullptr)) + if ((tr == nullptr) || (tr->szTokenString.w == nullptr)) continue; else if (hdd != nullptr) { - if (!mir_wstrcmp(tr->tszTokenString, SUBJECT)) { + if (!mir_wstrcmp(tr->szTokenString.w, SUBJECT)) { if (hdd->vhs->flags&VHF_HIDESUBJECTTOKEN) continue; if (hdd->vhs->szSubjectDesc != nullptr) tszHelpDesc = mir_a2u(hdd->vhs->szSubjectDesc); } - if (!mir_wstrcmp(tr->tszTokenString, MIR_EXTRATEXT)) { + if (!mir_wstrcmp(tr->szTokenString.w, MIR_EXTRATEXT)) { if (hdd->vhs->flags & VHF_HIDEEXTRATEXTTOKEN) continue; @@ -462,13 +462,13 @@ static BOOL CALLBACK processTokenListMessage(HWND hwndDlg, UINT msg, WPARAM, LPA if (tr == nullptr) break; - size_t len = mir_wstrlen(tr->tszTokenString) + 2; + size_t len = mir_wstrlen(tr->szTokenString.w) + 2; wchar_t *tokenString = (wchar_t*)mir_alloc((len+1)*sizeof(wchar_t)); if (tokenString == nullptr) break; memset(tokenString, 0, ((len + 1) * sizeof(wchar_t))); - mir_snwprintf(tokenString, len + 1, L"%c%s%c", (tr->flags & TRF_FIELD) ? FIELD_CHAR : FUNC_CHAR, tr->tszTokenString, (tr->flags & TRF_FIELD) ? FIELD_CHAR : '('); + mir_snwprintf(tokenString, len + 1, L"%c%s%c", (tr->flags & TRF_FIELD) ? FIELD_CHAR : FUNC_CHAR, tr->szTokenString.w, (tr->flags & TRF_FIELD) ? FIELD_CHAR : '('); SendDlgItemMessage(hwndInputDlg, IDC_TESTSTRING, EM_REPLACESEL, TRUE, (LPARAM)tokenString); mir_free(tokenString); SetFocus(GetDlgItem(hwndInputDlg, IDC_TESTSTRING)); @@ -805,12 +805,12 @@ static INT_PTR CALLBACK helpDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM l ShowWindow(hPage, SW_HIDE); TabCtrl_InsertItem(hTab, tabCount++, &tci); hShow = hShow == nullptr ? hPage : hShow; - if ((dat->vhs->fi != nullptr) && (dat->vhs->fi->szFormat != nullptr)) { + if ((dat->vhs->fi != nullptr) && (dat->vhs->fi->szFormat.w != nullptr)) { if (dat->vhs->fi->flags & FIF_UNICODE) - SendMessage(hwndDlg, VARM_SETINPUTTEXT, 0, (LPARAM)dat->vhs->fi->tszFormat); + SendMessage(hwndDlg, VARM_SETINPUTTEXT, 0, (LPARAM)dat->vhs->fi->szFormat.w); else { - WCHAR *wszFormatString = mir_a2u(dat->vhs->fi->szFormat); + wchar_t *wszFormatString = mir_a2u(dat->vhs->fi->szFormat.a); SendMessage(hwndDlg, VARM_SETINPUTTEXT, 0, (LPARAM)wszFormatString); mir_free(wszFormatString); @@ -852,19 +852,19 @@ static INT_PTR CALLBACK helpDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM l } } if ((dat->vhs->flags&VHF_EXTRATEXT) || - ((dat->vhs->flags&VHF_INPUT) && (dat->vhs->fi != nullptr) && (dat->vhs->fi->tszExtraText != nullptr))) { + ((dat->vhs->flags&VHF_INPUT) && (dat->vhs->fi != nullptr) && (dat->vhs->fi->szExtraText.w != nullptr))) { // extratext window is created, but not necessarily shown dat->hwndExtraTextDlg = hPage = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_EXTRATEXT_DIALOG), hwndDlg, extratextDlgProc, (LPARAM)GetParent(hwndDlg)); EnableThemeDialogTexture(hPage, ETDT_ENABLETAB); MoveWindow(hPage, (rcTabs.left - rcParent.left), (rcTabs.top - rcParent.top), (rcTabs.right - rcTabs.left) - 2 * iFrameX, (rcTabs.bottom - rcTabs.top) - 2 * iFrameY, TRUE); ShowWindow(hPage, SW_HIDE); - if ((dat->vhs->fi != nullptr) && (dat->vhs->fi->tszExtraText != nullptr)) { + if ((dat->vhs->fi != nullptr) && (dat->vhs->fi->szExtraText.w != nullptr)) { if (dat->vhs->fi->flags & FIF_UNICODE) - SendMessage(hwndDlg, VARM_SETEXTRATEXT, 0, (LPARAM)dat->vhs->fi->tszExtraText); + SendMessage(hwndDlg, VARM_SETEXTRATEXT, 0, (LPARAM)dat->vhs->fi->szExtraText.w); else { - WCHAR *wszSource = mir_a2u(dat->vhs->fi->szExtraText); + wchar_t *wszSource = mir_a2u(dat->vhs->fi->szExtraText.a); SendMessage(hwndDlg, VARM_SETEXTRATEXT, 0, (LPARAM)wszSource); mir_free(wszSource); @@ -906,12 +906,12 @@ static INT_PTR CALLBACK helpDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM l if (len > 0) { if ((dat->vhs->fi != nullptr) && (!(dat->vhs->flags&VHF_DONTFILLSTRUCT))) { if (dat->vhs->fi->flags&FIF_UNICODE) { - dat->vhs->fi->tszFormat = (wchar_t*)mir_calloc((len + 1)*sizeof(WCHAR)); - SendMessage(hwndDlg, VARM_GETINPUTTEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->tszFormat); + dat->vhs->fi->szFormat.w = (wchar_t*)mir_calloc((len + 1)*sizeof(wchar_t)); + SendMessage(hwndDlg, VARM_GETINPUTTEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szFormat.w); } else { - dat->vhs->fi->szFormat = (char*)mir_calloc(len + 1); - SendMessageA(hwndDlg, VARM_GETINPUTTEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szFormat); + dat->vhs->fi->szFormat.a = (char*)mir_calloc(len + 1); + SendMessageA(hwndDlg, VARM_GETINPUTTEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szFormat.a); } } } @@ -940,12 +940,12 @@ static INT_PTR CALLBACK helpDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM l int len = SendMessage(hwndDlg, VARM_GETEXTRATEXTLENGTH, 0, 0); if (len > 0) { if (dat->vhs->fi->flags&FIF_UNICODE) { - dat->vhs->fi->tszExtraText = (wchar_t*)mir_calloc((len + 1)*sizeof(WCHAR)); - SendMessage(hwndDlg, VARM_GETEXTRATEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->tszExtraText); + dat->vhs->fi->szExtraText.w = (wchar_t*)mir_calloc((len + 1)*sizeof(wchar_t)); + SendMessage(hwndDlg, VARM_GETEXTRATEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szExtraText.w); } else { - dat->vhs->fi->szExtraText = (char*)mir_calloc(len + 1); - SendMessageA(hwndDlg, VARM_GETEXTRATEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szExtraText); + dat->vhs->fi->szExtraText.a = (char*)mir_calloc(len + 1); + SendMessageA(hwndDlg, VARM_GETEXTRATEXT, (WPARAM)len + 1, (LPARAM)dat->vhs->fi->szExtraText.a); } } dat->vhs->fi->hContact = (MCONTACT)SendMessage(hwndDlg, VARM_GETSUBJECT, 0, 0); @@ -1141,7 +1141,7 @@ INT_PTR showHelpService(WPARAM wParam, LPARAM lParam) memset(fi, 0, sizeof(FORMATINFO)); fi->cbSize = sizeof(FORMATINFO); - fi->szFormat = (char *)lParam; + fi->szFormat.a = (char *)lParam; if (vhs == nullptr) vhs = (VARHELPINFO*)mir_alloc(sizeof(VARHELPINFO)); diff --git a/plugins/Variables/src/parse_alias.cpp b/plugins/Variables/src/parse_alias.cpp index aff5f9251c..9fd2f4f6c0 100644 --- a/plugins/Variables/src/parse_alias.cpp +++ b/plugins/Variables/src/parse_alias.cpp @@ -73,13 +73,13 @@ static wchar_t *replaceArguments(wchar_t *res, wchar_t *tArg, wchar_t *rArg) static wchar_t *parseTranslateAlias(ARGUMENTSINFO *ai) { - ALIASREGISTER *areg = searchAliasRegister(ai->targv[0]); + ALIASREGISTER *areg = searchAliasRegister(ai->argv.w[0]); if (areg == nullptr || areg->argc != ai->argc - 1) return nullptr; wchar_t *res = mir_wstrdup(areg->szTranslation); for (unsigned i = 0; i < areg->argc; i++) { - res = replaceArguments(res, areg->argv[i], ai->targv[i + 1]); + res = replaceArguments(res, areg->argv[i], ai->argv.w[i + 1]); if (res == nullptr) return nullptr; } @@ -141,17 +141,17 @@ static wchar_t *parseAddAlias(ARGUMENTSINFO *ai) return nullptr; char *szHelp, *szArgsA; - wchar_t *cur = ai->targv[1]; + wchar_t *cur = ai->argv.w[1]; while (isValidTokenChar(*cur)) cur++; - ptrW alias(mir_wstrndup(ai->targv[1], cur - ai->targv[1])); + ptrW alias(mir_wstrndup(ai->argv.w[1], cur - ai->argv.w[1])); TArgList argv; getArguments(cur, argv); deRegisterToken(alias); - addToAliasRegister(alias, argv.getCount(), argv.getArray(), ai->targv[2]); + addToAliasRegister(alias, argv.getCount(), argv.getArray(), ai->argv.w[2]); wchar_t *szArgs = nullptr; for (int i = 0; i < argv.getCount(); i++) { if (i == 0) diff --git a/plugins/Variables/src/parse_inet.cpp b/plugins/Variables/src/parse_inet.cpp index d4c00aad23..0480c52627 100644 --- a/plugins/Variables/src/parse_inet.cpp +++ b/plugins/Variables/src/parse_inet.cpp @@ -24,7 +24,7 @@ static wchar_t *parseUrlEnc(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - char *res = mir_u2a(ai->targv[1]); + char *res = mir_u2a(ai->argv.w[1]); if (res == nullptr) return nullptr; @@ -55,7 +55,7 @@ static wchar_t *parseUrlDec(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - char *res = mir_u2a(ai->targv[1]); + char *res = mir_u2a(ai->argv.w[1]); if (res == nullptr) return nullptr; @@ -83,7 +83,7 @@ static wchar_t *parseNToA(ARGUMENTSINFO *ai) return nullptr; struct in_addr in; - in.s_addr = ttoi(ai->targv[1]); + in.s_addr = ttoi(ai->argv.w[1]); return mir_a2u(inet_ntoa(in)); } @@ -93,7 +93,7 @@ static wchar_t *parseHToA(ARGUMENTSINFO *ai) return nullptr; struct in_addr in; - in.s_addr = htonl(ttoi(ai->targv[1])); + in.s_addr = htonl(ttoi(ai->argv.w[1])); return mir_a2u(inet_ntoa(in)); } diff --git a/plugins/Variables/src/parse_logic.cpp b/plugins/Variables/src/parse_logic.cpp index 2c234b9890..7a48c01931 100644 --- a/plugins/Variables/src/parse_logic.cpp +++ b/plugins/Variables/src/parse_logic.cpp @@ -27,7 +27,7 @@ static wchar_t *parseAnd(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); for (unsigned i = 1; i < ai->argc; i++) { - fi.tszFormat = ai->targv[i]; + fi.szFormat.w = ai->argv.w[i]; mir_free(formatString(&fi)); if (fi.eCount > 0) { @@ -56,10 +56,10 @@ static wchar_t *parseIf(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); fi.eCount = fi.pCount = 0; - fi.tszFormat = ai->targv[1]; + fi.szFormat.w = ai->argv.w[1]; mir_free(formatString(&fi)); - return mir_wstrdup((fi.eCount == 0) ? ai->targv[2] : ai->targv[3]); + return mir_wstrdup((fi.eCount == 0) ? ai->argv.w[2] : ai->argv.w[3]); } static wchar_t *parseIf2(ARGUMENTSINFO *ai) @@ -70,13 +70,13 @@ static wchar_t *parseIf2(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); fi.eCount = fi.pCount = 0; - fi.tszFormat = ai->targv[1]; + fi.szFormat.w = ai->argv.w[1]; wchar_t *szCondition = formatString(&fi); if (fi.eCount == 0) return szCondition; mir_free(szCondition); - return mir_wstrdup(ai->targv[2]); + return mir_wstrdup(ai->argv.w[2]); } static wchar_t *parseIf3(ARGUMENTSINFO *ai) @@ -85,7 +85,7 @@ static wchar_t *parseIf3(ARGUMENTSINFO *ai) memcpy(&fi, ai->fi, sizeof(fi)); for (unsigned i = 1; i < ai->argc; i++) { fi.eCount = fi.pCount = 0; - fi.tszFormat = ai->targv[i]; + fi.szFormat.w = ai->argv.w[i]; wchar_t *szCondition = formatString(&fi); if (fi.eCount == 0) return szCondition; @@ -103,17 +103,17 @@ static wchar_t *parseIfequal(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); - fi.szFormat = ai->argv[1]; + fi.szFormat.w = ai->argv.w[1]; ptrW tszFirst(formatString(&fi)); - fi.szFormat = ai->argv[2]; + fi.szFormat.w = ai->argv.w[2]; ptrW tszSecond(formatString(&fi)); if (tszFirst == NULL || tszSecond == NULL) return nullptr; if (ttoi(tszFirst) == ttoi(tszSecond)) - return mir_wstrdup(ai->targv[3]); + return mir_wstrdup(ai->argv.w[3]); - return mir_wstrdup(ai->targv[4]); + return mir_wstrdup(ai->argv.w[4]); } static wchar_t *parseIfgreater(ARGUMENTSINFO *ai) @@ -123,17 +123,17 @@ static wchar_t *parseIfgreater(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); - fi.szFormat = ai->argv[1]; + fi.szFormat.w = ai->argv.w[1]; ptrW tszFirst(formatString(&fi)); - fi.szFormat = ai->argv[2]; + fi.szFormat.w = ai->argv.w[2]; ptrW tszSecond(formatString(&fi)); if (tszFirst == NULL || tszSecond == NULL) return nullptr; if (ttoi(tszFirst) > ttoi(tszSecond)) - return mir_wstrdup(ai->targv[3]); + return mir_wstrdup(ai->argv.w[3]); - return mir_wstrdup(ai->targv[4]); + return mir_wstrdup(ai->argv.w[4]); } static wchar_t *parseIflonger(ARGUMENTSINFO *ai) @@ -143,17 +143,17 @@ static wchar_t *parseIflonger(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); - fi.szFormat = ai->argv[1]; + fi.szFormat.w = ai->argv.w[1]; ptrW tszFirst(formatString(&fi)); - fi.szFormat = ai->argv[2]; + fi.szFormat.w = ai->argv.w[2]; ptrW tszSecond(formatString(&fi)); if (tszFirst == NULL || tszSecond == NULL) return nullptr; if (mir_wstrlen(tszFirst) > mir_wstrlen(tszSecond)) - return mir_wstrdup(ai->targv[3]); + return mir_wstrdup(ai->argv.w[3]); - return mir_wstrdup(ai->targv[4]); + return mir_wstrdup(ai->argv.w[4]); } /* @@ -171,12 +171,12 @@ static wchar_t *parseFor(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); fi.eCount = fi.pCount = 0; - fi.tszFormat = ai->targv[1]; + fi.szFormat.w = ai->argv.w[1]; mir_free(formatString(&fi)); - fi.tszFormat = ai->targv[2]; + fi.szFormat.w = ai->argv.w[2]; mir_free(formatString(&fi)); while (fi.eCount == 0) { - fi.tszFormat = ai->targv[4]; + fi.szFormat.w = ai->argv.w[4]; wchar_t *parsed = formatString(&fi); if (parsed != nullptr) { if (res == nullptr) { @@ -191,10 +191,10 @@ static wchar_t *parseFor(ARGUMENTSINFO *ai) mir_wstrcat(res, parsed); mir_free(parsed); } - fi.tszFormat = ai->targv[3]; + fi.szFormat.w = ai->argv.w[3]; mir_free(formatString(&fi)); fi.eCount = 0; - fi.tszFormat = ai->targv[2]; + fi.szFormat.w = ai->argv.w[2]; mir_free(formatString(&fi)); } @@ -206,7 +206,7 @@ static wchar_t *parseEqual(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (ttoi(ai->targv[1]) != ttoi(ai->targv[2])) + if (ttoi(ai->argv.w[1]) != ttoi(ai->argv.w[2])) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -217,7 +217,7 @@ static wchar_t *parseGreater(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (ttoi(ai->targv[1]) <= ttoi(ai->targv[2])) + if (ttoi(ai->argv.w[1]) <= ttoi(ai->argv.w[2])) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -228,7 +228,7 @@ static wchar_t *parseLonger(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (mir_wstrlen(ai->targv[1]) <= mir_wstrlen(ai->targv[2])) + if (mir_wstrlen(ai->argv.w[1]) <= mir_wstrlen(ai->argv.w[2])) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -242,7 +242,7 @@ static wchar_t *parseNot(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); - fi.tszFormat = ai->targv[1]; + fi.szFormat.w = ai->argv.w[1]; mir_free(formatString(&fi)); if (fi.eCount == 0) @@ -260,7 +260,7 @@ static wchar_t *parseOr(ARGUMENTSINFO *ai) memcpy(&fi, ai->fi, sizeof(fi)); ai->flags |= AIF_FALSE; for (unsigned i = 1; (i < ai->argc) && (ai->flags&AIF_FALSE); i++) { - fi.tszFormat = ai->targv[i]; + fi.szFormat.w = ai->argv.w[i]; fi.eCount = 0; mir_free(formatString(&fi)); @@ -284,11 +284,11 @@ static wchar_t *parseXor(ARGUMENTSINFO *ai) FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); ai->flags = AIF_FALSE; - fi.tszFormat = ai->targv[0]; + fi.szFormat.w = ai->argv.w[0]; mir_free(formatString(&fi)); int val1 = fi.eCount == 0; - fi.tszFormat = ai->targv[1]; + fi.szFormat.w = ai->argv.w[1]; mir_free(formatString(&fi)); int val2 = fi.eCount == 0; diff --git a/plugins/Variables/src/parse_math.cpp b/plugins/Variables/src/parse_math.cpp index 7bb12ada35..31937df423 100644 --- a/plugins/Variables/src/parse_math.cpp +++ b/plugins/Variables/src/parse_math.cpp @@ -26,7 +26,7 @@ static wchar_t *parseAdd(ARGUMENTSINFO *ai) int result = 0; for (unsigned int i = 1; i < ai->argc; i++) - result += ttoi(ai->targv[i]); + result += ttoi(ai->argv.w[i]); return itot(result); } @@ -36,8 +36,8 @@ static wchar_t *parseDiv(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int val1 = ttoi(ai->targv[1]); - int val2 = ttoi(ai->targv[2]); + int val1 = ttoi(ai->argv.w[1]); + int val2 = ttoi(ai->argv.w[2]); if (val2 == 0) return nullptr; @@ -52,8 +52,8 @@ static wchar_t *parseHex(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int val = ttoi(ai->targv[1]); - int padding = ttoi(ai->targv[2]); + int val = ttoi(ai->argv.w[1]); + int padding = ttoi(ai->argv.w[2]); mir_snwprintf(szVal, L"%x", val); unsigned int zeros = max(padding - (signed int)mir_wstrlen(szVal), 0); wchar_t *res = (wchar_t*)mir_alloc((zeros + mir_wstrlen(szVal) + 3)*sizeof(wchar_t)); @@ -74,8 +74,8 @@ static wchar_t *parseMod(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int val1 = ttoi(ai->targv[1]); - int val2 = ttoi(ai->targv[2]); + int val1 = ttoi(ai->argv.w[1]); + int val2 = ttoi(ai->argv.w[2]); if (val2 == 0) return nullptr; @@ -87,9 +87,9 @@ static wchar_t *parseMul(ARGUMENTSINFO *ai) if (ai->argc < 3) return nullptr; - int result = ttoi(ai->targv[1]); + int result = ttoi(ai->argv.w[1]); for (unsigned i = 2; i < ai->argc; i++) - result *= ttoi(ai->targv[i]); + result *= ttoi(ai->argv.w[i]); return itot(result); } @@ -99,10 +99,10 @@ static wchar_t *parseMuldiv(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - if (ttoi(ai->targv[3]) == 0) + if (ttoi(ai->argv.w[3]) == 0) return nullptr; - return itot((ttoi(ai->targv[1])*ttoi(ai->targv[2])) / ttoi(ai->targv[3])); + return itot((ttoi(ai->argv.w[1])*ttoi(ai->argv.w[2])) / ttoi(ai->argv.w[3])); } static wchar_t *parseMin(ARGUMENTSINFO *ai) @@ -110,9 +110,9 @@ static wchar_t *parseMin(ARGUMENTSINFO *ai) if (ai->argc < 2) return nullptr; - int minVal = ttoi(ai->targv[1]); + int minVal = ttoi(ai->argv.w[1]); for (unsigned i = 2; i < ai->argc; i++) - minVal = min(ttoi(ai->targv[i]), minVal); + minVal = min(ttoi(ai->argv.w[i]), minVal); return itot(minVal); } @@ -122,9 +122,9 @@ static wchar_t *parseMax(ARGUMENTSINFO *ai) if (ai->argc < 2) return nullptr; - int maxVal = ttoi(ai->targv[1]); + int maxVal = ttoi(ai->argv.w[1]); for (unsigned i = 2; i < ai->argc; i++) - maxVal = max(ttoi(ai->targv[i]), maxVal); + maxVal = max(ttoi(ai->argv.w[i]), maxVal); return itot(maxVal); } @@ -134,8 +134,8 @@ static wchar_t *parseNum(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int val = ttoi(ai->targv[1]); - int padding = ttoi(ai->targv[2]); + int val = ttoi(ai->argv.w[1]); + int padding = ttoi(ai->argv.w[2]); wchar_t *szVal = itot(val); if (szVal == nullptr) return nullptr; @@ -168,9 +168,9 @@ static wchar_t *parseSub(ARGUMENTSINFO *ai) if (ai->argc < 3) return nullptr; - int result = ttoi(ai->targv[1]); + int result = ttoi(ai->argv.w[1]); for (unsigned i = 2; i < ai->argc; i++) - result -= ttoi(ai->targv[i]); + result -= ttoi(ai->argv.w[i]); return itot(result); } diff --git a/plugins/Variables/src/parse_metacontacts.cpp b/plugins/Variables/src/parse_metacontacts.cpp index b071cd4c25..e208489e97 100644 --- a/plugins/Variables/src/parse_metacontacts.cpp +++ b/plugins/Variables/src/parse_metacontacts.cpp @@ -24,7 +24,7 @@ static wchar_t *parseGetParent(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; @@ -52,7 +52,7 @@ static wchar_t *parseGetDefault(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; @@ -80,7 +80,7 @@ static wchar_t *parseGetMostOnline(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; diff --git a/plugins/Variables/src/parse_miranda.cpp b/plugins/Variables/src/parse_miranda.cpp index d60c02cebf..3488fd8d28 100644 --- a/plugins/Variables/src/parse_miranda.cpp +++ b/plugins/Variables/src/parse_miranda.cpp @@ -24,7 +24,7 @@ static wchar_t* parseCodeToStatus(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - unsigned int status = ttoi(ai->targv[1]); + unsigned int status = ttoi(ai->argv.w[1]); wchar_t *szStatus = Clist_GetStatusModeDescription(status, 0); if (szStatus != nullptr) return mir_wstrdup(szStatus); @@ -81,13 +81,13 @@ static wchar_t* parseContact(ARGUMENTSINFO *ai) int n = 0; if (ai->argc == 4) { - if (*ai->targv[3] != 'r') // random contact + if (*ai->argv.w[3] != 'r') // random contact n = -1; else - n = ttoi(ai->targv[3]) - 1; + n = ttoi(ai->argv.w[3]) - 1; } - MCONTACT hContact = getContactFromString(ai->targv[1], getContactInfoFlags(ai->targv[2]), n); + MCONTACT hContact = getContactFromString(ai->argv.w[1], getContactInfoFlags(ai->argv.w[2]), n); if (hContact == INVALID_CONTACT_ID) return nullptr; @@ -100,7 +100,7 @@ static wchar_t* parseContactCount(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int count = getContactFromString(ai->targv[1], CI_NEEDCOUNT | getContactInfoFlags(ai->targv[2])); + int count = getContactFromString(ai->argv.w[1], CI_NEEDCOUNT | getContactInfoFlags(ai->argv.w[2])); return itot(count); } @@ -109,11 +109,11 @@ static wchar_t* parseContactInfo(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; - BYTE type = getContactInfoType(ai->targv[2]); + BYTE type = getContactInfoType(ai->argv.w[2]); if (type == 0) return nullptr; @@ -180,23 +180,23 @@ static wchar_t* parseDBSetting(ARGUMENTSINFO *ai) return nullptr; MCONTACT hContact = NULL; - if (mir_wstrlen(ai->targv[1]) > 0) { - hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + if (mir_wstrlen(ai->argv.w[1]) > 0) { + hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; } - char *szModule = mir_u2a(ai->targv[2]); + char *szModule = mir_u2a(ai->argv.w[2]); if (szModule == nullptr) return nullptr; - char *szSetting = mir_u2a(ai->targv[3]); + char *szSetting = mir_u2a(ai->argv.w[3]); if (szSetting == nullptr) { mir_free(szModule); return nullptr; } - wchar_t *szDefaultValue = ((ai->argc > 4 && mir_wstrlen(ai->targv[4]) > 0) ? mir_wstrdup(ai->targv[4]) : nullptr); + wchar_t *szDefaultValue = ((ai->argc > 4 && mir_wstrlen(ai->argv.w[4]) > 0) ? mir_wstrdup(ai->argv.w[4]) : nullptr); wchar_t *res = getDBSetting(hContact, szModule, szSetting, szDefaultValue); mir_free(szDefaultValue); mir_free(szSetting); @@ -209,15 +209,15 @@ static wchar_t* parseLastSeenDate(ARGUMENTSINFO *ai) if (ai->argc <= 1) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; wchar_t *szFormat; - if (ai->argc == 2 || (ai->argc > 2 && mir_wstrlen(ai->targv[2]) == 0)) + if (ai->argc == 2 || (ai->argc > 2 && mir_wstrlen(ai->argv.w[2]) == 0)) szFormat = nullptr; else - szFormat = ai->targv[2]; + szFormat = ai->argv.w[2]; SYSTEMTIME lsTime = { 0 }; char *szModule = SEEN_MODULE; @@ -251,15 +251,15 @@ static wchar_t* parseLastSeenTime(ARGUMENTSINFO *ai) if (ai->argc <= 1) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; wchar_t *szFormat; - if (ai->argc == 2 || (ai->argc > 2 && mir_wstrlen(ai->targv[2]) == 0)) + if (ai->argc == 2 || (ai->argc > 2 && mir_wstrlen(ai->argv.w[2]) == 0)) szFormat = nullptr; else - szFormat = ai->targv[2]; + szFormat = ai->argv.w[2]; SYSTEMTIME lsTime = { 0 }; char *szModule = SEEN_MODULE; @@ -294,7 +294,7 @@ static wchar_t* parseLastSeenStatus(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; @@ -329,10 +329,10 @@ static wchar_t* parseMyStatus(ARGUMENTSINFO *ai) return nullptr; int status; - if (ai->argc == 1 || mir_wstrlen(ai->targv[1]) == 0) + if (ai->argc == 1 || mir_wstrlen(ai->argv.w[1]) == 0) status = CallService(MS_CLIST_GETSTATUSMODE, 0, 0); else - status = Proto_GetStatus(_T2A(ai->targv[1])); + status = Proto_GetStatus(_T2A(ai->argv.w[1])); wchar_t *szStatus = Clist_GetStatusModeDescription(status, 0); return (szStatus != nullptr) ? mir_wstrdup(szStatus) : nullptr; @@ -345,21 +345,21 @@ static wchar_t* parseProtoInfo(ARGUMENTSINFO *ai) const char *szRes = nullptr; wchar_t *tszRes = nullptr; - ptrA szProto(mir_u2a(ai->targv[1])); + ptrA szProto(mir_u2a(ai->argv.w[1])); - if (!mir_wstrcmp(ai->targv[2], _A2W(STR_PINAME))) + if (!mir_wstrcmp(ai->argv.w[2], _A2W(STR_PINAME))) tszRes = Hlp_GetProtocolName(szProto); - else if (!mir_wstrcmp(ai->targv[2], _A2W(STR_PIUIDTEXT))) { + else if (!mir_wstrcmp(ai->argv.w[2], _A2W(STR_PIUIDTEXT))) { szRes = (const char *)CallProtoService(szProto, PS_GETCAPS, (WPARAM)PFLAG_UNIQUEIDTEXT, 0); if (INT_PTR(szRes) == CALLSERVICE_NOTFOUND || szRes == nullptr) return nullptr; } - else if (!mir_wstrcmp(ai->targv[2], _A2W(STR_PIUIDSETTING))) { + else if (!mir_wstrcmp(ai->argv.w[2], _A2W(STR_PIUIDSETTING))) { szRes = Proto_GetUniqueId(szProto); if (szRes == nullptr) return nullptr; } - else if (!mir_wstrcmp(ai->targv[2], _A2W(STR_PINICK))) + else if (!mir_wstrcmp(ai->argv.w[2], _A2W(STR_PINICK))) tszRes = Contact_GetInfo(CNF_DISPLAY, NULL, szProto); if (szRes == nullptr && tszRes == nullptr) @@ -527,7 +527,7 @@ static wchar_t* parseDbEvent(ARGUMENTSINFO *ai) return nullptr; int flags = DBE_MESSAGE; - switch (*ai->targv[2]) { + switch (*ai->argv.w[2]) { case 'f': flags |= DBE_FIRST; break; @@ -535,7 +535,7 @@ static wchar_t* parseDbEvent(ARGUMENTSINFO *ai) flags |= DBE_LAST; break; } - switch (*ai->targv[3]) { + switch (*ai->argv.w[3]) { case 's': flags |= DBE_SENT; break; @@ -546,7 +546,7 @@ static wchar_t* parseDbEvent(ARGUMENTSINFO *ai) flags |= DBE_RCVD | DBE_SENT; break; } - switch (*ai->targv[4]) { + switch (*ai->argv.w[4]) { case 'r': flags |= DBE_READ; break; @@ -558,7 +558,7 @@ static wchar_t* parseDbEvent(ARGUMENTSINFO *ai) break; } - MCONTACT hContact = getContactFromString(ai->targv[1], CI_ALLFLAGS); + MCONTACT hContact = getContactFromString(ai->argv.w[1], CI_ALLFLAGS); if (hContact == INVALID_CONTACT_ID) return nullptr; @@ -584,7 +584,7 @@ static wchar_t* parseTranslate(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = TranslateW(ai->targv[1]); + wchar_t *res = TranslateW(ai->argv.w[1]); return (res == nullptr) ? nullptr : mir_wstrdup(res); } @@ -628,7 +628,7 @@ static wchar_t *parseMirandaCoreVar(ARGUMENTSINFO *ai) ai->flags |= AIF_DONTPARSE; wchar_t corevar[MAX_PATH]; - mir_snwprintf(corevar, L"%%%s%%", ai->targv[0]); + mir_snwprintf(corevar, L"%%%s%%", ai->argv.w[0]); return Utils_ReplaceVarsW(corevar); } @@ -637,7 +637,7 @@ static wchar_t *parseMirSrvExists(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - if (!ServiceExists(_T2A(ai->targv[1]))) + if (!ServiceExists(_T2A(ai->argv.w[1]))) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); diff --git a/plugins/Variables/src/parse_regexp.cpp b/plugins/Variables/src/parse_regexp.cpp index b401d15aae..c6fd4e6737 100644 --- a/plugins/Variables/src/parse_regexp.cpp +++ b/plugins/Variables/src/parse_regexp.cpp @@ -34,12 +34,12 @@ static wchar_t *parseRegExpCheck(ARGUMENTSINFO *ai) ai->flags = AIF_FALSE; - pcre16 *ppat = pcre16_compile(ai->targv[1], 0, &err, &erroffset, nullptr); + pcre16 *ppat = pcre16_compile(ai->argv.w[1], 0, &err, &erroffset, nullptr); if (ppat == nullptr) return nullptr; pcre16_extra *extra = pcre16_study(ppat, 0, &err); - int nmat = pcre16_exec(ppat, extra, ai->targv[2], (int)mir_wstrlen(ai->targv[2]), 0, 0, offsets, 99); + int nmat = pcre16_exec(ppat, extra, ai->argv.w[2], (int)mir_wstrlen(ai->argv.w[2]), 0, 0, offsets, 99); if (nmat > 0) { ai->flags &= ~AIF_FALSE; _ltoa(nmat, szVal, 10); @@ -62,21 +62,21 @@ static wchar_t *parseRegExpSubstr(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - number = _wtoi(ai->targv[3]); + number = _wtoi(ai->argv.w[3]); if (number < 0) return nullptr; ai->flags = AIF_FALSE; - pcre16 *ppat = pcre16_compile(ai->targv[1], 0, &err, &erroffset, nullptr); + pcre16 *ppat = pcre16_compile(ai->argv.w[1], 0, &err, &erroffset, nullptr); if (ppat == nullptr) return nullptr; pcre16_extra *extra = pcre16_study(ppat, 0, &err); - int nmat = pcre16_exec(ppat, extra, ai->targv[2], (int)mir_wstrlen(ai->targv[2]), 0, 0, offsets, 99); + int nmat = pcre16_exec(ppat, extra, ai->argv.w[2], (int)mir_wstrlen(ai->argv.w[2]), 0, 0, offsets, 99); if (nmat >= 0) ai->flags &= ~AIF_FALSE; - if (pcre16_get_substring(ai->targv[2], offsets, nmat, number, &substring) < 0) + if (pcre16_get_substring(ai->argv.w[2], offsets, nmat, number, &substring) < 0) ai->flags |= AIF_FALSE; else { wchar_t *tres = mir_wstrdup(substring); diff --git a/plugins/Variables/src/parse_str.cpp b/plugins/Variables/src/parse_str.cpp index f13b4a0252..e335a36d69 100644 --- a/plugins/Variables/src/parse_str.cpp +++ b/plugins/Variables/src/parse_str.cpp @@ -24,7 +24,7 @@ static wchar_t *parseCaps(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); wchar_t *cur = res; CharLower(res); *cur = (wchar_t)CharUpper((LPTSTR)*cur); @@ -49,7 +49,7 @@ static wchar_t *parseCaps2(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); wchar_t *cur = res; *cur = (wchar_t)CharUpper((LPTSTR)*cur); cur++; @@ -75,7 +75,7 @@ static wchar_t *parseEolToCrlf(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); wchar_t *cur = res; do { cur = wcschr(cur, '\n'); @@ -101,24 +101,24 @@ static wchar_t *parseFixeol(ARGUMENTSINFO *ai) if (ai->argc == 2) szReplacement = L"(...)"; else if (ai->argc == 3) - szReplacement = ai->targv[2]; + szReplacement = ai->argv.w[2]; else return nullptr; - wchar_t *cur = ai->targv[1]; + wchar_t *cur = ai->argv.w[1]; while (mir_wstrcmp(cur, L"\r\n") && *cur != '\n' && *cur != 0) cur++; if (*cur == '\0') - return mir_wstrdup(ai->targv[1]); + return mir_wstrdup(ai->argv.w[1]); cur--; - wchar_t *res = (wchar_t*)mir_alloc((cur - ai->targv[1] + mir_wstrlen(szReplacement) + 1)*sizeof(wchar_t)); + wchar_t *res = (wchar_t*)mir_alloc((cur - ai->argv.w[1] + mir_wstrlen(szReplacement) + 1)*sizeof(wchar_t)); if (res == nullptr) return res; - memset(res, 0, (((cur - ai->targv[1]) + 1) * sizeof(wchar_t))); - wcsncpy(res, ai->targv[1], cur - ai->targv[1]); + memset(res, 0, (((cur - ai->argv.w[1]) + 1) * sizeof(wchar_t))); + wcsncpy(res, ai->argv.w[1], cur - ai->argv.w[1]); mir_wstrcat(res, szReplacement); return res; } @@ -128,11 +128,11 @@ static wchar_t *parseFixeol2(ARGUMENTSINFO *ai) wchar_t *szReplacement; switch (ai->argc) { case 2: szReplacement = L" "; break; - case 3: szReplacement = ai->targv[2]; break; + case 3: szReplacement = ai->argv.w[2]; break; default: return nullptr; } - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); for (size_t pos = 0; pos < mir_wstrlen(res); pos++) { wchar_t *cur = res + pos; wchar_t *szEol = nullptr; @@ -160,18 +160,18 @@ static wchar_t *parseInsert(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - unsigned int pos = ttoi(ai->targv[3]); - if (pos > mir_wstrlen(ai->targv[1])) + unsigned int pos = ttoi(ai->argv.w[3]); + if (pos > mir_wstrlen(ai->argv.w[1])) return nullptr; - wchar_t *res = (wchar_t*)mir_alloc((mir_wstrlen(ai->targv[1]) + mir_wstrlen(ai->targv[2]) + 1)*sizeof(wchar_t)); + wchar_t *res = (wchar_t*)mir_alloc((mir_wstrlen(ai->argv.w[1]) + mir_wstrlen(ai->argv.w[2]) + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; - memset(res, 0, ((mir_wstrlen(ai->targv[1]) + mir_wstrlen(ai->targv[2]) + 1) * sizeof(wchar_t))); - wcsncpy(res, ai->targv[1], pos); - mir_wstrcpy(res + pos, ai->targv[2]); - mir_wstrcpy(res + pos + mir_wstrlen(ai->targv[2]), ai->targv[1] + pos); + memset(res, 0, ((mir_wstrlen(ai->argv.w[1]) + mir_wstrlen(ai->argv.w[2]) + 1) * sizeof(wchar_t))); + wcsncpy(res, ai->argv.w[1], pos); + mir_wstrcpy(res + pos, ai->argv.w[2]); + mir_wstrcpy(res + pos + mir_wstrlen(ai->argv.w[2]), ai->argv.w[1] + pos); return res; } @@ -180,17 +180,17 @@ static wchar_t *parseLeft(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int len = ttoi(ai->targv[2]); + int len = ttoi(ai->argv.w[2]); if (len < 0) return nullptr; - len = min(len, (signed int)mir_wstrlen(ai->targv[1])); + len = min(len, (signed int)mir_wstrlen(ai->argv.w[1])); wchar_t *res = (wchar_t*)mir_alloc((len + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; memset(res, 0, ((len + 1) * sizeof(wchar_t))); - wcsncpy(res, ai->targv[1], len); + wcsncpy(res, ai->argv.w[1], len); return res; } @@ -199,7 +199,7 @@ static wchar_t *parseLen(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - return itot((int)mir_wstrlen(ai->targv[1])); + return itot((int)mir_wstrlen(ai->argv.w[1])); } static wchar_t *parseLineCount(ARGUMENTSINFO *ai) @@ -208,8 +208,8 @@ static wchar_t *parseLineCount(ARGUMENTSINFO *ai) return nullptr; int count = 1; - wchar_t *cur = ai->targv[1]; - while (cur < (ai->targv[1] + mir_wstrlen(ai->targv[1]))) { + wchar_t *cur = ai->argv.w[1]; + while (cur < (ai->argv.w[1] + mir_wstrlen(ai->argv.w[1]))) { if (!wcsncmp(cur, L"\r\n", 2)) { count++; cur++; @@ -228,7 +228,7 @@ static wchar_t *parseLower(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); if (res == nullptr) return nullptr; @@ -242,10 +242,10 @@ static wchar_t *parseLongest(ARGUMENTSINFO *ai) unsigned int iLong = 1; for (unsigned int i = 2; i < ai->argc; i++) - if (mir_wstrlen(ai->targv[i]) > mir_wstrlen(ai->targv[iLong])) + if (mir_wstrlen(ai->argv.w[i]) > mir_wstrlen(ai->argv.w[iLong])) iLong = i; - return mir_wstrdup(ai->targv[iLong]); + return mir_wstrdup(ai->argv.w[iLong]); } static wchar_t *parseNoOp(ARGUMENTSINFO *ai) @@ -253,7 +253,7 @@ static wchar_t *parseNoOp(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - return mir_wstrdup(ai->targv[1]); + return mir_wstrdup(ai->argv.w[1]); } static wchar_t *parsePad(ARGUMENTSINFO *ai) @@ -261,25 +261,25 @@ static wchar_t *parsePad(ARGUMENTSINFO *ai) wchar_t padchar; switch (ai->argc) { case 3: padchar = ' '; break; - case 4: padchar = *ai->targv[3]; break; + case 4: padchar = *ai->argv.w[3]; break; default: return nullptr; } - int padding = ttoi(ai->targv[2]); + int padding = ttoi(ai->argv.w[2]); if (padding < 0) return nullptr; - unsigned int addcount = max(padding - (signed int)mir_wstrlen(ai->targv[1]), 0); - wchar_t *res = (wchar_t*)mir_alloc((addcount + mir_wstrlen(ai->targv[1]) + 1)*sizeof(wchar_t)); + unsigned int addcount = max(padding - (signed int)mir_wstrlen(ai->argv.w[1]), 0); + wchar_t *res = (wchar_t*)mir_alloc((addcount + mir_wstrlen(ai->argv.w[1]) + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; - memset(res, 0, ((addcount + mir_wstrlen(ai->targv[1]) + 1) * sizeof(wchar_t))); + memset(res, 0, ((addcount + mir_wstrlen(ai->argv.w[1]) + 1) * sizeof(wchar_t))); wchar_t *cur = res; for (unsigned int i = 0; i < addcount; i++) *cur++ = padchar; - mir_wstrcat(res, ai->targv[1]); + mir_wstrcat(res, ai->argv.w[1]); return res; } @@ -288,22 +288,22 @@ static wchar_t *parsePadright(ARGUMENTSINFO *ai) wchar_t padchar; switch (ai->argc) { case 3: padchar = ' '; break; - case 4: padchar = *ai->targv[3]; break; + case 4: padchar = *ai->argv.w[3]; break; default: return nullptr; } - int padding = ttoi(ai->targv[2]); + int padding = ttoi(ai->argv.w[2]); if (padding < 0) return nullptr; - unsigned int addcount = max(padding - (signed int)mir_wstrlen(ai->targv[1]), 0); - wchar_t *res = (wchar_t*)mir_alloc((addcount + mir_wstrlen(ai->targv[1]) + 1)*sizeof(wchar_t)); + unsigned int addcount = max(padding - (signed int)mir_wstrlen(ai->argv.w[1]), 0); + wchar_t *res = (wchar_t*)mir_alloc((addcount + mir_wstrlen(ai->argv.w[1]) + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; - memset(res, 0, ((addcount + mir_wstrlen(ai->targv[1]) + 1) * sizeof(wchar_t))); - mir_wstrcpy(res, ai->targv[1]); - wchar_t *cur = res + mir_wstrlen(ai->targv[1]); + memset(res, 0, ((addcount + mir_wstrlen(ai->argv.w[1]) + 1) * sizeof(wchar_t))); + mir_wstrcpy(res, ai->argv.w[1]); + wchar_t *cur = res + mir_wstrlen(ai->argv.w[1]); for (unsigned int i = 0; i < addcount; i++) *cur++ = padchar; @@ -315,15 +315,15 @@ static wchar_t *parsePadcut(ARGUMENTSINFO *ai) wchar_t padchar; switch (ai->argc) { case 3: padchar = ' '; break; - case 4: padchar = *ai->targv[3]; break; + case 4: padchar = *ai->argv.w[3]; break; default: return nullptr; } - int padding = ttoi(ai->targv[2]); + int padding = ttoi(ai->argv.w[2]); if (padding < 0) return nullptr; - int addcount = max(padding - (signed int)mir_wstrlen(ai->targv[1]), 0); + int addcount = max(padding - (signed int)mir_wstrlen(ai->argv.w[1]), 0); wchar_t *res = (wchar_t*)mir_alloc((padding + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; @@ -334,7 +334,7 @@ static wchar_t *parsePadcut(ARGUMENTSINFO *ai) *cur++ = padchar; if (padding > addcount) - wcsncpy(res + addcount, ai->targv[1], padding - addcount); + wcsncpy(res + addcount, ai->argv.w[1], padding - addcount); return res; } @@ -344,15 +344,15 @@ static wchar_t *parsePadcutright(ARGUMENTSINFO *ai) wchar_t padchar; switch (ai->argc) { case 3: padchar = ' '; break; - case 4: padchar = *ai->targv[3]; break; + case 4: padchar = *ai->argv.w[3]; break; default: return nullptr; } - int padding = ttoi(ai->targv[2]); + int padding = ttoi(ai->argv.w[2]); if (padding < 0) return nullptr; - int addcount = max(padding - (signed int)mir_wstrlen(ai->targv[1]), 0); + int addcount = max(padding - (signed int)mir_wstrlen(ai->argv.w[1]), 0); wchar_t *res = (wchar_t*)mir_alloc((padding + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; @@ -363,7 +363,7 @@ static wchar_t *parsePadcutright(ARGUMENTSINFO *ai) *cur++ = padchar; if (padding > addcount) - wcsncpy(res, ai->targv[1], padding - addcount); + wcsncpy(res, ai->argv.w[1], padding - addcount); return res; } @@ -373,17 +373,17 @@ static wchar_t *parseRepeat(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int count = ttoi(ai->targv[2]); + int count = ttoi(ai->argv.w[2]); if (count < 0) return nullptr; - wchar_t *res = (wchar_t*)mir_alloc((count * mir_wstrlen(ai->targv[1]) + 1)*sizeof(wchar_t)); + wchar_t *res = (wchar_t*)mir_alloc((count * mir_wstrlen(ai->argv.w[1]) + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; - memset(res, 0, ((count * mir_wstrlen(ai->targv[1]) + 1) * sizeof(wchar_t))); + memset(res, 0, ((count * mir_wstrlen(ai->argv.w[1]) + 1) * sizeof(wchar_t))); for (int i = 0; i < count; i++) - mir_wstrcat(res, ai->targv[1]); + mir_wstrcat(res, ai->argv.w[1]); return res; } @@ -396,21 +396,21 @@ static wchar_t *parseReplace(ARGUMENTSINFO *ai) wchar_t *cur; size_t pos = 0; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); for (size_t i = 2; i < ai->argc; i += 2) { - if (mir_wstrlen(ai->targv[i]) == 0) + if (mir_wstrlen(ai->argv.w[i]) == 0) continue; for (pos = 0; postargv[i], mir_wstrlen(ai->targv[i]))) { - if (mir_wstrlen(ai->targv[i + 1]) > mir_wstrlen(ai->targv[i])) { - res = (wchar_t*)mir_realloc(res, (mir_wstrlen(res) + mir_wstrlen(ai->targv[i + 1]) - mir_wstrlen(ai->targv[i]) + 1)*sizeof(wchar_t)); + if (!wcsncmp(cur, ai->argv.w[i], mir_wstrlen(ai->argv.w[i]))) { + if (mir_wstrlen(ai->argv.w[i + 1]) > mir_wstrlen(ai->argv.w[i])) { + res = (wchar_t*)mir_realloc(res, (mir_wstrlen(res) + mir_wstrlen(ai->argv.w[i + 1]) - mir_wstrlen(ai->argv.w[i]) + 1)*sizeof(wchar_t)); cur = res + pos; } - memmove(cur + mir_wstrlen(ai->targv[i + 1]), cur + mir_wstrlen(ai->targv[i]), (mir_wstrlen(cur + mir_wstrlen(ai->targv[i])) + 1)*sizeof(wchar_t)); - memcpy(cur, ai->targv[i + 1], mir_wstrlen(ai->targv[i + 1])*sizeof(wchar_t)); - pos += mir_wstrlen(ai->targv[i + 1]) - 1; + memmove(cur + mir_wstrlen(ai->argv.w[i + 1]), cur + mir_wstrlen(ai->argv.w[i]), (mir_wstrlen(cur + mir_wstrlen(ai->argv.w[i])) + 1)*sizeof(wchar_t)); + memcpy(cur, ai->argv.w[i + 1], mir_wstrlen(ai->argv.w[i + 1])*sizeof(wchar_t)); + pos += mir_wstrlen(ai->argv.w[i + 1]) - 1; } } res = (wchar_t*)mir_realloc(res, (mir_wstrlen(res) + 1)*sizeof(wchar_t)); @@ -424,17 +424,17 @@ static wchar_t *parseRight(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - int len = ttoi(ai->targv[2]); + int len = ttoi(ai->argv.w[2]); if (len < 0) return nullptr; - len = min(len, (signed int)mir_wstrlen(ai->targv[1])); + len = min(len, (signed int)mir_wstrlen(ai->argv.w[1])); wchar_t *res = (wchar_t*)mir_alloc((len + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; memset(res, 0, ((len + 1)*sizeof(wchar_t))); - wcsncpy(res, ai->targv[1] + mir_wstrlen(ai->targv[1]) - len, len); + wcsncpy(res, ai->argv.w[1] + mir_wstrlen(ai->argv.w[1]) - len, len); return res; } @@ -446,21 +446,21 @@ static wchar_t *parseScroll(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - if (mir_wstrlen(ai->targv[1]) == 0) - return mir_wstrdup(ai->targv[1]); + if (mir_wstrlen(ai->argv.w[1]) == 0) + return mir_wstrdup(ai->argv.w[1]); - size_t move = ttoi(ai->targv[3]) % mir_wstrlen(ai->targv[1]); - size_t display = ttoi(ai->targv[2]); - if (display > mir_wstrlen(ai->targv[1])) - display = (unsigned)mir_wstrlen(ai->targv[1]); + size_t move = ttoi(ai->argv.w[3]) % mir_wstrlen(ai->argv.w[1]); + size_t display = ttoi(ai->argv.w[2]); + if (display > mir_wstrlen(ai->argv.w[1])) + display = (unsigned)mir_wstrlen(ai->argv.w[1]); - wchar_t *res = (wchar_t*)mir_alloc((2 * mir_wstrlen(ai->targv[1]) + 1)*sizeof(wchar_t)); + wchar_t *res = (wchar_t*)mir_alloc((2 * mir_wstrlen(ai->argv.w[1]) + 1)*sizeof(wchar_t)); if (res == nullptr) return nullptr; - memset(res, 0, ((2 * mir_wstrlen(ai->targv[1]) + 1) * sizeof(wchar_t))); - mir_wstrcpy(res, ai->targv[1]); - mir_wstrcat(res, ai->targv[1]); + memset(res, 0, ((2 * mir_wstrlen(ai->argv.w[1]) + 1) * sizeof(wchar_t))); + mir_wstrcpy(res, ai->argv.w[1]); + mir_wstrcat(res, ai->argv.w[1]); memmove(res, res + move, (mir_wstrlen(res + move) + 1)*sizeof(wchar_t)); *(res + display) = 0; res = (wchar_t*)mir_realloc(res, (mir_wstrlen(res) + 1)*sizeof(wchar_t)); @@ -475,10 +475,10 @@ static wchar_t *parseShortest(ARGUMENTSINFO *ai) int iShort = 1; for (unsigned i = 2; i < ai->argc; i++) - if (mir_wstrlen(ai->targv[i]) < mir_wstrlen(ai->targv[iShort])) + if (mir_wstrlen(ai->argv.w[i]) < mir_wstrlen(ai->argv.w[iShort])) iShort = i; - return mir_wstrdup(ai->targv[iShort]); + return mir_wstrdup(ai->argv.w[iShort]); } static wchar_t *parseStrchr(ARGUMENTSINFO *ai) @@ -486,11 +486,11 @@ static wchar_t *parseStrchr(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - wchar_t *c = wcschr(ai->targv[1], *ai->targv[2]); + wchar_t *c = wcschr(ai->argv.w[1], *ai->argv.w[2]); if (c == nullptr || *c == 0) return mir_wstrdup(L"0"); - return itot(c - ai->targv[1] + 1); + return itot(c - ai->argv.w[1] + 1); } static wchar_t *parseStrcmp(ARGUMENTSINFO *ai) @@ -498,7 +498,7 @@ static wchar_t *parseStrcmp(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (mir_wstrcmp(ai->targv[1], ai->targv[2])) + if (mir_wstrcmp(ai->argv.w[1], ai->argv.w[2])) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -511,7 +511,7 @@ static wchar_t *parseStrmcmp(ARGUMENTSINFO *ai) ai->flags |= AIF_FALSE; for (unsigned i = 2; i < ai->argc; i++) { - if (!mir_wstrcmp(ai->targv[1], ai->targv[i])) { + if (!mir_wstrcmp(ai->argv.w[1], ai->argv.w[i])) { ai->flags &= ~AIF_FALSE; break; } @@ -525,11 +525,11 @@ static wchar_t *parseStrncmp(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - int n = ttoi(ai->targv[3]); + int n = ttoi(ai->argv.w[3]); if (n <= 0) return nullptr; - if (wcsncmp(ai->targv[1], ai->targv[2], n)) + if (wcsncmp(ai->argv.w[1], ai->argv.w[2], n)) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -540,7 +540,7 @@ static wchar_t *parseStricmp(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (mir_wstrcmpi(ai->targv[1], ai->targv[2])) + if (mir_wstrcmpi(ai->argv.w[1], ai->argv.w[2])) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -551,11 +551,11 @@ static wchar_t *parseStrnicmp(ARGUMENTSINFO *ai) if (ai->argc != 4) return nullptr; - int n = ttoi(ai->targv[3]); + int n = ttoi(ai->argv.w[3]); if (n <= 0) return nullptr; - if (wcsnicmp(ai->targv[1], ai->targv[2], n)) + if (wcsnicmp(ai->argv.w[1], ai->argv.w[2], n)) ai->flags |= AIF_FALSE; return mir_wstrdup(L""); @@ -566,11 +566,11 @@ static wchar_t *parseStrrchr(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - wchar_t *c = wcsrchr(ai->targv[1], *ai->targv[2]); + wchar_t *c = wcsrchr(ai->argv.w[1], *ai->argv.w[2]); if ((c == nullptr) || (*c == 0)) return mir_wstrdup(L"0"); - return itot(c - ai->targv[1] + 1); + return itot(c - ai->argv.w[1] + 1); } static wchar_t *parseStrstr(ARGUMENTSINFO *ai) @@ -578,11 +578,11 @@ static wchar_t *parseStrstr(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - wchar_t *c = wcsstr(ai->targv[1], ai->targv[2]); + wchar_t *c = wcsstr(ai->argv.w[1], ai->argv.w[2]); if ((c == nullptr) || (*c == 0)) return mir_wstrdup(L"0"); - return itot(c - ai->targv[1] + 1); + return itot(c - ai->argv.w[1] + 1); } static wchar_t *parseSubstr(ARGUMENTSINFO *ai) @@ -590,18 +590,18 @@ static wchar_t *parseSubstr(ARGUMENTSINFO *ai) if (ai->argc < 3) return nullptr; - int to, from = max(ttoi(ai->targv[2]) - 1, 0); + int to, from = max(ttoi(ai->argv.w[2]) - 1, 0); if (ai->argc > 3) - to = min(ttoi(ai->targv[3]), (int)mir_wstrlen(ai->targv[1])); + to = min(ttoi(ai->argv.w[3]), (int)mir_wstrlen(ai->argv.w[1])); else - to = (int)mir_wstrlen(ai->targv[1]); + to = (int)mir_wstrlen(ai->argv.w[1]); if (to < from) return nullptr; wchar_t *res = (wchar_t*)mir_alloc((to - from + 1)*sizeof(wchar_t)); memset(res, 0, ((to - from + 1) * sizeof(wchar_t))); - wcsncpy(res, ai->targv[1] + from, to - from); + wcsncpy(res, ai->argv.w[1] + from, to - from); return res; } @@ -610,11 +610,11 @@ static wchar_t *parseSelect(ARGUMENTSINFO *ai) if (ai->argc <= 1) return nullptr; - int n = ttoi(ai->targv[1]); + int n = ttoi(ai->argv.w[1]); if ((n > (signed int)ai->argc - 2) || n <= 0) return nullptr; - return mir_wstrdup(ai->targv[n + 1]); + return mir_wstrdup(ai->argv.w[n + 1]); } static wchar_t *parseSwitch(ARGUMENTSINFO *ai) @@ -623,8 +623,8 @@ static wchar_t *parseSwitch(ARGUMENTSINFO *ai) return nullptr; for (unsigned i = 2; i < ai->argc; i += 2) - if (!mir_wstrcmp(ai->targv[1], ai->targv[i])) - return mir_wstrdup(ai->targv[i + 1]); + if (!mir_wstrcmp(ai->argv.w[1], ai->argv.w[i])) + return mir_wstrdup(ai->argv.w[i + 1]); return nullptr; } @@ -634,12 +634,12 @@ static wchar_t *parseTrim(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *scur = ai->targv[1]; + wchar_t *scur = ai->argv.w[1]; while (*scur == ' ') scur++; - wchar_t *ecur = ai->targv[1] + mir_wstrlen(ai->targv[1]) - 1; - while ((*ecur == ' ') && (ecur > ai->targv[1])) + wchar_t *ecur = ai->argv.w[1] + mir_wstrlen(ai->argv.w[1]) - 1; + while ((*ecur == ' ') && (ecur > ai->argv.w[1])) ecur--; if (scur >= ecur) @@ -658,8 +658,8 @@ static wchar_t *parseTrim(ARGUMENTSINFO *ai) static wchar_t *parseTab(ARGUMENTSINFO *ai) { int count = 1; - if ((ai->argc == 2) && (mir_wstrlen(ai->targv[1]) > 0)) - count = ttoi(ai->targv[1]); + if ((ai->argc == 2) && (mir_wstrlen(ai->argv.w[1]) > 0)) + count = ttoi(ai->argv.w[1]); if (count < 0) return nullptr; @@ -681,7 +681,7 @@ static wchar_t *parseUpper(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - wchar_t *res = mir_wstrdup(ai->targv[1]); + wchar_t *res = mir_wstrdup(ai->argv.w[1]); if (res == nullptr) return nullptr; @@ -731,10 +731,10 @@ static wchar_t *parseWord(ARGUMENTSINFO *ai) return nullptr; wchar_t *res = nullptr; - int to, from = ttoi(ai->targv[2]); + int to, from = ttoi(ai->argv.w[2]); if (ai->argc == 4) { - if (mir_wstrlen(ai->targv[3]) > 0) - to = ttoi(ai->targv[3]); + if (mir_wstrlen(ai->argv.w[3]) > 0) + to = ttoi(ai->argv.w[3]); else to = 100000; // rework } @@ -744,7 +744,7 @@ static wchar_t *parseWord(ARGUMENTSINFO *ai) return nullptr; for (int i = from; i <= to; i++) { - wchar_t *szWord = getNthWord(ai->targv[1], i); + wchar_t *szWord = getNthWord(ai->argv.w[1], i); if (szWord == nullptr) return res; @@ -769,10 +769,7 @@ static wchar_t *parseExtratext(ARGUMENTSINFO *ai) return nullptr; ai->flags |= AIF_DONTPARSE; - if (ai->fi->szExtraText != nullptr) - return mir_wstrdup(ai->fi->tszExtraText); - - return nullptr; + return mir_wstrdup(ai->fi->szExtraText.w); } void registerStrTokens() diff --git a/plugins/Variables/src/parse_system.cpp b/plugins/Variables/src/parse_system.cpp index 02bfdd4407..ae1d72c3d9 100644 --- a/plugins/Variables/src/parse_system.cpp +++ b/plugins/Variables/src/parse_system.cpp @@ -51,15 +51,15 @@ static wchar_t *parseCpuLoad(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - if (mir_wstrlen(ai->targv[1]) == 0) + if (mir_wstrlen(ai->argv.w[1]) == 0) szCounter = mir_wstrdup(L"\\Processor(_Total)\\% Processor Time"); else { - int size = (int)mir_wstrlen(ai->targv[1]) + 32; + int size = (int)mir_wstrlen(ai->argv.w[1]) + 32; szCounter = (wchar_t *)mir_alloc(size * sizeof(wchar_t)); if (szCounter == nullptr) return nullptr; - mir_snwprintf(szCounter, size, L"\\Process(%s)\\%% Processor Time", ai->targv[1]); + mir_snwprintf(szCounter, size, L"\\Process(%s)\\%% Processor Time", ai->argv.w[1]); } PDH_STATUS pdhStatus = PdhValidatePath(szCounter); if (pdhStatus != ERROR_SUCCESS) { @@ -116,10 +116,10 @@ static wchar_t *parseCpuLoad(ARGUMENTSINFO *ai) static wchar_t *parseCurrentDate(ARGUMENTSINFO *ai) { wchar_t *szFormat; - if (ai->argc == 1 || (ai->argc > 1 && mir_wstrlen(ai->targv[1]) == 0)) + if (ai->argc == 1 || (ai->argc > 1 && mir_wstrlen(ai->argv.w[1]) == 0)) szFormat = nullptr; else - szFormat = ai->targv[1]; + szFormat = ai->argv.w[1]; int len = GetDateFormat(LOCALE_USER_DEFAULT, 0, nullptr, szFormat, nullptr, 0); wchar_t *res = (wchar_t*)mir_alloc((len + 1)*sizeof(wchar_t)); @@ -137,10 +137,10 @@ static wchar_t *parseCurrentDate(ARGUMENTSINFO *ai) static wchar_t *parseCurrentTime(ARGUMENTSINFO *ai) { wchar_t *szFormat; - if (ai->argc == 1 || (ai->argc > 1) && (mir_wstrlen(ai->targv[1]) == 0)) + if (ai->argc == 1 || (ai->argc > 1) && (mir_wstrlen(ai->argv.w[1]) == 0)) szFormat = nullptr; else - szFormat = ai->targv[1]; + szFormat = ai->argv.w[1]; int len = GetTimeFormat(LOCALE_USER_DEFAULT, 0, nullptr, szFormat, nullptr, 0); wchar_t *res = (wchar_t*)mir_alloc((len + 1)*sizeof(wchar_t)); @@ -162,27 +162,27 @@ static wchar_t *parseDirectory(ARGUMENTSINFO *ai) int depth = 0; if (ai->argc == 3) - depth = ttoi(ai->targv[2]); + depth = ttoi(ai->argv.w[2]); if (depth <= 0) - return mir_wstrdup(ai->targv[1]); + return mir_wstrdup(ai->argv.w[1]); size_t bi, ei; - for (ei = 0; ei < mir_wstrlen(ai->targv[1]); ei++) { - if (ai->targv[1][ei] == '\\') + for (ei = 0; ei < mir_wstrlen(ai->argv.w[1]); ei++) { + if (ai->argv.w[1][ei] == '\\') depth--; if (!depth) break; } - if (ei >= mir_wstrlen(ai->targv[1])) - return ai->targv[1]; + if (ei >= mir_wstrlen(ai->argv.w[1])) + return ai->argv.w[1]; for (bi = ei - 1; bi > 0; bi--) - if (ai->targv[1][bi - 1] == '\\') + if (ai->argv.w[1][bi - 1] == '\\') break; wchar_t *res = (wchar_t*)mir_alloc((ei - bi + 1) * sizeof(wchar_t)); - wcsncpy(res, ai->targv[1] + bi, ei - bi); + wcsncpy(res, ai->argv.w[1] + bi, ei - bi); res[ei - bi] = 0; return res; } @@ -198,14 +198,14 @@ static wchar_t *parseDirectory2(ARGUMENTSINFO *ai) int depth = 1; if (ai->argc == 3) - depth = ttoi(ai->targv[2]); + depth = ttoi(ai->argv.w[2]); if (depth <= 0) return nullptr; - wchar_t *ecur = ai->targv[1] + mir_wstrlen(ai->targv[1]); + wchar_t *ecur = ai->argv.w[1] + mir_wstrlen(ai->argv.w[1]); while (depth > 0) { - while ((*ecur != '\\') && (ecur > ai->targv[1])) + while ((*ecur != '\\') && (ecur > ai->argv.w[1])) ecur--; if (*ecur != '\\') @@ -214,11 +214,11 @@ static wchar_t *parseDirectory2(ARGUMENTSINFO *ai) depth -= 1; ecur--; } - wchar_t *res = (wchar_t*)mir_calloc((ecur - ai->targv[1] + 2) * sizeof(wchar_t)); + wchar_t *res = (wchar_t*)mir_calloc((ecur - ai->argv.w[1] + 2) * sizeof(wchar_t)); if (res == nullptr) return nullptr; - wcsncpy(res, ai->targv[1], (ecur - ai->targv[1]) + 1); + wcsncpy(res, ai->argv.w[1], (ecur - ai->argv.w[1]) + 1); return res; } @@ -275,10 +275,10 @@ static wchar_t *parseDiffTime(ARGUMENTSINFO *ai) memset(&t0, 0, sizeof(t0)); memset(&t1, 0, sizeof(t1)); - if (getTime(ai->targv[1], &t0) != 0) + if (getTime(ai->argv.w[1], &t0) != 0) return nullptr; - if (getTime(ai->targv[2], &t1) != 0) + if (getTime(ai->argv.w[2], &t1) != 0) return nullptr; diff = difftime(mktime(&t1), mktime(&t0)); @@ -292,7 +292,7 @@ static wchar_t *parseDirExists(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - HANDLE hFile = CreateFile(ai->targv[1], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr); + HANDLE hFile = CreateFile(ai->argv.w[1], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr); if (hFile == INVALID_HANDLE_VALUE) ai->flags |= AIF_FALSE; else @@ -306,7 +306,7 @@ static wchar_t *parseEnvironmentVariable(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - DWORD len = ExpandEnvironmentStrings(ai->targv[1], nullptr, 0); + DWORD len = ExpandEnvironmentStrings(ai->argv.w[1], nullptr, 0); if (len <= 0) return nullptr; @@ -315,7 +315,7 @@ static wchar_t *parseEnvironmentVariable(ARGUMENTSINFO *ai) return nullptr; memset(res, 0, ((len + 1) * sizeof(wchar_t))); - if (ExpandEnvironmentStrings(ai->targv[1], res, len) == 0) { + if (ExpandEnvironmentStrings(ai->argv.w[1], res, len) == 0) { mir_free(res); return nullptr; } @@ -327,7 +327,7 @@ static wchar_t *parseFileExists(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - HANDLE hFile = CreateFile(ai->targv[1], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + HANDLE hFile = CreateFile(ai->argv.w[1], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); if (hFile == INVALID_HANDLE_VALUE) ai->flags |= AIF_FALSE; else @@ -341,7 +341,7 @@ static wchar_t *parseFindWindow(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - HWND hWin = FindWindow(ai->targv[1], nullptr); + HWND hWin = FindWindow(ai->argv.w[1], nullptr); if (hWin == nullptr) return nullptr; @@ -371,19 +371,19 @@ static wchar_t *parseListDir(ARGUMENTSINFO *ai) tszRes = nullptr; if (ai->argc > 1) - wcsncpy(tszFirst, ai->targv[1], _countof(tszFirst) - 1); + wcsncpy(tszFirst, ai->argv.w[1], _countof(tszFirst) - 1); if (ai->argc > 2) - tszFilter = ai->targv[2]; + tszFilter = ai->argv.w[2]; if (ai->argc > 3) - tszSeperator = ai->targv[3]; + tszSeperator = ai->argv.w[3]; BOOL bFiles = TRUE, bDirs = TRUE; if (ai->argc > 4) { - if (*ai->targv[4] == 'f') + if (*ai->argv.w[4] == 'f') bDirs = FALSE; - if (*ai->targv[4] == 'd') + if (*ai->argv.w[4] == 'd') bFiles = FALSE; } if (tszFirst[mir_wstrlen(tszFirst) - 1] == '\\') @@ -436,7 +436,7 @@ static wchar_t *parseProcessRunning(ARGUMENTSINFO *ai) return nullptr; char *szProc, *ref; - szProc = ref = mir_u2a(ai->targv[1]); + szProc = ref = mir_u2a(ai->argv.w[1]); EnumProcs(MyProcessEnumerator, (LPARAM)&szProc); if (szProc != nullptr) @@ -454,7 +454,7 @@ static wchar_t *parseRegistryValue(ARGUMENTSINFO *ai) DWORD len, type; - wchar_t *key = mir_wstrdup(ai->targv[1]); + wchar_t *key = mir_wstrdup(ai->argv.w[1]); if (key == nullptr) return nullptr; @@ -490,7 +490,7 @@ static wchar_t *parseRegistryValue(ARGUMENTSINFO *ai) return nullptr; memset(res, 0, (len * sizeof(wchar_t))); - int err = RegQueryValueEx(hKey, ai->targv[2], nullptr, &type, (BYTE*)res, &len); + int err = RegQueryValueEx(hKey, ai->argv.w[2], nullptr, &type, (BYTE*)res, &len); if ((err != ERROR_SUCCESS) || (type != REG_SZ)) { RegCloseKey(hKey); mir_free(res); @@ -526,14 +526,14 @@ static wchar_t *parseTimestamp2Date(ARGUMENTSINFO *ai) SYSTEMTIME sysTime; wchar_t *szFormat; - time_t timestamp = ttoi(ai->targv[1]); + time_t timestamp = ttoi(ai->argv.w[1]); if (timestamp == 0) return nullptr; - if ((ai->argc == 2) || ((ai->argc > 2) && (mir_wstrlen(ai->targv[2]) == 0))) + if ((ai->argc == 2) || ((ai->argc > 2) && (mir_wstrlen(ai->argv.w[2]) == 0))) szFormat = nullptr; else - szFormat = ai->targv[2]; + szFormat = ai->argv.w[2]; if (TsToSystemTime(&sysTime, timestamp) != 0) return nullptr; @@ -557,15 +557,15 @@ static wchar_t *parseTimestamp2Time(ARGUMENTSINFO *ai) return nullptr; SYSTEMTIME sysTime; - time_t timestamp = ttoi(ai->targv[1]); + time_t timestamp = ttoi(ai->argv.w[1]); if (timestamp == 0) return nullptr; wchar_t *szFormat; - if ((ai->argc == 2) || ((ai->argc > 2) && (mir_wstrlen(ai->targv[2]) == 0))) + if ((ai->argc == 2) || ((ai->argc > 2) && (mir_wstrlen(ai->argv.w[2]) == 0))) szFormat = nullptr; else - szFormat = ai->targv[2]; + szFormat = ai->argv.w[2]; if (TsToSystemTime(&sysTime, timestamp) != 0) return nullptr; @@ -588,7 +588,7 @@ static wchar_t *parseTextFile(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - HANDLE hFile = CreateFile(ai->targv[1], GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr); + HANDLE hFile = CreateFile(ai->argv.w[1], GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr); if (hFile == INVALID_HANDLE_VALUE) return nullptr; @@ -598,7 +598,7 @@ static wchar_t *parseTextFile(ARGUMENTSINFO *ai) return nullptr; } - int lineNo = ttoi(ai->targv[2]); + int lineNo = ttoi(ai->argv.w[2]); int lineCount, csz; unsigned int icur, bufSz; DWORD readSz, totalReadSz; @@ -615,7 +615,7 @@ static wchar_t *parseTextFile(ARGUMENTSINFO *ai) totalReadSz = 0; lineCount = 1; - if (*ai->targv[2] == '0') { + if (*ai->argv.w[2] == '0') { // complete file bufSz = fileSz + csz; pBuf = (PBYTE)mir_calloc(bufSz); @@ -680,7 +680,7 @@ static wchar_t *parseTextFile(ARGUMENTSINFO *ai) if (lineNo < 0) lineNo = lineCount + lineNo + 1; - else if (*ai->targv[2] == 'r') + else if (*ai->argv.w[2] == 'r') lineNo = (rand() % lineCount) + 1; totalReadSz = 0; diff --git a/plugins/Variables/src/parse_variables.cpp b/plugins/Variables/src/parse_variables.cpp index 6fce6cd3fb..449352abd0 100644 --- a/plugins/Variables/src/parse_variables.cpp +++ b/plugins/Variables/src/parse_variables.cpp @@ -67,13 +67,13 @@ static wchar_t *parsePut(ARGUMENTSINFO *ai) return nullptr; // ai->flags |= AIF_DONTPARSE; - if (addToVariablesRegister(ai->targv[1], ai->targv[2])) + if (addToVariablesRegister(ai->argv.w[1], ai->argv.w[2])) return nullptr; FORMATINFO fi; memcpy(&fi, ai->fi, sizeof(fi)); - fi.tszFormat = ai->targv[2]; - fi.flags |= FIF_TCHAR; + fi.szFormat.w = ai->argv.w[2]; + fi.flags |= FIF_UNICODE; return formatString(&fi); } @@ -82,7 +82,7 @@ static wchar_t *parsePuts(ARGUMENTSINFO *ai) if (ai->argc != 3) return nullptr; - if (addToVariablesRegister(ai->targv[1], ai->targv[2])) + if (addToVariablesRegister(ai->argv.w[1], ai->argv.w[2])) return nullptr; return mir_wstrdup(L""); @@ -93,7 +93,7 @@ static wchar_t *parseGet(ARGUMENTSINFO *ai) if (ai->argc != 2) return nullptr; - return searchVariableRegister(ai->targv[1]); + return searchVariableRegister(ai->argv.w[1]); } void registerVariablesTokens() diff --git a/plugins/Variables/src/stdafx.h b/plugins/Variables/src/stdafx.h index ee25d7bdbd..ef895be881 100644 --- a/plugins/Variables/src/stdafx.h +++ b/plugins/Variables/src/stdafx.h @@ -140,16 +140,6 @@ The contact function will return either a unique contact according to the argume // if a different struct internally is used, we can use TOKENREGISTEREX #define TOKENREGISTEREX TOKENREGISTER -// old struct -typedef struct { - int cbSize; - char *szFormat; - char *szSource; - MCONTACT hContact; - int pCount; // number of succesful parses - int eCount; // number of failures -} FORMATINFOV1; - struct ParseOptions { BOOL bStripEOL; BOOL bStripWS; @@ -172,8 +162,7 @@ TOKENREGISTEREX *searchRegister(wchar_t *var, int type); wchar_t *parseFromRegister(ARGUMENTSINFO *ai); TOKENREGISTEREX *getTokenRegister(int i); int getTokenRegisterCount(); -TOKENREGISTER *getTokenRegisterByIndex(int i); -void deRegisterTemporaryVariables(); + int initTokenRegister(); int deinitTokenRegister(); // contact.c diff --git a/plugins/Variables/src/tokenregister.cpp b/plugins/Variables/src/tokenregister.cpp index 77c6af4252..12838ec7fa 100644 --- a/plugins/Variables/src/tokenregister.cpp +++ b/plugins/Variables/src/tokenregister.cpp @@ -59,8 +59,8 @@ int registerIntToken(wchar_t *szToken, wchar_t *(*parseFunction)(ARGUMENTSINFO * //tr.memType = TR_MEM_VARIABLES; tr.memType = TR_MEM_MIRANDA; tr.szHelpText = szHelpText; - tr.tszTokenString = szToken; - tr.parseFunctionT = parseFunction; + tr.szTokenString.w = szToken; + tr.parseFunctionW = parseFunction; return registerToken(0, (LPARAM)&tr); } @@ -83,8 +83,8 @@ int deRegisterToken(wchar_t *token) if (!(tre->tr.flags & TRF_PARSEFUNC) && tre->tr.szService != nullptr) mir_free(tre->tr.szService); - if (tre->tr.tszTokenString != nullptr) - mir_free(tre->tr.tszTokenString); + if (tre->tr.szTokenString.w != nullptr) + mir_free(tre->tr.szTokenString.w); if (tre->tr.szHelpText != nullptr) mir_free(tre->tr.szHelpText); @@ -101,15 +101,15 @@ INT_PTR registerToken(WPARAM, LPARAM lParam) DWORD hash; TOKENREGISTEREX *newVr = (TOKENREGISTEREX*)lParam; - if (newVr == nullptr || newVr->szTokenString == nullptr || newVr->cbSize <= 0) + if (newVr == nullptr || newVr->szTokenString.w == nullptr || newVr->cbSize <= 0) return -1; if (newVr->flags & TRF_TCHAR) { - deRegisterToken(newVr->tszTokenString); - hash = NameHashFunction(newVr->tszTokenString); + deRegisterToken(newVr->szTokenString.w); + hash = NameHashFunction(newVr->szTokenString.w); } else { - WCHAR *wtoken = mir_a2u(newVr->szTokenString); + wchar_t *wtoken = mir_a2u(newVr->szTokenString.a); deRegisterToken(wtoken); hash = NameHashFunction(wtoken); mir_free(wtoken); @@ -121,16 +121,16 @@ INT_PTR registerToken(WPARAM, LPARAM lParam) memcpy(&tre->tr, newVr, newVr->cbSize); tre->nameHash = hash; - if (!mir_wstrcmp(newVr->tszTokenString, L"alias")) + if (!mir_wstrcmp(newVr->szTokenString.w, L"alias")) log_debugA("alias"); if (!(newVr->flags & TRF_PARSEFUNC) && newVr->szService != nullptr) tre->tr.szService = mir_strdup(newVr->szService); if (newVr->flags & TRF_TCHAR) - tre->tr.tszTokenString = mir_wstrdup(newVr->tszTokenString); + tre->tr.szTokenString.w = mir_wstrdup(newVr->szTokenString.w); else - tre->tr.tszTokenString = mir_a2u(newVr->szTokenString); + tre->tr.szTokenString.w = mir_a2u(newVr->szTokenString.a); if (newVr->szHelpText != nullptr) tre->tr.szHelpText = mir_strdup(newVr->szHelpText); @@ -158,7 +158,7 @@ TOKENREGISTEREX *searchRegister(wchar_t *tvar, int type) wchar_t *parseFromRegister(ARGUMENTSINFO *ai) { - if (ai == nullptr || ai->argc == 0 || ai->targv[0] == nullptr) + if (ai == nullptr || ai->argc == 0 || ai->argv.w[0] == nullptr) return nullptr; INT_PTR callRes = 0; @@ -167,7 +167,7 @@ wchar_t *parseFromRegister(ARGUMENTSINFO *ai) mir_cslock lck(csRegister); /* note the following limitation: you cannot add/remove tokens during a call from a different thread */ - TOKENREGISTEREX *thisVr = searchRegister(ai->targv[0], 0); + TOKENREGISTEREX *thisVr = searchRegister(ai->argv.w[0], 0); if (thisVr == nullptr) return nullptr; @@ -178,9 +178,9 @@ wchar_t *parseFromRegister(ARGUMENTSINFO *ai) // unicode variables calls a non-unicode plugin ARGUMENTSINFO cAi; memcpy(&cAi, ai, sizeof(ARGUMENTSINFO)); - cAi.argv = (char**)mir_alloc(ai->argc*sizeof(char *)); + cAi.argv.a = (char**)mir_alloc(ai->argc*sizeof(char *)); for (unsigned j = 0; j < ai->argc; j++) - cAi.argv[j] = mir_u2a(ai->targv[j]); + cAi.argv.a[j] = mir_u2a(ai->argv.w[j]); if (thisVr->flags & TRF_PARSEFUNC) callRes = (INT_PTR)thisVr->parseFunction(&cAi); @@ -188,7 +188,7 @@ wchar_t *parseFromRegister(ARGUMENTSINFO *ai) callRes = CallService(thisVr->szService, 0, (LPARAM)&cAi); for (unsigned j = 0; j < cAi.argc; j++) - mir_free(cAi.argv[j]); + mir_free(cAi.argv.a[j]); if ((char *)callRes != nullptr) res = mir_a2u((char*)callRes); @@ -196,7 +196,7 @@ wchar_t *parseFromRegister(ARGUMENTSINFO *ai) else { // unicode variables calls unicode plugin if (thisVr->flags & TRF_PARSEFUNC) - callRes = (INT_PTR)thisVr->parseFunctionT(ai); + callRes = (INT_PTR)thisVr->parseFunctionW(ai); else if (thisVr->szService != nullptr) callRes = CallService(thisVr->szService, 0, (LPARAM)ai); @@ -207,7 +207,7 @@ wchar_t *parseFromRegister(ARGUMENTSINFO *ai) if (callRes != NULL) { if (trCopy.flags & TRF_CLEANUP) { if (trCopy.flags & TRF_CLEANUPFUNC) - trCopy.cleanupFunctionT((wchar_t*)callRes); + trCopy.cleanupFunctionW((wchar_t*)callRes); else if (trCopy.szCleanupService != nullptr) CallService(trCopy.szCleanupService, 0, (LPARAM)callRes); } @@ -242,8 +242,8 @@ int deinitTokenRegister() if (!(tre->tr.flags & TRF_PARSEFUNC) && tre->tr.szService != nullptr) mir_free(tre->tr.szService); - if (tre->tr.tszTokenString != nullptr) - mir_free(tre->tr.tszTokenString); + if (tre->tr.szTokenString.w != nullptr) + mir_free(tre->tr.szTokenString.w); if (tre->tr.szHelpText != nullptr) mir_free(tre->tr.szHelpText); diff --git a/plugins/Variables/src/variables.cpp b/plugins/Variables/src/variables.cpp index 76a6551c73..2db71497a4 100644 --- a/plugins/Variables/src/variables.cpp +++ b/plugins/Variables/src/variables.cpp @@ -105,12 +105,12 @@ int isValidTokenChar(wchar_t tc) /* pretty much the main loop */ static wchar_t* replaceDynVars(FORMATINFO *fi) { - if (fi->tszFormat == nullptr) + if (fi->szFormat.w == nullptr) return nullptr; int i, scurPos, curPos, tmpVarPos; - wchar_t *string = mir_wstrdup(fi->tszFormat); + wchar_t *string = mir_wstrdup(fi->szFormat.w); if (string == nullptr) return nullptr; @@ -187,7 +187,7 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) tmpVarPos = -1; if (*cur == FIELD_CHAR) { for (i = 0; i < fi->cbTemporaryVarsSize; i += 2) { - if (!mir_wstrcmp(fi->tszaTemporaryVars[i], token)) { + if (!mir_wstrcmp(fi->szTemporaryVars.w[i], token)) { tmpVarPos = i; break; } @@ -206,7 +206,7 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) scur = cur; // store this pointer for later use if (*cur == FIELD_CHAR) { - size_t len = mir_wstrlen(tr != nullptr ? tr->tszTokenString : fi->tszaTemporaryVars[tmpVarPos]); + size_t len = mir_wstrlen(tr != nullptr ? tr->szTokenString.w : fi->szTemporaryVars.w[tmpVarPos]); cur++; if (cur[len] != FIELD_CHAR) { // the next char after the token should be % fi->eCount++; @@ -215,7 +215,7 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) cur += len + 1; } else if ((*cur == FUNC_CHAR) || (*cur == FUNC_ONCE_CHAR)) { - cur += mir_wstrlen(tr->tszTokenString) + 1; + cur += mir_wstrlen(tr->szTokenString.w) + 1; wchar_t *argcur = getArguments(cur, argv); if (argcur == cur || argcur == nullptr) { fi->eCount++; @@ -228,12 +228,12 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) if (tr->flags & TRF_UNPARSEDARGS) continue; - afi.tszFormat = argv[i]; + afi.szFormat.w = argv[i]; afi.eCount = afi.pCount = 0; argv.put(i, formatString(&afi)); fi->eCount += afi.eCount; fi->pCount += afi.pCount; - mir_free(afi.szFormat); + mir_free(afi.szFormat.w); } } @@ -241,18 +241,18 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) ARGUMENTSINFO ai = { 0 }; ptrW parsedToken; if (tr != nullptr) { - argv.insert(mir_wstrdup(tr->tszTokenString), 0); + argv.insert(mir_wstrdup(tr->szTokenString.w), 0); ai.cbSize = sizeof(ai); ai.argc = argv.getCount(); - ai.targv = argv.getArray(); + ai.argv.w = argv.getArray(); ai.fi = fi; if ((*scur == FUNC_ONCE_CHAR) || (*scur == FIELD_CHAR)) ai.flags |= AIF_DONTPARSE; parsedToken = parseFromRegister(&ai); } - else parsedToken = mir_wstrdup(fi->tszaTemporaryVars[tmpVarPos + 1]); + else parsedToken = mir_wstrdup(fi->szTemporaryVars.w[tmpVarPos + 1]); argv.destroy(); @@ -302,56 +302,34 @@ static wchar_t* replaceDynVars(FORMATINFO *fi) */ static INT_PTR formatStringService(WPARAM wParam, LPARAM) { - INT_PTR res; - int i; - BOOL copied; - FORMATINFO *fi, tempFi; - wchar_t *tszFormat, *orgFormat, *tszSource, *orgSource, *tRes; - - if (((FORMATINFO *)wParam)->cbSize >= sizeof(FORMATINFO)) { - memset(&tempFi, 0, sizeof(FORMATINFO)); - memcpy(&tempFi, (FORMATINFO *)wParam, sizeof(FORMATINFO)); - fi = &tempFi; - } - else if (((FORMATINFO *)wParam)->cbSize == FORMATINFOV2_SIZE) { - memset(&tempFi, 0, sizeof(FORMATINFO)); - memcpy(&tempFi, (FORMATINFO *)wParam, FORMATINFOV2_SIZE); - fi = &tempFi; - } - else { - // old struct, must be ANSI - FORMATINFOV1 *fiv1 = (FORMATINFOV1 *)wParam; - memset(&tempFi, 0, sizeof(FORMATINFO)); - tempFi.cbSize = sizeof(FORMATINFO); - tempFi.hContact = fiv1->hContact; - tempFi.szFormat = fiv1->szFormat; - tempFi.szExtraText = fiv1->szSource; - fi = &tempFi; - } - orgFormat = fi->tszFormat; - orgSource = fi->tszExtraText; - - if (!(fi->flags & FIF_TCHAR)) { - copied = TRUE; - log_debugA("mir_a2u (%s)", fi->szExtraText); - tszFormat = fi->szFormat != nullptr ? mir_a2u(fi->szFormat) : nullptr; - tszSource = fi->szExtraText != nullptr ? mir_a2u(fi->szExtraText) : nullptr; - for (i = 0; i < fi->cbTemporaryVarsSize; i++) { - fi->tszaTemporaryVars[i] = fi->szaTemporaryVars[i] != nullptr ? mir_a2u(fi->szaTemporaryVars[i]) : nullptr; - } + FORMATINFO *pfi = (FORMATINFO*)wParam; + if (pfi->cbSize != sizeof(FORMATINFO)) + return 0; + + // prevent the original structure from being altered + FORMATINFO tmpfi = *pfi; + bool copied; + wchar_t *tszFormat, *tszSource; + if (tmpfi.flags & FIF_UNICODE) { + copied = false; + tszFormat = tmpfi.szFormat.w; + tszSource = tmpfi.szExtraText.w; } else { - copied = FALSE; - tszFormat = fi->tszFormat; - tszSource = fi->tszExtraText; + copied = true; + tszFormat = mir_a2u(tmpfi.szFormat.a); + tszSource = mir_a2u(tmpfi.szExtraText.a); + for (int i = 0; i < tmpfi.cbTemporaryVarsSize; i++) + tmpfi.szTemporaryVars.w[i] = mir_a2u(tmpfi.szTemporaryVars.a[i]); } - fi->tszFormat = tszFormat; - fi->tszExtraText = tszSource; + tmpfi.szFormat.w = tszFormat; + tmpfi.szExtraText.w = tszSource; - tRes = formatString(fi); + wchar_t *tRes = formatString(&tmpfi); - if (!(fi->flags & FIF_TCHAR)) { + INT_PTR res; + if (!(tmpfi.flags & FIF_UNICODE)) { res = (INT_PTR)mir_u2a(tRes); mir_free(tRes); } @@ -360,19 +338,12 @@ static INT_PTR formatStringService(WPARAM wParam, LPARAM) if (copied) { mir_free(tszFormat); mir_free(tszSource); - for (i = 0; i < fi->cbTemporaryVarsSize; i++) - mir_free(fi->tszaTemporaryVars); - } - - if (((FORMATINFO *)wParam)->cbSize == sizeof(FORMATINFOV1)) { - ((FORMATINFOV1 *)wParam)->eCount = fi->eCount; - ((FORMATINFOV1 *)wParam)->pCount = fi->pCount; - } - else { - ((FORMATINFO *)wParam)->eCount = fi->eCount; - ((FORMATINFO *)wParam)->pCount = fi->pCount; + for (int i = 0; i < tmpfi.cbTemporaryVarsSize; i++) + mir_free(tmpfi.szTemporaryVars.w); } + ((FORMATINFO *)wParam)->eCount = tmpfi.eCount; + ((FORMATINFO *)wParam)->pCount = tmpfi.pCount; return res; } @@ -450,10 +421,10 @@ int LoadVarModule() if (db_get_b(NULL, MODULENAME, SETTING_PARSEATSTARTUP, 0)) { FORMATINFO fi = { 0 }; fi.cbSize = sizeof(fi); - fi.tszFormat = db_get_wsa(NULL, MODULENAME, SETTING_STARTUPTEXT); - if (fi.tszFormat != nullptr) { + fi.szFormat.w = db_get_wsa(NULL, MODULENAME, SETTING_STARTUPTEXT); + if (fi.szFormat.w != nullptr) { mir_free(formatString(&fi)); - mir_free(fi.tszFormat); + mir_free(fi.szFormat.w); } } log_debugA("Variables: Init done"); -- cgit v1.2.3