⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unix.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include <libsec.h>#include <libproto.h>#include <ctype.h>#include "iso9660.h"#include <grp.h>#include <pwd.h>typedef struct Xarg Xarg;struct Xarg {	void (*enm)(char*,char*,XDir*,void*);	void (*warn)(char*,void*);	void *arg;};static long numericuid(char *user);static long numericgid(char *gp);voiddirtoxdir(XDir *xd, Dir *d){	//	char buf[NAMELEN+1];	memset(xd, 0, sizeof *xd);	xd->name = atom(d->name);	xd->uid = atom(d->uid);	xd->gid = atom(d->gid);	xd->uidno = numericuid(d->uid);	xd->gidno = numericgid(d->gid);	xd->mode = d->mode;	xd->atime = d->atime;	xd->mtime = d->mtime;	xd->ctime = 0;	xd->length = d->length;	if(xd->mode & CHLINK) {		xd->mode |= 0777;		xd->symlink = atom(d->symlink);	}};voidfdtruncate(int fd, ulong size){	ftruncate(fd, size);	return;}static longnumericuid(char *user){	struct passwd *pass;	static int warned = 0;	if (! (pass = getpwnam(user))) {		if (!warned)			fprint(2, "Warning: getpwnam(3) failed for \"%s\"\n", user);		warned = 1;		return 0;	}	return pass->pw_uid;}static longnumericgid(char *gp){	struct group *gr;	static int warned = 0;	if (! (gr = getgrnam(gp))) {		if (!warned)			fprint(2, "Warning: getgrnam(3) failed for \"%s\"\n", gp);		warned = 1;		return 0;	}	return gr->gr_gid;}

⌨️ 快捷键说明

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