diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc index e194fece..5799f8be 100644 --- a/src/GParted_Core.cc +++ b/src/GParted_Core.cc @@ -644,16 +644,21 @@ void GParted_Core::read_mountpoints_from_file( { node = Utils::regexp_label( line, "^(/[^ \t]+)[ \t]+[^ \t]+" ) ; mountpoint = Utils::regexp_label( line, "^/[^ \t]+[ \t]+([^ \t]+)" ) ; - if ( mountpoint .length() > 0 && - node .length() > 0 && - node != "/dev/root" ) + if ( mountpoint .length() > 0 && node .length() > 0 ) { + //If node is a symbolic link (e.g., /dev/root), then find real path + if ( file_test( node, Glib::FILE_TEST_IS_SYMLINK ) ) + { + char c_str[4096+1] ; + Glib::ustring tmp_node = node ; + //FIXME: it seems realpath is very unsafe to use (manpage)... + realpath( tmp_node .c_str(), c_str ) ; + if ( tmp_node .length() > 0 ) + node = tmp_node ; + } //only add this path if it exists if ( file_test( mountpoint, Glib::FILE_TEST_EXISTS ) ) - { map[ node ] .push_back( mountpoint ) ; - //FIXME: Should check if file is a symbolic link. If so then find real path - } } }