|
|
1.1.1.2 ! root 1: /* $Id: scsi.c,v 1.2 2005/02/18 03:51:13 fredette Exp $ */ 1.1 root 2: 3: /* generic/scsi.c - generic SCSI implementation support: */ 4: 5: /* 6: * Copyright (c) 2003 Matt Fredette 7: * All rights reserved. 8: * 9: * Redistribution and use in source and binary forms, with or without 10: * modification, are permitted provided that the following conditions 11: * are met: 12: * 1. Redistributions of source code must retain the above copyright 13: * notice, this list of conditions and the following disclaimer. 14: * 2. Redistributions in binary form must reproduce the above copyright 15: * notice, this list of conditions and the following disclaimer in the 16: * documentation and/or other materials provided with the distribution. 17: * 3. All advertising materials mentioning features or use of this software 18: * must display the following acknowledgement: 19: * This product includes software developed by Matt Fredette. 20: * 4. The name of the author may not be used to endorse or promote products 21: * derived from this software without specific prior written permission. 22: * 23: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 24: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 27: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 29: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 31: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33: * POSSIBILITY OF SUCH DAMAGE. 34: */ 35: 36: #include <tme/common.h> 1.1.1.2 ! root 37: _TME_RCSID("$Id: scsi.c,v 1.2 2005/02/18 03:51:13 fredette Exp $"); 1.1 root 38: 39: /* includes: */ 40: #include <tme/generic/scsi.h> 41: #include <stdlib.h> 42: 43: /* this scores a SCSI connection: */ 44: int 45: tme_scsi_connection_score(struct tme_connection *conn, unsigned int *_score) 46: { 47: struct tme_scsi_connection *conn_scsi; 48: struct tme_scsi_connection *conn_scsi_other; 49: 50: /* both sides must be SCSI connections: */ 51: assert(conn->tme_connection_type == TME_CONNECTION_SCSI); 52: assert(conn->tme_connection_other->tme_connection_type == TME_CONNECTION_SCSI); 53: 54: /* you cannot connect a bus to a bus, or a device to a device: */ 55: conn_scsi 56: = (struct tme_scsi_connection *) conn; 57: conn_scsi_other 58: = (struct tme_scsi_connection *) conn->tme_connection_other; 1.1.1.2 ! root 59: /* XXX we need a way to distinguish a bus from a device: */ 1.1 root 60: *_score 1.1.1.2 ! root 61: = 1; 1.1 root 62: return (TME_OK); 63: } 64: 65: /* this parses a SCSI ID: */ 66: int 67: tme_scsi_id_parse(const char *id_string) 68: { 69: unsigned long id; 70: char *p1; 71: 72: /* catch a NULL string: */ 73: if (id_string == NULL) { 74: return (-1); 75: } 76: 77: /* convert the string: */ 78: id = strtoul(id_string, &p1, 0); 79: if (p1 == id_string 80: || *p1 != '\0') { 81: return (-1); 82: } 83: return (id); 84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.