@@ -32,27 +32,33 @@ pub fn with_saved_path(f: &mut dyn FnMut()) {
32
32
33
33
#[ cfg( windows) ]
34
34
pub fn get_path ( ) -> io:: Result < Option < RegValue > > {
35
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
36
- let environment = root
37
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
38
- . unwrap ( ) ;
39
- match environment. get_raw_value ( "PATH" ) {
35
+ get_reg_value ( & RegKey :: predef ( HKEY_CURRENT_USER ) , "Environment" , "PATH" )
36
+ }
37
+
38
+ #[ cfg( windows) ]
39
+ fn restore_path ( p : Option < RegValue > ) {
40
+ restore_reg_value ( & RegKey :: predef ( HKEY_CURRENT_USER ) , "Environment" , "PATH" , p)
41
+ }
42
+
43
+ #[ cfg( windows) ]
44
+ fn get_reg_value ( root : & RegKey , subkey : & str , name : & str ) -> io:: Result < Option < RegValue > > {
45
+ let subkey = root. open_subkey_with_flags ( subkey, KEY_READ | KEY_WRITE ) ?;
46
+ match subkey. get_raw_value ( name) {
40
47
Ok ( val) => Ok ( Some ( val) ) ,
41
48
Err ( ref e) if e. kind ( ) == io:: ErrorKind :: NotFound => Ok ( None ) ,
42
49
Err ( e) => Err ( e) ,
43
50
}
44
51
}
45
52
46
53
#[ cfg( windows) ]
47
- fn restore_path ( p : Option < RegValue > ) {
48
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
49
- let environment = root
50
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
54
+ fn restore_reg_value ( root : & RegKey , subkey : & str , name : & str , p : Option < RegValue > ) {
55
+ let subkey = root
56
+ . open_subkey_with_flags ( subkey, KEY_READ | KEY_WRITE )
51
57
. unwrap ( ) ;
52
58
if let Some ( p) = p. as_ref ( ) {
53
- environment . set_raw_value ( "PATH" , p) . unwrap ( ) ;
59
+ subkey . set_raw_value ( name , p) . unwrap ( ) ;
54
60
} else {
55
- let _ = environment . delete_value ( "PATH" ) ;
61
+ let _ = subkey . delete_value ( name ) ;
56
62
}
57
63
}
58
64
0 commit comments