@@ -122,33 +122,18 @@ impl<'a> From<&'a [u8]> for ParameterKey<'a> {
122122}
123123
124124/// A single kernel command line parameter.
125- #[ derive( Debug , PartialEq , Eq ) ]
125+ #[ derive( Debug , Eq ) ]
126126pub ( crate ) struct Parameter < ' a > {
127+ /// The full original value
128+ #[ allow( dead_code) ]
129+ pub parameter : & ' a [ u8 ] ,
127130 /// The parameter key as raw bytes
128131 pub key : ParameterKey < ' a > ,
129132 /// The parameter value as raw bytes, if present
130133 pub value : Option < & ' a [ u8 ] > ,
131134}
132135
133136impl < ' 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-
152137 /// Returns the key as a lossy UTF-8 string.
153138 ///
154139 /// 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> {
177162
178163 match equals {
179164 None => Self {
165+ parameter : input,
180166 key : ParameterKey ( input) ,
181167 value : None ,
182168 } ,
@@ -196,6 +182,7 @@ impl<'a, T: AsRef<[u8]> + ?Sized> From<&'a T> for Parameter<'a> {
196182 . unwrap_or ( value) ;
197183
198184 Self {
185+ parameter : input,
199186 key,
200187 value : Some ( value) ,
201188 }
@@ -228,6 +215,13 @@ impl PartialEq for ParameterKey<'_> {
228215 }
229216}
230217
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+
231225impl std:: fmt:: Display for Parameter < ' _ > {
232226 /// Formats the parameter for display.
233227 ///
@@ -334,14 +328,9 @@ mod tests {
334328 let kargs = Cmdline :: from ( b"foo=bar,bar2 baz=fuz wiz" . as_slice ( ) ) ;
335329 let mut iter = kargs. iter ( ) ;
336330
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" ) ) ) ;
345334 assert_eq ! ( iter. next( ) , None ) ;
346335
347336 // Test the find API
0 commit comments