Show
Ignore:
Timestamp:
09/09/10 01:18:46 (4 years ago)
Author:
saturday06
Message:

madx

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/c/NetworkUpdater/trunk/Build/Copy.cpp

    r38442 r38443  
    8585        int complete; 
    8686        int exit; 
    87         Data() { 
    88             memset(this, 0, sizeof(*this)); 
    89         } 
    9087    }; 
    9188    Handle mutex; 
     
    9693        SharedMemory& sharedMemory; 
    9794    public: 
    98         Locker(SharedMemory& sharedMemory_): sharedMemory(sharedMemory_) { 
     95        Locker(SharedMemory& sharedMemory_) : sharedMemory(sharedMemory_) { 
    9996            sharedMemory.lock(); 
    10097        } 
     
    103100        } 
    104101    }; 
     102 
    105103    void lock() { 
    106104        WaitForSingleObject(mutex, WAIT_LIMIT); 
     
    109107        ReleaseMutex(mutex); 
    110108    } 
    111     SharedMemory() { 
    112         size_t i = 0; 
    113         size_t len = 0; 
    114          
    115         len = GetCurrentDirectory(0, NULL); 
     109    SharedMemory() : mutex(NULL), map(NULL) { 
     110        size_t len = GetCurrentDirectory(0, NULL); 
    116111        String<> name(len); 
    117112        if (!name) { 
     
    121116        GetCurrentDirectory(len, name); 
    122117        Log(_T("cd=%s"), (TCHAR*)name); 
    123         for (i = 0; i + 1 < len; ++i) { 
     118        for (size_t i = 0; i + 1 < len; ++i) { 
    124119            if (!IsCharAlphaNumeric(name[i])) { 
    125120                name[i] = _T('.'); 
     
    128123        name[0] = _T('M'); 
    129124        Log(_T("mapping name=%s"), static_cast<TCHAR*>(name)); 
    130          
     125 
    131126        map = CreateFileMapping( 
    132             INVALID_HANDLE_VALUE, 
    133             NULL, 
    134             PAGE_READWRITE, 
    135             0, 
    136             1024, 
    137             name); 
     127                  INVALID_HANDLE_VALUE, 
     128                  NULL, 
     129                  PAGE_READWRITE, 
     130                  0, 
     131                  1024, 
     132                  name); 
    138133 
    139134        name[0] = _T('X'); 
     
    146141 
    147142    Data read() { 
    148         Data data; 
    149         memset(&data, 0, sizeof(data)); 
     143        Data data = {}; 
    150144        Data* r = (Data*)MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0); 
    151145        if (r) { 
    152                         data = *r; 
     146            data = *r; 
    153147            UnmapViewOfFile(r); 
    154148        } 
     
    159153        Data* w = (Data*)MapViewOfFile(map, FILE_MAP_WRITE, 0, 0, 0); 
    160154        if (w) { 
    161                         *w = data; 
     155            *w = data; 
    162156            UnmapViewOfFile(w); 
    163157        } 
     
    167161TCHAR* PathAppendDup(const TCHAR* base, const TCHAR* append) 
    168162{ 
    169     TCHAR* result = NULL; 
    170     size_t result_len = 0; 
    171  
    172     result_len = lstrlen(base) + 1 + lstrlen(append) + 1; 
     163    size_t result_len = lstrlen(base) + 1 + lstrlen(append) + 1; 
    173164    if (result_len <= MAX_PATH + 1) { 
    174165        result_len = MAX_PATH + 1; 
    175166    } 
    176     result = (TCHAR*)calloc(result_len * sizeof(TCHAR), 1); 
     167     
     168    TCHAR* result = (TCHAR*)calloc(result_len * sizeof(TCHAR), 1); 
    177169    if (!result) { 
    178170        return NULL; 
     
    208200        } 
    209201    } else if (message == WM_TIMER) { 
    210         SharedMemory::Data m;  
     202        SharedMemory::Data m; 
    211203        { 
    212204            SharedMemory::Locker locker(*data->shared); 
     
    229221            ++data->rest; 
    230222        } 
    231          
     223 
    232224        if (!data->progress_complete) { 
    233225            /* step progress bar */ 
    234226            if ((m.complete && data->count >= m.copyed) 
    235                 || data->count >= data->thread.num_files) { 
     227                    || data->count >= data->thread.num_files) { 
    236228                /* num_files is unreliable but PBM_SETRANGE == (0, num_files) */ 
    237229 
     
    239231                InvalidateRect(hWnd, NULL, FALSE); 
    240232 
    241                 Log(L"Progress Complete: complete=%d,count=%d,copyed=%d,num_files=%d",  
    242                         m.complete, 
    243                         data->count, 
    244                         m.copyed, 
    245                         data->thread.num_files); 
     233                Log(L"Progress Complete: complete=%d,count=%d,copyed=%d,num_files=%d", 
     234                    m.complete, 
     235                    data->count, 
     236                    m.copyed, 
     237                    data->thread.num_files); 
    246238            } 
    247239            data->count = m.copyed; 
     
    277269    WNDCLASSEX wc; 
    278270    HMONITOR monitor = NULL; 
    279     POINT monitor_point = {0, 0}; 
     271    POINT monitor_point = {}; 
    280272    SharedMemory shared; 
    281     ProgressWindowData data; 
    282     memset(&data, 0, sizeof(data)); 
     273    ProgressWindowData data = {}; 
    283274    data.shared = &shared; 
    284275    data.thread = thread; 
    285      
     276 
    286277    instance = GetModuleHandle(NULL); 
    287278 
     
    335326 
    336327    data.progress = CreateWindow(_T("msctls_progress32"), _T("Progress"), 
    337                                 /*WS_BORDER |*/ WS_CHILD /*| PBS_MARQUEE*/, 15, 15, 270, 20, 
    338                                 window, NULL, GetModuleHandle(NULL), NULL); 
     328                                 /*WS_BORDER |*/ WS_CHILD /*| PBS_MARQUEE*/, 15, 15, 270, 20, 
     329                                 window, NULL, GetModuleHandle(NULL), NULL); 
    339330    SetProp(window, PROGRESS_WINDOW_DATA_PROP, &data); 
    340331 
    341     SendMessage(data.progress, PBM_SETRANGE, (WPARAM)0, MAKELPARAM(0, thread.num_files));  
     332    SendMessage(data.progress, PBM_SETRANGE, (WPARAM)0, MAKELPARAM(0, thread.num_files)); 
    342333    SendMessage(data.progress, PBM_SETSTEP, (WPARAM)1, 0); 
    343334 
     
    367358    ShowWindow(data.progress, SW_SHOW); 
    368359 
    369         { 
     360    { 
    370361        OSVERSIONINFO osvi; 
    371362        osvi.dwOSVersionInfoSize = sizeof(osvi); 
    372363        GetVersionEx(&osvi); 
    373364        if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion >= 6) { 
    374                         SetTimer(window, 0, 600, NULL); 
     365            SetTimer(window, 0, 600, NULL); 
    375366        } else { 
    376                     SetTimer(window, 0, 200, NULL); 
    377         } 
    378         } 
     367            SetTimer(window, 0, 200, NULL); 
     368        } 
     369    } 
    379370 
    380371    ShowWindow(window, SW_SHOW); 
    381372    UpdateWindow(window); 
    382373 
    383     for (;;) { 
     374    for (;; ) { 
    384375        MSG msg; 
    385376        BOOL result = GetMessage(&msg, NULL, 0, 0); 
     
    409400    } 
    410401 
    411     String<> glob = PathAppendDup(from, _T("*")); 
     402    String<> glob(PathAppendDup(from, _T("*"))); 
    412403    if (!glob) { 
    413404        Log(_T("CopyDirectory(): (!glob)")); 
     
    416407 
    417408    HANDLE hFind = FindFirstFile(glob, &find_data); 
    418     struct CleanUp { HANDLE h; ~CleanUp() { FindClose(h); } } cleanUp = {hFind}; (void)cleanUp; 
     409    struct CleanUp { 
     410        HANDLE h; 
     411        ~CleanUp() { 
     412            FindClose(h); 
     413        } 
     414    } cleanUp = {hFind}; 
     415    (void)cleanUp; 
    419416 
    420417    if (!hFind) { 
     
    422419        return FALSE; 
    423420    } 
    424      
     421 
    425422 
    426423    do { 
     
    433430        } 
    434431 
    435         String<> next_from = PathAppendDup(from, find_data.cFileName); 
    436         String<> next_to = PathAppendDup(to, find_data.cFileName); 
     432        String<> next_from(PathAppendDup(from, find_data.cFileName)); 
     433        String<> next_to(PathAppendDup(to, find_data.cFileName)); 
    437434 
    438435        /* Log(_T("%s -> %s"), next_from, next_to); */ 
     
    440437        if (FILE_ATTRIBUTE_DIRECTORY & find_data.dwFileAttributes) { 
    441438            if (CreateDirectory(next_to, NULL) || GetLastError() == ERROR_ALREADY_EXISTS) { 
    442                 
     439 
    443440                result = result && CopyDirectory(next_from, next_to, shared); 
    444441            } else { 
     
    448445        } else if(!CopyFile(next_from, next_to, FALSE)) { 
    449446            Log(_T("file error")); 
    450             result = FALSE;         
     447            result = FALSE; 
    451448        } 
    452449 
     
    496493    CreateProcess(NULL, command, NULL, NULL, FALSE, 0, NULL, cd, &si, &pi); 
    497494    e = GetLastError(); 
    498     Log(_T("CreateProcess(): \r\n command=%s \r\n cd=%s \r\n error=0x%x"), command, cd, e); 
     495    Log(_T("CreateProcess(): \r\n command=%s \r\n cd=%s \r\n error=0x%x"), (TCHAR*)command, (TCHAR*)cd, e); 
    499496    CloseHandle(pi.hThread); 
    500497    CloseHandle(pi.hProcess); 
     
    546543        } 
    547544        GetTempPath(len, system_temp_path); 
    548         Log(_T("system_temp_path=%s"), system_temp_path); 
     545        Log(_T("system_temp_path=%s"), (TCHAR*)system_temp_path); 
    549546    } 
    550547 
     
    557554        } 
    558555        GetCurrentDirectory(len, my_dir); 
    559         Log(_T("my_dir=%s"), my_dir); 
     556        Log(_T("my_dir=%s"), (TCHAR*)my_dir); 
    560557    } 
    561558 
     
    576573 
    577574    e = GetLastError(); 
    578     Log(_T("CreateProcess(): \r\n command=%s \r\n cd=%s \r\n error=0x%x"), clean_command, system_temp_path, e); 
     575    Log(_T("CreateProcess(): \r\n command=%s \r\n cd=%s \r\n error=0x%x"), (TCHAR*)clean_command, (TCHAR*)system_temp_path, e); 
    579576} 
    580577 
     
    587584    DWORD bytes_got = 0; 
    588585    DWORD written = 0; 
    589     Handle config_file = CreateFile(ADMIN_OUTPUT_FILE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, 
    590                                   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
     586    Handle config_file(CreateFile(ADMIN_OUTPUT_FILE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, 
     587                                  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)); 
    591588    e = GetLastError(); 
    592589    if (config_file == INVALID_HANDLE_VALUE) { 
     
    596593 
    597594    bytes = GetFileSize(config_file, NULL); 
    598     String<> data; 
    599     data.reserveBytes(bytes + (/* null terminate */ sizeof(TCHAR))); 
     595    String<> data((TCHAR*)calloc(bytes + (/* null terminate */ sizeof(TCHAR)), 1)); 
    600596    if (!data) { 
    601597        return; 
     
    631627            CoUninitialize(); 
    632628        } 
    633     } cleanUp; 
     629    } cleanUp; (void)cleanUp; 
    634630 
    635631    CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); 
     
    649645 
    650646    Log(_T("ShellExecuteEx(): return=0x%x, GetLastError()=0x%x, hInstApp=0x%x"), 
    651             se, e, hInstApp); 
     647        se, e, hInstApp); 
    652648 
    653649    if(!se || hInstApp <= 32) { 
     
    662658        Log(_T("WAIT_OBJECT_0")); 
    663659        break; 
    664     case WAIT_ABANDONED:   
     660    case WAIT_ABANDONED: 
    665661        Log(_T("WAIT_ABANDONED")); 
    666662        break; 
     
    683679        TCHAR name[1024]; 
    684680        Sleep(20); 
    685         wsprintf(name, _T("NetworkUpdater.AccessCheck.%x.%x.txt"),  
    686             GetCurrentThreadId(), GetTickCount() - retry); 
    687         String<> check_path = PathAppendDup(dir, name); 
     681        wsprintf(name, _T("NetworkUpdater.AccessCheck.%x.%x.txt"), 
     682                 GetCurrentThreadId(), GetTickCount() - retry); 
     683        String<> check_path(PathAppendDup(dir, name)); 
    688684        if (!check_path) { 
    689685            return 0; 
     
    693689        } 
    694690        if (check_path) { 
    695             Handle check = CreateFile( 
    696                 check_path, GENERIC_WRITE | DELETE, 0, NULL, CREATE_NEW,  
    697                 FILE_ATTRIBUTE_HIDDEN | FILE_FLAG_DELETE_ON_CLOSE, NULL); 
     691            Handle check(CreateFile( 
     692                               check_path, GENERIC_WRITE | DELETE, 0, NULL, CREATE_NEW, 
     693                               FILE_ATTRIBUTE_HIDDEN | FILE_FLAG_DELETE_ON_CLOSE, NULL)); 
    698694            if (check != INVALID_HANDLE_VALUE) { 
    699695                TCHAR data[] = _T("write test data"); 
     
    730726 
    731727    memset(&thread_data, 0, sizeof(thread_data)); 
    732      
     728 
    733729    { 
    734730        int num_args = 0; 
     
    753749    Log(_T("***** UpdaterProcess start: pid=0x%x *****"), GetCurrentProcessId()); 
    754750 
    755     { /* read config file */ 
    756         TCHAR* lines[8]; 
    757         size_t i = 0; 
    758         size_t data_count = 0; 
    759         unsigned line = 0; 
    760         DWORD bytes = 0; 
    761         DWORD bytes_got = 0; 
     751    {   /* read config file */ 
    762752        config_file = CreateFile(CONFIG_FILE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, 
    763                            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
    764  
    765                 if (!config_file) { 
     753                                 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
     754 
     755        if (!config_file) { 
    766756            Log(_T("config file not found")); 
    767757            goto clean_up; 
    768758        } 
    769759 
    770         bytes = GetFileSize(config_file, NULL); 
    771         if (bytes == -1) { 
     760        DWORD bytes = GetFileSize(config_file, NULL); 
     761        if (bytes == (DWORD)-1) { 
    772762            DWORD e = GetLastError(); 
    773763            Log(_T("!GetFileSize() error=0x%x"), e); 
     
    775765        } 
    776766 
    777         data.reserveBytes(bytes + (/* null terminate */ sizeof(TCHAR))); 
     767        data = (TCHAR*)calloc(bytes + (/* null terminate */ sizeof(TCHAR)), 1); 
    778768        if (!data) { 
    779769            Log(_T("!data")); 
     
    781771        } 
    782772 
     773        DWORD bytes_got = 0; 
    783774        if (ReadFile(config_file, data, bytes, &bytes_got, NULL) == 0) { 
    784775            DWORD e = GetLastError(); 
     
    787778        } 
    788779 
    789         data_count = (bytes / sizeof(data[0])); 
    790         memset(lines, 0, sizeof(lines)); 
    791         for (i = 0; i < data_count; ++i) { 
     780        size_t data_count = (bytes / sizeof(data[0])); 
     781 
     782        TCHAR* lines[8] = {}; 
     783        unsigned line = 0; 
     784        for (size_t i = 0; i < data_count; ++i) { 
    792785            if (data[i] == _T('\r')) { 
    793786                data[i] = 0; 
     
    815808 
    816809    Log(_T("read config file: \r\n pid=%s \r\n from=%s \r\n to=%s \r\n new_proc=%s \r\n new_cd=%s \r\n num_files=%s \r\n log=%s \r\n debug=%s"), 
    817             pid_string, update_from, update_to, new_program, new_program_cd, num_files_string, log_file_name, debug_string); 
     810        pid_string, update_from, update_to, new_program, new_program_cd, num_files_string, log_file_name, debug_string); 
    818811 
    819812    if (lstrcmp(debug_string, DEBUG_SIGN) == 0) { 
     
    826819        CopyFile(DEFAULT_OUTPUT_FILE_NAME, log_file_name, FALSE); 
    827820        new_log_file = CreateFile(log_file_name, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, 
    828                        OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
     821                                  OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
    829822        if (new_log_file != INVALID_HANDLE_VALUE) { 
    830823            SetFilePointer(new_log_file, 0, 0, FILE_END); 
    831824            /* 
    832             SetStdHandle(STD_OUTPUT_HANDLE, new_log_file); 
    833             */ 
     825               SetStdHandle(STD_OUTPUT_HANDLE, new_log_file); 
     826             */ 
    834827            Log(_T("new log setup")); 
    835828            CloseHandle(log_file); 
     
    849842        } 
    850843    } 
    851      
     844 
    852845    InitCommonControls(); 
    853846 
    854      
     847 
    855848    thread_data.num_files = _ttoi(num_files_string); 
    856849    { 
     
    878871        GetVersionEx(&osvi); 
    879872        if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && 
    880             osvi.dwMajorVersion >= 6) { 
     873                osvi.dwMajorVersion >= 6) { 
    881874            LaunchAdminProcess(); 
    882875 
     
    941934#endif 
    942935} 
    943  
    944  
    945