File tree 2 files changed +32
-0
lines changed
library/std/src/sys/pal/windows
2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -636,3 +636,19 @@ compat_fn_with_fallback! {
636
636
TRUE
637
637
}
638
638
}
639
+
640
+ #[ cfg( target_vendor = "rust9x" ) ]
641
+ compat_fn_with_fallback ! {
642
+ pub static KERNEL32 : & CStr = c"kernel32" => { load: false , unicows: false } ;
643
+ // >= Vista / Server 2008
644
+ // https://learn.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-comparestringordinal
645
+ pub fn CompareStringOrdinal (
646
+ lpstring1: PCWSTR ,
647
+ cchcount1: i32 ,
648
+ lpstring2: PCWSTR ,
649
+ cchcount2: i32 ,
650
+ bignorecase: BOOL ,
651
+ ) -> COMPARESTRING_RESULT {
652
+ unimplemented!( )
653
+ }
654
+ }
Original file line number Diff line number Diff line change @@ -69,6 +69,13 @@ impl EnvKey {
69
69
// [4] https://docs.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-comparestringordinal
70
70
impl Ord for EnvKey {
71
71
fn cmp ( & self , other : & Self ) -> cmp:: Ordering {
72
+ #[ cfg( target_vendor = "rust9x" ) ]
73
+ {
74
+ if c:: CompareStringOrdinal :: available ( ) . is_none ( ) {
75
+ return self . os_string . cmp ( & other. os_string ) ;
76
+ }
77
+ }
78
+
72
79
unsafe {
73
80
let result = c:: CompareStringOrdinal (
74
81
self . utf16 . as_ptr ( ) ,
@@ -120,6 +127,15 @@ impl PartialEq<str> for EnvKey {
120
127
// they are compared using a caseless string mapping.
121
128
impl From < OsString > for EnvKey {
122
129
fn from ( k : OsString ) -> Self {
130
+ #[ cfg( target_vendor = "rust9x" ) ]
131
+ {
132
+ if c:: CompareStringOrdinal :: available ( ) . is_none ( ) {
133
+ let mut k = k;
134
+ k. make_ascii_uppercase ( ) ;
135
+ return EnvKey { utf16 : Vec :: new ( ) , os_string : k } ;
136
+ }
137
+ }
138
+
123
139
EnvKey { utf16 : k. encode_wide ( ) . collect ( ) , os_string : k }
124
140
}
125
141
}
You can’t perform that action at this time.
0 commit comments