Changeset 34664

Show
Ignore:
Timestamp:
07/28/09 18:12:49 (4 years ago)
Author:
saturday06
Message:

osososososo

Location:
lang/objective-cplusplus/i3/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/objective-cplusplus/i3/trunk/am/fakecygpty.am

    r31935 r34664  
    1515        ${mkdir_p} tmp 
    1616        ${mkdir_p} ${top_srcdir}/windows 
    17         ${CC} -O3 -DNDEBUG -c ${top_srcdir}/src/os-windows/fakecygpty.c 
     17#       ${CC} -O3 -DNDEBUG -c ${top_srcdir}/src/os-windows/fakecygpty.c 
     18        gcc -O3 -DNDEBUG -c ${top_srcdir}/src/os-windows/fakecygpty.c 
    1819        windres -i ${top_srcdir}/windows/resources/fakecygpty.rc -o fakecygpty-resource.o 
    19         ${CC} -O3 -DNDEBUG -s fakecygpty.o fakecygpty-resource.o -o tmp/fakecygpty.exe 
     20#       ${CC} -O3 -DNDEBUG -s fakecygpty.o fakecygpty-resource.o -o tmp/fakecygpty.exe 
     21        gcc -O3 -DNDEBUG -s fakecygpty.o fakecygpty-resource.o -o tmp/fakecygpty.exe 
    2022        lzma --compress --keep tmp/fakecygpty.exe 
    2123        lzma --test            tmp/fakecygpty.exe.lzma 
  • lang/objective-cplusplus/i3/trunk/src/os-windows/CygwinPty.cpp

    r34447 r34664  
    33 
    44namespace i3 { 
     5template <size_t Size> 
     6bool query_registory(HKEY root, const TCHAR* SubKey, const TCHAR* value, TCHAR (&retval)[Size]) { 
     7    HKEY hkResult = NULL; 
     8    LONG result = RegOpenKeyEx( 
     9        root, 
     10        SubKey, 
     11        0, 
     12        KEY_EXECUTE, 
     13        &hkResult); 
     14     
     15    if (result != ERROR_SUCCESS) { 
     16        return false; 
     17    } 
     18 
     19    DWORD type = 0; 
     20    DWORD cbCd = sizeof(retval); 
     21    result = RegQueryValueEx( 
     22        hkResult, 
     23        value, 
     24        NULL, 
     25        &type, 
     26        (BYTE*)retval, 
     27        &cbCd); 
     28 
     29    if (result != ERROR_SUCCESS) { 
     30        return false; 
     31    } 
     32    return true; 
     33} 
     34 
     35 
    536CygwinPty::CygwinPty() { 
    637} 
     
    3566 
    3667    TCHAR cd[2000] = {}; 
    37     { 
    38         HKEY hkResult = NULL; 
    39         { 
    40             const TCHAR SubKey[] = _T("SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/"); 
    41             LONG result = RegOpenKeyEx( 
    42                               HKEY_LOCAL_MACHINE, 
    43                               SubKey, 
    44                               0, 
    45                               KEY_EXECUTE, 
    46                               &hkResult); 
    47  
    48             if (result != ERROR_SUCCESS) { 
    49                 return false; 
    50             } 
    51         } 
    52         { 
    53             DWORD type = 0; 
    54             DWORD cbCd = sizeof(cd); 
    55             LONG result = RegQueryValueEx( 
    56                               hkResult, 
    57                               _T("native"), 
    58                               NULL, 
    59                               &type, 
    60                               (BYTE*)cd, 
    61                               &cbCd); 
    62  
    63             if (result != ERROR_SUCCESS) { 
    64                 return false; 
    65             } 
    66         } 
    67         if (_tcscat_s(cd, _T("\\bin")) != 0) { 
    68             return false; 
    69         } 
     68    if (!query_registory(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cygwin\\setup"), TEXT("rootdir"), retval) && 
     69        !query_registory(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Wow6432Node\\Cygwin\\setup"), TEXT("rootdir"), retval) && 
     70        !query_registory(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/"), TEXT("native"), retval) && 
     71        !query_registory(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Wow6432Node\\Cygnus Solutions\\Cygwin\\mounts v2\\/"), TEXT("native"), retval)) { 
     72        return false; 
    7073    } 
    7174 
     
    8184 
    8285    if (!DuplicateHandle(GetCurrentProcess(),hMyStdInput ,GetCurrentProcess(),NULL, 0, FALSE, DUPLICATE_SAME_ACCESS) || 
    83             !DuplicateHandle(GetCurrentProcess(),hMyStdOutput,GetCurrentProcess(),NULL, 0, FALSE, DUPLICATE_SAME_ACCESS) || 
    84             !DuplicateHandle(GetCurrentProcess(),hMyStdError ,GetCurrentProcess(),NULL, 0, FALSE, DUPLICATE_SAME_ACCESS)) { 
     86        !DuplicateHandle(GetCurrentProcess(),hMyStdOutput,GetCurrentProcess(),NULL, 0, FALSE, DUPLICATE_SAME_ACCESS) || 
     87        !DuplicateHandle(GetCurrentProcess(),hMyStdError ,GetCurrentProcess(),NULL, 0, FALSE, DUPLICATE_SAME_ACCESS)) { 
    8588 
    8689        return false;