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

📄 score.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)score.c 1.1 92/07/30 Copyr 1985 Sun Micro";#endif#include <stdio.h>#include <sys/file.h>#include <pwd.h>#include "score.h"#include "defs.h"getscore(name, humanp, computerp)	char *name;	int *humanp;	int *computerp;{	struct passwd *pwd;	struct scorerec srec;	int uid;	FILE *score;	uid = getuid();	pwd = getpwuid(uid);	if (pwd == NULL) {		strcpy(name, "human");	} else {		strncpy(name, pwd->pw_name, MAXNAME);	}	*humanp = 0;	*computerp = 0;	score = fopen(SCOREFILE, "r");	if (score == NULL) {		return;	}	while (fread(&srec, sizeof (srec), 1, score) != NULL) {		if (srec.uid != uid) {			continue;		}		*humanp = srec.human;		*computerp = srec.computer;		break;	}	fclose(score);}savescore(human, computer)	int human;	int computer;{	int uid;	struct scorerec srecs[1000];	struct scorerec *sp;	int nbytes;	int nrecs;	int score;	uid = getuid();	score = open(SCOREFILE, O_CREAT|O_RDWR, 0644);	if (score < 0) {		message(ERR, "can't open score file");		return;	}	while ((nbytes = read(score, srecs, sizeof (srecs))) > 0) {		if (nbytes % sizeof (struct scorerec)) {			message(ERR, "Corrupted score file");			close(score);			return;		}		nrecs = nbytes / sizeof (struct scorerec);		for (sp = srecs; sp < &srecs[nrecs] && sp->uid != uid; sp++)			;		if (sp->uid == uid) {			break;		}	}	if (nbytes < 0) {		message(ERR, "can't read score file");		close(score);		return;	}	if (nbytes > 0 && sp < &srecs[nrecs]) {		if (lseek(score, (int)sp - (int)&srecs[nrecs], 1) < 0) {			message(ERR, "can't seek in score file");			close(score);			return;		}	} else {		sp = srecs;		if (lseek(score, 0, 2) < 0) {			message(ERR, "can't seek in score file");			close(score);			return;		}	}	sp->human = human;	sp->computer = computer;	sp->uid = uid;	if (write(score, sp, sizeof(struct scorerec))	    != sizeof(struct scorerec)) {		message(ERR, "can't write score file");	}	close(score);}

⌨️ 快捷键说明

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