1 Upstream bugID: #3278 |
1 Upstream bugID: #3278 |
2 Synopsis: Info panel should follow symlinks |
2 Synopsis: Info panel should follow symlinks |
3 Bug record: https://www.midnight-commander.org/ticket/3278 |
3 Bug record: https://www.midnight-commander.org/ticket/3278 |
4 |
4 |
5 diff -Naur mc-4.8.13.old/src/filemanager/mountlist.c mc-4.8.13.new/src/filemanager/mountlist.c |
5 diff -Naur mc-4.8.15.orig/src/filemanager/mountlist.c mc-4.8.15/src/filemanager/mountlist.c |
6 --- mc-4.8.13.old/src/filemanager/mountlist.c 2014-09-02 11:23:58.000000000 +0200 |
6 --- mc-4.8.15.orig/src/filemanager/mountlist.c 2015-11-06 10:11:09.000000000 +0100 |
7 +++ mc-4.8.13.new/src/filemanager/mountlist.c 2014-09-26 17:07:08.135044849 +0200 |
7 +++ mc-4.8.15/src/filemanager/mountlist.c 2015-11-13 10:04:32.267994401 +0100 |
8 @@ -1598,18 +1600,22 @@ |
8 @@ -1704,11 +1704,15 @@ |
9 my_statfs (struct my_statfs *myfs_stats, const char *path) |
9 my_statfs (struct my_statfs *myfs_stats, const char *path) |
10 { |
10 { |
11 #ifdef HAVE_INFOMOUNT_LIST |
11 #ifdef HAVE_INFOMOUNT_LIST |
12 + const char *rpath; |
12 + const char *rpath; |
13 size_t len = 0; |
13 size_t len = 0; |
14 struct mount_entry *entry = NULL; |
14 struct mount_entry *entry = NULL; |
15 struct mount_entry *temp = mc_mount_list; |
15 GSList *temp; |
16 struct fs_usage fs_use; |
16 struct fs_usage fs_use; |
17 |
17 |
18 + if ((rpath = realpath(path, NULL)) == NULL) |
18 + if ((rpath = realpath(path, NULL)) == NULL) |
19 + rpath = path; |
19 + rpath = path; |
20 + |
20 + |
21 while (temp) |
21 for (temp = mc_mount_list; temp != NULL; temp = g_slist_next (temp)) |
22 { |
22 { |
23 size_t i; |
23 struct mount_entry *me; |
|
24 @@ -1716,8 +1720,8 @@ |
24 |
25 |
25 i = strlen (temp->me_mountdir); |
26 me = (struct mount_entry *) temp->data; |
26 - if (i > len && (strncmp (path, temp->me_mountdir, i) == 0)) |
27 i = strlen (me->me_mountdir); |
27 - if (!entry || (path[i] == PATH_SEP || path[i] == '\0')) |
28 - if (i > len && (strncmp (path, me->me_mountdir, i) == 0) && |
28 + if (i > len && (strncmp (rpath, temp->me_mountdir, i) == 0)) |
29 - (entry == NULL || IS_PATH_SEP (path[i]) || path[i] == '\0')) |
29 + if (!entry || (rpath[i] == PATH_SEP || rpath[i] == '\0')) |
30 + if (i > len && (strncmp (rpath, me->me_mountdir, i) == 0) && |
30 { |
31 + (entry == NULL || IS_PATH_SEP (rpath[i]) || rpath[i] == '\0')) |
31 len = i; |
32 { |
32 entry = temp; |
33 len = i; |
33 @@ -1620,7 +1626,7 @@ |
34 entry = me; |
34 if (entry) |
35 @@ -1727,7 +1731,7 @@ |
|
36 if (entry != NULL) |
35 { |
37 { |
36 memset (&fs_use, 0, sizeof (struct fs_usage)); |
38 memset (&fs_use, 0, sizeof (struct fs_usage)); |
37 - get_fs_usage (entry->me_mountdir, NULL, &fs_use); |
39 - get_fs_usage (entry->me_mountdir, NULL, &fs_use); |
38 + get_fs_usage (rpath, NULL, &fs_use); |
40 + get_fs_usage (rpath, NULL, &fs_use); |
39 |
41 |
40 myfs_stats->type = entry->me_dev; |
42 myfs_stats->type = entry->me_dev; |
41 myfs_stats->typename = entry->me_type; |
43 myfs_stats->typename = entry->me_type; |
42 @@ -1672,6 +1678,11 @@ |
44 @@ -1781,6 +1785,11 @@ |
43 myfs_stats->nfree = 0; |
45 myfs_stats->nfree = 0; |
44 myfs_stats->nodes = 0; |
46 myfs_stats->nodes = 0; |
45 } |
47 } |
46 + |
48 + |
47 +#ifdef HAVE_INFOMOUNT_LIST |
49 +#ifdef HAVE_INFOMOUNT_LIST |