#ifndef __EXTERN_FILE_ACCESS_H__
#define __EXTERN_FILE_ACCESS_H__
#include "file_access.h"
/**
* @brief Initialize extern fileaccess state with given path to device
*
* @param data path to device
* @return fileaccess_state_t
*/
fileaccess_state_t extern_fileaccess_init_state(void *device);
/**
* @brief Deinitialize extern fileaccess state
*
* All allocated memory for the state will be freed and
* associated device unmounted so it can be ejected
*
* @param state
* @return true Everything was cleaned
* @return false Could not clean everything
*/
bool extern_fileaccess_deinit_state(fileaccess_state_t state);
directory_or_error_t extern_fileaccess_directory_list(fileaccess_state_t state,
char *path);
directory_or_error_t extern_fileaccess_root_list(fileaccess_state_t state);
directory_or_error_t extern_fileaccess_directory_create(fileaccess_state_t state,
char *path);
file_operation_error_t
extern_fileaccess_directory_delete(fileaccess_state_t state, char *path);
file_operation_error_t
extern_fileaccess_directory_close(fileaccess_state_t state,
directory_t *directory);
file_operation_error_t
extern_fileaccess_file_get_mime_type(fileaccess_state_t state, file_t *file,
char *mime);
executing_file_or_error_t
extern_fileaccess_file_execute(fileaccess_state_t state, file_t *file,
char *args);
file_operation_error_t extern_fileaccess_file_delete(fileaccess_state_t state,
char *path);
#endif // __EXTERN_FILE_ACCESS_H__