-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.h
More file actions
100 lines (86 loc) · 2.28 KB
/
Copy pathinit.h
File metadata and controls
100 lines (86 loc) · 2.28 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#ifndef INIT_H
#define INIT_H
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define BLOCKSIZE 1024
#define SIZE 1024000
#define END 65535
#define FREE 0
#define ROOTBLOCKNUM 2
#define MAXOPENFILE 10 // 同时打开最大文件数
#define MAX_TEXT_SIZE 10000
typedef struct FCB {
char filename[20];
//char filename[8];
char exname[4];
//char exname[3];
unsigned char attribute; // 0: dir file, 1: data file
unsigned short time;
unsigned short date;
unsigned short first;
unsigned short length;
char free; // 0: 空 fcb
} fcb;
typedef struct FAT {
unsigned short id;
} fat;
typedef struct USEROPEN {
char filename[20];
char exname[4];
unsigned char attribute;
unsigned short time;
unsigned short date;
unsigned short first;
unsigned short length;
char free;
int dirno; // 父目录文件起始盘块号
int diroff; // 该文件对应的 fcb 在父目录中的逻辑序号
char dir[MAXOPENFILE][80]; // 全路径信息
int count;
char fcbstate; // 是否修改 1是 0否
char topenfile; // 0: 空 openfile
} useropen;
typedef struct BLOCK {
char magic_number[8];
char information[200];
unsigned short root;
unsigned char* startblock;
} block0;
typedef struct free_list_node {
int fd;
struct free_list_node* next;
} free_list_node;
// 定义全局变量来跟踪空闲链表的头指针
free_list_node* free_fd_head = NULL;
unsigned char* myvhard;
//useropen *ptrcurdir;
useropen openfilelist[MAXOPENFILE];
int currfd;
//char currentdir[80];
unsigned char* startp;
//extern char *FILENAME;
unsigned char buffer[SIZE];
/* sysfile func */
void startsys();
void my_format();
void my_cd(char* dirname);
int do_read(int fd, int len, char* text);
int do_write(int fd, char* text, int len, char wstyle);
int my_read(int fd);
int my_write(int fd);
void exitsys();
void my_cd(char* dirname);
int my_open(char* filename);
int my_close(int fd);
void my_mkdir(char* dirname);
void my_rmdir(char* dirname);
int my_create(char* filename);
void my_rm(char* filename);
void my_ls();
void help();
int get_free_openfilelist();
unsigned short int get_free_block();
#endif