| 104 | } |
| 105 | |
| 106 | bool string_equal_no_case(string_view s1, string_view s2) |
| 107 | { |
| 108 | if (s1.size() != s2.size()) return false; |
| 109 | return std::equal(s1.begin(), s1.end(), s2.begin() |
| 110 | , [] (char const c1, char const c2) |
| 111 | { return to_lower(c1) == to_lower(c2); }); |
| 112 | } |
| 113 | |
| 114 | // generate a url-safe random string |
| 115 | void url_random(span<char> dest) |