OSDN Git Service

Safari対応
authorqwerty2501 <riot313@gmail.com>
Wed, 22 Feb 2012 14:27:26 +0000 (23:27 +0900)
committerqwerty2501 <riot313@gmail.com>
Wed, 22 Feb 2012 14:27:26 +0000 (23:27 +0900)
13 files changed:
include/qwerty/windebuger.h
nlite.suo
nlite/Resource.h
nlite/nlite.rc
nlite/nlite_mainframe.cpp
nlite/nlite_nlib.cpp
nlite/nlite_propertyWindow.cpp
shareCookie/shareCookie.c
shareCookie/shareCookie.h
speaker/open_jtalk_core.cpp
speaker/speaker.vcxproj
speaker/speaker_include.h
speaker/stdafx.h

index 5e3d889..173452f 100644 (file)
@@ -671,7 +671,7 @@ static VOID DebugOutW(LPCWSTR fileName,LPCWSTR functionName,UINT lineNo, UINT mo
 }
 
 
-static VOID DebugOutMB(UINT codePage,LPSTR fileName,LPSTR functionName,UINT lineNo,UINT mode,UINT infoFlag,LPSTR pszFormat, ...){
+static VOID DebugOutMB(UINT codePage,LPSTR fileName,LPSTR functionName,UINT lineNo,UINT mode,UINT infoFlag,LPCSTR pszFormat, ...){
 
 
        LPSTR szFormat = mode & LINEFEAD__DEBUGER__ ?  "%s%s%s%s\r\n" : "%s%s%s%s";
index be11a29..d436ab8 100644 (file)
Binary files a/nlite.suo and b/nlite.suo differ
index f5e3038..acb6bac 100644 (file)
@@ -35,3 +35,5 @@
 #define IDR_COMMAND6                            40005
 #define IDC_RADIO_CHROME                        40006
 #define IDC_RADIO_IECM                          40009
+#define IDC_RADIO_SAFARI                        40012
+#define IDC_RADIO_OPERA                         40013
index f7081ef..b50588c 100644 (file)
@@ -63,18 +63,20 @@ IDC_NLITE MENU
 // Dialog resources
 //
 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-IDD_DIALOG_BROWSERTYPE DIALOG 0, 0, 123, 110
+IDD_DIALOG_BROWSERTYPE DIALOG 0, 0, 193, 159
 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
 CAPTION "\83N\83b\83L\81[\82Ì\90Ý\92è"
 FONT 8, "Ms Shell Dlg"
 {
-    AUTORADIOBUTTON "IE", IDC_RADIO_IE, 30, 29, 22, 8
-    AUTORADIOBUTTON "FireFox", IDC_RADIO_FIREFOX, 30, 45, 39, 8
-    AUTORADIOBUTTON "GoogleChrome", IDC_RADIO_CHROME, 30, 61, 62, 8
-    AUTORADIOBUTTON "IE\83R\83\93\83|\81[\83l\83\93\83g", IDC_RADIO_IECM, 30, 76, 61, 8
-    PUSHBUTTON      "OK", IDC_BUTTON_COOKIE_OK, 21, 91, 38, 14
-    PUSHBUTTON      "\83L\83\83\83\93\83Z\83\8b", IDCANCEL, 63, 91, 33, 14
+    AUTORADIOBUTTON "IE", IDC_RADIO_IE, 61, 29, 22, 8
+    AUTORADIOBUTTON "FireFox", IDC_RADIO_FIREFOX, 61, 45, 39, 8
+    AUTORADIOBUTTON "GoogleChrome", IDC_RADIO_CHROME, 61, 61, 62, 8
+    AUTORADIOBUTTON "IE\83R\83\93\83|\81[\83l\83\93\83g", IDC_RADIO_IECM, 60, 77, 61, 8
+    PUSHBUTTON      "OK", IDC_BUTTON_COOKIE_OK, 40, 136, 38, 14
+    PUSHBUTTON      "\83L\83\83\83\93\83Z\83\8b", IDCANCEL, 105, 137, 33, 14
     LTEXT           "\95\81\92i\8eg\97p\82µ\82Ä\82¢\82é\83u\83\89\83E\83U\82ð\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢", IDC_STATIC, 21, 6, 82, 22, SS_LEFT
+    AUTORADIOBUTTON "Safari", IDC_RADIO_SAFARI, 60, 94, 33, 8
+    AUTORADIOBUTTON "Opera", IDC_RADIO_OPERA, 60, 111, 35, 8
 }
 
 
index 9e0658e..1de1c28 100644 (file)
@@ -307,9 +307,13 @@ VOID CNliteMainFrame::OnCookie(UINT uNotifyCode,int nID,HWND hWndCtl){
                nliteProperty.CookieSetting();
        }
                        
+       try {
+               nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
+       } catch(NLIBException &e){
 
-       nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
+               MessageBox(e.what(),TEXT("\83N\83b\83L\81[\8eæ\93¾\8e¸\94s"),MB_OK | MB_ICONERROR);
 
+       }
        
 
 }
index 9ac2337..1af6ce7 100644 (file)
@@ -32,7 +32,7 @@ VOID CNicoVideoAuth::SetBrowserType(BROWSERTYPE bt){
                throw NLIBException(TEXT("\83j\83R\83j\83R\93®\89æ\94F\8fØ\8fî\95ñ\8eæ\93¾\82É\8e¸\94s\82µ\82Ü\82µ\82½"),rslt,__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
        }
        
-       InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, NULL, 0); 
+       return;
 }
 
 
index 88c8398..bf58a49 100644 (file)
@@ -36,6 +36,18 @@ BOOL CCookieSettingWindow::OnInitDialog(CWindow wndFocus, LPARAM lInitParam){
 
                break;
 
+       case BT_SAFARI:
+
+               radio = GetDlgItem(IDC_RADIO_SAFARI);
+               break;
+
+
+       case BT_OPERA:
+
+               radio = GetDlgItem(IDC_RADIO_OPERA);
+
+               break;
+
        default:
                goto skip;
        }
@@ -51,32 +63,41 @@ VOID CCookieSettingWindow::OnOK(UINT uNotifyCode, int nID, CWindow wndCtl){
        CButton firefoxRadio = GetDlgItem(IDC_RADIO_FIREFOX);
        CButton chromeRadio = GetDlgItem(IDC_RADIO_CHROME);
        CButton iecmRadio = GetDlgItem(IDC_RADIO_IECM);
+       CButton safariRadio = GetDlgItem(IDC_RADIO_SAFARI);
+       CButton operaRadio = GetDlgItem(IDC_RADIO_OPERA);
 
        if(ieRadio.GetCheck() == BST_CHECKED){
 
                this->browserType = BT_INTERNET_EXPLORER;
+               
+       }else if(firefoxRadio.GetCheck() == BST_CHECKED){
 
-       }
+               this->browserType = BT_FIRE_FOX;
 
-       if(firefoxRadio.GetCheck() == BST_CHECKED){
+       }else if(chromeRadio.GetCheck() == BST_CHECKED){
 
-               this->browserType = BT_FIRE_FOX;
+               this->browserType = BT_GOOGLE_CHROME;
 
-       }
+       }else if(iecmRadio.GetCheck() == BST_CHECKED){
 
-       if(chromeRadio.GetCheck() == BST_CHECKED){
+               this->browserType = BT_IE_COMPONENT;
 
-               this->browserType = BT_GOOGLE_CHROME;
+       }else if(safariRadio.GetCheck() == BST_CHECKED){
 
-       }
+               this->browserType = BT_SAFARI;
 
-       if(iecmRadio.GetCheck() == BST_CHECKED){
+       } else if(operaRadio.GetCheck() == BST_CHECKED){
 
-               this->browserType = BT_IE_COMPONENT;
+               this->browserType = BT_OPERA;
+       
+       }else {
+
+               this->browserType = BT_NOSETTING;
 
        }
 
 
+
        EndDialog(nID);
 }
 
index eb0a673..a177c42 100644 (file)
@@ -24,8 +24,11 @@ static sqlite3_stmt *googleChromeCookieStmt;         //
 static CRITICAL_SECTION googleChromeCs;                                //\83O\81[\83O\83\8b\83N\83\8d\81[\83\80\82Ì\83N\83b\83L\81[\8eæ\93¾\97p\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93
 
 
+static WCHAR safariCookiePath[_MAX_PATH];                      //\83T\83t\83@\83\8a\82Ì\83N\83b\83L\81[\83p\83X
 
 
+typedef COOKIE_RESULT (*SelfParseCookieCallBack)(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookie,SIZE_T bufSize,LPCWSTR key,LPCWSTR domein);
+
 ///
 ///\83N\83\8d\81[\83\80\82Æ\83t\83@\83C\83A\83t\83H\83b\83N\83X\82Ì\8b¤\92Ê\8f\88\97\9d
 ///
@@ -34,6 +37,11 @@ static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cooki,SIZE_T bufSize
 
 
 ///
+///\8e©\97Í\82Å\89ð\90Í\82·\8fê\8d\87\82Ì\8b¤\92Ê\8f\88\97\9d
+///
+static INLINE COOKIE_RESULT SelfParseCookie(LPCWSTR cookieFilePath,LPWSTR cookie,SIZE_T bufSize,LPCWSTR key,LPCWSTR domein,SelfParseCookieCallBack callBack);
+
+///
 ///\83C\83\93\83^\81[\83l\83b\83g\83G\83N\83X\83v\83\8d\81[\83\89\81[\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾
 ///
 static INLINE COOKIE_RESULT GetCookieInternetExplorer(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein,BOOL isIE);
@@ -51,12 +59,12 @@ static INLINE COOKIE_RESULT GetCookieGoogleChrome(LPWSTR cookie,SIZE_T bufSize,
 ///
 ///\83I\83y\83\89\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾
 ///
-static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
+static INLINE COOKIE_RESULT GetCookieOpera(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
 
 ///
 ///\83T\83t\83@\83\8a\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾
 ///
-static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
+static INLINE COOKIE_RESULT GetCookieSafari(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
 
 #define FIREFOX_GET_COOKIE_SQL "SELECT a.name, a.value FROM moz_cookies a WHERE a.name = ?1 AND a.baseDomain = ?2 "                                            //\83t\83@\83C\83A\83t\83H\83b\83N\83X\83N\83b\83L\81[\8eæ\93¾\97pSQL
 
@@ -76,7 +84,7 @@ VOID InitializeShareCookie(LPCWSTR appDataPath,LPCWSTR localAppDataPath){
 
        
                LPWSTR index;
-
+               
 
                wcscpy(fireFoxProfilesPath,appDataPath);
                wcscat(fireFoxProfilesPath,L"Mozilla\\Firefox\\profiles.ini");
@@ -155,6 +163,12 @@ VOID InitializeShareCookie(LPCWSTR appDataPath,LPCWSTR localAppDataPath){
 
        }
 
+
+       //\83T\83t\83@\83\8a\82Ì\90Ý\92è
+       
+       wcscpy(safariCookiePath,appDataPath);
+       wcscat(safariCookiePath,L"Apple Computer\\Safari\\Cookies\\Cookies.binarycookies");
+
        return;
 }
 
@@ -201,14 +215,13 @@ COOKIE_RESULT GetCookie(BROWSERTYPE browserType,LPWSTR cookie,SIZE_T bufSize, LP
                //\83I\83y\83\89\82Ì\8fê\8d\87
        case BT_OPERA:
 
-
-               return  GetCookieOpera(cookie,bufSize,key,domein);
+               return SelfParseCookie(NULL,cookie,bufSize,key,domein,GetCookieOpera);
+               
 
                //\83T\83t\83@\83\8a\82Ì\8fê\8d\87
        case BT_SAFARI:
-
-               return  GetCookieSafari(cookie,bufSize,key,domein);
-
+               return SelfParseCookie(safariCookiePath,cookie,bufSize,key,domein,GetCookieSafari);
+               
 
                //IE\83R\83\93\83|\81[\83l\83\93\83g\82Ì\8fê\8d\87
        case BT_IE_COMPONENT:
@@ -633,7 +646,9 @@ end:
 ///
 ///\83I\83y\83\89\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾
 ///
-static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
+static INLINE COOKIE_RESULT GetCookieOpera(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
+
+       
 
        return COOKIE_ERR_DETAIL_NOTFOUND;
 }
@@ -641,10 +656,70 @@ static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookies,SIZE_T bufSize, LPCWST
 ///
 ///\83T\83t\83@\83\8a\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾
 ///
-static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
+static INLINE COOKIE_RESULT GetCookieSafari(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
+       COOKIE_RESULT result = COOKIE_ERR_UNKNOWN;
+       CHAR mb_key[_MAX_PATH] = "A";
+       CHAR mb_domein[_MAX_PATH] = ".";
+       LPCSTR cookiePointer;
+       LPCSTR domeinPointer;
+       SIZE_T mb_keyLen;
+
+       if(ARRAY_LENGTH(mb_key) < GetLenToMB(CP_THREAD_ACP,key) - 1){
+               
+               goto keybuffbigerr;
 
+       } else if(ARRAY_LENGTH(mb_domein) - 1 < GetLenToMB(CP_THREAD_ACP,domein) ){
 
-       return COOKIE_ERR_DETAIL_NOTFOUND;
+               goto domeinbuffbigerr;
+
+       }
+
+       WideToMB(CP_THREAD_ACP,key,mb_key + 1,ARRAY_LENGTH(mb_key) - 1);
+       WideToMB(CP_THREAD_ACP,domein,mb_domein + 1,ARRAY_LENGTH(mb_domein) - 1);
+       mb_keyLen = strlen(mb_key);
+       
+       for(;targetString < targetEndPointer;targetString += strlen(targetString) + 1){
+
+               if(strstr(targetString,mb_key) != NULL){
+
+                       cookiePointer = targetString + strlen(targetString) + 1;
+                       domeinPointer = cookiePointer + strlen(cookiePointer) + 1;
+
+                       if(strcmp(mb_domein,domeinPointer) == 0){
+
+                               if(((INT_PTR)bufSize) < GetLenToWide(CP_THREAD_ACP,cookiePointer) + wcslen(key) + 1){
+
+                                       goto cookiebuffbigerr;
+                               }
+                               wcscpy(cookies,key);
+                               cookies += wcslen(cookies);
+                               cookies[0] = L'=';
+                               cookies++;
+
+                               MBToWide(CP_THREAD_ACP,cookiePointer,cookies,bufSize);
+                               result = COOKIE_ERR_OK;
+                       }
+               }
+
+       }
+
+end:
+
+
+       return result;
+
+
+keybuffbigerr:
+       result = COOKIE_ERR_DETAIL_URL_TOOBIG;
+       goto end;
+
+domeinbuffbigerr:
+       result = COOKIE_ERR_DETAIL_DOMEIN_TOOBIG;
+       goto end;
+
+cookiebuffbigerr:
+       result = COOKIEERR_DETAIL_RESULT_TOOBIG;
+       goto end;
 }
 
 ///
@@ -741,4 +816,41 @@ static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cookie,SIZE_T bufSiz
        return;
 
 
+}
+
+
+static COOKIE_RESULT SelfParseCookie(LPCWSTR cookieFilePath,LPWSTR cookie,SIZE_T bufSize,LPCWSTR key,LPCWSTR domein,SelfParseCookieCallBack callBack){
+
+       COOKIE_RESULT result = COOKIE_ERR_UNKNOWN;
+
+       HANDLE hCookieFile = CreateFile(cookieFilePath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
+       if(hCookieFile == INVALID_HANDLE_VALUE ){
+
+               goto fileopenerr;
+       }
+       {
+               DWORD readSize;
+               DWORD highSize;
+               DWORD lowSize = GetFileSize(hCookieFile,&highSize);
+               SIZE_T bufferSize = MAKELONG(lowSize,highSize);
+               LPSTR buffer = (LPSTR)malloc(bufferSize);
+               
+               ReadFile(hCookieFile,buffer,bufferSize,&readSize,NULL);
+               
+       
+
+               
+               result = callBack(buffer,buffer + (bufferSize / sizeof(CHAR)),cookie,bufSize,key,domein);
+               free(buffer);
+       }
+
+end:
+       
+       CloseHandle(hCookieFile);
+       
+       return result;
+
+fileopenerr:
+       result = COOKIE_ERR_OPEN_FAILED;
+       goto end;
 }
\ No newline at end of file
index 1b2e6d8..d168c62 100644 (file)
@@ -84,8 +84,11 @@ extern COOKIE_RESULT GetCookie(BROWSERTYPE browserType,LPWSTR cookie,SIZE_T bufS
 ///\96¢\92è\8b`\82Ì\83u\83\89\83E\83U\83^\83C\83v\82ª\90Ý\92è\82³\82ê\82½
 #define COOKIE_ERR_UNDEFINED_BROWSERTYPE                                       ((COOKIE_RESULT) 11)
 
+///\83N\83b\83L\81[\83t\83@\83C\83\8b\82ð\8aJ\82­\82±\82Æ\82ª\8fo\97\88\82È\82©\82Á\82½
+#define COOKIE_ERR_OPEN_FAILED                                                         ((COOKIE_RESULT) 12)
 
-
+///\83h\83\81\83C\83\93\95\8e\9a\97ñ\82Ì\92·\82³\82ª\92·\82·\82¬\82é
+#define COOKIE_ERR_DETAIL_DOMEIN_TOOBIG                                                ((COOKIE_RESULT) 13)
 
 
 
index a8b2d93..1471fbe 100644 (file)
@@ -108,6 +108,7 @@ void COpenJtalkCore::Load( const TChar_P in_voiceDataDir,const TChar_P in_dictin
                
 void COpenJtalkCore::Synthesis( const TChar_P txt, FILE * wavfp, FILE * logfp){
        CStringA txtA(txt);
+       idumpln_mb(CP_THREAD_ACP,"synthesis:%s",(LPCSTR)txtA);
        ::OpenJTalk_synthesis(&this->openJtalk_internal,(Char_P)(const char*)txtA,wavfp,logfp);
 }
 
index aae6a5e..0033cd3 100644 (file)
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IncludePath>$(solutiondir)open_jtalk_lib;$(IncludePath)</IncludePath>
+    <IncludePath>$(solutiondir)open_jtalk_lib;$(solutiondir)include;$(IncludePath)</IncludePath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <IncludePath>$(solutiondir)open_jtalk_lib;$(IncludePath)</IncludePath>
+    <IncludePath>$(solutiondir)open_jtalk_lib;$(solutiondir)include;$(IncludePath)</IncludePath>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
index 1eaa530..7f1080b 100644 (file)
@@ -1,7 +1,7 @@
 #pragma once
 
 #include <open_jtalk_lib.h>
-
+#include <qwerty\windebuger.h>
 
 #include "speaker_define.h"
 #include "speaker.h"
index c4c8d09..ac8da60 100644 (file)
@@ -6,7 +6,9 @@
 #pragma once
 
 #include "targetver.h"
-
+#define _CRT_SECURE_NO_WARNINGS 1                      //vc++\82Ì\82¨\82¹\82Á\82©\82¢\82È\8cx\8d\90\82ð\8fÁ\82·
+#define  _CRT_NON_CONFORMING_SWPRINTFS 1       //vc++\82Ì\82¨\82¹\82Á\82©\82¢\82È\8cx\8d\90\82ð\8fÁ\82·
+#define WINDEBUGER_NOPRINTING                          //\83f\83o\83b\83O\8fo\97Í\82ð\83R\83\93\83\\81[\83\8b\82É\95\\8e¦\82µ\82½\82­\82È\82¢\8fê\8d\87\92è\8b`\82·\82é
 #define WIN32_LEAN_AND_MEAN             // Windows \83w\83b\83_\81[\82©\82ç\8eg\97p\82³\82ê\82Ä\82¢\82È\82¢\95\94\95ª\82ð\8f\9c\8aO\82µ\82Ü\82·\81B