@@ -2120,21 +2120,20 @@ int cmd_readlink(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
2120
2120
#ifdef NSH_HAVE_DIROPTS
2121
2121
#ifndef CONFIG_NSH_DISABLE_RM
2122
2122
2123
- static int unlink_recursive (FAR char * path )
2123
+ static int unlink_recursive (FAR char * path , FAR struct stat * stat )
2124
2124
{
2125
2125
struct dirent * d ;
2126
- struct stat stat ;
2127
2126
size_t len ;
2128
2127
int ret ;
2129
2128
DIR * dp ;
2130
2129
2131
- ret = lstat (path , & stat );
2130
+ ret = lstat (path , stat );
2132
2131
if (ret < 0 )
2133
2132
{
2134
2133
return ret ;
2135
2134
}
2136
2135
2137
- if (!S_ISDIR (stat . st_mode ))
2136
+ if (!S_ISDIR (stat -> st_mode ))
2138
2137
{
2139
2138
return unlink (path );
2140
2139
}
@@ -2159,7 +2158,7 @@ static int unlink_recursive(FAR char *path)
2159
2158
}
2160
2159
2161
2160
snprintf (& path [len ], PATH_MAX - len , "/%s" , d -> d_name );
2162
- ret = unlink_recursive (path );
2161
+ ret = unlink_recursive (path , stat );
2163
2162
if (ret < 0 )
2164
2163
{
2165
2164
closedir (dp );
@@ -2182,6 +2181,7 @@ int cmd_rm(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
2182
2181
bool recursive = (strcmp (argv [1 ], "-r" ) == 0 );
2183
2182
FAR char * fullpath ;
2184
2183
char buf [PATH_MAX ];
2184
+ struct stat stat ;
2185
2185
int ret = ERROR ;
2186
2186
2187
2187
if (recursive && argc == 2 )
@@ -2197,7 +2197,7 @@ int cmd_rm(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
2197
2197
if (recursive )
2198
2198
{
2199
2199
strlcpy (buf , fullpath , PATH_MAX );
2200
- ret = unlink_recursive (buf );
2200
+ ret = unlink_recursive (buf , & stat );
2201
2201
}
2202
2202
else
2203
2203
{
0 commit comments