Example #1
0
static TCHAR *parseNum(ARGUMENTSINFO *ai)
{
    if (ai->argc != 3)
        return NULL;

    int val = ttoi(ai->targv[1]);
    int padding = ttoi(ai->targv[2]);
    TCHAR *szVal = itot(val);
    if (szVal == NULL)
        return NULL;

    unsigned zeros = max(padding - (signed int)mir_tstrlen(szVal), 0);
    TCHAR *res = (TCHAR*)mir_alloc((zeros + mir_tstrlen(szVal) + 1)*sizeof(TCHAR));
    if (res == NULL) {
        mir_free(szVal);
        return NULL;
    }

    memset(res, 0, ((zeros + mir_tstrlen(szVal) + 1) * sizeof(TCHAR)));
    TCHAR *cur = res;
    for (unsigned i = 0; i < zeros; i++)
        *cur++ = '0';

    mir_tstrcat(res, szVal);
    mir_free(szVal);

    return res;
}
Example #2
0
static TCHAR *parseGreater(ARGUMENTSINFO *ai)
{
	if (ai->argc != 3)
		return NULL;

	if (ttoi(ai->targv[1]) <= ttoi(ai->targv[2]))
		ai->flags |= AIF_FALSE;

	return mir_tstrdup(_T(""));
}
Example #3
0
static TCHAR *parseMuldiv(ARGUMENTSINFO *ai)
{
    if (ai->argc != 4)
        return NULL;

    if (ttoi(ai->targv[3]) == 0)
        return NULL;

    return itot((ttoi(ai->targv[1])*ttoi(ai->targv[2])) / ttoi(ai->targv[3]));
}
Example #4
0
static TCHAR *parseMul(ARGUMENTSINFO *ai)
{
    if (ai->argc < 3)
        return NULL;

    int result = ttoi(ai->targv[1]);
    for (unsigned i = 2; i < ai->argc; i++)
        result *= ttoi(ai->targv[i]);

    return itot(result);
}
Example #5
0
static TCHAR *parseMax(ARGUMENTSINFO *ai)
{
    if (ai->argc < 2)
        return NULL;

    int maxVal = ttoi(ai->targv[1]);
    for (unsigned i = 2; i < ai->argc; i++)
        maxVal = max(ttoi(ai->targv[i]), maxVal);

    return itot(maxVal);
}
Example #6
0
static TCHAR *parseMod(ARGUMENTSINFO *ai)
{
    if (ai->argc != 3)
        return NULL;

    int val1 = ttoi(ai->targv[1]);
    int val2 = ttoi(ai->targv[2]);
    if (val2 == 0)
        return NULL;

    return itot(val1 % val2);
}
Example #7
0
static TCHAR* parseContact(ARGUMENTSINFO *ai)
{
	if (ai->argc < 3 || ai->argc > 4)
		return NULL;

	int n = 0;
	if (ai->argc == 4 && *ai->targv[3] != 'r')
		n = ttoi(ai->targv[3]) - 1;

	CONTACTSINFO ci = { 0 };
	ci.cbSize = sizeof(ci);
	ci.tszContact = ai->targv[1];
	ci.flags = getContactInfoFlags(ai->targv[2]);
	int count = getContactFromString(&ci);
	if (count == 0 || ci.hContacts == NULL)
		return NULL;

	if (ai->argc == 4 && *ai->targv[3] == 'r')
		n = rand() % count;

	if (count != 1 && ai->argc != 4) {
		mir_free(ci.hContacts);
		return NULL;
	}
	MCONTACT hContact = ci.hContacts[n];
	log_debugA("contact: %x", hContact);
	mir_free(ci.hContacts);

	return encodeContactToString(hContact);
}
Example #8
0
static TCHAR *parseHToA(ARGUMENTSINFO *ai)
{
	if (ai->argc != 2)
		return NULL;

	struct in_addr in;
	in.s_addr = htonl(ttoi(ai->targv[1]));
	return mir_a2t(inet_ntoa(in));
}
Example #9
0
static TCHAR *parseIfequal(ARGUMENTSINFO *ai)
{
	if (ai->argc != 5)
		return NULL;

	FORMATINFO fi;
	memcpy(&fi, ai->fi, sizeof(fi));
	fi.szFormat = ai->argv[1];
	ptrT tszFirst(formatString(&fi));
	fi.szFormat = ai->argv[2];
	ptrT tszSecond(formatString(&fi));
	if (tszFirst == NULL || tszSecond == NULL)
		return NULL;

	if (ttoi(tszFirst) == ttoi(tszSecond))
		return mir_tstrdup(ai->targv[3]);

	return mir_tstrdup(ai->targv[4]);
}
Example #10
0
static TCHAR *parseAdd(ARGUMENTSINFO *ai)
{
    if (ai->argc < 3)
        return NULL;

    int result = 0;
    for (unsigned int i = 1; i < ai->argc; i++)
        result += ttoi(ai->targv[i]);

    return itot(result);
}
Example #11
0
static TCHAR* parseCodeToStatus(ARGUMENTSINFO *ai)
{
	if (ai->argc != 2)
		return NULL;

	unsigned int status = ttoi(ai->targv[1]);
	TCHAR *szStatus = pcli->pfnGetStatusModeDescription(status, 0);
	if (szStatus != NULL)
		return mir_tstrdup(szStatus);

	return NULL;
}
Example #12
0
static TCHAR *parseHex(ARGUMENTSINFO *ai)
{
    unsigned int i;
    TCHAR szVal[34];

    if (ai->argc != 3)
        return NULL;

    int val = ttoi(ai->targv[1]);
    int padding = ttoi(ai->targv[2]);
    mir_sntprintf(szVal, _countof(szVal), _T("%x"), val);
    unsigned int zeros = max(padding - (signed int)mir_tstrlen(szVal), 0);
    TCHAR *res = (TCHAR*)mir_alloc((zeros + mir_tstrlen(szVal) + 3)*sizeof(TCHAR));
    if (res == NULL)
        return NULL;

    memset(res, 0, ((zeros + mir_tstrlen(szVal) + 3) * sizeof(TCHAR)));
    mir_tstrcpy(res, _T("0x"));
    for (i = 0; i < zeros; i++)
        *(res + 2 + i) = '0';

    mir_tstrcat(res, szVal);
    return res;
}
Example #13
0
	long string_cast<long, tstring>
		(const tstring & value)
	{
		return static_cast<long>(ttoi(value.c_str()));
	}
Example #14
0
	int32 string_cast<int32, tstring>
		(const tstring & value)
	{
		return ttoi(value.c_str());
	}
static bool isMatchTargetOSVersion(const OSVERSIONINFO& osv, const MBCString& target)
{
	const MBCString wildcard = ALITERAL('*');
	enum Phase
	{
		Phase_Platform = 0,
		Phase_Major,
		Phase_Minor,
		Phase_BuildNo,
		Phase_End
	};
	SInt32 phase = Phase_Platform;
	SInt32 ix = 0;
	while (phase < Phase_End)
	{
		if (ix >= target.Length())
		{
			return false;
		}

		MBCString elem;
		SInt32 sep = target.Find(ALITERAL('.'), ix);
		if (0 > sep)
		{
			elem = target.SubString(ix);
			ix = target.Length();
		}
		else
		{
			elem = target.SubString(ix, sep - ix);
			ix = sep + 1;
		}
		
		if (0 != elem.Compare(wildcard))
		{
			DWORD num = ttoi(elem.CString());
			DWORD cmp = 0xffffffff;
			switch (phase)
			{
			case Phase_Platform:
				cmp = osv.dwPlatformId;
				break;
			case Phase_Major:
				cmp = osv.dwMajorVersion;
				break;
			case Phase_Minor:
				cmp = osv.dwMinorVersion;
				break;
			case Phase_BuildNo:
				cmp = osv.dwBuildNumber;
				break;
			}
			if (num != cmp)
			{
				return false;
			}
		}
		++phase;
	}

	return true;
}