📄 creat.c
字号:
/* 文件创建函数creat()(creat.c)*/
#include <stdio.h>
#include "filesys.h"
int creat(user_id, filename, mode)
unsigned int user_id;
char * filename;
unsigned short mode;
{
unsigned int di_ith, di_ino;
struct inode * inode;
int i,j;
di_ino=namei(filename); //
if (di_ino!=NULL) /* already existed */
{
printf("该文件 %s 已经存在.\n",filename);
return -1;
}
else /* not existed before */
{
inode = ialloc();
iget(inode->i_ino+1);
di_ith=iname(filename);
dir.size++;
dir.direct[di_ith].d_ino=inode->i_ino;
inode->di_mode = user[user_id].u_default_mode | DIFILE; //~~~~~edited
inode->di_uid = user[user_id].u_uid;
inode->di_gid=user[user_id].u_gid;//~~~~~
inode->di_size=0;
inode->di_number= 1;
for(i=0;i<SYSOPENFILE;i++)
if (sys_ofile[i].f_count==0)
{
break;
}
for (j=0; j<NOFILE; j++)
if (user[user_id].u_ofile[j]==SYSOPENFILE+1)
{
break;
}
user[user_id].u_ofile[j]=i;
sys_ofile[i].f_flag=mode;
sys_ofile[i].f_count=0;
sys_ofile[i].f_off=0;
sys_ofile[i].f_inode=inode;
printf("文件%s创建成功.\n",filename);
return j;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -