block: Use glib2 instead of strcasecmp/strncasecmp
This is a change in semantics. g_ascii_strcasecmp() doesn't honour locale but strcasecmp() does. But this is OK for at least one reason: (1) QEMU always runs with the C locale so there's not an actual behaviour change here (2) we want the comparison on url prefix and it should be a plain ASCII one, not to do weird things with "I" in Turkish locales, so g_ascii_strcasecmp() is better as it's explicit about that Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Link: https://lore.kernel.org/r/20260327134401.270186-4-kkostiuk@redhat.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Kostiantyn Kostiuk committed
Mar 27, 2026 at 15:43 UTC
149c82cad2cbdb5b2e740c4ad484e812a161fe8a
1 file changed
+2
-2
block/curl.c
+2
-2
@@ -871,8 +871,8 @@ static int curl_open(BlockDriverState *bs, QDict *options, int flags,
871
goto out;
872
}
873
874
- if ((!strncasecmp(s->url, "http://", strlen("http://"))
875
- || !strncasecmp(s->url, "https://", strlen("https://")))
874
+ if ((!g_ascii_strncasecmp(s->url, "http://", strlen("http://"))
875
+ || !g_ascii_strncasecmp(s->url, "https://", strlen("https://")))
876
&& !s->accept_range) {
877
pstrcpy(state->errmsg, CURL_ERROR_SIZE,
878
"Server does not support 'range' (byte ranges).");