#ifndef REGTEST
-/* TODO: Dummy function, PDCLib does not support locales yet. */
+#include <locale.h>
+
int strcoll( const char * s1, const char * s2 )
{
- return strcmp( s1, s2 );
+ while ( ( *s1 ) && ( _PDCLIB_lconv.ctype[(unsigned char)*s1].collation == _PDCLIB_lconv.ctype[(unsigned char)*s2].collation ) )
+ {
+ ++s1;
+ ++s2;
+ }
+ return ( _PDCLIB_lconv.ctype[(unsigned char)*s1].collation == _PDCLIB_lconv.ctype[(unsigned char)*s2].collation );
}
#endif
#ifndef REGTEST
-/* TODO: Dummy function, no locale support yet. */
+#include <locale.h>
+
size_t strxfrm( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n )
{
size_t len = strlen( s2 );
/* Cannot use strncpy() here as the filling of s1 with '\0' is not part
of the spec.
*/
- while ( n-- && ( *s1++ = *s2++ ) );
+ while ( n-- && ( *s1++ = _PDCLIB_lconv.ctype[(unsigned char)*s2++].collation ) );
}
return len;
}
{
/* no error */ (char *)"",
/* ERANGE */ (char *)"ERANGE (Range error)",
- /* EDOM */ (char *)"EDOM (Domain error)"
+ /* EDOM */ (char *)"EDOM (Domain error)",
+ /* EILSEQ */ (char *)"EILSEQ (Illegal sequence)"
},
/* decimal_point */ (char *)".",
/* thousands_sep */ (char *)"",
/* strerror() and perror() functions. (If you change this value because you */
/* are using additional errno values, you *HAVE* to provide appropriate error */
/* messages for *ALL* locales.) */
-/* Default is 2 (0, ERANGE, EDOM). */
-#define _PDCLIB_ERRNO_MAX 3
+/* Default is 4 (0, ERANGE, EDOM, EILSEQ). */
+#define _PDCLIB_ERRNO_MAX 4
/* -------------------------------------------------------------------------- */
/* Integers */
an uppercase 'E', and there is no mechanics in <errno.h> to unmask that
particular value (for exactly that reason).
+ There also is no error message available for this value through either the
+ strerror() or perror() functions. It is being reported as "unknown" error.
+
The idea is that you scan the source of PDCLib for occurrences of this macro
and replace _PDCLIB_ERROR with whatever additional errno value you came up
with for your platform.