OSDN Git Service

Version 5.91
[vbslib/main.git] / _src / Test / vbslib_test / scriptlib / vbslib / sage_p_downloader / src / sage_p_downloader.cpp
index 713494a..fd9349b 100644 (file)
@@ -1,6 +1,7 @@
 #include  <windows.h> \r
 #include  <tchar.h>\r
 #include  <stdio.h>\r
+#include  <locale.h>\r
 \r
 typedef int  errnum_t;\r
 \r
@@ -12,19 +13,19 @@ typedef int  errnum_t;
 #endif\r
 \r
 \r
-char*  g_ApplicationName = "sage_p_downloader";\r
+TCHAR* g_ApplicationName = _T("sage_p_downloader");\r
 HWND   g_MainWindow = NULL;\r
 \r
-int  DownloadByHttp( char* url, char* out_path );\r
+int  DownloadByHttp( TCHAR* url, TCHAR* out_path );\r
 \r
 \r
-errnum_t  main( int argc, char* argv[] )\r
+errnum_t  _tmain( int argc, TCHAR* argv[] )\r
 {\r
        errnum_t  e;\r
-       bool   b_pass;\r
-       char*  domain;\r
-       char*  download_URL;\r
-       char*  save_path;\r
+       bool    b_pass;\r
+       TCHAR*  domain;\r
+       TCHAR*  download_URL;\r
+       TCHAR*  save_path;\r
 \r
        if ( argc != 3 ) {\r
                printf( "ERROR: parameter count\n" );\r
@@ -38,15 +39,15 @@ errnum_t  main( int argc, char* argv[] )
        save_path =  argv[2];\r
 \r
        b_pass = false;\r
-       domain = "http://www5a.biglobe.ne.jp/~sage-p/";\r
-       if ( strncmp( download_URL, domain, strlen( domain ) ) == 0 )  b_pass = true;\r
-       domain = "http://www.sage-p.com/";\r
-       if ( strncmp( download_URL, domain, strlen( domain ) ) == 0 )  b_pass = true;\r
+       domain = _T("http://www5a.biglobe.ne.jp/~sage-p/");\r
+       if ( _tcsncmp( download_URL, domain, _tcslen( domain ) ) == 0 )  b_pass = true;\r
+       domain = _T("http://www.sage-p.com/");\r
+       if ( _tcsncmp( download_URL, domain, _tcslen( domain ) ) == 0 )  b_pass = true;\r
 \r
-       printf( "Download from  %s\n", download_URL );\r
-       printf( "Saving to \"%s\"\n",  save_path );\r
+       _tprintf( _T("Download from  %s\n"), download_URL );\r
+       _tprintf( _T("Saving to \"%s\"\n"),  save_path );\r
        if ( ! b_pass ) {\r
-               char  message[0x100];\r
+               TCHAR  message[0x100];\r
 \r
                _stprintf_s( message, _countof( message ),\r
                        _T("%s\n\82±\82Ì\83_\83E\83\93\83\8d\81[\83h\82É\90S\93\96\82½\82è\82ª\96³\82¯\82ê\82Î\81A\92¼\82¿\82É\95Â\82\82Ä\82­\82¾\82³\82¢\81B\n")\r
@@ -70,12 +71,13 @@ _variant_t  vtEmpty( DISP_E_PARAMNOTFOUND, VT_ERROR );
 using namespace MSXML2;\r
 \r
 \r
-errnum_t  DownloadByHttp( char* url, char* out_path )\r
+errnum_t  DownloadByHttp( TCHAR* url, TCHAR* out_path )\r
 {\r
        errnum_t  e;\r
        HRESULT   hr;\r
 \r
        CoInitialize( NULL );\r
+       setlocale( LC_ALL, ".OCP" );  // for Unicode _tprintf\r
 \r
        for (;;) {\r
                try {\r
@@ -84,6 +86,12 @@ errnum_t  DownloadByHttp( char* url, char* out_path )
 \r
                        hr= req.CreateInstance( "Msxml2.XMLHTTP" );  IF(hr)goto err;\r
                        hr= req->open( "GET", url, false );  IF(hr)goto err;\r
+                       hr= req->setRequestHeader( _bstr_t("Pragma"), _bstr_t("no-cache") );\r
+                               IF(hr)goto err;\r
+                       hr= req->setRequestHeader( _bstr_t("Cache-Control"), _bstr_t("no-cache") );\r
+                               IF(hr)goto err;\r
+                       hr= req->setRequestHeader( _bstr_t("If-Modified-Since"), _bstr_t("Thu, 01 Jun 1970 00:00:00 GMT") );\r
+                               IF(hr)goto err;\r
                        hr= req->send();  IF(hr)goto err;\r
                        IF ( req->status != 200 ) goto err;\r
 \r
@@ -94,17 +102,20 @@ errnum_t  DownloadByHttp( char* url, char* out_path )
                        hr= st->SaveToFile( _bstr_t( out_path ), adSaveCreateOverWrite );  IF(hr)goto err;\r
                        hr= st->Close();  IF(hr)goto err;\r
 \r
+                       st.Release();\r
+                       req.Release();\r
+\r
                        e=0;\r
                }\r
                catch ( _com_error err ) {\r
                        if ( err.Error() == 0x800C0005 ) {\r
-                               char  in[4];\r
+                               TCHAR  in[4];\r
 \r
                                e = 2;\r
                                printf( "\83l\83b\83g\83\8f\81[\83N\82Ì\90Ú\91±\82É\8e¸\94s\82µ\82½\82©\81A\83E\83B\83\8b\83X\91Î\8dô\83\\83t\83g\82É\82æ\82Á\82Ä\8b\91\94Û\82³\82ê\82Ü\82µ\82½\81B\n" );\r
                                printf( "\8dÄ\8e\8e\8ds\82µ\82Ü\82·\82©\81B[Y/N]" );\r
                                fflush( stdout );\r
-                               fgets( in, sizeof(in), stdin );\r
+                               _fgetts( in, sizeof(in), stdin );\r
                                if ( in[0] != 'Y' && in[0] != 'y' )\r
                                        e = 1;\r
                        }\r