2 #include "nlite_include.h"
10 const CString URL_TEXT = TEXT("(https?|ftp)(://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)");
11 const CString TAG_TEXT = TEXT("<[\"_;!?,\\:.'$%&#/a-zA-Z0-9= ]*>");
12 const CString VIDEOID_TEXT = TEXT("(sm|nm)([0-9])+");
13 const CString LIVEID_TEXT = TEXT("(lv)([0-9])+");
14 const CString LINK_TEXT = TEXT("(") + URL_TEXT + TEXT(")|(") + VIDEOID_TEXT + TEXT(")|(") + LIVEID_TEXT + TEXT(")");
15 const CString SEARTCH_AT_MARK(TEXT("(.*)(@|
\81\97)(^ |^
\81@[^@^
\81\97]+)"));
16 const tstring NUTHINGSTRING(TEXT(""));
18 const tregex URL(text::URL_TEXT);
19 const tregex TAGSTRING(text::TAG_TEXT);
20 const tregex VIDEOID(text::VIDEOID_TEXT);
21 const tregex LIVEID(text::LIVEID_TEXT);
22 const tregex LILNKREGEX(text::LINK_TEXT);
23 const tregex NAMESERTCHREGEX(text::SEARTCH_AT_MARK);
25 Property nliteProperty;
26 CListenerList nlite::listenerList;
27 TCHAR appFolderPath[_MAX_PATH];
28 CString ncvAppSettingPath;
29 TCHAR localAppDataPath[_MAX_PATH];
31 VOID nlite::UnexpectedErrorMessageShow(LPCTSTR headMessage,LPCTSTR summary,UINT line,LPCTSTR fileName,LPCTSTR function){
33 CString errLogFilePath(nliteProperty.propertySaveFolderPath);
35 TCHAR errfile[_MAX_PATH];
37 time_t nowtime = time(NULL);
38 tm timestruct = *gmtime(&nowtime);
39 _tcsftime(errfile,ARRAY_LENGTH(errfile),TEXT("errorlog\\nlite_errorLog_%Y%m%d%H%M%S.log"),×truct);
40 errLogFilePath += errfile;
41 SurelyCreate(errLogFilePath,TRUE);
43 errFile.Create(errLogFilePath,GENERIC_WRITE,0,OPEN_ALWAYS);
45 errMessage = headMessage;
46 errMessage += TEXT("
\91z
\92è
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\83G
\83\89\81[
\82ª
\94
\90¶
\82µ
\82Ü
\82µ
\82½
\81B
\88È
\89º
\82Ì
\83t
\83@
\83C
\83\8b\82É
\83G
\83\89\81[
\83t
\83@
\83C
\83\8b\82ª
\8fo
\97Í
\82³
\82ê
\82½
\82Ü
\82µ
\82½
\81B\r\n");
47 errMessage += errLogFilePath;
48 errMessage += TEXT("\r\n
\83G
\83\89\81[
\83\81\83b
\83Z
\81[
\83W:");
49 errMessage += summary;
50 DebugOutW(fileName,function,line,DUMPING__DEBUGER__ | LINEFEAD__DEBUGER__ ,ERRORMODE__DEBUGER__,TEXT("%s"),summary);
51 ::MessageBox(NULL,errMessage.c_str(),TEXT("
\91z
\92è
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\83G
\83\89\81["),MB_ICONERROR | MB_OK);
54 val = TEXT("
\8f\91\82«
\82±
\82Ý
\83e
\83X
\83g");
56 CString outputLogfileString;
57 errFile.Write(TEXT("
\8f\91\82«
\82±
\82Ý
\83e
\83X
\83g\r\n"),_tcslen(TEXT("
\8f\91\82«
\82±
\82Ý
\83e
\83X
\83g\r\n")) * sizeof(TCHAR));
58 errFile.Write(TEXT("
\8f\91\82«
\82±
\82Ý
\83e
\83X
\83g\r\n"),_tcslen(TEXT("
\8f\91\82«
\82±
\82Ý
\83e
\83X
\83g\r\n")) * sizeof(TCHAR));
63 HINSTANCE OpenURL(HWND hwnd,const GeneralProperty &gp,LPCTSTR url ,INT nShowCommand){
67 if(gp.browserPath.Length() == 0){
69 rslt = ShellExecute(hwnd, NULL, url, NULL, NULL, nShowCommand);
73 rslt = ShellExecute(hwnd, NULL, gp.browserPath, url, NULL, nShowCommand);
81 BOOL SurelyCreate(LPCTSTR dir,BOOL bFile){
86 std::vector<TCHAR> buf(_tcslen(dir) + 1);
90 if( (PathFileExists(dir) && (!bFile || !::PathIsDirectory( dir )))){
95 LPTSTR startPtr = &buf[0];
96 LPTSTR indexPtr = startPtr;
100 cmpPtr = _tcsstr(indexPtr,TEXT("\\"));
106 if( file.Create(startPtr,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL) != S_OK){
113 ::CreateDirectory(startPtr,0);
119 }else if(indexPtr == cmpPtr){
124 cmpPtr[0] = TEXT('\0');
125 ::CreateDirectory(startPtr,0);
126 cmpPtr[0] = TEXT('\\');
131 }while(indexPtr[0] != TEXT('\0'));
150 ///NCV
\83\86\81[
\83U
\8fî
\95ñ
\83t
\83@
\83C
\83\8b\83p
\83X
\8eæ
\93¾XML
\83p
\81[
\83T
152 class CReadNCVListenerInfoFile:public CXmlParser{
164 CReadNCVListenerInfoFile(CString &in_path):settingDirFlag(FALSE),path(in_path){}
166 void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){
168 if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
170 settingDirFlag = TRUE;
176 void OnEndElement (const XML_Char *pszName){
178 if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
180 settingDirFlag = FALSE;
186 void OnCharacterData (const XML_Char *pszData, int nLength){
188 if(settingDirFlag == TRUE){
190 path.Append(pszData,nLength);
197 CString GetNCVListenerInfoFilePath(){
203 if((PathFileExists(ncvAppSettingPath) && (!::PathIsDirectory( ncvAppSettingPath )))){
206 CAtlFile ncvAppSettingFile;
207 ULONGLONG ncvAppSettingFileSize = 0;
208 if(SUCCEEDED(ncvAppSettingFile.Create(ncvAppSettingPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE ||
209 SUCCEEDED(ncvAppSettingFile.GetSize(ncvAppSettingFileSize)) == FALSE){
211 throw Exception(TEXT("NCV
\82Ì
\90Ý
\92è
\83t
\83@
\83C
\83\8b\82ª
\93Ç
\82Ý
\8d\9e\82ß
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
214 std::vector<char> fileBuf(static_cast<UINT_PTR>(ncvAppSettingFileSize) / sizeof(char) + (1 * sizeof(char)));
215 ncvAppSettingFile.Read(&fileBuf[0],fileBuf.size());
216 LPSTR startPtr = strstr(&fileBuf[0],"<");
217 if(startPtr != NULL){
218 CReadNCVListenerInfoFile parser(rslt);
219 parser.Parse(startPtr);
220 rslt += TEXT("UserSetting.xml");
234 const CApplicationInfo * appInfo = NULL;