[PATCH:xscope 16/24] Create PrintPropertyValues function for property requests
Alan Coopersmith
alan.coopersmith at oracle.com
Fri Aug 31 22:17:58 PDT 2012
Currently used for core protocol window properties, but will be
used for extensions that have similar property handling requests
in the future.
Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
print11.c | 16 +++++-----------
proto.h | 3 +++
prtype.c | 18 ++++++++++++++++++
3 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/print11.c b/print11.c
index a84de9e..b2b61fb 100644
--- a/print11.c
+++ b/print11.c
@@ -1402,9 +1402,9 @@ GetAtomNameReply(const unsigned char *buf)
void
ChangeProperty(FD fd, const unsigned char *buf)
{
- long n;
- short unit;
- long type;
+ uint32_t n;
+ uint8_t unit;
+ uint32_t type;
/* Request ChangeProperty is opcode 18 */
PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* ChangeProperty */
@@ -1423,10 +1423,7 @@ ChangeProperty(FD fd, const unsigned char *buf)
unit = IByte(&buf[16]) / 8;
printfield(buf, 20, 4, CARD32, "length of data");
n = ILong(&buf[20]);
- if (type == 31 /* string */ )
- PrintString8(&buf[24], n * unit, "data");
- else
- PrintBytes(&buf[24], n * unit, "data");
+ PrintPropertyValues(&buf[24], type, unit, n, "data");
}
void
@@ -1482,10 +1479,7 @@ GetPropertyReply(const unsigned char *buf)
PrintField(buf, 12, 4, CARD32, "bytes-after");
printfield(buf, 16, 4, CARD32, "length of value");
n = ILong(&buf[16]);
- if (type == 31 /* string */ )
- PrintString8(&buf[32], n * unit, "value");
- else
- PrintBytes(&buf[32], n * unit, "value");
+ PrintPropertyValues(&buf[32], type, unit, n, "value");
}
void
diff --git a/proto.h b/proto.h
index 14ab41e..733ced1 100644
--- a/proto.h
+++ b/proto.h
@@ -257,6 +257,9 @@ extern void PrintTextList8(const unsigned char *buf, int length,
const char *name);
extern void PrintTextList16(const unsigned char *buf, int length,
const char *name);
+extern int PrintPropertyValues(const unsigned char *buf,
+ uint32_t type /* atom */, uint8_t unit,
+ uint32_t num, const char *name);
/* scope.c */
extern void TestBreakPoints(const unsigned char *buf, long n);
diff --git a/prtype.c b/prtype.c
index 38b44c6..e5d26a7 100644
--- a/prtype.c
+++ b/prtype.c
@@ -1030,6 +1030,24 @@ PrintTextList16(const unsigned char *buf, int length, const char *name)
/* */
/* ************************************************************ */
+/* Several extensions have grown property requests mimicing the
+ core protocol Window properties, and share this code for printing
+ lists of property values */
+int
+PrintPropertyValues(const unsigned char *buf, uint32_t type /* atom */,
+ uint8_t unit, uint32_t num, const char *name)
+{
+ if (type == 31 /* string */)
+ PrintString8(buf, num * unit, name);
+ else
+ PrintBytes(buf, num * unit, name);
+}
+
+/* ************************************************************ */
+/* */
+/* */
+/* ************************************************************ */
+
#define MAXline 78
void
--
1.7.9.2
More information about the xorg-devel
mailing list