Ticket #2121: don't calculate directory size if directory is symlink.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2010-03-23 21:21:49 +03:00
parent 6f6ea1bc88
commit 69a8796e47
1 changed files with 14 additions and 2 deletions

View File

@ -1573,10 +1573,24 @@ compute_dir_size (const char *dirname, const void *ui,
compute_dir_size_callback cback,
off_t *ret_marked, double *ret_total)
{
int res;
struct stat s;
DIR *dir;
struct dirent *dirent;
FileProgressStatus ret = FILE_CONT;
res = mc_lstat (dirname, &s);
if (res != 0)
return ret;
/* don't scan symlink to directory */
if (S_ISLNK (s.st_mode)) {
(*ret_marked)++;
*ret_total += s.st_size;
return ret;
}
dir = mc_opendir (dirname);
if (dir == NULL)
@ -1584,8 +1598,6 @@ compute_dir_size (const char *dirname, const void *ui,
while ((dirent = mc_readdir (dir)) != NULL) {
char *fullname;
int res;
struct stat s;
ret = (cback != NULL) ? cback (ui, dirname) : FILE_CONT;