From: Philippe Antoine Date: Mon, 17 Jun 2024 21:50:51 +0000 (+0200) Subject: rust/derive: string enumeration become case insensitive X-Git-Tag: suricata-8.0.0-beta1~1012 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9adf4224e4a4b4a86678f486308d05ad93c9b8f5;p=thirdparty%2Fsuricata.git rust/derive: string enumeration become case insensitive As needed for MQTTTypeCode which accepts both CONNECT uppercase and unassigned lowercase --- diff --git a/rust/derive/src/stringenum.rs b/rust/derive/src/stringenum.rs index 5344b934cd..8eb33e43e6 100644 --- a/rust/derive/src/stringenum.rs +++ b/rust/derive/src/stringenum.rs @@ -27,13 +27,16 @@ pub fn derive_enum_string(input: TokenSt let name = input.ident; let mut values = Vec::new(); let mut names = Vec::new(); + let mut names_upper = Vec::new(); let mut fields = Vec::new(); if let syn::Data::Enum(ref data) = input.data { for v in (&data.variants).into_iter() { if let Some((_, val)) = &v.discriminant { let fname = transform_name(&v.ident.to_string()); + let fnameu = fname.to_ascii_uppercase(); names.push(fname); + names_upper.push(fnameu); fields.push(v.ident.clone()); if let syn::Expr::Lit(l) = val { if let syn::Lit::Int(li) = &l.lit { @@ -84,8 +87,8 @@ pub fn derive_enum_string(input: TokenSt } } fn from_str(s: &str) -> Option { - match s { - #( #names => Some(#name::#fields) ,)* + match s.to_ascii_uppercase().as_str() { + #( #names_upper => Some(#name::#fields) ,)* _ => None } }