[PATCH:xprop 2/2] Add unicode argument to Format_Len_String to reduce code duplication
Alan Coopersmith
alan.coopersmith at oracle.com
Sun Jan 20 13:34:12 PST 2013
Allows us to get rid of a second copy of the code that differed only
in the unicode argument passed on to Format_String.
Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
xprop.c | 25 ++++++-------------------
1 file changed, 6 insertions(+), 19 deletions(-)
diff --git a/xprop.c b/xprop.c
index 9773ac3..4d2e3c2 100644
--- a/xprop.c
+++ b/xprop.c
@@ -724,7 +724,7 @@ Format_String (const char *string, int unicode)
}
static const char *
-Format_Len_String (const char *string, int len)
+Format_Len_String (const char *string, int len, int unicode)
{
char *data;
const char *result;
@@ -736,7 +736,7 @@ Format_Len_String (const char *string, int len)
memcpy(data, string, len);
data[len] = '\0';
- result = Format_String(data, 0);
+ result = Format_String(data, unicode);
free(data);
return result;
@@ -901,7 +901,7 @@ Format_Len_Text (const char *string, int len, Atom encoding)
*_buf_ptr++ = '\0';
return _formatting_buffer;
} else
- return Format_Len_String(string, len);
+ return Format_Len_String(string, len, 0);
}
/*
@@ -1002,7 +1002,7 @@ Format_Len_Unicode (const char *string, int len)
error = "<Invalid UTF-8 string: Unknown error>"; break;
}
- result = Format_Len_String(string, len);
+ result = Format_Len_String(string, len, 0);
/* result is stored in _formatting_buffer, so make a temporary
copy before we overwrite _formatting_buffer with error */
data = strdup(result);
@@ -1016,20 +1016,7 @@ Format_Len_Unicode (const char *string, int len)
return _formatting_buffer;
}
- if (!is_utf8_locale())
- return Format_Len_String(string, len);
-
- data = malloc(len+1);
- if (!data)
- Fatal_Error("Out of memory!");
-
- memcpy(data, string, len);
- data[len] = '\0';
-
- result = Format_String(data, 1);
- free(data);
-
- return result;
+ return Format_Len_String(string, len, is_utf8_locale());
}
/*
@@ -1083,7 +1070,7 @@ Format_Thunk (thunk t, char format_char)
switch (format_char) {
case 's':
- return Format_Len_String(t.extra_value, (int)t.value);
+ return Format_Len_String(t.extra_value, (int)t.value, 0);
case 'u':
return Format_Len_Unicode(t.extra_value, (int)t.value);
case 't':
--
1.7.9.2
More information about the xorg-devel
mailing list