-
Notifications
You must be signed in to change notification settings - Fork 0
/
fs.h
60 lines (50 loc) · 2.53 KB
/
fs.h
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
/**
* NÃO MODIFIQUE ESTE ARQUIVO
*/
#ifndef fs_h
#define fs_h
#include <string>
typedef struct {
unsigned char IS_USED; // 0x01 se utilizado, 0x00 se livre
unsigned char IS_DIR; // 0x01 se diretorio, 0x00 se arquivo
char NAME[10]; // nome do arquivo/dir
char SIZE; // tamanho do arquivo/dir em bytes
unsigned char DIRECT_BLOCKS[3];
unsigned char INDIRECT_BLOCKS[3];
unsigned char DOUBLE_INDIRECT_BLOCKS[3];
} INODE;
/**
* @brief Inicializa um sistema de arquivos que simula EXT3
* @param fsFileName nome do arquivo que contém sistema de arquivos que simula EXT3 (caminho do arquivo no sistema de arquivos local)
* @param blockSize tamanho em bytes do bloco
* @param numBlocks quantidade de blocos
* @param numInodes quantidade de inodes
*/
void initFs(std::string fsFileName, int blockSize, int numBlocks, int numInodes);
/**
* @brief Adiciona um novo arquivo dentro do sistema de arquivos que simula EXT3. O sistema já deve ter sido inicializado.
* @param fsFileName arquivo que contém um sistema sistema de arquivos que simula EXT3.
* @param filePath caminho completo novo arquivo dentro sistema de arquivos que simula EXT3.
* @param fileContent conteúdo do novo arquivo
*/
void addFile(std::string fsFileName, std::string filePath, std::string fileContent);
/**
* @brief Adiciona um novo diretório dentro do sistema de arquivos que simula EXT3. O sistema já deve ter sido inicializado.
* @param fsFileName arquivo que contém um sistema sistema de arquivos que simula EXT3.
* @param dirPath caminho completo novo diretório dentro sistema de arquivos que simula EXT3.
*/
void addDir(std::string fsFileName, std::string dirPath);
/**
* @brief Remove um arquivo ou diretório (recursivamente) de um sistema de arquivos que simula EXT3. O sistema já deve ter sido inicializado.
* @param fsFileName arquivo que contém um sistema sistema de arquivos que simula EXT3.
* @param path caminho completo do arquivo ou diretório a ser removido.
*/
void remove(std::string fsFileName, std::string path);
/**
* @brief Move um arquivo ou diretório em um sistema de arquivos que simula EXT3. O sistema já deve ter sido inicializado.
* @param fsFileName arquivo que contém um sistema sistema de arquivos que simula EXT3.
* @param oldPath caminho completo do arquivo ou diretório a ser movido.
* @param newPath novo caminho completo do arquivo ou diretório.
*/
void move(std::string fsFileName, std::string oldPath, std::string newPath);
#endif /* fs_h */