* pwd.cc (read_etc_passwd): Ditto.
* autoload.cc (LoadDLLfuncEx): Use LoadDLLprime to initialize DLL specific
area.
+Sat May 19 01:22:43 2001 Christopher Faylor <cgf@cygnus.com>
+
+ * grp.cc (read_etc_group): Don't copy mutex on fork.
+ * pwd.cc (read_etc_passwd): Ditto.
+ * autoload.cc (LoadDLLfuncEx): Use LoadDLLprime to initialize DLL
+ specific area.
+
Fri May 18 10:31:00 2001 Corinna Vinschen <corinna@vinschen.de>
* net.cc (wsock_event::wait): Explicitely cancel IO when a signal
#define LoadDLLfunc(name, n, dllname) LoadDLLfuncEx (name, n, dllname, 0)
/* Main DLL setup stuff. */
-#define LoadDLLfuncEx(name, n, dllname, notimp) __asm__ ("\
- .section ." #dllname "_info,\"w\" \n\
- .linkonce \n\
- .long std_dll_init \n\
- .long 0 \n\
- .long -1 \n\
- .long dll_func_load \n\
- .asciz \"" #dllname "\" \n\
- \n\
+#define LoadDLLfuncEx(name, n, dllname, notimp) \
+ LoadDLLprime (dllname, dll_func_load) \
+ __asm__ (" \n\
.section ." #dllname "_text,\"wx\" \n\
.global _" mangle (name, n) " \n\
.global _win32_" mangle (name, n) " \n\
strncpy (group_name, "Administrators", sizeof (group_name));
- static pthread_mutex_t etc_group_mutex = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
+ static NO_COPY pthread_mutex_t etc_group_mutex = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock (&etc_group_mutex);
/* if we got blocked by the mutex, then etc_group may have been processed */
* for non-shared mutexs in the future. Also, this function will at most be called
* once from each thread, after that the passwd_state test will succeed
*/
- static pthread_mutex_t etc_passwd_mutex = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
+ static NO_COPY pthread_mutex_t etc_passwd_mutex = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock (&etc_passwd_mutex);
/* if we got blocked by the mutex, then etc_passwd may have been processed */