~ruther/CTU-FEE-B0B35APO-Semestral-project

ref: a9aa5ba543570543a2fb60ecd0bf7faf622341ca CTU-FEE-B0B35APO-Semestral-project/file-browser/src/file_access.c -rw-r--r-- 2.2 KiB
a9aa5ba5 — František Boháček refactor: make fileaccess state from union 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "file_access.h"
#include <string.h>
#include <errno.h>

uint8_t connectors_count = 1;

fileaccess_state_t fileaccess_init(const fileaccess_t *fileaccess, void *data) {
  return fileaccess->init(data);
}

bool fileaccess_deinit(fileaccess_state_t state) {
  return state.fileaccess->deinit(state);
}

directory_or_error_t fileaccess_directory_list(fileaccess_state_t state,
                                               char *path) {
  return state.fileaccess->list_directory(state, path);
}

directory_or_error_t fileaccess_root_list(fileaccess_state_t state) {
  return state.fileaccess->list_root(state);
}

directory_or_error_t fileaccess_directory_create(fileaccess_state_t state,
                                                 char *path) {
  return state.fileaccess->create_directory(state, path);
}

file_operation_error_t fileaccess_directory_close(fileaccess_state_t state,
                                                  directory_t *directory) {
  return state.fileaccess->close_directory(state, directory);
}

file_operation_error_t fileaccess_directory_delete(fileaccess_state_t state,
                                                   char *path) {
  return state.fileaccess->delete_directory(state, path);
}

file_operation_error_t fileaccess_file_get_mimetype(fileaccess_state_t state,
                                                    file_t *file,
                                                    /*out*/ char *mime) {
  return state.fileaccess->get_mime_type(state, file, mime);
}

executing_file_or_error_t fileaccess_file_execute(fileaccess_state_t state, file_t *file,
                                       char *args) {
  return state.fileaccess->execute_file(state, file, args);
}

file_operation_error_t fileaccess_file_delete(fileaccess_state_t state,
                                              char *path) {
  return state.fileaccess->delete_file(state, path);
}

file_operation_error_t file_operation_error_from_errno(int error) {
  switch (error) {
  case EACCES:
  case EROFS:
    return FILOPER_PERMISSIONS;
  case EEXIST:
  case ENOTDIR:
    return FILOPER_ALREADY_EXISTS;
  case ENOENT:
    return FILOPER_DOES_NOT_EXIST;
  case ENOSPC:
    return FILOPER_NOT_ENOUGH_SPACE;
  default:
    return FILOPER_UNKNOWN;
  }
}
Do not follow this link