From owner-freebsd-scsi@FreeBSD.ORG Tue Jun 3 10:03:43 2003 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2E33237B401 for ; Tue, 3 Jun 2003 10:03:43 -0700 (PDT) Received: from magic.adaptec.com (magic-mail.adaptec.com [208.236.45.100]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8C94E43F85 for ; Tue, 3 Jun 2003 10:03:42 -0700 (PDT) (envelope-from gibbs@scsiguy.com) Received: from redfish.adaptec.com (redfish.adaptec.com [162.62.50.11]) by magic.adaptec.com (8.11.6/8.11.6) with ESMTP id h53GweZ24008; Tue, 3 Jun 2003 09:58:40 -0700 Received: from [10.100.253.70] (aslan.btc.adaptec.com [10.100.253.70]) by redfish.adaptec.com (8.8.8p2+Sun/8.8.8) with ESMTP id KAA19573; Tue, 3 Jun 2003 10:03:40 -0700 (PDT) Date: Tue, 03 Jun 2003 11:04:20 -0600 From: "Justin T. Gibbs" To: Kern Sibbald Message-ID: <900070000.1054659860@aslan.btc.adaptec.com> In-Reply-To: <1054658432.13630.252.camel@rufus> References: <3EDB31AB.16420.C8964B7D@localhost> <3EDB59A4.27599.C93270FB@localhost> <20030602110836.H71034@beppo> <577540000.1054579840@aslan.btc.adaptec.com> <20030602131225.F71034@beppo> <1054645616.13630.161.camel@rufus> <20030603072944.U44880@beppo> <1054652678.13630.209.camel@rufus> <882210000.1054657530@aslan.btc.adaptec.com> <1054658432.13630.252.camel@rufus> X-Mailer: Mulberry/3.0.3 (Linux/x86) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline cc: freebsd-scsi@freebsd.org cc: mjacob@feral.com Subject: Re: SCSI tape data loss X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: "Justin T. Gibbs" List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jun 2003 17:03:43 -0000 > Yes, I probably should move the clrerror() and the > check/set of errno inside the check for "stat == -1". > However, the code though odd is correct since > I do not use errno unless the status is -1. No, the code is not correct. clrerror() has side effects in many cases when errno is non-zero. > By the way, the funny casting is mandatory in C++, > because ssize_t as returned by the write is not the > same as size_t (what is written). Integer type conversions are still valid in C++: #include #include int subroutine(uint8_t small_type) { printf("small_type is %d\n", small_type); return (0); } int main(int argc, char *argv[]) { uint8_t foo; uint32_t bigger_foo; foo = 100; bigger_foo = argc; if (foo != bigger_foo) { printf("Foos differ\n"); } subroutine(bigger_foo); return (0); } % g++ -Wall -pedantic foo.cc Produces no output. -- Justin