You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2020/09/22 22:05:22 UTC
[incubator-nuttx] 02/02: Revert "s/dirent: Corrects a problem with
opendir() noted by Petteri Aimonen in Bitbucket Issue 132: "opendir() fails
for FAT filesystem with trailing slash in path":"
This is an automated email from the ASF dual-hosted git repository.
aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit de45e8647a68f5ba7afac563658a6cd297ce1b93
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Tue Sep 22 14:54:59 2020 +0800
Revert "s/dirent: Corrects a problem with opendir() noted by Petteri Aimonen in Bitbucket Issue 132: "opendir() fails for FAT filesystem with trailing slash in path":"
because:
1.The name of directory may terminated by the whitespace
2.inode_search can handle the trailing '/' correctly
3.Let fix the issue in FAT filesystem instead
This reverts commit 97b0235d77ff4ee7c8eb5288b2a001a1d12bf707.
---
fs/dirent/fs_opendir.c | 64 +-------------------------------------------------
1 file changed, 1 insertion(+), 63 deletions(-)
diff --git a/fs/dirent/fs_opendir.c b/fs/dirent/fs_opendir.c
index 9082aa4..687cc12 100644
--- a/fs/dirent/fs_opendir.c
+++ b/fs/dirent/fs_opendir.c
@@ -26,7 +26,6 @@
#include <stdbool.h>
#include <string.h>
-#include <ctype.h>
#include <dirent.h>
#include <assert.h>
#include <errno.h>
@@ -217,52 +216,8 @@ FAR DIR *opendir(FAR const char *path)
#ifndef CONFIG_DISABLE_MOUNTPOINT
FAR const char *relpath = NULL;
#endif
- FAR char *alloc = NULL;
- int len;
int ret;
- /* Strip off any trailing whitespace or '/' characters. In this case we
- * must make a copy of the user string so we can chop off bytes on the
- * 'right' without modifying the user's const string.
- */
-
- if (path != NULL)
- {
- /* Length of the string excludes NUL terminator */
-
- len = strlen(path);
-
- /* Check for whitespace or a dangling '/' at the end of the string.
- * But don't muck with the string any further if it has been reduced
- * to "/"
- */
-
- while (len > 0 && strcmp(path, "/") != 0 &&
- (isspace(path[len - 1]) || path[len - 1] == '/'))
- {
- /* Have we already allocated memory for the modified string? */
-
- if (alloc == NULL)
- {
- alloc = strdup(path); /* Allocates one too many bytes */
- if (alloc == NULL)
- {
- ret = ENOMEM;
- goto errout;
- }
-
- /* Use the cloned, writable string instead of the user string */
-
- path = alloc;
- }
-
- /* Chop off the final character */
-
- len--;
- alloc[len] = '\0';
- }
- }
-
/* If we are given 'nothing' then we will interpret this as
* request for the root inode.
*/
@@ -273,7 +228,7 @@ FAR DIR *opendir(FAR const char *path)
if (ret < 0)
{
ret = -ret;
- goto errout_with_alloc;
+ goto errout;
}
/* We don't know what to do with relative paths */
@@ -375,14 +330,6 @@ FAR DIR *opendir(FAR const char *path)
RELEASE_SEARCH(&desc);
inode_semgive();
-
- /* Free any allocated string memory */
-
- if (alloc != NULL)
- {
- kmm_free(alloc);
- }
-
return ((FAR DIR *)dir);
/* Nasty goto's make error handling simpler */
@@ -394,15 +341,6 @@ errout_with_semaphore:
RELEASE_SEARCH(&desc);
inode_semgive();
-errout_with_alloc:
-
- /* Free any allocated string memory */
-
- if (alloc != NULL)
- {
- kmm_free(alloc);
- }
-
errout:
set_errno(ret);
return NULL;