Changeset 38354

Show
Ignore:
Timestamp:
08/25/10 22:44:03 (4 years ago)
Author:
saturday06
Message:

version

Location:
lang/c/NetworkUpdater/trunk
Files:
1 added
6 modified

Legend:

Unmodified
Added
Removed
  • lang/c/NetworkUpdater/trunk/Build/Common.c

    r38335 r38354  
    206206} 
    207207 
    208 typedef struct LANGANDCODEPAGE_ { 
     208typedef struct NUI_LANGANDCODEPAGE_ { 
    209209  WORD wLanguage; 
    210210  WORD wCodePage; 
    211 } LANGANDCODEPAGE; 
     211} NUI_LANGANDCODEPAGE; 
    212212 
    213213void cp(void) { 
    214     LANGANDCODEPAGE *translate; 
     214    NUI_LANGANDCODEPAGE *translate; 
    215215    DWORD fvi_bytes = 0; 
    216216    char* fvi = NULL; 
     
    221221    TCHAR* my_path = NULL; 
    222222    UINT cbTranslate = 0; 
     223    TCHAR version[1024]; 
     224 
    223225    my_path = (TCHAR*)calloc(len * sizeof(my_path[0]), 1); 
    224226    GetModuleFileName(GetModuleHandle(NULL), my_path, len - 1); 
    225227 
    226228    fvi_bytes = GetFileVersionInfoSize(my_path, NULL); 
    227     fvi = (char*)calloc(fvi_bytes * sizeof(TCHAR), 1); 
    228     GetFileVersionInfo(my_path, 0, fvi_bytes, fvi); 
    229  
    230     // �����R�[�h�y�[�W�̃��X�g��ݎ��B 
    231     VerQueryValue(fvi, 
    232                   TEXT("\\VarFileInfo\\Translation"), 
    233                   (LPVOID*)&translate, 
    234                   &cbTranslate); 
    235  
    236     // �e�����R�[�h�y�[�W�̃t�@�C���̐���ݎ��B 
    237     for(i=0; i <(cbTranslate/sizeof(LANGANDCODEPAGE)); i++) { 
    238         TCHAR SubBlock[1024]; 
    239         wsprintf(SubBlock, 
    240                 TEXT("\\StringFileInfo\\%04x%04x\\ProductName"), 
    241                 translate[i].wLanguage, 
    242                 translate[i].wCodePage); 
    243         // i�Ԗڂ̌����R�[�h�y�[�W�̃t�@�C���̐�������� 
    244         VerQueryValue(fvi, 
    245                     SubBlock, 
    246                     &product, 
    247                     &product_len); 
    248     } 
     229    if (fvi_bytes == 0) { 
     230        goto clean_up; 
     231    } 
     232 
     233    fvi = (char*)calloc(fvi_bytes, 1); 
     234    if (!fvi) { 
     235        goto clean_up; 
     236    } 
     237 
     238    if (!GetFileVersionInfo(my_path, 0, fvi_bytes, fvi)) { 
     239        goto clean_up; 
     240    } 
     241 
     242    { /* �o�[�W�����𓾂�/ 
     243        VS_FIXEDFILEINFO* info; 
     244        UINT n = 0; 
     245        if (VerQueryValue(fvi, _T("\\"), (LPVOID*)&info, &n)) { 
     246            wsprintf(version, 
     247                _T("%d.%d.%d.%d"), 
     248                HIWORD(info->dwFileVersionMS), 
     249                LOWORD(info->dwFileVersionMS), 
     250                HIWORD(info->dwFileVersionLS), 
     251                LOWORD(info->dwFileVersionLS)); 
     252        } 
     253    } 
     254 
     255 
     256    /* �����R�[�h�y�[�W�̃��X�g��ݎ��B*/ 
     257    if (!VerQueryValue(fvi, _T("\\VarFileInfo\\Translation"), (LPVOID*)&translate, &cbTranslate)) { 
     258        goto clean_up; 
     259    } 
     260 
     261    /* �e�����R�[�h�y�[�W�̃t�@�C���̐���ݎ��A�擪�̌�����/ 
     262    for(i = 0; i < (cbTranslate / sizeof(NUI_LANGANDCODEPAGE)); i++) { 
     263        TCHAR sub_block[1024]; 
     264        NUI_LANGANDCODEPAGE lc = translate[(cbTranslate / sizeof(NUI_LANGANDCODEPAGE)) - i - 1]; 
     265        wsprintf(sub_block, 
     266                _T("\\StringFileInfo\\%04x%04x\\ProductName"), 
     267                lc.wLanguage, 
     268                lc.wCodePage); 
     269        /* i�Ԗڂ̌����R�[�h�y�[�W�̃t�@�C���̐��������*/ 
     270        VerQueryValue( 
     271            fvi, 
     272            sub_block, 
     273            (void**)&product, 
     274            &product_len); 
     275        if (product_len) { 
     276            TCHAR* a = _tcsdup(product); 
     277            if (lc.wLanguage == GetThreadLocale()) { 
     278                break; 
     279            } 
     280        } 
     281    } 
     282 
     283clean_up: 
     284    ; 
    249285} 
    250286 
     
    252288void InternalTest(void) { 
    253289    cp(); 
    254     exit(1); 
    255290 
    256291    CompareTest(); 
  • lang/c/NetworkUpdater/trunk/Build/Copy.c

    r38337 r38354  
    239239 
    240240typedef struct { 
     241    HANDLE copy_end_event; 
     242    unsigned int num_files; 
     243} ProgressWindowThreadData; 
     244 
     245typedef struct { 
    241246    HWND progress; 
    242247    Shared shared; 
    243248    size_t count; 
    244249    size_t num_files; 
     250    ProgressWindowThreadData thread; 
    245251} ProgressWindowData; 
    246252 
     
    251257    if (message == WM_TIMER) { 
    252258        ReadSharedMemory(&data->shared); 
     259 
     260        /* DestroyWindow(), one WM_TIMER interval delay */ 
     261        if (/* data->count >= data->shared.data.copyed && */  
     262            WaitForSingleObject(data->thread.copy_end_event, 0) != WAIT_TIMEOUT) { 
     263            DestroyWindow(hWnd); 
     264            return 0; 
     265        } 
     266 
    253267        /* NUI_Log(L"Timer: count=%d, shared=%d", data->count, data->shared.data.copyed); */ 
    254         for (; (data->count < data->shared.data.copyed) &&  
    255             (data->count < data->num_files /* num_files is unreliable but PBM_SETRANGE == (0, num_files) */) 
    256             ; ++data->count) { 
    257             SendMessage(data->progress, PBM_STEPIT, 0, 0); 
     268        { 
     269            unsigned int added = 0; 
     270            for (; (data->count < data->shared.data.copyed) && 
     271                (data->count < data->num_files /* num_files is unreliable but PBM_SETRANGE == (0, num_files) */) && 
     272                (added <= data->num_files / 10) 
     273                ; ++data->count, ++added) { 
     274                SendMessage(data->progress, PBM_STEPIT, 0, 0); 
     275            } 
    258276        } 
    259277    } else if (message == WM_CREATE) { 
     
    269287    return DefWindowProc(hWnd, message, wParam, lParam); 
    270288} 
    271  
    272 typedef struct { 
    273     HANDLE copy_end_event; 
    274     unsigned int num_files; 
    275 } ProgressWindowThreadData; 
    276289 
    277290DWORD CALLBACK ProgressWindowThread(void* arg) 
     
    291304 
    292305    memset(&data, 0, sizeof(data)); 
    293     data.num_files = thread.num_files; 
     306    data.thread = thread; 
    294307     
    295308    instance = GetModuleHandle(NULL); 
     
    384397    for (;;) { 
    385398        MSG msg; 
    386         DWORD reason = 0; 
    387         reason = MsgWaitForMultipleObjects(1, &thread.copy_end_event, FALSE, WAIT_LIMIT, QS_ALLINPUT); 
    388         if (reason != WAIT_OBJECT_0 + 1) { 
    389             DestroyWindow(window); 
     399        BOOL result = GetMessage(&msg, NULL, 0, 0); 
     400        if (result == 0) { 
    390401            break; 
    391         } 
    392         while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { 
    393             TranslateMessage(&msg); 
    394             DispatchMessage(&msg); 
    395         } 
     402        } else if (result == -1) { 
     403            break; 
     404        } 
     405        TranslateMessage(&msg); 
     406        DispatchMessage(&msg); 
    396407    } 
    397408 
     
    444455 
    445456        if (FILE_ATTRIBUTE_DIRECTORY & find_data.dwFileAttributes) { 
    446             NUI_Log(_T("new dir")); 
    447             if (!CreateDirectory(next_to, NULL) && GetLastError() != ERROR_ALREADY_EXISTS) { 
     457            if (CreateDirectory(next_to, NULL) && GetLastError() != ERROR_ALREADY_EXISTS) { 
     458                ReadSharedMemory(shared); 
     459                shared->data.copyed++; 
     460                WriteSharedMemory(shared); 
     461                result = result && NUI_CopyDirectory(next_from, next_to, shared); 
     462            } else { 
     463                NUI_Log(_T("dir error")); 
    448464                result = FALSE; 
     465            } 
     466        } else { 
     467            if(CopyFile(next_from, next_to, FALSE)) { 
     468                ReadSharedMemory(shared); 
     469                shared->data.copyed++; 
     470                WriteSharedMemory(shared); 
    449471            } else { 
    450                 result = result && NUI_CopyDirectory(next_from, next_to, shared); 
     472                NUI_Log(_T("file error")); 
     473                result = FALSE; 
    451474            } 
    452         } else if(!CopyFile(next_from, next_to, FALSE)) { 
    453             NUI_Log(_T("file error")); 
    454             result = FALSE; 
    455475        } 
    456476 
    457477        free(next_to); 
    458478        free(next_from); 
    459  
    460         if (result) { 
    461             ReadSharedMemory(shared); 
    462             shared->data.copyed++; 
    463             WriteSharedMemory(shared); 
    464         } 
    465479    } while(FindNextFile(hFind, &find_data)); 
    466480 
  • lang/c/NetworkUpdater/trunk/Build/MSW.am

    r38335 r38354  
    33 
    44DEFS += -DSTRICT #-DNONAMELESSUNION -DUNICODE -D_UNICODE 
    5 LIBS += -lole32 -loleaut32 -luuid -lwininet -lshlwapi -lcomctl32 
     5LIBS += -lole32 -loleaut32 -luuid -lwininet -lshlwapi -lcomctl32 -lversion 
    66 
    77sample_windows_SOURCES = \ 
  • lang/c/NetworkUpdater/trunk/Build/Test.cpp

    r38326 r38354  
    244244} 
    245245 
     246 
    246247int main(int argc, char** argv) { 
    247248    NU_NetworkUpdater updater; 
    248249    NU_Option option; 
    249250    int result = 1; 
    250  
    251251    using namespace std; 
    252252 
     
    262262 
    263263    printf("test\n"); 
     264 
    264265     
    265266    InternalTest(); 
     267    /* 
    266268    Test_NU_Create(); 
    267269    Test_NU_StartSearch(); 
    268270    Test_NU_StartSearch2(); 
     271    */ 
    269272 
    270273    /* NU_NetworkUpdater�̍\���̂����/ 
  • lang/c/NetworkUpdater/trunk/Build/Test.vcproj

    r38329 r38354  
    227227                        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" 
    228228                        > 
     229                        <File 
     230                                RelativePath=".\Test.rc" 
     231                                > 
     232                        </File> 
    229233                </Filter> 
    230234        </Files> 
  • lang/c/NetworkUpdater/trunk/Windows/NetworkUpdater.c

    r38336 r38354  
    504504} 
    505505 
    506 typedef struct LANGANDCODEPAGE_ { 
     506typedef struct NUI_LANGANDCODEPAGE_ { 
    507507  WORD wLanguage; 
    508508  WORD wCodePage; 
    509 } LANGANDCODEPAGE; 
     509} NUI_LANGANDCODEPAGE; 
    510510 
    511511void cp(void) { 
    512     LANGANDCODEPAGE *translate; 
     512    NUI_LANGANDCODEPAGE *translate; 
    513513    DWORD fvi_bytes = 0; 
    514514    char* fvi = NULL; 
     
    519519    TCHAR* my_path = NULL; 
    520520    UINT cbTranslate = 0; 
     521    TCHAR version[1024]; 
     522 
    521523    my_path = (TCHAR*)calloc(len * sizeof(my_path[0]), 1); 
    522524    GetModuleFileName(GetModuleHandle(NULL), my_path, len - 1); 
    523525 
    524526    fvi_bytes = GetFileVersionInfoSize(my_path, NULL); 
    525     fvi = (char*)calloc(fvi_bytes * sizeof(TCHAR), 1); 
    526     GetFileVersionInfo(my_path, 0, fvi_bytes, fvi); 
    527  
    528     // �����R�[�h�y�[�W�̃��X�g��ݎ��B 
    529     VerQueryValue(fvi, 
    530                   TEXT("\\VarFileInfo\\Translation"), 
    531                   (LPVOID*)&translate, 
    532                   &cbTranslate); 
    533  
    534     // �e�����R�[�h�y�[�W�̃t�@�C���̐���ݎ��B 
    535     for(i=0; i <(cbTranslate/sizeof(LANGANDCODEPAGE)); i++) { 
    536         TCHAR SubBlock[1024]; 
    537         wsprintf(SubBlock, 
    538                 TEXT("\\StringFileInfo\\%04x%04x\\ProductName"), 
    539                 translate[i].wLanguage, 
    540                 translate[i].wCodePage); 
    541         // i�Ԗڂ̌����R�[�h�y�[�W�̃t�@�C���̐�������� 
    542         VerQueryValue(fvi, 
    543                     SubBlock, 
    544                     &product, 
    545                     &product_len); 
    546     } 
     527    if (fvi_bytes == 0) { 
     528        goto clean_up; 
     529    } 
     530 
     531    fvi = (char*)calloc(fvi_bytes, 1); 
     532    if (!fvi) { 
     533        goto clean_up; 
     534    } 
     535 
     536    if (!GetFileVersionInfo(my_path, 0, fvi_bytes, fvi)) { 
     537        goto clean_up; 
     538    } 
     539 
     540    { /* �o�[�W�����𓾂�/ 
     541        VS_FIXEDFILEINFO* info; 
     542        UINT n = 0; 
     543        if (VerQueryValue(fvi, _T("\\"), (LPVOID*)&info, &n)) { 
     544            wsprintf(version, 
     545                _T("%d.%d.%d.%d"), 
     546                HIWORD(info->dwFileVersionMS), 
     547                LOWORD(info->dwFileVersionMS), 
     548                HIWORD(info->dwFileVersionLS), 
     549                LOWORD(info->dwFileVersionLS)); 
     550        } 
     551    } 
     552 
     553 
     554    /* �����R�[�h�y�[�W�̃��X�g��ݎ��B*/ 
     555    if (!VerQueryValue(fvi, _T("\\VarFileInfo\\Translation"), (LPVOID*)&translate, &cbTranslate)) { 
     556        goto clean_up; 
     557    } 
     558 
     559    /* �e�����R�[�h�y�[�W�̃t�@�C���̐���ݎ��A�擪�̌�����/ 
     560    for(i = 0; i < (cbTranslate / sizeof(NUI_LANGANDCODEPAGE)); i++) { 
     561        TCHAR sub_block[1024]; 
     562        NUI_LANGANDCODEPAGE lc = translate[(cbTranslate / sizeof(NUI_LANGANDCODEPAGE)) - i - 1]; 
     563        wsprintf(sub_block, 
     564                _T("\\StringFileInfo\\%04x%04x\\ProductName"), 
     565                lc.wLanguage, 
     566                lc.wCodePage); 
     567        /* i�Ԗڂ̌����R�[�h�y�[�W�̃t�@�C���̐��������*/ 
     568        VerQueryValue( 
     569            fvi, 
     570            sub_block, 
     571            (void**)&product, 
     572            &product_len); 
     573        if (product_len) { 
     574            TCHAR* a = _tcsdup(product); 
     575            if (lc.wLanguage == GetThreadLocale()) { 
     576                break; 
     577            } 
     578        } 
     579    } 
     580 
     581clean_up: 
     582    ; 
    547583} 
    548584 
     
    550586void InternalTest(void) { 
    551587    cp(); 
    552     exit(1); 
    553588 
    554589    CompareTest();