myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [SCM] GNU MyServer branch, master, updated. dc002aaaa3


From: Giuseppe Scrivano
Subject: [myserver-commit] [SCM] GNU MyServer branch, master, updated. dc002aaaa32bc9f7212ec4b0a0c0e5c7dfd57a9f
Date: Tue, 06 Oct 2009 19:17:38 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU MyServer".

The branch, master has been updated
       via  dc002aaaa32bc9f7212ec4b0a0c0e5c7dfd57a9f (commit)
      from  4c5382b6eb79e9d460f0250c5633e5591ddf386c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------


commit dc002aaaa32bc9f7212ec4b0a0c0e5c7dfd57a9f
Author: Giuseppe Scrivano <address@hidden>
Date:   Tue Oct 6 21:17:43 2009 +0200

    Use the reentrant `readdir_r' function when it is available.

diff --git a/myserver/configure.ac b/myserver/configure.ac
index bfe2e50..14c681e 100644
--- a/myserver/configure.ac
+++ b/myserver/configure.ac
@@ -78,7 +78,7 @@ AC_CHECK_HEADER([grp.h], AC_DEFINE(GRP, 1, [Define if grp.h 
is available]))
 AC_CHECK_HEADER([tre/regex.h], AC_DEFINE(TRE, 1, [Define if the tre library is 
present]))
 AC_CHECK_HEADER([sys/sendfile.h], AC_DEFINE(SENDFILE, 1, [Define if the 
sendfile syscall is present]))
 
-AC_CHECK_FUNCS(regcomp gettimeofday setgroups localtime_r pipe posix_fallocate 
snprintf openat fstatat getpwnam ffsl)
+AC_CHECK_FUNCS(regcomp gettimeofday setgroups localtime_r pipe posix_fallocate 
snprintf openat fstatat getpwnam ffsl readdir_r)
 
 AC_CHECK_LIB(gcrypt, gcry_control, AC_DEFINE(GCRY_CONTROL, 1, [Define if the 
gcry_control function is present]))
 
diff --git a/myserver/include/base/read_directory/read_directory.h 
b/myserver/include/base/read_directory/read_directory.h
index 7280a18..012236f 100644
--- a/myserver/include/base/read_directory/read_directory.h
+++ b/myserver/include/base/read_directory/read_directory.h
@@ -88,7 +88,12 @@ private:
   DIR *dh;
   struct stat stats;
 
+#  ifdef HAVE_READDIR_R
+  struct dirent entry;
+#  else
   static Mutex mutex;
+#  endif
+
 # endif
 };
 
diff --git a/myserver/src/base/read_directory/read_directory.cpp 
b/myserver/src/base/read_directory/read_directory.cpp
index 15cc9db..0526242 100644
--- a/myserver/src/base/read_directory/read_directory.cpp
+++ b/myserver/src/base/read_directory/read_directory.cpp
@@ -29,7 +29,9 @@ extern "C"
 using namespace std;
 
 #ifndef WIN32
+# ifndef HAVE_READDIR_R
 Mutex ReadDirectory::mutex;
+# endif
 #endif
 
 /*!
@@ -72,6 +74,8 @@ int ReadDirectory::findnext ()
 
 int ReadDirectory::find (const char *filename)
 {
+/* FIXME: return a different code for EOF or error.  */
+
 #ifdef WIN32
   int ret;
 
@@ -107,16 +111,18 @@ int ReadDirectory::find (const char *filename)
        if (dirName[dirName.length () - 1] == '/')
          dirName.erase (dirName.length () - 1);
 
-       mutex.lock ();
        dh = opendir (dirName.c_str ());
 
        if (dh == NULL)
-         {
-           mutex.unlock ();
-           return -1;
-         }
+         return -1;
      }
 
+# ifdef HAVE_READDIR_R
+   if (readdir_r (dh, &entry, &dirInfo) || !dirInfo)
+     return -1;
+   name = dirInfo->d_name;
+# else
+   mutex.lock ();
    dirInfo = readdir (dh);
    if (dirInfo == NULL)
      {
@@ -126,6 +132,7 @@ int ReadDirectory::find (const char *filename)
 
    name = dirInfo->d_name;
    mutex.unlock ();
+# endif
 
 # ifdef HAVE_FSTATAT
    if (fstatat (dirfd (dh), name.c_str (), &stats, 0))

-----------------------------------------------------------------------

Summary of changes:
 myserver/configure.ac                              |    2 +-
 .../include/base/read_directory/read_directory.h   |    5 +++++
 .../src/base/read_directory/read_directory.cpp     |   17 ++++++++++++-----
 3 files changed, 18 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
GNU MyServer




reply via email to

[Prev in Thread] Current Thread [Next in Thread]