M file-browser/include/file_access.h => file-browser/include/file_access.h +6 -1
@@ 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__
M file-browser/include/local_file_access.h => file-browser/include/local_file_access.h +4 -0
@@ 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__
M file-browser/src/extern_file_access.c => file-browser/src/extern_file_access.c +1 -0
@@ 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,
M file-browser/src/file_access.c => file-browser/src/file_access.c +5 -0
@@ 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:
M file-browser/src/local_file_access.c => file-browser/src/local_file_access.c +8 -0
@@ 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
};
M file-browser/src/temp_file_access.c => file-browser/src/temp_file_access.c +1 -1
@@ 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,
-
};