#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "diskblock.h"
#include "function.h"
void main()
{
Initial();
int i;
char szcommand[12][10]={"info","cd","dir","md","rd","newfile","cat","copy","del","check","exit","help"};
while(!Login())
{
printf("登录失败!请重新登录!\n\n");
};
printf("\n**************************欢迎登录Linux模拟文件系统!***************************\n");
while(1)
{
int j = 0;
int t = 0;
int k = 0;
char szcmd[10] = ""; //用于输入命令
char szpath1[50] = "",szpath2[50] = ""; //用于路径或名字输入
char temp[100];
printf("\n%s",szmark);
gets(temp);
while(temp[t] == ' ')t++;
for(i=t;temp[i]!='\0';i++)
{
if(temp[i]!=' ')
szcmd[i-t] = temp[i];
else
{
szcmd[i-t] = '\0';
break;
}
}
k = i;
while(temp[k] == ' ')k++;
for(i=k;temp[i]!='\0';i++)
{
j = 1;
if(temp[i]!=' ')
szpath1[i-k] = temp[i];
else
{
j=2;
szpath1[i-k] = '\0';
break;
}
}
if((j == 0))
{
szcmd[i-t] = '\0';
strcpy(szpath1,".");
}
if(j == 1)
szpath1[i-k] = '\0';
else
{
t = i;
while(temp[t] == ' ')t++;
i = t;
while((temp[i] != ' ')&&(temp[i] != '\0'))
{
szpath2[i-t] = temp[i];
i++;
}
szpath2[i-t] = '\0';
}
for(i=0;i<13;i++)
if(strcmp(szcommand[i],szcmd)==0)
break;
fd = fopen("Disk","rb");
fread(superBlock,sizeof(SuperBlock),1,fd);
fread(groupDesc,sizeof(GroupDesc),BLOCKGROUP_NUM,fd);
fread(bpinodeBitmap,sizeof(bool),INODE_NUM,fd);
fread(inodeTable,sizeof(inode),INODE_NUM,fd);
fread(bpblockBitmap,sizeof(bool),BLOCK_NUM,fd);
fclose(fd);
switch(i)
{
case 0:
Info();
break;
case 1:
Cd(szpath1,sizeof(szpath1));
break;
case 2:
DisplayDir(szpath1,sizeof(szpath1));
break;
case 3:
Md(szpath1,sizeof(szpath1));
break;
case 4:
Rd(szpath1,sizeof(szpath1));
break;
case 5:
NewFile(szpath1,sizeof(szpath1));
break;
case 6:
Cat(szpath1,sizeof(szpath1));
break;
case 7:
Copy(szpath1,sizeof(szpath1),szpath2,sizeof(szpath2));
break;
case 8:
Del(szpath1,sizeof(szpath1));
break;
case 9:
Check();
break;
case 10:
return;
case 11:
Help();
break;
default:
printf("命令不存在!如需帮助请输help\n");
}
}
delete superBlock;
delete []groupDesc;
delete []inodeTable;
delete []user; //用户
}