writef.c

来自「操作系统简单的登入程序」· C语言 代码 · 共 54 行

C
54
字号
#include <stdio.h>
#include "filesys.h"

void* writefile(char* txt,char* filename )
{
	int len,quotient,residue,i,inodeid;
	
	struct inode* inodei;

	readdir2(currentuser);

	inodeid=map2inode(filename);

	inodei=(struct inode*)posinode(inodeid);

	if(access(currentuser,inodei,WRITE)==0)

		return NULL;

	len=strlen(txt);

	quotient=len/BLOCKSIZE;

	residue=len%BLOCKSIZE;

	if (residue)

		quotient++;


	for(i=0;i<abs(inodei->di_size-quotient);i++)
	{
		if(inodei->di_size<quotient)
		{
			inodei->di_addr[inodei->di_size+i]=balloc();

		}
		else
		{
			bfree(inodei->di_addr[inodei->di_size-i-1]);
		}
		
	}

	inodei->di_size=quotient;

	blockwrite(txt,inodei);

	updateinodetable(inodei);

	return inodei;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?