We can simply use the g_ascii_isxdigit() from the glib instead.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
util/uri.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/util/uri.c b/util/uri.c
index dcb3305236..7411c5ba14 100644
--- a/util/uri.c
+++ b/util/uri.c
@@ -1561,15 +1561,6 @@ done_cd:
return 0;
}
-static int is_hex(char c)
-{
- if (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) ||
- ((c >= 'A') && (c <= 'F'))) {
- return 1;
- }
- return 0;
-}
-
/**
* uri_string_unescape:
* @str: the string to unescape
@@ -1607,7 +1598,7 @@ char *uri_string_unescape(const char *str, int len, char *target)
in = str;
out = ret;
while (len > 0) {
- if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) {
+ if (len > 2 && *in == '%' && g_ascii_isxdigit(in[1]) && g_ascii_isxdigit(in[2])) {
in++;
if ((*in >= '0') && (*in <= '9')) {
*out = (*in - '0');
--
2.43.0
Thomas Huth <thuth@redhat.com> writes:
> We can simply use the g_ascii_isxdigit() from the glib instead.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> util/uri.c | 11 +----------
> 1 file changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/util/uri.c b/util/uri.c
> index dcb3305236..7411c5ba14 100644
> --- a/util/uri.c
> +++ b/util/uri.c
> @@ -1561,15 +1561,6 @@ done_cd:
> return 0;
> }
>
> -static int is_hex(char c)
> -{
> - if (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) ||
> - ((c >= 'A') && (c <= 'F'))) {
> - return 1;
> - }
> - return 0;
> -}
> -
> /**
> * uri_string_unescape:
> * @str: the string to unescape
> @@ -1607,7 +1598,7 @@ char *uri_string_unescape(const char *str, int len, char *target)
> in = str;
> out = ret;
> while (len > 0) {
> - if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) {
> + if (len > 2 && *in == '%' && g_ascii_isxdigit(in[1]) && g_ascii_isxdigit(in[2])) {
> in++;
> if ((*in >= '0') && (*in <= '9')) {
> *out = (*in - '0');
Suggest to replace *in by in[0] while there, for symmetry.
Long line, easy to break:
if (len > 2 && in[0] == '%'
&& g_ascii_isxdigit(in[1])
&& g_ascii_isxdigit(in[2])) {
Am 12.01.24 um 07:35 schrieb Markus Armbruster: > Thomas Huth <thuth@redhat.com> writes: > >> We can simply use the g_ascii_isxdigit() from the glib instead. ... or even use unescape_string() from the glib? https://docs.gtk.org/glib/type_func.Uri.unescape_string.html Regards, Stefan
On 12/01/2024 08.19, Stefan Weil via wrote: > > > Am 12.01.24 um 07:35 schrieb Markus Armbruster: >> Thomas Huth <thuth@redhat.com> writes: >> >>> We can simply use the g_ascii_isxdigit() from the glib instead. > > ... or even use unescape_string() from the glib? > > https://docs.gtk.org/glib/type_func.Uri.unescape_string.html Thanks, that sounds like an interesting idea! I'll give it a try when I've got some spare time... not within the next days, though, so if you'd like to have a try instead, let me know! Thomas
© 2016 - 2026 Red Hat, Inc.