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

📄 scsi_scan.c

📁 另一种方法编辑刻录程序的代码!要的与偶联系呀
💻 C
字号:
/* @(#)scsi_scan.c	1.1 97/08/24 Copyright 1997 J. Schilling */#ifndef lintstatic	char sccsid[] =	"@(#)scsi_scan.c	1.1 97/08/24 Copyright 1997 J. Schilling";#endif/* *	Scan SCSI Bus. *	Stolen from sformat. Need a more general form to *	re-use it in sformat too. * *	Copyright (c) 1997 J. Schilling *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING.  If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdlib.h>#include <standard.h>#include <btorder.h>#include <scgio.h>#include <scsidefs.h>#include <scsireg.h>#include "cdrecord.h"#include "scsi_scan.h"#include "scsitransp.h"extern	struct	scg_cmd		scmd;extern	struct	scsi_inquiry	inq;extern	struct	scsi_capacity	cap;extern	int	scsibus;extern	int	target;extern	int	lun;extern	int	silent;extern	int	verbose;extern	int	lverbose;LOCAL	void	print_product		__PR((struct scsi_inquiry *ip));EXPORT	void	select_target		__PR((void));LOCAL	void	select_unit		__PR((void));LOCAL voidprint_product(ip)	struct	scsi_inquiry *ip;{	printf("'%.8s' ", ip->info);	printf("'%.16s' ", ip->ident);	printf("'%.4s' ", ip->revision);	if (ip->add_len < 31) {		printf("NON CCS ");	}	scsiprintdev(ip);}EXPORT voidselect_target(){	int	initiator;	int	cscsibus = scsibus;	int	ctarget = target;	int	clun	= lun;	int	n;	int	low	= -1;	int	high	= -1;	silent++;	for (scsibus=0; scsibus < 8; scsibus++) {		initiator = -1;/*		initiator = scg_initiator_id(scsibus);*/		if (!scsi_havebus(scsibus))			continue;		printf("scsibus%d:\n", scsibus);		for (target=0, lun=0; target < 8; target++) {			n = scsibus*100 + target;		/*			if (print_disknames(scsibus, target, -1) < 8)*/				printf("\t");			printf("\t%3d) ", n);			if (target == initiator) {				printf("HOST ADAPTOR\n");				continue;			}			if (!unit_ready() && scmd.error == SCG_FATAL) {				printf("*\n");				continue;			}			if (low < 0)				low = n;			high = n;			getdev(FALSE);			print_product(&inq);		}	}	silent--;	if (low < 0)		comerrno(EX_BAD, "No target found.\n");	n = -1;/*	getint("Select target", &n, low, high); */exit(0);	scsibus = n/10;	target = n%10;	select_unit();	scsibus	= cscsibus;	target	= ctarget;	lun	= clun;}LOCAL voidselect_unit(){	int	initiator;	int	clun	= lun;	int	low	= -1;	int	high	= -1;	silent++;	printf("scsibus%d target %d:\n", scsibus, target);	initiator = -1;/*	initiator = scg_initiator_id(scsibus);*/	for (lun=0; lun < 8; lun++) {/*		if (print_disknames(scsibus, target, lun) < 8)*/			printf("\t");		printf("\t%3d) ", lun);		if (target == initiator) {			printf("HOST ADAPTOR\n");			continue;		}		if (!unit_ready() && scmd.error == SCG_FATAL) {			printf("*\n");			continue;		}		if (unit_ready()) {			/* non extended sense illegal lun */			if (scmd.sense.code == 0x25) {				printf("BAD UNIT\n");				continue;			}		}		if (low < 0)			low = lun;		high = lun;		getdev(FALSE);		print_product(&inq);	}	silent--;	if (low < 0)		comerrno(EX_BAD, "No lun found.\n");	lun = -1;/*	getint("Select lun", &lun, low, high); */exit(0);/*	format_one();*/		lun	= clun;}

⌨️ 快捷键说明

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