Ticket #3097: fix_find_recursive.patch

File fix_find_recursive.patch, 1.8 KB (added by bilbo, 11 years ago)

Patch to fix recursive search on samba shares

  • src/filemanager/find.c

    diff --git src/filemanager/find.c src/filemanager/find.c
    index dd56ba0..bc4e01d 100644
    do_search (WDialog * h) 
    12111211    static DIR *dirp = NULL; 
    12121212    static char *directory = NULL; 
    12131213    struct stat tmp_stat; 
    1214     static int subdirs_left = 0; 
    12151214    gsize bytes_found; 
    12161215    unsigned short count; 
    12171216 
    do_search (WDialog * h) 
    12891288                    g_snprintf (buffer, sizeof (buffer), _("Searching %s"), directory); 
    12901289                    status_update (str_trunc (directory, WIDGET (h)->cols - 8)); 
    12911290                } 
    1292                 /* mc_stat should not be called after mc_opendir 
    1293                    because vfs_s_opendir modifies the st_nlink 
    1294                  */ 
    1295                 if (mc_stat (tmp_vpath, &tmp_stat) == 0) 
    1296                     subdirs_left = tmp_stat.st_nlink - 2; 
    1297                 else 
    1298                     subdirs_left = 0; 
    12991291 
    13001292                dirp = mc_opendir (tmp_vpath); 
    13011293                vfs_path_free (tmp_vpath); 
    do_search (WDialog * h) 
    13191311        { 
    13201312            gboolean search_ok; 
    13211313 
    1322             if ((subdirs_left != 0) && options.find_recurs && (directory != NULL)) 
     1314            if (options.find_recurs && (directory != NULL)) 
    13231315            {                   /* Can directory be NULL ? */ 
    13241316                /* handle relative ignore dirs here */ 
    13251317                if (options.ignore_dirs_enable && find_ignore_dir_search (dp->d_name)) 
    do_search (WDialog * h) 
    13331325                    if (mc_lstat (tmp_vpath, &tmp_stat) == 0 && S_ISDIR (tmp_stat.st_mode)) 
    13341326                    { 
    13351327                        push_directory (tmp_vpath); 
    1336                         subdirs_left--; 
    13371328                    } 
    13381329                    else 
    13391330                        vfs_path_free (tmp_vpath);