xkb: Add tbGetBufferString helper function
Handles common case of allocating & copying string to temporary buffer (cherry picked from xorg/lib/libxkbfile@8a91517ca6ea77633476595b0eb5b213357c60e5) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1821>
This commit is contained in:
parent
7a23010232
commit
42a1f25faf
|
@ -70,6 +70,20 @@ tbGetBuffer(unsigned size)
|
|||
|
||||
/***====================================================================***/
|
||||
|
||||
static inline char *
|
||||
tbGetBufferString(const char *str)
|
||||
{
|
||||
size_t size = strlen(str) + 1;
|
||||
char *rtrn = tbGetBuffer((unsigned) size);
|
||||
|
||||
if (rtrn != NULL)
|
||||
memcpy(rtrn, str, size);
|
||||
|
||||
return rtrn;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
char *
|
||||
XkbAtomText(Atom atm, unsigned format)
|
||||
{
|
||||
|
@ -78,11 +92,7 @@ XkbAtomText(Atom atm, unsigned format)
|
|||
|
||||
atmstr = NameForAtom(atm);
|
||||
if (atmstr != NULL) {
|
||||
int len;
|
||||
|
||||
len = strlen(atmstr) + 1;
|
||||
rtrn = tbGetBuffer(len);
|
||||
strlcpy(rtrn, atmstr, len);
|
||||
rtrn = tbGetBufferString(atmstr);
|
||||
}
|
||||
else {
|
||||
rtrn = tbGetBuffer(1);
|
||||
|
@ -232,7 +242,6 @@ static const char *modNames[XkbNumModifiers] = {
|
|||
char *
|
||||
XkbModIndexText(unsigned ndx, unsigned format)
|
||||
{
|
||||
char *rtrn;
|
||||
char buf[100];
|
||||
|
||||
if (format == XkbCFile) {
|
||||
|
@ -251,9 +260,7 @@ XkbModIndexText(unsigned ndx, unsigned format)
|
|||
else
|
||||
snprintf(buf, sizeof(buf), "ILLEGAL_%02x", ndx);
|
||||
}
|
||||
rtrn = tbGetBuffer(strlen(buf) + 1);
|
||||
strcpy(rtrn, buf);
|
||||
return rtrn;
|
||||
return tbGetBufferString(buf);
|
||||
}
|
||||
|
||||
char *
|
||||
|
@ -295,8 +302,7 @@ XkbModMaskText(unsigned mask, unsigned format)
|
|||
}
|
||||
}
|
||||
}
|
||||
rtrn = tbGetBuffer(strlen(buf) + 1);
|
||||
strcpy(rtrn, buf);
|
||||
rtrn = tbGetBufferString(buf);
|
||||
return rtrn;
|
||||
}
|
||||
|
||||
|
@ -1228,7 +1234,7 @@ static actionCopy copyActionArgs[XkbSA_NumActions] = {
|
|||
char *
|
||||
XkbActionText(XkbDescPtr xkb, XkbAction *action, unsigned format)
|
||||
{
|
||||
char buf[ACTION_SZ], *tmp;
|
||||
char buf[ACTION_SZ];
|
||||
int sz;
|
||||
|
||||
if (format == XkbCFile) {
|
||||
|
@ -1249,16 +1255,13 @@ XkbActionText(XkbDescPtr xkb, XkbAction *action, unsigned format)
|
|||
CopyOtherArgs(xkb, action, buf, &sz);
|
||||
TryCopyStr(buf, ")", &sz);
|
||||
}
|
||||
tmp = tbGetBuffer(strlen(buf) + 1);
|
||||
if (tmp != NULL)
|
||||
strcpy(tmp, buf);
|
||||
return tmp;
|
||||
return tbGetBufferString(buf);
|
||||
}
|
||||
|
||||
char *
|
||||
XkbBehaviorText(XkbDescPtr xkb, XkbBehavior * behavior, unsigned format)
|
||||
{
|
||||
char buf[256], *tmp;
|
||||
char buf[256];
|
||||
|
||||
if (format == XkbCFile) {
|
||||
if (behavior->type == XkbKB_Default)
|
||||
|
@ -1279,6 +1282,7 @@ XkbBehaviorText(XkbDescPtr xkb, XkbBehavior * behavior, unsigned format)
|
|||
}
|
||||
else if (type == XkbKB_RadioGroup) {
|
||||
int g;
|
||||
char *tmp;
|
||||
size_t tmpsize;
|
||||
|
||||
g = ((behavior->data) & (~XkbKB_RGAllowNone)) + 1;
|
||||
|
@ -1314,10 +1318,7 @@ XkbBehaviorText(XkbDescPtr xkb, XkbBehavior * behavior, unsigned format)
|
|||
snprintf(buf, sizeof(buf), "overlay%d= %s", ndx, kn);
|
||||
}
|
||||
}
|
||||
tmp = tbGetBuffer(strlen(buf) + 1);
|
||||
if (tmp != NULL)
|
||||
strcpy(tmp, buf);
|
||||
return tmp;
|
||||
return tbGetBufferString(buf);
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
|
Loading…
Reference in New Issue