@@ -122,33 +122,18 @@ impl<'a> From<&'a [u8]> for ParameterKey<'a> {
122
122
}
123
123
124
124
/// A single kernel command line parameter.
125
- #[ derive( Debug , PartialEq , Eq ) ]
125
+ #[ derive( Debug , Eq ) ]
126
126
pub ( crate ) struct Parameter < ' a > {
127
+ /// The full original value
128
+ #[ allow( dead_code) ]
129
+ pub parameter : & ' a [ u8 ] ,
127
130
/// The parameter key as raw bytes
128
131
pub key : ParameterKey < ' a > ,
129
132
/// The parameter value as raw bytes, if present
130
133
pub value : Option < & ' a [ u8 ] > ,
131
134
}
132
135
133
136
impl < ' a > Parameter < ' a > {
134
- /// Create a new parameter with the provided key and value.
135
- #[ cfg( test) ]
136
- pub fn new_kv < ' k : ' a , ' v : ' a > ( key : & ' k [ u8 ] , value : & ' v [ u8 ] ) -> Self {
137
- Self {
138
- key : ParameterKey ( key) ,
139
- value : Some ( value) ,
140
- }
141
- }
142
-
143
- /// Create a new parameter with the provided key.
144
- #[ cfg( test) ]
145
- pub fn new_key ( key : & ' a [ u8 ] ) -> Self {
146
- Self {
147
- key : ParameterKey ( key) ,
148
- value : None ,
149
- }
150
- }
151
-
152
137
/// Returns the key as a lossy UTF-8 string.
153
138
///
154
139
/// Invalid UTF-8 sequences are replaced with the Unicode replacement character.
@@ -177,6 +162,7 @@ impl<'a, T: AsRef<[u8]> + ?Sized> From<&'a T> for Parameter<'a> {
177
162
178
163
match equals {
179
164
None => Self {
165
+ parameter : input,
180
166
key : ParameterKey ( input) ,
181
167
value : None ,
182
168
} ,
@@ -196,6 +182,7 @@ impl<'a, T: AsRef<[u8]> + ?Sized> From<&'a T> for Parameter<'a> {
196
182
. unwrap_or ( value) ;
197
183
198
184
Self {
185
+ parameter : input,
199
186
key,
200
187
value : Some ( value) ,
201
188
}
@@ -228,6 +215,13 @@ impl PartialEq for ParameterKey<'_> {
228
215
}
229
216
}
230
217
218
+ impl < ' a > PartialEq for Parameter < ' a > {
219
+ fn eq ( & self , other : & Self ) -> bool {
220
+ // Note we don't compare parameter because we want hyphen-dash insensitivity for the key
221
+ self . key == other. key && self . value == other. value
222
+ }
223
+ }
224
+
231
225
impl std:: fmt:: Display for Parameter < ' _ > {
232
226
/// Formats the parameter for display.
233
227
///
@@ -334,14 +328,9 @@ mod tests {
334
328
let kargs = Cmdline :: from ( b"foo=bar,bar2 baz=fuz wiz" . as_slice ( ) ) ;
335
329
let mut iter = kargs. iter ( ) ;
336
330
337
- assert_eq ! ( iter. next( ) , Some ( Parameter :: new_kv( b"foo" , b"bar,bar2" ) ) ) ;
338
-
339
- assert_eq ! (
340
- iter. next( ) ,
341
- Some ( Parameter :: new_kv( b"baz" , b"fuz" . as_slice( ) ) )
342
- ) ;
343
-
344
- assert_eq ! ( iter. next( ) , Some ( Parameter :: new_key( b"wiz" ) ) ) ;
331
+ assert_eq ! ( iter. next( ) , Some ( Parameter :: from( b"foo=bar,bar2" ) ) ) ;
332
+ assert_eq ! ( iter. next( ) , Some ( Parameter :: from( b"baz=fuz" ) ) ) ;
333
+ assert_eq ! ( iter. next( ) , Some ( Parameter :: from( b"wiz" ) ) ) ;
345
334
assert_eq ! ( iter. next( ) , None ) ;
346
335
347
336
// Test the find API
0 commit comments