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

📄 calc_soft.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/*       @(#)calc_soft.c 1.1 92/07/30 SMI                              *//* * Copyright (c) 1988 by Sun Microsystems, Inc. */#include "install.h"extern char *sprintf();calculate_software(sys, archtype, pathname, progname)struct system_info *sys;char *archtype, *pathname, *progname;{	char vol[MINSIZE], name[MINSIZE], diskused[5];        char loadpt[MINSIZE], drive_type[MINSIZE];	char part[10];	char filename[MAXPATHLEN];	char buf[BUFSIZE];        long totalsize, sizing;         int no;	FILE *extractlist;	/*	*	open the extractlist.archtype and start stepping	*	through the entries	*/        (void) sprintf(filename,"%sextractlist.%s",INSTALL_DIR,archtype);        if ((extractlist = fopen(filename,"r")) != NULL) {		/*		*	swallow the first line		*/                if (fgets(buf,BUFSIZ,extractlist) == NULL) {			(void) fclose(extractlist);			return(0);		}		/*		*	get the second line for the drive= parameter		*/                if (fgets(buf,BUFSIZ,extractlist) == NULL) {			(void) fclose(extractlist);			log ("%s: unexpected EOF in %s\n",progname,filename);			return(-1);		}		/*		*	if it's a remote then swallow the		*	next two as well		*/		(void) sscanf(buf,"drive=%s",drive_type);		if (!strcmp(drive_type,"remote")) {			(void)fgets(buf,BUFSIZ,extractlist);			(void)fgets(buf,BUFSIZ,extractlist);		}	} else {		/* else empty file - return */		return(0);	}	totalsize=0;	while (fgets(buf,BUFSIZ,extractlist) != NULL) {		bzero(vol, sizeof(vol));		bzero(name, sizeof(name));		bzero(loadpt, sizeof(loadpt));		bzero(diskused,sizeof(diskused));		(void) sscanf(buf,			"volume=%s filenum=%d name=%s size=%d loadpt=%s",				vol,&no,name,&sizing,loadpt);		/*		*	if it's the root file then...		*/		if (!strcmp(name,"root")) { 			(void) strncpy(diskused,sys->root,				strlen(sys->root)-1);			if (do_diskinfo(diskused,sys->root,				sizing, progname) == -1) {				(void) fclose(extractlist);				return(-1);			}		} else if (!strcmp(sys->type,"dataless")) {			continue;		/*		*	if it's the Sys file then...		*/		} else if (!strcmp(name,"Sys")) {			(void) strncpy(diskused,sys->user,				strlen(sys->user)-1);			if (do_diskinfo(diskused,sys->user,				sizing, progname) == -1) {				(void) fclose(extractlist);				return(-1);			}		/*		*	if it's anything else then...		*/		} else {			search_partition(sys, pathname, part);			(void) strncpy(diskused,part,strlen(part)-1);			totalsize += sizing;		}	}		(void) fclose(extractlist);	/*	*	now see if all the software selected will fit	*	on the given partition...	*/	if (totalsize && do_diskinfo(diskused,part,totalsize, progname) == -1)		return(-1);		return(0);}

⌨️ 快捷键说明

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