Hi, this patch changes selection of files and dirs so that symlinked dirs are not selected as files, but only as directories (i.e. with "/" appended to file mask in selection dialog).
'Select', 'Unselect' and 'Reverse select' are consistent. I think this i correct behaviour. David
2003-06-11 David Sterba <[EMAIL PROTECTED]> * cmd.c (select_cmd, unselect_cmd, reverse_selection_cmd): Handle symlinked directories as directories in file selections.
diff -X .diffignore -urNp mc/src/cmd.c mc-1ft/src/cmd.c --- mc-sel/src/cmd.c Tue Feb 18 06:25:45 2003 +++ mc/src/cmd.c Wed Jun 11 12:46:03 2003 @@ -502,7 +502,8 @@ void reverse_selection_cmd (void) for (i = 0; i < cpanel->count; i++){ file = &cpanel->dir.list [i]; - if (S_ISDIR (file->buf.st_mode)) + if (S_ISDIR (file->buf.st_mode) || + link_isdir ( &(cpanel->dir.list [i]) )) continue; do_file_mark (cpanel, i, !file->f.marked); } @@ -535,7 +536,8 @@ void select_cmd (void) for (i = 0; i < cpanel->count; i++){ if (!strcmp (cpanel->dir.list [i].fname, "..")) continue; - if (S_ISDIR (cpanel->dir.list [i].buf.st_mode)){ + if (S_ISDIR (cpanel->dir.list [i].buf.st_mode) || + link_isdir ( &(cpanel->dir.list [i]) )) { if (!dirflag) continue; } else { @@ -579,9 +581,10 @@ void unselect_cmd (void) reg_exp_t [strlen(reg_exp_t) - 1] = 0; } for (i = 0; i < cpanel->count; i++){ - if (!strcmp (cpanel->dir.list [i].fname, "..")) + if (!strcmp (cpanel->dir.list [i].fname, "..")) continue; - if (S_ISDIR (cpanel->dir.list [i].buf.st_mode)){ + if (S_ISDIR (cpanel->dir.list [i].buf.st_mode) || + link_isdir ( &(cpanel->dir.list [i]) )) { if (!dirflag) continue; } else {