From 45b4088007d8d45041c6351e660fb159d1128347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Mon, 28 Jun 2021 17:18:04 +0200 Subject: [PATCH] feat: add get file local path so it can be executed --- file-browser/include/file_access.h | 7 ++++++- file-browser/include/local_file_access.h | 4 ++++ file-browser/src/extern_file_access.c | 1 + file-browser/src/file_access.c | 5 +++++ file-browser/src/local_file_access.c | 8 ++++++++ file-browser/src/temp_file_access.c | 2 +- 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/file-browser/include/file_access.h b/file-browser/include/file_access.h index 20d86b04f37fa16ea5c0e466be8b61cb836de173..88b5a709b3a168ef082bfab4363dc5ce1b9078cc 100644 --- a/file-browser/include/file_access.h +++ b/file-browser/include/file_access.h @@ -112,6 +112,9 @@ typedef file_operation_error_t (*get_mime_type_fn)(fileaccess_state_t state, typedef executing_file_or_error_t (*execute_file_fn)(fileaccess_state_t state, file_t *file, char *args); +typedef file_operation_error_t (*get_file_local_path_fn)(fileaccess_state_t state, + file_t *file, char *out); + typedef file_operation_error_t (*delete_directory_fn)(fileaccess_state_t state, char *path); typedef file_operation_error_t (*delete_file_fn)(fileaccess_state_t state, @@ -126,6 +129,8 @@ struct fileaccess_t { list_directory_fn list_directory; list_root_fn list_root; + get_file_local_path_fn get_file_local_path; + create_directory_fn create_directory; close_directory_fn close_directory; @@ -186,7 +191,7 @@ file_operation_error_t fileaccess_file_get_mimetype(fileaccess_state_t state, executing_file_or_error_t fileaccess_file_execute(fileaccess_state_t state, file_t *file, char *args); file_operation_error_t fileaccess_file_delete(fileaccess_state_t state, char *path); +file_operation_error_t fileaccess_file_get_local_path(fileaccess_state_t state, file_t *file, char *out); file_operation_error_t file_operation_error_from_errno(int error); - #endif // __FILE_ACCESS_H__ diff --git a/file-browser/include/local_file_access.h b/file-browser/include/local_file_access.h index f8e1eee16eb7150512c558c98a2ee3288524dd20..20eaa81aca3dc3c1bd22a1a6c3fb8f0945fa0f16 100644 --- a/file-browser/include/local_file_access.h +++ b/file-browser/include/local_file_access.h @@ -16,6 +16,10 @@ file_operation_error_t local_fileaccess_directory_close(fileaccess_state_t state file_operation_error_t local_fileaccess_file_get_mime_type(fileaccess_state_t state, file_t *file, char *mime); executing_file_or_error_t local_fileaccess_file_execute(fileaccess_state_t state, file_t *file, char *args); + +file_operation_error_t local_fileaccess_file_get_local_path(fileaccess_state_t state, file_t *file, + char *out); + file_operation_error_t local_fileaccess_file_delete(fileaccess_state_t state, char *path); #endif // __LOCAL_FILE_ACCESS_H__ diff --git a/file-browser/src/extern_file_access.c b/file-browser/src/extern_file_access.c index 71e9af96e02376ad39ec3b750d80a60d58176d62..101b66371c1846384bcdb027187c20106e8787f4 100644 --- a/file-browser/src/extern_file_access.c +++ b/file-browser/src/extern_file_access.c @@ -137,6 +137,7 @@ const fileaccess_t extern_file_access = { .delete_file = extern_fileaccess_file_delete, .execute_file = extern_fileaccess_file_execute, .get_mime_type = extern_fileaccess_file_get_mime_type, + .get_file_local_path = local_fileaccess_file_get_local_path, .list_directory = extern_fileaccess_directory_list, .close_directory = extern_fileaccess_directory_close, diff --git a/file-browser/src/file_access.c b/file-browser/src/file_access.c index 48ff32be7d82efccfeaf374e447b8c7482f70b47..7d9367d7a04db4da12c2b7bab208678f4516a1b1 100644 --- a/file-browser/src/file_access.c +++ b/file-browser/src/file_access.c @@ -75,6 +75,11 @@ file_operation_error_t fileaccess_file_delete(fileaccess_state_t state, return state.fileaccess->delete_file(state, path); } +file_operation_error_t fileaccess_file_get_local_path(fileaccess_state_t state, + file_t *file, char *out) { + return state.fileaccess->get_file_local_path(state, file, out); +} + file_operation_error_t file_operation_error_from_errno(int error) { switch (error) { case EACCES: diff --git a/file-browser/src/local_file_access.c b/file-browser/src/local_file_access.c index d203a4e7b9ea3264afe54eec48968e3584509d0a..5d663947dd4c3bd405d951677d8a02d2b9f45b08 100644 --- a/file-browser/src/local_file_access.c +++ b/file-browser/src/local_file_access.c @@ -239,6 +239,13 @@ executing_file_or_error_t local_fileaccess_file_execute(fileaccess_state_t state return ret; } +file_operation_error_t +local_fileaccess_file_get_local_path(fileaccess_state_t state, file_t *file, + char *out) { + file_get_full_path(state, file->directory, file, out); + return FILOPER_SUCCESS; +} + file_operation_error_t local_fileaccess_file_delete(fileaccess_state_t state, char *path) { file_operation_error_t error = FILOPER_SUCCESS; @@ -266,4 +273,5 @@ const fileaccess_t local_file_access = { .deinit = local_fileaccess_deinit_state, .get_mime_type = local_fileaccess_file_get_mime_type, .execute_file = local_fileaccess_file_execute, + .get_file_local_path = local_fileaccess_file_get_local_path }; diff --git a/file-browser/src/temp_file_access.c b/file-browser/src/temp_file_access.c index f455d4532586a1bca7bb71523926063ae5cc3b95..7430d374d53ee1f436c6981e1bab80436cff1921 100644 --- a/file-browser/src/temp_file_access.c +++ b/file-browser/src/temp_file_access.c @@ -21,6 +21,7 @@ const fileaccess_t temp_file_access = { .delete_file = local_fileaccess_file_delete, .execute_file = local_fileaccess_file_execute, .get_mime_type = local_fileaccess_file_get_mime_type, + .get_file_local_path = local_fileaccess_file_get_local_path, .list_directory = local_fileaccess_directory_list, .close_directory = local_fileaccess_directory_close, @@ -28,5 +29,4 @@ const fileaccess_t temp_file_access = { .delete_directory = local_fileaccess_directory_delete, .list_root = local_fileaccess_root_list, - };