Skip to content

Commit d800110

Browse files
committed
MDEV-14469 build with cmake -DMYSQL_MAINTAINER_MODE=ON fails: 'readdir_r' is deprecated
1. test readdir_r() availability under -Werror 2. don't protect readdir() with mutexes, it's not needed for the way we use readdir()
1 parent d31ee64 commit d800110

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

configure.cmake

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,6 @@ CHECK_FUNCTION_EXISTS (pthread_sigmask HAVE_PTHREAD_SIGMASK)
407407
CHECK_FUNCTION_EXISTS (pthread_threadmask HAVE_PTHREAD_THREADMASK)
408408
CHECK_FUNCTION_EXISTS (pthread_yield_np HAVE_PTHREAD_YIELD_NP)
409409
CHECK_FUNCTION_EXISTS (putenv HAVE_PUTENV)
410-
CHECK_FUNCTION_EXISTS (readdir_r HAVE_READDIR_R)
411410
CHECK_FUNCTION_EXISTS (readlink HAVE_READLINK)
412411
CHECK_FUNCTION_EXISTS (re_comp HAVE_RE_COMP)
413412
CHECK_FUNCTION_EXISTS (regcomp HAVE_REGCOMP)
@@ -465,6 +464,16 @@ IF(HAVE_SYS_EVENT_H)
465464
CHECK_FUNCTION_EXISTS (kqueue HAVE_KQUEUE)
466465
ENDIF()
467466

467+
# readdir_r might exist, but be marked deprecated
468+
SET(CMAKE_REQUIRED_FLAGS -Werror)
469+
CHECK_CXX_SOURCE_COMPILES(
470+
"#include <dirent.h>
471+
int main() {
472+
readdir_r(0,0,0);
473+
return 0;
474+
}" HAVE_READDIR_R)
475+
SET(CMAKE_REQUIRED_FLAGS)
476+
468477
#--------------------------------------------------------------------
469478
# Support for WL#2373 (Use cycle counter for timing)
470479
#--------------------------------------------------------------------

mysys/my_lib.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
103103
DBUG_ENTER("my_dir");
104104
DBUG_PRINT("my",("path: '%s' MyFlags: %d",path,MyFlags));
105105

106-
#if !defined(HAVE_READDIR_R)
107-
mysql_mutex_lock(&THR_LOCK_open);
108-
#endif
109-
110106
dirp = opendir(directory_file_name(tmp_path,(char *) path));
111107
#if defined(__amiga__)
112108
if ((dirp->dd_fd) < 0) /* Directory doesn't exists */
@@ -162,9 +158,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
162158
}
163159

164160
(void) closedir(dirp);
165-
#if !defined(HAVE_READDIR_R)
166-
mysql_mutex_unlock(&THR_LOCK_open);
167-
#endif
168161
result->dir_entry= (FILEINFO *)dir_entries_storage->buffer;
169162
result->number_off_files= dir_entries_storage->elements;
170163

@@ -174,9 +167,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
174167
DBUG_RETURN(result);
175168

176169
error:
177-
#if !defined(HAVE_READDIR_R)
178-
mysql_mutex_unlock(&THR_LOCK_open);
179-
#endif
180170
my_errno=errno;
181171
if (dirp)
182172
(void) closedir(dirp);

0 commit comments

Comments
 (0)