mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-18 10:21:53 +08:00
Update to FreeBSD head 2017-04-04
Git mirror commit 642b174daddbd0efd9bb5f242c43f4ab4db6869f.
This commit is contained in:
@@ -225,7 +225,7 @@ vector_append(const void *elem, void *vec, unsigned int *count, size_t esize)
|
||||
void *p;
|
||||
|
||||
if ((*count % ELEMSPERCHUNK) == 0) {
|
||||
p = realloc(vec, (*count + ELEMSPERCHUNK) * esize);
|
||||
p = reallocarray(vec, *count + ELEMSPERCHUNK, esize);
|
||||
if (p == NULL) {
|
||||
nss_log_simple(LOG_ERR, "memory allocation failure");
|
||||
return (vec);
|
||||
@@ -365,20 +365,20 @@ nss_configure(void)
|
||||
path = getenv("NSSWITCH_CONF");
|
||||
if (path == NULL)
|
||||
#endif
|
||||
path = _PATH_NS_CONF;
|
||||
path = _PATH_NS_CONF;
|
||||
if (stat(path, &statbuf) != 0)
|
||||
return (0);
|
||||
if (statbuf.st_mtime <= confmod)
|
||||
return (0);
|
||||
if (isthreaded) {
|
||||
(void)_pthread_rwlock_unlock(&nss_lock);
|
||||
result = _pthread_rwlock_wrlock(&nss_lock);
|
||||
if (result != 0)
|
||||
return (result);
|
||||
if (stat(path, &statbuf) != 0)
|
||||
goto fin;
|
||||
if (statbuf.st_mtime <= confmod)
|
||||
goto fin;
|
||||
(void)_pthread_rwlock_unlock(&nss_lock);
|
||||
result = _pthread_rwlock_wrlock(&nss_lock);
|
||||
if (result != 0)
|
||||
return (result);
|
||||
if (stat(path, &statbuf) != 0)
|
||||
goto fin;
|
||||
if (statbuf.st_mtime <= confmod)
|
||||
goto fin;
|
||||
}
|
||||
_nsyyin = fopen(path, "re");
|
||||
if (_nsyyin == NULL)
|
||||
@@ -388,30 +388,28 @@ nss_configure(void)
|
||||
#ifndef __rtems__
|
||||
VECTOR_FREE(_nsmod, &_nsmodsize, sizeof(*_nsmod),
|
||||
(vector_free_elem)ns_mod_free);
|
||||
if (confmod == 0)
|
||||
(void)atexit(nss_atexit);
|
||||
nss_load_builtin_modules();
|
||||
#endif /* __rtems__ */
|
||||
_nsyyparse();
|
||||
(void)fclose(_nsyyin);
|
||||
vector_sort(_nsmap, _nsmapsize, sizeof(*_nsmap), string_compare);
|
||||
#ifndef __rtems__
|
||||
if (confmod == 0)
|
||||
(void)atexit(nss_atexit);
|
||||
#endif /* __rtems__ */
|
||||
confmod = statbuf.st_mtime;
|
||||
|
||||
#ifdef NS_CACHING
|
||||
handle = libc_dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (handle != NULL) {
|
||||
nss_cache_cycle_prevention_func = dlsym(handle,
|
||||
"_nss_cache_cycle_prevention_function");
|
||||
"_nss_cache_cycle_prevention_function");
|
||||
dlclose(handle);
|
||||
}
|
||||
#endif
|
||||
fin:
|
||||
if (isthreaded) {
|
||||
(void)_pthread_rwlock_unlock(&nss_lock);
|
||||
if (result == 0)
|
||||
result = _pthread_rwlock_rdlock(&nss_lock);
|
||||
(void)_pthread_rwlock_unlock(&nss_lock);
|
||||
if (result == 0)
|
||||
result = _pthread_rwlock_rdlock(&nss_lock);
|
||||
}
|
||||
return (result);
|
||||
}
|
||||
|
Reference in New Issue
Block a user