Changeset 734

Show
Ignore:
Timestamp:
09/10/98 15:21:57 (16 years ago)
Author:
ucackha
Message:

Added registry code from RAT + tidying up. Kris

Location:
vic/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • vic/trunk/main.cc

    r733 r734  
    396396extern "C" int WinPutsCmd(ClientData, Tcl_Interp*, int ac, char** av); 
    397397extern "C" int WinGetUserName(ClientData, Tcl_Interp*, int ac, char** av); 
    398 extern "C" int WinPutRegistry(ClientData, Tcl_Interp*, int ac, char** av); 
    399 extern "C" int WinGetRegistry(ClientData, Tcl_Interp*, int ac, char** av); 
     398extern "C" int WinReg(ClientData, Tcl_Interp *, int, char **); 
    400399#endif 
    401400 
     
    460459        tcl.CreateCommand("puts", WinPutsCmd, (ClientData)tk); 
    461460        tcl.CreateCommand("getusername", WinGetUserName, (ClientData)tk); 
    462         tcl.CreateCommand("putregistry", WinPutRegistry, (ClientData)tk); 
    463         tcl.CreateCommand("getregistry", WinGetRegistry, (ClientData)tk); 
     461        tcl.CreateCommand("registry", WinReg, (ClientData)tk); 
    464462#endif 
    465463        EmbeddedTcl::init(); 
  • vic/trunk/mbus.cc

    r731 r734  
    212212        struct sockaddr_in sinme; 
    213213        struct ip_mreq     imr; 
     214#ifdef WIN32 
     215        int                                ttl   =  0; 
     216#else 
    214217        char               ttl   =  0; 
     218#endif 
    215219        int                reuse =  1; 
    216220        char               loop  =  1; 
     
    248252        } 
    249253 
     254#ifndef WIN32 
    250255        if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop)) < 0) { 
    251256                perror("mbus: setsockopt IP_MULTICAST_LOOP"); 
    252257                return -1; 
    253258        } 
    254  
    255         if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) { 
     259#endif 
     260 
     261        if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl)) < 0) { 
    256262                perror("mbus: setsockopt IP_MULTICAST_TTL"); 
    257263                return -1; 
  • vic/trunk/net-ip.cc

    r724 r734  
    275275                                abort(); 
    276276                        } else { 
    277                                 printf("bound to INADDR_ANY\n"); 
     277                                /*printf("bound to INADDR_ANY\n");*/ 
    278278                        } 
    279279                } 
  • vic/trunk/ui-win32.tcl

    r702 r734  
    3535 
    3636proc run_resource_dialog { name email } { 
     37        global V 
     38        set owner "" 
     39        set email "" 
     40        catch {set owner [registry get "HKEY_CURRENT_USER\\Software\\Mbone Applications\\common" "*rtpName"]} 
     41        catch {set email [registry get "HKEY_CURRENT_USER\\Software\\Mbone Applications\\common" "*rtpEmail"]} 
     42        if {$owner!="" && $email!=""} { 
     43                option add *rtpName "$owner" interactive 
     44                option add *rtpEmail "$email" interactive 
     45                return 
     46        } 
     47 
    3748        set w .form 
    3849        global V 
     
    6576 
    6677        set owner "" 
    67         catch {set owner [getregistry "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" "RegisteredOwner"]} 
     78        catch {set owner [registry get "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" "RegisteredOwner"]} 
    6879        if { $owner == "" } { 
    69             catch {set owner [getregistry "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion" "RegisteredOwner"]} 
     80            catch {set owner [registry get "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion" "RegisteredOwner"]} 
    7081        } 
    7182 
    7283        set org "" 
    73         catch {set org [getregistry "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" "RegisteredOrganization"]} 
     84        catch {set org [registry get "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" "RegisteredOrganization"]} 
    7485        if { $org == "" } { 
    75             catch {set org [getregistry "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion" "RegisteredOrganization"]} 
     86            catch {set org [registry get "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion" "RegisteredOrganization"]} 
    7687        } 
    7788 
     
    111122        option add *rtpEmail "$email" interactive 
    112123 
    113         putregistry "HKEY_CURRENT_USER\\Software\\$V(class)\\$V(app)" "*rtpName" "$name" 
    114         putregistry "HKEY_CURRENT_USER\\Software\\$V(class)\\$V(app)" "*rtpEmail" "$email" 
     124        registry set "HKEY_CURRENT_USER\\Software\\Mbone Applications\\common" "*rtpName" "$name" 
     125        registry set "HKEY_CURRENT_USER\\Software\\Mbone Applications\\common" "*rtpEmail" "$email" 
    115126 
    116127        pack forget $w 
  • vic/trunk/win32.c

    r733 r734  
    389389} 
    390390 
    391 int 
    392 WinGetRegistry(clientData, interp, argc, argv) 
    393     ClientData clientData; 
    394     Tcl_Interp *interp;                 /* Current interpreter. */ 
    395     int argc;                           /* Number of arguments. */ 
    396     char **argv;                        /* Argument strings. */ 
    397 { 
    398     HKEY hKey, hRootKey; 
    399     DWORD dwType; 
    400     DWORD len, retCode; 
    401     CHAR *regRoot, *regPath, *keyValue, *keyData; 
    402     int retval = TCL_ERROR; 
    403      
    404     if (argc != 3) { 
    405         Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 
    406                 "key value\"", (char *) NULL); 
    407         return TCL_ERROR; 
    408     } 
    409     regRoot = argv[1]; 
    410     keyValue = argv[2]; 
    411  
    412     regPath = strchr(regRoot, '\\'); 
    413     *regPath++ = '\0'; 
    414      
    415     if ((hRootKey = regroot(regRoot)) == NULL) { 
    416         Tcl_AppendResult(interp, "Unknown registry root \"", 
    417                          regRoot, "\"", NULL); 
    418         return (TCL_ERROR); 
    419     } 
    420      
    421     retCode = RegOpenKeyEx(hRootKey, regPath, 0, 
    422                            KEY_READ, &hKey); 
    423     if (retCode == ERROR_SUCCESS) { 
    424         retCode = RegQueryValueEx(hKey, keyValue, NULL, &dwType, 
    425                                   NULL, &len); 
    426         if (retCode == ERROR_SUCCESS && 
    427             dwType == REG_SZ && len) { 
    428             keyData = (CHAR *) ckalloc(len); 
    429             retCode = RegQueryValueEx(hKey, keyValue, NULL, NULL, 
    430                                       keyData, &len); 
    431             if (retCode == ERROR_SUCCESS) { 
    432                 Tcl_AppendResult(interp, keyData, NULL); 
    433                 free(keyData); 
    434                 retval = TCL_OK; 
    435             } 
    436         } 
    437         RegCloseKey(hKey); 
    438     } 
    439     if (retval == TCL_ERROR) { 
    440         Tcl_AppendResult(interp, "Cannot find registry entry \"", regRoot, 
    441                          "\\", regPath, "\\", keyValue, "\"", NULL); 
    442     } 
    443     return (retval); 
    444 } 
    445  
    446 int 
    447 WinPutRegistry(clientData, interp, argc, argv) 
    448     ClientData clientData; 
    449     Tcl_Interp *interp;                 /* Current interpreter. */ 
    450     int argc;                           /* Number of arguments. */ 
    451     char **argv;                        /* Argument strings. */ 
    452 { 
    453     HKEY hKey, hRootKey; 
    454     DWORD retCode; 
    455     CHAR *regRoot, *regPath, *keyValue, *keyData; 
    456     DWORD new; 
    457     int result = TCL_OK; 
    458      
    459     if (argc != 4) { 
    460         Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 
    461                 "key value data\"", (char *) NULL); 
    462         return TCL_ERROR; 
    463     } 
    464     regRoot = argv[1]; 
    465     keyValue = argv[2]; 
    466     keyData = argv[3]; 
    467      
    468     regPath = strchr(regRoot, '\\'); 
    469     *regPath++ = '\0'; 
    470      
    471     if ((hRootKey = regroot(regRoot)) == NULL) { 
    472         Tcl_AppendResult(interp, "Unknown registry root \"", 
    473                          regRoot, "\"", NULL); 
    474         return (TCL_ERROR); 
    475     } 
    476  
    477     retCode = RegCreateKeyEx(hRootKey, regPath, 0, 
    478                              "", 
    479                              REG_OPTION_NON_VOLATILE, 
    480                              KEY_ALL_ACCESS, 
    481                              NULL, 
    482                              &hKey, &new); 
    483     if (retCode == ERROR_SUCCESS) { 
    484         retCode = RegSetValueEx(hKey, keyValue, 0, REG_SZ, keyData, strlen(keyData)); 
    485         if (retCode != ERROR_SUCCESS) { 
    486             Tcl_AppendResult(interp, "unable to set key \"", regRoot, "\\", 
    487                              regPath, "\" with value \"", keyValue, "\"", 
    488                              (char *) NULL); 
    489             result = TCL_ERROR; 
    490         } 
    491         RegCloseKey(hKey); 
    492     } 
    493     else { 
    494         Tcl_AppendResult(interp, "unable to create key \"", regRoot, "\\", 
    495                          regPath, "\"", (char *) NULL); 
    496         result = TCL_ERROR; 
    497     } 
    498     return (result); 
    499 } 
     391 
     392int  
     393WinReg(ClientData clientdata, Tcl_Interp *interp, int argc, char **argv) 
     394{ 
     395        static char szBuf[255], szOutBuf[255]; 
     396        char *szRegRoot = NULL, *szRegPath = NULL, *szValueName; 
     397        int cbOutBuf = 255; 
     398        HKEY hKey, hKeyResult; 
     399        DWORD dwDisp; 
     400 
     401        if (argc < 4 || argc > 5) { 
     402                Tcl_AppendResult(interp, "wrong number of args\n", szBuf, NULL); 
     403                return TCL_ERROR; 
     404        } 
     405         
     406        strcpy(szBuf, argv[2]); 
     407        szValueName = argv[3]; 
     408        szRegRoot   = szBuf; 
     409        szRegPath   = strchr(szBuf, '\\'); 
     410 
     411        if (szRegPath == NULL || szValueName == NULL) { 
     412                Tcl_AppendResult(interp, "registry path is wrongly written\n", szBuf, NULL); 
     413                return TCL_ERROR; 
     414        } 
     415         
     416        *szRegPath = '\x0'; 
     417        szRegPath++; 
     418 
     419        hKey = regroot(szRegRoot); 
     420         
     421        if (hKey == (HKEY)-1) { 
     422                Tcl_AppendResult(interp, "root not found %s", szRegRoot, NULL); 
     423                return TCL_ERROR; 
     424        } 
     425 
     426        if (ERROR_SUCCESS != RegCreateKeyEx(hKey, szRegPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyResult, &dwDisp)) { 
     427                Tcl_AppendResult(interp, "Could not open key", szRegRoot, szRegPath, NULL); 
     428                return TCL_ERROR; 
     429        } 
     430 
     431        if (argc == 4 && !strcmp(argv[1],"get")) { 
     432                DWORD dwType = REG_SZ; 
     433                if (ERROR_SUCCESS != RegQueryValueEx(hKeyResult, szValueName, 0, &dwType, szOutBuf, &cbOutBuf)) { 
     434                        RegCloseKey(hKeyResult); 
     435                        Tcl_AppendResult(interp, "Could not set value", szValueName, NULL); 
     436                        return TCL_ERROR;        
     437                } 
     438                Tcl_SetResult(interp, szOutBuf, TCL_STATIC);     
     439        } else if (argc == 5 && !strcmp(argv[1], "set")) { 
     440                if (ERROR_SUCCESS != RegSetValueEx(hKeyResult, szValueName, 0, REG_SZ, argv[4], strlen(argv[4]))) { 
     441                        RegCloseKey(hKeyResult); 
     442                        Tcl_AppendResult(interp, "Could not set value", szValueName, argv[4], NULL); 
     443                        return TCL_ERROR; 
     444                } 
     445        } 
     446        RegCloseKey(hKeyResult); 
     447        return TCL_OK; 
     448} 
     449 
     450int 
     451RegGetValue(HKEY* key, char *subkey, char *value, char *dst, int dlen) 
     452{ 
     453        HKEY lkey;       
     454        LONG r; 
     455        LONG len; 
     456        DWORD type; 
     457  
     458        r = RegOpenKeyEx(*key, subkey, 0, KEY_READ, &lkey); 
     459  
     460        if (ERROR_SUCCESS == r) { 
     461                r = RegQueryValueEx(lkey, value, 0, &type, NULL, &len); 
     462                if (ERROR_SUCCESS == r && len <= dlen && type == REG_SZ) { 
     463                        type = REG_SZ; 
     464                        r = RegQueryValueEx(lkey, value, 0, &type, dst, &len); 
     465                } else { 
     466                        SetLastError(r); 
     467                        perror(""); 
     468                } 
     469        } else { 
     470                SetLastError(r); 
     471                perror(""); 
     472                return FALSE; 
     473        } 
     474        RegCloseKey(lkey); 
     475        return TRUE; 
     476}