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. f89fab642c


From: Giuseppe Scrivano
Subject: [myserver-commit] [SCM] GNU MyServer branch, master, updated. f89fab642c8b0d78c26ad3ac32aaa2e30bf59a64
Date: Mon, 26 Oct 2009 11:32:52 +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  f89fab642c8b0d78c26ad3ac32aaa2e30bf59a64 (commit)
      from  99eb86ae6ecef70bf166d5b7194845124853b01f (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 f89fab642c8b0d78c26ad3ac32aaa2e30bf59a64
Author: Giuseppe Scrivano <address@hidden>
Date:   Mon Oct 26 12:32:46 2009 +0100

    ReadDirectory::find{first,next} return different codes for errors and EOF.

diff --git a/myserver/include/base/read_directory/read_directory.h 
b/myserver/include/base/read_directory/read_directory.h
index 012236f..78a9ac3 100644
--- a/myserver/include/base/read_directory/read_directory.h
+++ b/myserver/include/base/read_directory/read_directory.h
@@ -63,12 +63,13 @@ public:
   int attrib;
   time_t time_write;
   off_t size;
-  int findfirst (const char *filename);
-  int findfirst (string &filename){return findfirst (filename.c_str ());};
+  int findfirst (const char *directory);
+  int findfirst (string &directory){return findfirst (directory.c_str ());};
   int findnext ();
   int findclose ();
   ReadDirectory ();
   ~ReadDirectory ();
+
   struct stat* getStatStruct ()
   {
 # ifndef WIN32
diff --git a/myserver/src/base/read_directory/read_directory.cpp 
b/myserver/src/base/read_directory/read_directory.cpp
index 5f58c1d..0e575b2 100644
--- a/myserver/src/base/read_directory/read_directory.cpp
+++ b/myserver/src/base/read_directory/read_directory.cpp
@@ -20,6 +20,7 @@ extern "C"
 {
 #include <stdio.h>
 #include <string.h>
+#include <errno.h>
 
 #ifdef HAVE_OPENAT
 # include <fcntl.h>
@@ -57,25 +58,34 @@ ReadDirectory::~ReadDirectory ()
 
 /*!
  * Find the first file using its name.
- * Return -1 or errors.
+ *
+ * \param directory Read the content of this directory.
+ * \return 0 if there are other directory entries to be read.
+ * \return a positive integer if this is the last entry.
+ * \return -1 or errors.
  */
-int ReadDirectory::findfirst (const char *filename)
+int ReadDirectory::findfirst (const char *directory)
 {
-  return find (filename);
+  return find (directory);
 }
 
 /*!
  * Find the next file in the directory.
+ *
+ * \return 0 if there are other directory entries to be read.
+ * \return a positive integer if this is the last entry.
+ * \return -1 or errors.
  */
 int ReadDirectory::findnext ()
 {
   return find (NULL);
 }
 
+/*!
+ *\see ReadDirectory#findfirst 
+ *
 int ReadDirectory::find (const char *filename)
 {
-/* FIXME: return a different code for EOF or error.  */
-
 #ifdef WIN32
   int ret;
 
@@ -93,7 +103,14 @@ int ReadDirectory::find (const char *filename)
   else
     ret = _findnext (ff, &fd) ? -1 : 0 ;
 
-  if (ret != -1)
+  if (ret == -1)
+    {
+      if (errno == ENOENT)
+       return 1;
+
+      return -1;
+    }
+  else
     {
       name = fd.name;
       attrib = fd.attrib;
@@ -101,7 +118,7 @@ int ReadDirectory::find (const char *filename)
       size = fd.size ;
     }
 
-  return ret;
+  return 0;
 #else
    struct dirent * dirInfo;
 
@@ -117,9 +134,10 @@ int ReadDirectory::find (const char *filename)
          return -1;
      }
 
+   errno = 0;
 # ifdef HAVE_READDIR_R
    if (readdir_r (dh, &entry, &dirInfo) || !dirInfo)
-     return -1;
+     return (errno) ? -1 : 1;
    name = dirInfo->d_name;
 # else
    mutex.lock ();
@@ -127,7 +145,7 @@ int ReadDirectory::find (const char *filename)
    if (dirInfo == NULL)
      {
        mutex.unlock ();
-       return -1;
+       return (errno) ? -1 : 1;
      }
 
    name = dirInfo->d_name;
diff --git a/myserver/tests/test_read_directory.cpp 
b/myserver/tests/test_read_directory.cpp
index 37ce4c7..2531817 100644
--- a/myserver/tests/test_read_directory.cpp
+++ b/myserver/tests/test_read_directory.cpp
@@ -43,7 +43,7 @@ public:
     /* We assume that the directory has less entries than `counterMax'.  */
     const int counterMax = 50000;
 
-    while (rd.findnext () != -1 && counter++ < counterMax)
+    while (!(ret = rd.findnext ()) && counter++ < counterMax)
       {
         CPPUNIT_ASSERT (rd.name.length ());
         CPPUNIT_ASSERT (rd.attrib >= 0);
@@ -51,6 +51,7 @@ public:
         CPPUNIT_ASSERT (rd.time_write);
       }
 
+    CPPUNIT_ASSERT (ret > 0);
     CPPUNIT_ASSERT (counter < counterMax);
 
     ret = rd.findclose ();

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

Summary of changes:
 .../include/base/read_directory/read_directory.h   |    5 ++-
 .../src/base/read_directory/read_directory.cpp     |   36 +++++++++++++++-----
 myserver/tests/test_read_directory.cpp             |    3 +-
 3 files changed, 32 insertions(+), 12 deletions(-)


hooks/post-receive
-- 
GNU MyServer




reply via email to

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