.ico Version of the fancy new logo.
[paraslash.git] / osl.c
diff --git a/osl.c b/osl.c
index 48f25a1..0b14447 100644 (file)
--- a/osl.c
+++ b/osl.c
@@ -17,7 +17,7 @@
 /**
  * A wrapper for lseek(2).
  *
- * \param fd The filedescriptor whose offset is to be to repositioned.
+ * \param fd The file descriptor whose offset is to be to repositioned.
  * \param offset A value-result parameter.
  * \param whence Usual repositioning directive.
  *
@@ -46,8 +46,8 @@ int para_lseek(int fd, off_t *offset, int whence)
  * \param buf The buffer to write.
  * \param size The length of \a buf in bytes.
  *
- * This function writes out the given bufffer and retries if an interrupt
- * occured during the write.
+ * This function writes out the given buffer and retries if an interrupt
+ * occurred during the write.
  *
  * \return On success, the number of bytes written is returned, otherwise, the
  * function returns \p -E_WRITE.
@@ -211,9 +211,10 @@ out:
  * \param func The function to call for each entry.
  * \param private_data Pointer to an arbitrary data structure.
  *
- * For each regular file  in \a dirname, the supplied function \a func is
+ * For each regular file under \a dirname, the supplied function \a func is
  * called.  The full path of the regular file and the \a private_data pointer
- * are passed to \a func.
+ * are passed to \a func. Directories for which the calling process has no
+ * permissions to change to are silently ignored.
  *
  * \return On success, 1 is returned. Otherwise, this function returns a
  * negative value which indicates the kind of the error.
@@ -226,7 +227,7 @@ int for_each_file_in_dir(const char *dirname,
        int cwd_fd, ret2, ret = para_opendir(dirname, &dir, &cwd_fd);
 
        if (ret < 0)
-               return ret;
+               return ret == -E_CHDIR_PERM? 1 : ret;
        /* scan cwd recursively */
        while ((entry = readdir(dir))) {
                mode_t m;
@@ -1085,7 +1086,7 @@ void clear_rbtrees(struct osl_table *t)
  * \param flags Options for what should be cleaned up.
  *
  * If osl_open_table() succeeds, the resulting table pointer must later be
- * passed to this function in order to flush all changes to the filesystem and
+ * passed to this function in order to flush all changes to the file system and
  * to free the resources that were allocated by osl_open_table().
  *
  * \return Positive on success, negative on errors. Possible errors: \p E_BAD_TABLE,
@@ -1667,7 +1668,7 @@ static int check_rbtree_col(const struct osl_table *t, unsigned col_num,
  * Lookup \a obj in \a t and return the row containing \a obj. The column
  * specified by \a col_num must have an associated rbtree.
  *
- * \return Positive on success, negative on errors. If an error occured, \a
+ * \return Positive on success, negative on errors. If an error occurred, \a
  * result is set to \p NULL. Possible errors include: \p E_BAD_TABLE, \p
  * E_BAD_STORAGE_FLAGS, errors returned by get_mapped_object(), \p
  * E_RB_KEY_NOT_FOUND.
@@ -1835,7 +1836,7 @@ out:
  *
  * This function  gets rid of all references to the old object. This includes
  * removal of the rbtree node in case there is an rbtree associated with \a
- * col_num. It then inserts \a obj into the table and the rbtree if neccessary.
+ * col_num. It then inserts \a obj into the table and the rbtree if necessary.
  *
  * If the \p OSL_RBTREE flag is set for \a col_num, you \b MUST call this
  * function in order to change the contents of an object, even for volatile or