[PATCH libxtrans 2/3] Use strcasecmp if it's available, instead of lowercasing strings
Alan Coopersmith
alan.coopersmith at oracle.com
Sun Nov 18 22:43:41 UTC 2018
Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
Xtrans.c | 8 ++++++++
Xtranslcl.c | 17 ++++++++++++++---
xtrans.m4 | 3 +++
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/Xtrans.c b/Xtrans.c
index 46dc6b9..0e09b25 100644
--- a/Xtrans.c
+++ b/Xtrans.c
@@ -153,11 +153,14 @@ static Xtransport *
TRANS(SelectTransport) (const char *protocol)
{
+#ifndef HAVE_STRCASECMP
char protobuf[PROTOBUFSIZE];
+#endif
int i;
prmsg (3,"SelectTransport(%s)\n", protocol);
+#ifndef HAVE_STRCASECMP
/*
* Force Protocol to be lowercase as a way of doing
* a case insensitive match.
@@ -169,12 +172,17 @@ TRANS(SelectTransport) (const char *protocol)
for (i = 0; i < PROTOBUFSIZE && protobuf[i] != '\0'; i++)
if (isupper ((unsigned char)protobuf[i]))
protobuf[i] = tolower ((unsigned char)protobuf[i]);
+#endif
/* Look at all of the configured protocols */
for (i = 0; i < NUMTRANS; i++)
{
+#ifndef HAVE_STRCASECMP
if (!strcmp (protobuf, Xtransports[i].transport->TransName))
+#else
+ if (!strcasecmp (protocol, Xtransports[i].transport->TransName))
+#endif
return Xtransports[i].transport;
}
diff --git a/Xtranslcl.c b/Xtranslcl.c
index f21f606..9eddf37 100644
--- a/Xtranslcl.c
+++ b/Xtranslcl.c
@@ -1714,9 +1714,8 @@ static LOCALtrans2dev *
TRANS(LocalGetNextTransport)(void)
{
- int i,j;
+ int i;
char *typetocheck;
- char typebuf[TYPEBUFSIZE];
prmsg(3,"LocalGetNextTransport()\n");
while(1)
@@ -1731,6 +1730,9 @@ TRANS(LocalGetNextTransport)(void)
for(i=0;i<NUMTRANSPORTS;i++)
{
+#ifndef HAVE_STRCASECMP
+ int j;
+ char typebuf[TYPEBUFSIZE];
/*
* This is equivalent to a case insensitive strcmp(),
* but should be more portable.
@@ -1742,6 +1744,9 @@ TRANS(LocalGetNextTransport)(void)
/* Now, see if they match */
if(!strcmp(LOCALtrans2devtab[i].transname,typebuf))
+#else
+ if(!strcasecmp(LOCALtrans2devtab[i].transname,typetocheck))
+#endif
return &LOCALtrans2devtab[i];
}
}
@@ -2012,7 +2017,6 @@ TRANS(LocalOpenCOTSServer)(Xtransport *thistrans, const char *protocol,
{
char *typetocheck = NULL;
int found = 0;
- char typebuf[TYPEBUFSIZE];
prmsg(2,"LocalOpenCOTSServer(%s,%s,%s)\n",protocol,host,port);
@@ -2020,16 +2024,23 @@ TRANS(LocalOpenCOTSServer)(Xtransport *thistrans, const char *protocol,
TRANS(LocalInitTransports)("local");
typetocheck = workingXLOCAL;
while (typetocheck && !found) {
+#ifndef HAVE_STRCASECMP
int j;
+ char typebuf[TYPEBUFSIZE];
+#endif
workingXLOCAL = strchr(workingXLOCAL, ':');
if (workingXLOCAL && *workingXLOCAL)
*workingXLOCAL++ = '\0';
+#ifndef HAVE_STRCASECMP
strncpy(typebuf, typetocheck, TYPEBUFSIZE);
for (j = 0; j < TYPEBUFSIZE; j++)
if (isupper(typebuf[j]))
typebuf[j] = tolower(typebuf[j]);
if (!strcmp(thistrans->TransName, typebuf))
+#else
+ if (!strcasecmp(thistrans->TransName, typetocheck))
+#endif
found = 1;
typetocheck = workingXLOCAL;
}
diff --git a/xtrans.m4 b/xtrans.m4
index fe128b4..8215e87 100644
--- a/xtrans.m4
+++ b/xtrans.m4
@@ -134,6 +134,9 @@ AC_DEFUN([XTRANS_CONNECTION_FLAGS],[
AC_DEFINE(LOCALCONN,1,[Support os-specific local connections])
fi
+ # Other functions Xtrans may need
+ AC_CHECK_FUNCS([strcasecmp strlcpy])
+
]) # XTRANS_CONNECTION_FLAGS
--
2.15.2
More information about the xorg-devel
mailing list