📄 dirtostat.c
字号:
#include "lib.h"#include <sys/stat.h>#include <errno.h>#include "sys9.h"#include "dir.h"/* fi is non-null if there is an fd associated with s */void_dirtostat(struct stat *s, Dir *d, Fdinfo *fi){ int num; char *nam; s->st_dev = (d->type<<8)|(d->dev&0xFF); s->st_ino = d->qid.path; s->st_mode = d->mode&0777; if(fi && (fi->flags&FD_ISTTY)) s->st_mode |= S_IFCHR; else if(d->mode & 0x80000000) s->st_mode |= S_IFDIR; else if(d->type == '|' || d->type == 's') s->st_mode |= S_IFIFO; else if(d->type != 'M') s->st_mode |= S_IFCHR; else s->st_mode |= S_IFREG; s->st_nlink = 1; s->st_uid = 1; s->st_gid = 1; if(fi && (fi->flags&FD_BUFFERED)) s->st_size = fi->buf->n; else s->st_size = d->length; s->st_atime = d->atime; s->st_mtime = d->mtime; s->st_ctime = d->mtime; if(fi && fi->uid != -2){ s->st_uid = fi->uid; s->st_gid = fi->gid; } else { nam = d->uid; if(_getpw(&num, &nam, 0)) s->st_uid = num; nam = d->gid; if(_getpw(&num, &nam, 0)) s->st_gid = num; if(fi){ fi->uid = s->st_uid; fi->gid = s->st_gid; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -