Native MVS has filename limitation of 8 characters and does not support stat function.
examples of where stat function is being used is:
facet.cpp:103
---------------------------------------------------------------------------------------
static
void* __rw_mmap (const char* fname, _RWSTD_SIZE_T *size)
{
_RWSTD_ASSERT (0 != fname);
_RWSTD_ASSERT (0 != size);
#if !defined (_MSC_VER)
struct stat sb;
if (stat (fname, &sb) == -1)
#else
struct _stat sb;
if (_stat (fname, &sb) == -1)
#endif
return 0;
*size = sb.st_size;
#if !defined(_MSC_VER)
const int fd = open (fname, O_RDONLY);
if (-1 == fd)
return 0;
---------------------------------------------------------------------------------------
A quick search in the stdlib source found that util/path.cpp, setlocale.cpp, and locale_core.cpp uses stat function. The best alternative I found to stat on native MVS is to use either open/fopen stream as a parameter to fstat function.
The 8 character max filename limitation impedes roguewave's locale to function. This is because some roguewave's locale database file names are longer than 8 character long: LC_COLLATE, LC_MONETARY, LC_NUMERIC, LC_MESSAGES.
STDCXX-908for a similar issue with mmap()