summaryrefslogtreecommitdiff
path: root/xf86drm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xf86drm.c')
-rw-r--r--xf86drm.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 42c1a5d0..0faa5972 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -5117,27 +5117,32 @@ drmGetFormatModifierName(uint64_t modifier)
drm_public char *
drmGetFormatName(uint32_t format)
{
- char *str;
+ char *str, code[5];
+ const char *be;
size_t str_size, i;
- char a, b, c, d;
+
+ be = (format & DRM_FORMAT_BIG_ENDIAN) ? "_BE" : "";
+ format &= ~DRM_FORMAT_BIG_ENDIAN;
if (format == DRM_FORMAT_INVALID)
return strdup("INVALID");
- str_size = 5;
+ code[0] = (char) ((format >> 0) & 0xFF);
+ code[1] = (char) ((format >> 8) & 0xFF);
+ code[2] = (char) ((format >> 16) & 0xFF);
+ code[3] = (char) ((format >> 24) & 0xFF);
+ code[4] = '\0';
+
+ /* Trim spaces at the end */
+ for (i = 3; i > 0 && code[i] == ' '; i--)
+ code[i] = '\0';
+
+ str_size = strlen(code) + strlen(be) + 1;
str = malloc(str_size);
if (!str)
return NULL;
- a = (char) ((format >> 0) & 0xFF);
- b = (char) ((format >> 8) & 0xFF);
- c = (char) ((format >> 16) & 0xFF);
- d = (char) ((format >> 24) & 0xFF);
- snprintf(str, str_size, "%c%c%c%c", a, b, c, d);
-
- /* Trim spaces at the end */
- for (i = 3; i > 0 && str[i] == ' '; i--)
- str[i] = '\0';
+ snprintf(str, str_size, "%s%s", code, be);
return str;
}