If we compile RPC thread safe, allow rpcgen to generate thread safe code.

This commit is contained in:
Ulrich Drepper 2001-04-11 05:42:12 +00:00
parent 28966366a2
commit b982085b4d
2 changed files with 44 additions and 0 deletions

View File

@ -24,6 +24,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
#include <wctype.h>
static int static int
@ -386,6 +387,7 @@ run_test (const char *locname)
CLASSTEST (upper); CLASSTEST (upper);
CLASSTEST (xdigit); CLASSTEST (xdigit);
/* Character mapping tests. */
#define MAPTEST(name) \ #define MAPTEST(name) \
if (to##name (c) != __to##name##_l (c, loc)) \ if (to##name (c) != __to##name##_l (c, loc)) \
{ \ { \
@ -398,6 +400,46 @@ run_test (const char *locname)
MAPTEST (upper); MAPTEST (upper);
} }
/* Character class tests, this time for wide characters. Note that
this only works because we know that the internal encoding is
UCS4. */
for (c = 0; c < 128; ++c)
{
#define CLASSTEST(name) \
if (isw##name (c) != __isw##name##_l (c, loc)) \
{ \
printf ("isw%s('\\%o') != __isw%s_l('\\%o')\n", \
#name, c, #name, c); \
result = 1; \
}
CLASSTEST (alnum);
CLASSTEST (alpha);
CLASSTEST (blank);
CLASSTEST (cntrl);
CLASSTEST (digit);
CLASSTEST (lower);
CLASSTEST (graph);
CLASSTEST (print);
CLASSTEST (punct);
CLASSTEST (space);
CLASSTEST (upper);
CLASSTEST (xdigit);
/* Character mapping tests. Note that
this only works because we know that the internal encoding is
UCS4. */
#define MAPTEST(name) \
if (tow##name (c) != __tow##name##_l (c, loc)) \
{ \
printf ("tow%s('\\%o') != __tow%s_l('\\%o'): '\\%o' vs '\\%o'\n",\
#name, c, #name, c, \
tow##name (c), __tow##name##_l (c, loc)); \
result = 1; \
}
MAPTEST (lower);
MAPTEST (upper);
}
__freelocale (loc); __freelocale (loc);
} }

View File

@ -1357,6 +1357,7 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
cmd->Scflag = flag['C']; cmd->Scflag = flag['C'];
cmd->makefileflag = flag['M']; cmd->makefileflag = flag['M'];
#ifndef _RPC_THREAD_SAFE_
if (mtflag || newstyle) if (mtflag || newstyle)
{ {
/* glibc doesn't support these flags. */ /* glibc doesn't support these flags. */
@ -1364,6 +1365,7 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
_("This implementation doesn't support newstyle or MT-safe code!\n")); _("This implementation doesn't support newstyle or MT-safe code!\n"));
return (0); return (0);
} }
#endif
if (tirpcflag) if (tirpcflag)
{ {
pmflag = inetdflag ? 0 : 1; /* pmflag or inetdflag is always TRUE */ pmflag = inetdflag ? 0 : 1; /* pmflag or inetdflag is always TRUE */