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

📄 solaris.c

📁 Util-linux 软件包包含许多工具。其中比较重要的是加载、卸载、格式化、分区和管理硬盘驱动器
💻 C
字号:
#include <stdio.h>#include <time.h>		/* time_t */#include "partx.h"#define SOLARIS_X86_NUMSLICE	8#define SOLARIS_X86_VTOC_SANE	(0x600DDEEEUL)typedef int daddr_t;		/* or long - check */struct solaris_x86_slice {	unsigned short	s_tag;		/* ID tag of partition */	unsigned short	s_flag;		/* permision flags */	daddr_t 	s_start;	/* start sector no of partition */	long		s_size;		/* # of blocks in partition */};struct solaris_x86_vtoc {	unsigned long v_bootinfo[3];	/* info for mboot */	unsigned long v_sanity;		/* to verify vtoc sanity */	unsigned long v_version;	/* layout version */	char	v_volume[8];		/* volume name */	unsigned short	v_sectorsz;	/* sector size in bytes */	unsigned short	v_nparts;	/* number of partitions */	unsigned long v_reserved[10];	/* free space */	struct solaris_x86_slice		v_slice[SOLARIS_X86_NUMSLICE];   /* slice headers */	time_t	timestamp[SOLARIS_X86_NUMSLICE]; /* timestamp */	char	v_asciilabel[128];	/* for compatibility */};intread_solaris_pt(int fd, struct slice all, struct slice *sp, int ns) {	struct solaris_x86_vtoc *v;	struct solaris_x86_slice *s;	unsigned int offset = all.start;	int i, n;	char *bp;	bp = getblock(fd, offset+1); 	/* 1 sector suffices */	if (bp == NULL)		return -1;	v = (struct solaris_x86_vtoc *) bp;	if(v->v_sanity != SOLARIS_X86_VTOC_SANE)		return -1;	if(v->v_version != 1) {		fprintf(stderr, "Cannot handle solaris version %ld vtoc\n",		       v->v_version);		return 0;	}	for(i=0, n=0; i<SOLARIS_X86_NUMSLICE; i++) {		s = &v->v_slice[i];		if (s->s_size == 0)			continue;		if (n < ns) {			sp[n].start = offset + s->s_start;			sp[n].size = s->s_size;			n++;		} else {			fprintf(stderr,				"solaris_x86_partition: too many slices\n");			break;		}	}	return n;}

⌨️ 快捷键说明

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