Пример #1
0
	//------------------------------------------------------------------------
	bool StringParser::LoadStringItems( const string& fileList, const string& directory, bool isEncrypt )
	{
		TiXmlDocument doc;
		if( !FileLoader::LoadFile( &doc, fileList, isEncrypt ) )
		{
			Assert(0);
			_LogError( string("StringParser::LoadStringItems : ") + fileList + "¼ÓÔØʧ°Ü." );
			return false;
		}
		TiXmlElement* root = doc.FirstChildElement( "StringList" );
		if( root == 0 )
		{
			doc.Clear();
			Assert(0);
			_LogError( string("StringParser::LoadStringItems : ") + fileList + "¼ÓÔØʧ°Ü." );
			return false;
		}
		TiXmlElement* entityNode = root->FirstChildElement( "StringFile" );
		for( entityNode; entityNode; entityNode=entityNode->NextSiblingElement("StringFile") )
		{
			const char* fileName = entityNode->Attribute( "File" );
			LoadStringItem( directory + "\\" + fileName, isEncrypt );
		}
		return true;
	}
Пример #2
0
	bool StringParser::LoadStringItem( const string& file, bool isEncrypt )
	{
		TiXmlDocument doc;
		if( !FileLoader::LoadFile( &doc, file, isEncrypt ) )
		{
			Assert(0);
			_LogError( string("StringParser::LoadStringItem : ") + file + "¼ÓÔØʧ°Ü." );
			return false;
		}
		TiXmlElement* root = doc.FirstChildElement( "Strings" );
		if( root == 0 )
		{
			doc.Clear();
			Assert(0);
			_LogError( string("StringParser::LoadStringItem : ") + file + "¼ÓÔØʧ°Ü." );
			return false;
		}
		TiXmlElement* entityNode = root->FirstChildElement();
		for( entityNode; entityNode; entityNode=entityNode->NextSiblingElement() )
		{
			const char* key = entityNode->Value();
			const char* text = entityNode->Attribute( "Text" );
			if( text == 0 )
			{
				_LogError( string("StringParser::LoadStringItem Error: ") + key + " ȱÉÙTextÊôÐÔ" );
				continue;
			}
			if( m_StringItems.GetStringItemById( key ) != 0 )
			{
				_LogError( string("StringParser::LoadStringItem Error: ") + key + " ÒÑ´æÔÚ" );
				continue;
			}
			string theText = text;
			int len = ::strlen( text );
			int start = 0;
			int replaceCount = 0;
			for( int i=0; i<len; ++i )
			{
				/// Find "\n"
				if( text[i] == '\\' && i+1<len && text[i+1] == 'n' )
				{
					theText.erase( theText.begin()+(i-replaceCount),theText.begin()+(i-replaceCount+2));
					string strEnter = "\n";
					theText.insert( theText.begin()+(i-replaceCount), strEnter.begin(), strEnter.begin()+strEnter.length() );
					++i;
					++replaceCount;
				}
			}
			StringParser::StringItem* item = new StringParser::StringItem;
			Parse( key, We::Type::ToWstring( theText ), item );
			m_StringItems.Add( item );
		}
		return true;
	}
Пример #3
0
static void UI_post_notice(const char *title,const char *statement,...) {
    va_list ap;
    va_start(ap,statement);
    if ( no_windowing_ui ) {
	_LogError(statement,ap);
    } else {
	if ( GWidgetPostNoticeActive8(title))
	    _LogError(statement,ap);
	else
	    _GWidgetPostNotice8(title,statement,ap,40);
    }
    va_end(ap);
}
Пример #4
0
static void UI_LogError(const char *format,...) {
    va_list ap;

    va_start(ap,format);
    _LogError(format,ap);
    va_end(ap);
}
Пример #5
0
void CMiscDlg::OnBnClicked_bnCountryCode()
{
    //update country code
    int iCheck = ((CButton*)GetDlgItem (IDC_chCountry))->GetCheck ();

    TCHAR szCountryCode[3];
    if(BST_CHECKED == iCheck)
    {
        int iCurSel = ((CComboBox*)GetDlgItem (IDC_cbCountry))->GetCurSel ();
        ((CComboBox*)GetDlgItem (IDC_cbCountry))->GetLBText(iCurSel, szCountryCode);
    }
    else
        _tcscpy(szCountryCode, _T(WMI_DISABLE_REGULATORY_CODE));

    if (0 == _tcscmp (m_pConfig->m_szCountryCode, szCountryCode))
    {
        return;//no change in country code
    }

    _LogStatus (_T ("Updating Country code... please wait"));

    if (FALSE == m_pConfig->SetCountryCode (szCountryCode))
    {
        _LogError (_T ("Country code update failed"));
        return;
    }
    else
    {
        _LogStatus (_T ("Country code updated"));
    }
}
Пример #6
0
	//------------------------------------------------------------------------
	wstring StringParser::GetString( const string& key, const Var& arg, bool returnKeyIfFailed/*=true*/ )
	{
		StringParser::StringItem* item = m_StringItems.GetStringItemById( key );
		if( item == 0 )
		{
			_LogError( string("StringParser::GetString Error : ") + key + " ²»´æÔÚ" );
			if( returnKeyIfFailed )
				return We::Type::ToWstring( key );
			return L"";
		}
		if( item->m_Texts.size() != 2 )
		{
			_LogError( string("StringParser::GetString Error : ") + key + " ²ÎÊý¸öÊý²»Æ¥Åä" );
			if( returnKeyIfFailed )
				return We::Type::ToWstring( key );
			return L"";
		}
		return item->m_Texts[0] + arg.ForceToWstring() + item->m_Texts[1];
	}
Пример #7
0
void CMiscDlg::OnBnClicked_bnDelMac()
{
    TCHAR szMAC[MAX_PATH];
    char szDelMAC[MAX_PATH];
    int nDelIndex = MAX_PATH;

    memset(szMAC, NULL, sizeof (szMAC));

    if (0 == ((CComboBox*)GetDlgItem (IDC_cbMACFilter))->GetCount ())
    {
        _LogStatus (_T ("MAC filters not present to delete"));
        AfxMessageBox(_T("MAC filters not present to delete."));
        return;
    }

    GetDlgItemText(IDC_cbMACFilter, szMAC, MAX_PATH);

    int nCurSel = ((CComboBox*)GetDlgItem (IDC_cbMACFilter))->GetCurSel ();

    memset(szDelMAC, NULL, sizeof (szDelMAC));
    wcstombs(szDelMAC, szMAC, _tcslen (szMAC));
    szDelMAC[_tcslen (szMAC)] = NULL;

    for (int i = 0; i < AP_ACL_SIZE; i++)
    {
        if (! strcmp (szDelMAC, m_pConfig->m_szACLList[i]))
        {
            nDelIndex = i;
            break;
        }
    }

    if (MAX_PATH == nDelIndex)
    {
        _LogStatus (_T ("MAC not found in list"));
        AfxMessageBox (_T ("MAC not found in list."));
        RefreshMacFilter(FALSE);
        return;
    }

    _stprintf(szMAC, _T("%u"), nDelIndex);

    _LogStatus (_T ("Deleting MAC filter... please wait"));

    if (FALSE == m_pConfig->UpdateACL (szMAC, DEL_MAC_ADDR))
    {
        _LogError (_T ("MAC filter delete failed"));
    }
    else
    {
        _LogStatus (_T ("MAC filter deleted"));
    }
    RefreshMacFilter(TRUE);
}
Пример #8
0
	//------------------------------------------------------------------------
	wstring StringParser::GetString( const string& key, bool returnKeyIfFailed/*=true*/ )
	{
		StringParser::StringItem* item = m_StringItems.GetStringItemById( key );
		if( item == 0 )
		{
			_LogError( string("StringParser::GetString Error : ") + key + " ²»´æÔÚ" );
			if( returnKeyIfFailed )
				return We::Type::ToWstring( key );
			return L"";
		}
		return item->m_Text;
	}
Пример #9
0
	//------------------------------------------------------------------------
	wstring StringParser::GetString( const string& key, const VarList& args, bool returnKeyIfFailed/*=true*/ )
	{
		StringParser::StringItem* item = m_StringItems.GetStringItemById( key );
		if( item == 0 )
		{
			_LogError( string("StringParser::GetString Error : ") + key + " ²»´æÔÚ" );
			if( returnKeyIfFailed )
				return We::Type::ToWstring( key );
			return L"";
		}
		if( item->m_Texts.size() != args.Size() + 1 )
		{
			_LogError( string("StringParser::GetString Error : ") + key + " ²ÎÊý¸öÊý²»Æ¥Åä" );
			if( returnKeyIfFailed )
				return We::Type::ToWstring( key );
			return L"";
		}
		wstring ret = item->m_Texts[0];
		for( int i=0; i<args.Size(); ++i )
			ret += args.GetValue( item->m_Indexes[i]-1 ).ForceToWstring() + item->m_Texts[i+1];
		return ret;
	}
Пример #10
0
int main(int argc, char** argv)
{
    // Setup globals.
    programName = argv[0];

    if (argc < 2) {
        _LogError("You must pass an argument to startw.exe telling it what file to start.\nUsage: startw <filename> [<args>...]");
        return 1;
    }

    // Parse argv.
    char* file = argv[1];
    char params[BUF_LENGTH];
    params[0] = '\0';
    for (int i = 2; i < argc; ++i) {
        strncat(params, argv[i], BUF_LENGTH-strlen(params));
        strncat(params, " ", BUF_LENGTH-strlen(params));
    }

    // Call ShellExecuteEx with the given arguments.
    SHELLEXECUTEINFO execInfo;
    memset(&execInfo, 0, sizeof(execInfo));
    execInfo.cbSize = sizeof(execInfo);
    execInfo.fMask = NULL;
    execInfo.lpVerb = NULL;
    execInfo.lpFile = file;
    execInfo.lpParameters = params;
    //execInfo.lpDirectory = XXX necessary for what I want?
    execInfo.nShow = SW_SHOW;
    int success = ShellExecuteEx(&execInfo);

    if (!success) {
        _LogError("ShellExecuteEx failed: %d, %d",
                  (int)execInfo.hInstApp, GetLastError());
        return 1;
    }
    return 0;
}
Пример #11
0
void CMiscDlg::OnBnClicked_bnAclpolicy()
{
    int iCurSel = ((CComboBox*)GetDlgItem (IDC_cbACLPolicy))->GetCurSel ();
     _LogStatus (_T ("Updating ACL policy.. please wait"));

    if (FALSE == m_pConfig->SetAclPolicy (iCurSel))
    {
        _LogError (_T ("ACL policy update failed"));
        return;
    }
    else
    {
        RefreshMacFilter (TRUE);
        _LogStatus (_T ("ACL policy updated"));
    }
}
Пример #12
0
void CMiscDlg::OnBnClicked_bnAddMac()
{
    TCHAR szMAC[MAX_PATH];
    char szBuffer[MAX_PATH];
    A_UINT8 szMACFilter[ATH_MAC_LEN], cWildcard;

    memset(szMAC, NULL, sizeof (szMAC));

    GetDlgItemText(IDC_cbMACFilter, szMAC, MAX_PATH);

    if (! _tcscmp(szMAC, _T("00:00:00:00:00:00")) ||//When passed this mac addr, ar6k ioctl fails
        (FALSE == m_pConfig->wmic_ether_aton_wild(szMAC, szMACFilter, &cWildcard)))
    {
        _LogStatus (_T ("Please enter a valid MAC"));
        AfxMessageBox(_T("Please enter a valid MAC."));
        RefreshMacFilter(FALSE);
        return;
    }

    memset(szBuffer, NULL, sizeof (szBuffer));
    wcstombs(szBuffer, szMAC, _tcslen (szMAC));
    szBuffer[_tcslen (szMAC)] = NULL;

    for (int i = 0; i < AP_ACL_SIZE; i++)
    {
        if (! strcmp (szBuffer, m_pConfig->m_szACLList[i]))
        {
            _LogStatus (_T ("MAC already exists in filter list"));
            AfxMessageBox(_T("MAC already exists in filter list."));
            RefreshMacFilter(FALSE);
            return;
        }
    }

    _LogStatus (_T ("Adding MAC filter... please wait"));

    if (FALSE == m_pConfig->UpdateACL (szMAC, ADD_MAC_ADDR))
    {
        _LogError (_T ("MAC filter add failed"));
    }
    else
    {
        _LogStatus (_T ("MAC filter added"));
    }
    RefreshMacFilter(TRUE);
}
Пример #13
0
    static char* _GetProgramPath(void)
    {
        //XXX this is ugly but I didn't want to use malloc, no reason
        static char progPath[MAXPATHLEN+1];
        // get absolute path to module
        if (!GetModuleFileName(NULL, progPath, MAXPATHLEN)) {
            _LogError("could not get absolute program name from "\
                "GetModuleFileName\n");
            exit(1);
        }
        // just need dirname
        for (char* p = progPath+strlen(progPath);
             *p != SEP && *p != ALTSEP;
             --p)
        {
            *p = '\0';
        }
        *p = '\0';  // remove the trailing SEP as well

        return progPath;
    }
Пример #14
0
void CMiscDlg::OnBnClicked_bnRefresh()
{
    //clear all mac-strings from combo box
    ((CComboBox*)GetDlgItem (IDC_cbStattions))->ResetContent ();

    if (FALSE == m_pConfig->GetStations ())
    {
        _LogError (_T("Get station list failed"));
    }
    else
    {
        _LogStatus (_T("Station list refreshed"));
        int nStaCount = 0;

        for (int i = 0; i < (int)m_pConfig->m_nMaxStationLimit; i++)
        {
            TCHAR szSta[MAX_PATH];

            if (strlen (m_pConfig->m_szStaList[i]))
            {
                memset (szSta, NULL, sizeof (szSta));
                mbstowcs (szSta, m_pConfig->m_szStaList[i], strlen(m_pConfig->m_szStaList[i]));
                szSta[18] = NULL;
                ((CComboBox*)GetDlgItem (IDC_cbStattions))->AddString (szSta);
                nStaCount++;
                if(m_pConfig->m_nStaCount <= nStaCount)
                    break;
            }
        }

        if (m_pConfig->m_nStaCount)
            ((CComboBox*)GetDlgItem (IDC_cbStattions))->SetCurSel (0);
        else
            _LogStatus (_T("Station list is empty"));
    }
}
Пример #15
0
void CMiscDlg::OnBnClicked_bnMaxStation()
{
    //update the station limit
    TCHAR szMaxStations[MAX_PATH] = {0, };

    GetDlgItemText (IDC_txtMaxStations, szMaxStations, MAX_PATH);

    if (m_pConfig->m_nStationLimit == _ttoi (szMaxStations))
    {
        return;//no change in station limit
    }

    _LogStatus (_T ("Updating station limit... please wait"));

    if (FALSE == m_pConfig->SetStationLimit (szMaxStations))
    {
        _LogError (_T ("Station limit update failed"));
        return;
    }
    else
    {
        _LogStatus (_T ("Station limit updated"));
    }
}
Пример #16
0
	void StringParser::Parse( const string& key, const wstring& text, StringParser::StringItem* item )
	{
		item->m_Key = key;
		item->m_Text = text;
		int i = 0;
		int j = 0;
		int k = 0;
		bool hasError = false;
		while( true )
		{
			for( int x=i; x<text.length(); ++x )
			{
				if( text[x] == L'{' && x < text.length()-1 && text[x+1] == L'%' )
				{
					i = x;
					break;
				}
			}
			//i = text.find_first_of( L"{%", i );
			if( i < 0 )
				break;
			/// 0123{%s1}
			/// 012345678
			if( text.length() < i+5 )
				break;
			wchar_t typeChar = text.at( i+2 );
			/// 0123{%{%s1}
			if( typeChar != L's' 
				&& typeChar != L'S'
				&& typeChar != L'd'
				&& typeChar != L'D'
				&& typeChar != L'i'
				&& typeChar != L'I'
				&& typeChar != L'f'
				&& typeChar != L'F' )
			{
				i += 2;
				continue;
			}
			j = text.find_first_of( L"}", i+4 );
			if( j < 0 )
				break;
			int indexLen = j - i - 3;
			/// 0123{%s}8
			if( indexLen < 1 )
			{
				i = j + 1;
				continue;
			}
			/// Ö»Ö§³Ö1-99µÄÐòºÅ
			/// 0123{%s100}
			if( indexLen > 2 )
			{
				i = j + 1;
				continue;
			}
			wstring indexStr = text.substr( i+3, indexLen );
			/// ÅжÏÊÇ·ñÊÇÊý×Ö
			if( indexStr < L"0" || indexStr > L"99" )
			{
				break;
			}
			int index = We::Type::ToInt( indexStr );
			if( index <= 0 )
			{
				_LogError( string("StringParser::Parse Error : ") + key );
				hasError = true;
				break;
			}
			item->m_Indexes.push_back( index );
			item->m_Texts.push_back( text.substr( k, i-k ) );
			k = j + 1;
			i = j + 1;
		}
		item->m_Texts.push_back( text.substr( k, text.length()-k ) );
		/// ¼ì²éÐòºÅÊÇ·ñÓÐÎó
		for( int i=0; i<item->m_Indexes.size(); ++i )
		{
			/// ÐòºÅ³¬³ö·¶Î§
			if( item->m_Indexes[i] > item->m_Indexes.size() )
			{
				_LogError( string("StringParser::Parse Error : ") + key );
				hasError = true;
				break;
			}
			/// ÐòºÅÖظ´
			for( int j=i+1; j<item->m_Indexes.size(); ++j )
			{
				if( item->m_Indexes[i] == item->m_Indexes[j] )
				{
					_LogError( string("StringParser::Parse Error : ") + key );
					hasError = true;
					break;
				}
			}
		}
		if( hasError )
		{
			item->m_Texts.clear();
			item->m_Indexes.clear();
		}
	}
Пример #17
0
bool DecompressLZOCompressedPackage(UPKReader *Package)
{
    if (!Package->IsCompressed())
    {
        _LogError("Package is not compressed!", "DecompressLZO");
        return false;
    }
    if (!Package->IsLZOCompressed() && !Package->IsFullyCompressed())
    {
        _LogError("Cannot decompress non-LZO compressed packages!", "DecompressLZO");
        return false;
    }
    /// init lzo library
    int lzo_err;
    lzo_uint in_len;
    lzo_uint out_len;
    lzo_uint new_len;
    if (lzo_init() != LZO_E_OK)
    {
        _LogError("LZO library internal error: lzo_init() failed!", "DecompressLZO");
        return false;
    }
    lzo_memset(in, 0, IN_LEN);
    std::stringstream decompressed_stream;
    unsigned int NumCompressedChunks = Package->Summary.NumCompressedChunks;
    if (Package->IsFullyCompressed())
    {
        NumCompressedChunks = 1;
    }
    else
    {
        _LogDebug("Resetting package compression flags...", "DecompressLZO");
        /// reset compression flags
        Package->Summary.CompressionFlags = 0;
        Package->Summary.PackageFlags ^= (uint32_t)UPackageFlags::Compressed;
        Package->Summary.NumCompressedChunks = 0;
        /// serialize package summary
        std::vector<char> sVect = Package->SerializeSummary();
        decompressed_stream.write(sVect.data(), sVect.size());
    }
    _LogDebug("Decompressing...", "DecompressLZO");
    for (unsigned int i = 0; i < NumCompressedChunks; ++i)
    {
        if (Package->IsFullyCompressed())
        {
            Package->UPKStream.seekg(0);
        }
        else
        {
            Package->UPKStream.seekg(Package->Summary.CompressedChunks[i].CompressedOffset);
        }
        _LogDebug("Decompressing chunk #" + ToString(i), "DecompressLZO");
        uint32_t tag = 0;
        Package->UPKStream.read(reinterpret_cast<char*>(&tag), 4);
        if (tag != 0x9E2A83C1)
        {
            _LogError("Missing 0x9E2A83C1 signature!", "DecompressLZO");
            return false;
        }
        uint32_t blockSize = 0;
        Package->UPKStream.read(reinterpret_cast<char*>(&blockSize), 4);
        if (blockSize != IN_LEN)
        {
            _LogError("Incorrect max block size!", "DecompressLZO");
            return false;
        }
        std::vector<uint32_t> sizes(2); /// compressed/uncompressed pairs
        Package->UPKStream.read(reinterpret_cast<char*>(sizes.data()), 4 * sizes.size());
        size_t dataSize = sizes[1]; /// uncompressed data chunk size
        unsigned numBlocks = (dataSize + blockSize - 1) / blockSize;
        _LogDebug("numBlocks = " + ToString(numBlocks), "DecompressLZO");
        if (numBlocks < 1)
        {
            _LogError("Bad data!", "DecompressLZO");
            return false;
        }
        sizes.resize((numBlocks + 1)*2);
        Package->UPKStream.read(reinterpret_cast<char*>(sizes.data()) + 8, 4 * sizes.size() - 8);
        for (unsigned i = 0; i <= numBlocks; ++i)
        {
            _LogDebug("Compressed size = " + ToString(sizes[i * 2]) +
                        + "\tUncompressed size = " + ToString(sizes[i * 2 + 1]), "DecompressLZO");
        }
        std::vector<unsigned char> dataChunk(dataSize);
        std::vector<unsigned char> compressedData(sizes[0]);
        Package->UPKStream.read(reinterpret_cast<char*>(compressedData.data()), compressedData.size());
        size_t blockOffset = 0;
        size_t dataOffset = 0;
        for (unsigned i = 1; i <= numBlocks; ++i)
        {
            out_len = sizes[i * 2]; /// compressed size
            lzo_memcpy(out, compressedData.data() + blockOffset, out_len);
            in_len = sizes[i * 2 + 1]; /// uncompressed size
            new_len = in_len;
            lzo_err = lzo1x_decompress(out, out_len, in, &new_len, NULL);
            if (lzo_err == LZO_E_OK && new_len == in_len)
            {
                _LogDebug("Decompressed " + ToString(out_len) + " bytes back into "
                     + ToString(in_len), "DecompressLZO");
            }
            else
            {
                _LogError("LZO library internal error: decompression failed!", "DecompressLZO");
                return false;
            }
            lzo_memcpy(dataChunk.data() + dataOffset, in, in_len);
            blockOffset += out_len;
            dataOffset += in_len;
        }
        decompressed_stream.write(reinterpret_cast<char*>(dataChunk.data()), dataSize);
    }
    _LogDebug("Package decompressed successfully.", "DecompressLZO");
    Package->UPKStream.str(decompressed_stream.str());
    return Package->ReadPackageHeader();
}