阅读背景:

操作系统文件系统部分函数(二)

来源:互联网 
int my_mkdir(char *dirname)
{
    int i,j;
	struct FCB *cur_mkdir = root;
	char dir ;
	for(j = fd ; j >= 0 ; j--)
		if(openfilelist[j].attribute == 0)
			break;
	dir = openfilelist[j].nextdirectory;

	if( strlen(dirname) > 10)
		return -1;
	//if(lengthdir == 32)
	//	return -2; //full

	for(i = 0 ; i < MAXOPENFILE ; i++)
	{
		if(openfilelist[i].topenfile == -1)
			break;
	}
	if(i == MAXOPENFILE)
		return -3;

	if(dir == -1)
	{
		for(i = 0 ; i < MAXFCB ; i++)
		{
			if(cur_mkdir[i].attribute == -1)
				break;
		}
		if(i ==  MAXFCB)
			return -2;

		/*-------------填写目录项----------*/
		strcpy(cur_mkdir[i].filename,dirname);
		cur_mkdir[i].attribute = 0;
		cur_mkdir[i].data = 0;
		cur_mkdir[i].time = 12;
		cur_mkdir[i].nextdirectory = -1;
		cur_mkdir[i].nextfile = -1;
		cur_mkdir[i].length = 0;

		cur_mkdir[openfilelist[fd].topenfile].nextdirectory = i;
		openfilelist[fd].nextdirectory = i;
		openfilelist[fd].fcbstate = 1;
	}
	else
	{
		while(cur_mkdir[dir].nextfile != -1)
		{
			if(!strcmp(cur_mkdir[dir].filename,dirname))
				return -4;
			dir = cur_mkdir[dir].nextfile;
		}
		if(!strcmp(cur_mkdir[dir].filename,dirname))
			return -4;

		for(i = 0 ; i < MAXFCB ; i++)
		{
			if(cur_mkdir[i].attribute == -1)
				break;
		}
		if(i ==  MAXFCB)
			return -2;

		/*-------------填写目录项----------*/
		strcpy(cur_mkdir[i].filename,dirname);
		cur_mkdir[i].attribute = 0;
		cur_mkdir[i].data = 0;
		cur_mkdir[i].time = 12;
		cur_mkdir[i].nextdirectory = -1;
		cur_mkdir[i].nextfile = -1;
		cur_mkdir[i].length = 0;

		cur_mkdir[dir].nextfile = i;
		openfilelist[fd].fcbstate = 1;
	}
	lengthdir++;
	return 1;
}


int my_mkdir(char *dirname)
{
    int i,j;
	str



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: