From 7dc093815fe75a4d8dd99d193ecc551eb6c2170a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 29 Jun 2025 23:40:09 -0500 Subject: [PATCH] reduce --- .../components/web_server_idf/multipart.cpp | 23 +++---------------- esphome/components/web_server_idf/multipart.h | 3 --- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/esphome/components/web_server_idf/multipart.cpp b/esphome/components/web_server_idf/multipart.cpp index 17945c1d23..8655226ab9 100644 --- a/esphome/components/web_server_idf/multipart.cpp +++ b/esphome/components/web_server_idf/multipart.cpp @@ -115,24 +115,6 @@ bool str_startswith_case_insensitive(const std::string &str, const std::string & return str_ncmp_ci(str.c_str(), prefix.c_str(), prefix.length()); } -// Find a substring case-insensitively -size_t str_find_case_insensitive(const std::string &haystack, const std::string &needle, size_t pos) { - if (needle.empty() || pos >= haystack.length()) { - return std::string::npos; - } - - const size_t needle_len = needle.length(); - const size_t max_pos = haystack.length() - needle_len; - - for (size_t i = pos; i <= max_pos; i++) { - if (str_ncmp_ci(haystack.c_str() + i, needle.c_str(), needle_len)) { - return i; - } - } - - return std::string::npos; -} - // Extract a parameter value from a header line // Handles both quoted and unquoted values std::string extract_header_param(const std::string &header, const std::string ¶m) { @@ -140,10 +122,11 @@ std::string extract_header_param(const std::string &header, const std::string &p while (search_pos < header.length()) { // Look for param name - size_t pos = str_find_case_insensitive(header, param, search_pos); - if (pos == std::string::npos) { + const char *found = stristr(header.c_str() + search_pos, param.c_str()); + if (!found) { return ""; } + size_t pos = found - header.c_str(); // Check if this is a word boundary (not part of another parameter) if (pos > 0 && header[pos - 1] != ' ' && header[pos - 1] != ';' && header[pos - 1] != '\t') { diff --git a/esphome/components/web_server_idf/multipart.h b/esphome/components/web_server_idf/multipart.h index 3edb61978a..073e1e7c2b 100644 --- a/esphome/components/web_server_idf/multipart.h +++ b/esphome/components/web_server_idf/multipart.h @@ -68,9 +68,6 @@ class MultipartReader { // Case-insensitive string prefix check bool str_startswith_case_insensitive(const std::string &str, const std::string &prefix); -// Find a substring case-insensitively -size_t str_find_case_insensitive(const std::string &haystack, const std::string &needle, size_t pos = 0); - // Extract a parameter value from a header line // Handles both quoted and unquoted values std::string extract_header_param(const std::string &header, const std::string ¶m);