From a1bcd9ca8aa345ec7c7573dfc3d9471366e73437 Mon Sep 17 00:00:00 2001 From: Andres Vieira Date: Sun, 26 Apr 2020 15:56:07 +0200 Subject: [PATCH] FileManager: Disables mkdir action if permissions don't allow it Now the "New directory..." contextual menu is disabled if the current user doesn't have enough permissions to create a node in the current path. This prevents the user going to the "New Directory" InputBox, writing an appropriate name and accepting just to find they can't even do it :) --- Applications/FileManager/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp index a2768ab526..3acdb42164 100644 --- a/Applications/FileManager/main.cpp +++ b/Applications/FileManager/main.cpp @@ -654,8 +654,15 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio tree_view.update(); } - go_forward_action->set_enabled(directory_view.path_history_position() - < directory_view.path_history_size() - 1); + struct stat st; + if (lstat(new_path.characters(), &st)) { + perror("stat"); + return; + } + + auto can_write_in_path = access(new_path.characters(), W_OK) == 0; + mkdir_action->set_enabled(can_write_in_path); + go_forward_action->set_enabled(directory_view.path_history_position() < directory_view.path_history_size() - 1); go_back_action->set_enabled(directory_view.path_history_position() > 0); open_parent_directory_action->set_enabled(new_path != "/"); };