|
|
1.1 ! root 1: /* $Id: tape.c,v 1.1 2003/08/05 03:27:12 fredette Exp $ */ ! 2: ! 3: /* generic/tape.c - generic tape 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> ! 37: _TME_RCSID("$Id: tape.c,v 1.1 2003/08/05 03:27:12 fredette Exp $"); ! 38: ! 39: /* includes: */ ! 40: #include <tme/generic/tape.h> ! 41: ! 42: /* this scores a tape connection: */ ! 43: int ! 44: tme_tape_connection_score(struct tme_connection *conn, ! 45: unsigned int *_score) ! 46: { ! 47: struct tme_tape_connection *conn_tape; ! 48: struct tme_tape_connection *conn_tape_other; ! 49: ! 50: /* both sides must be tape connections: */ ! 51: assert(conn->tme_connection_type == TME_CONNECTION_TAPE); ! 52: assert(conn->tme_connection_other->tme_connection_type == TME_CONNECTION_TAPE); ! 53: ! 54: /* you cannot connect a tape to a tape, or a tape frontend to a tape ! 55: frontend: */ ! 56: conn_tape = (struct tme_tape_connection *) conn; ! 57: conn_tape_other = (struct tme_tape_connection *) conn->tme_connection_other; ! 58: *_score ! 59: = ((conn_tape->tme_tape_connection_read != NULL ! 60: || conn_tape->tme_tape_connection_write != NULL) ! 61: != (conn_tape_other->tme_tape_connection_read != NULL ! 62: || conn_tape_other->tme_tape_connection_write != NULL)); ! 63: return (TME_OK); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.