namespace nlite{
+namespace nliteregex{
+ namespace text{
+ const CString URL_TEXT = TEXT("(https?|ftp)(://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)");
+ const CString TAG_TEXT = TEXT("<[\"_;!?,\\:.'$%&#/a-zA-Z0-9= ]*>");
+ const CString VIDEOID_TEXT = TEXT("(sm|nm)([0-9])+");
+ const CString LIVEID_TEXT = TEXT("(lv)([0-9])+");
+ const CString LINK_TEXT = TEXT("(") + URL_TEXT + TEXT(")|(") + VIDEOID_TEXT + TEXT(")|(") + LIVEID_TEXT + TEXT(")");
+ }
+ const tregex URL(text::URL_TEXT);
+ const tregex TAGSTRING(text::TAG_TEXT);
+ const tregex VIDEOID(text::VIDEOID_TEXT);
+ const tregex LIVEID(text::LIVEID_TEXT);
+ const tregex LILNKREGEX(text::LINK_TEXT);
+ const tstring NUTHINGSTRING(TEXT(""));
+}
Property nliteProperty;
-
+CListenerList nlite::listenerList;
+TCHAR appFolderPath[_MAX_PATH];
+CString ncvAppSettingPath;
+TCHAR localAppDataPath[_MAX_PATH];
VOID nlite::UnexpectedErrorMessageShow(LPCTSTR headMessage,LPCTSTR summary,UINT line,LPCTSTR fileName,LPCTSTR function){
tstring errMessage;
}
+ BOOL SurelyCreate(LPCTSTR dir,BOOL bFile){
+
+
+
+ BOOL rslt = FALSE;
+ std::vector<TCHAR> buf(_tcslen(dir) + 1);
+ _tcscpy(&buf[0],dir);
+
+
+ if( (PathFileExists(dir) && (!bFile || !::PathIsDirectory( dir )))){
+
+ goto success;
+ }
+
+ LPTSTR startPtr = &buf[0];
+ LPTSTR indexPtr = startPtr;
+ LPTSTR cmpPtr;
+ do {
+
+ cmpPtr = _tcsstr(indexPtr,TEXT("\\"));
+
+ if(cmpPtr == NULL){
+
+ if(bFile == TRUE){
+ CAtlFile file;
+ if( file.Create(startPtr,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL) != S_OK){
+
+ goto err;
+
+ }
+ } else {
+
+ ::CreateDirectory(startPtr,0);
+ }
+
+ break;
+
+
+ }else if(indexPtr == cmpPtr){
+ break;
+
+ }
+
+ cmpPtr[0] = TEXT('\0');
+ ::CreateDirectory(startPtr,0);
+ cmpPtr[0] = TEXT('\\');
+ cmpPtr++;
+ indexPtr = cmpPtr;
+
+
+ }while(indexPtr[0] != TEXT('\0'));
+
+success:
+
+
+ rslt = TRUE;
+
+end:
+
+ return rslt;
+
+
+err:
+ rslt = FALSE;
+ goto end;
+ }
+
+
+///
+///NCV\83\86\81[\83U\8fî\95ñ\83t\83@\83C\83\8b\83p\83X\8eæ\93¾XML\83p\81[\83T
+///
+class CReadNCVListenerInfoFile:public CXmlParser{
+
+private:
+
+ BOOL settingDirFlag;
+ CString &path;
+
+
+
+
+public:
+
+ CReadNCVListenerInfoFile(CString &in_path):settingDirFlag(FALSE),path(in_path){}
+ void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){
+
+ if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
+
+ settingDirFlag = TRUE;
+
+ }
+
+ }
+
+ void OnEndElement (const XML_Char *pszName){
+
+ if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
+
+ settingDirFlag = FALSE;
+
+ }
+
+ }
+
+ void OnCharacterData (const XML_Char *pszData, int nLength){
+
+ if(settingDirFlag == TRUE){
+
+ path.Append(pszData,nLength);
+
+ }
+
+ }
+};
+
+ CString GetNCVListenerInfoFilePath(){
+
+
+ CString rslt;
+
+
+ if((PathFileExists(ncvAppSettingPath) && (!::PathIsDirectory( ncvAppSettingPath )))){
+
+
+ CAtlFile ncvAppSettingFile;
+ ULONGLONG ncvAppSettingFileSize = 0;
+ if(SUCCEEDED(ncvAppSettingFile.Create(ncvAppSettingPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE ||
+ SUCCEEDED(ncvAppSettingFile.GetSize(ncvAppSettingFileSize)) == FALSE){
+
+ 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__));
+
+ }
+ std::vector<char> fileBuf(static_cast<UINT_PTR>(ncvAppSettingFileSize) / sizeof(char) + (1 * sizeof(char)));
+ ncvAppSettingFile.Read(&fileBuf[0],fileBuf.size());
+ LPSTR startPtr = strstr(&fileBuf[0],"<");
+ if(startPtr != NULL){
+ CReadNCVListenerInfoFile parser(rslt);
+ parser.Parse(startPtr);
+ rslt += TEXT("UserSetting.xml");
+
+ }
+
+ }
+
+
+
+
+ return rslt;
+ }
const CApplicationInfo * appInfo = NULL;