/*
* reentr.c
*
- * Copyright (c) 1997-2003, Larry Wall
+ * Copyright (C) 2002, 2003, by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
#ifdef HAS_SETLOCALE_R
PL_reentrant_buffer->_setlocale_size = REENTRANTSMALLSIZE;
#endif /* HAS_SETLOCALE_R */
+#ifdef HAS_SRANDOM_R
+#endif /* HAS_SRANDOM_R */
#ifdef HAS_STRERROR_R
PL_reentrant_buffer->_strerror_size = REENTRANTSMALLSIZE;
#endif /* HAS_STRERROR_R */
New(31338, PL_reentrant_buffer->_asctime_buffer, PL_reentrant_buffer->_asctime_size, char);
#endif /* HAS_ASCTIME_R */
#ifdef HAS_CRYPT_R
-#ifdef __GLIBC__
- PL_reentrant_buffer->_crypt_struct.initialized = 0;
- /* work around glibc-2.2.5 bug */
- PL_reentrant_buffer->_crypt_struct.current_saltbits = 0;
+#if CRYPT_R_PROTO != REENTRANT_PROTO_B_CCD
+ PL_reentrant_buffer->_crypt_struct_buffer = 0;
#endif
#endif /* HAS_CRYPT_R */
#ifdef HAS_CTIME_R
#ifdef HAS_SETLOCALE_R
New(31338, PL_reentrant_buffer->_setlocale_buffer, PL_reentrant_buffer->_setlocale_size, char);
#endif /* HAS_SETLOCALE_R */
+#ifdef HAS_SRANDOM_R
+#endif /* HAS_SRANDOM_R */
#ifdef HAS_STRERROR_R
New(31338, PL_reentrant_buffer->_strerror_buffer, PL_reentrant_buffer->_strerror_size, char);
#endif /* HAS_STRERROR_R */
Safefree(PL_reentrant_buffer->_asctime_buffer);
#endif /* HAS_ASCTIME_R */
#ifdef HAS_CRYPT_R
+#if CRYPT_R_PROTO != REENTRANT_PROTO_B_CCD
+ Safefree(PL_reentrant_buffer->_crypt_struct_buffer);
+#endif
#endif /* HAS_CRYPT_R */
#ifdef HAS_CTIME_R
Safefree(PL_reentrant_buffer->_ctime_buffer);
#ifdef HAS_SETLOCALE_R
Safefree(PL_reentrant_buffer->_setlocale_buffer);
#endif /* HAS_SETLOCALE_R */
+#ifdef HAS_SRANDOM_R
+#endif /* HAS_SRANDOM_R */
#ifdef HAS_STRERROR_R
Safefree(PL_reentrant_buffer->_strerror_buffer);
#endif /* HAS_STRERROR_R */
dTHX;
void *retptr = NULL;
#ifdef USE_REENTRANT_API
-# if defined(USE_HOSTENT_BUFFER) || defined(USE_GRENT_BUFFER) || defined(USE_NETENT_BUFFER) || defined(USE_PWENT_BUFFER) || defined(USE_PROTOENT_BUFFER) || defined(USE_SRVENT_BUFFER)
+# if defined(USE_HOSTENT_BUFFER) || defined(USE_GRENT_BUFFER) || defined(USE_NETENT_BUFFER) || defined(USE_PWENT_BUFFER) || defined(USE_PROTOENT_BUFFER) || defined(USE_SERVENT_BUFFER)
void *p0;
# endif
# if defined(USE_SERVENT_BUFFER)
p0 = va_arg(ap, void *);
retptr = getgrnam(p0); break;
case OP_GGRGID:
+#if Gid_t_size < INTSIZE
+ gid = (Gid_t)va_arg(ap, int);
+#else
gid = va_arg(ap, Gid_t);
+#endif
retptr = getgrgid(gid); break;
case OP_GGRENT:
retptr = getgrent(); break;
p0 = va_arg(ap, void *);
retptr = getpwnam(p0); break;
case OP_GPWUID:
+#if Uid_t_size < INTSIZE
+ uid = (Uid_t)va_arg(ap, int);
+#else
uid = va_arg(ap, Uid_t);
+#endif
retptr = getpwuid(uid); break;
case OP_GPWENT:
retptr = getpwent(); break;