From owner-freebsd-bugs Thu Nov 6 16:40:04 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id QAA25310 for bugs-outgoing; Thu, 6 Nov 1997 16:40:04 -0800 (PST) (envelope-from owner-freebsd-bugs) Received: (from gnats@localhost) by hub.freebsd.org (8.8.7/8.8.7) id QAA25297; Thu, 6 Nov 1997 16:40:02 -0800 (PST) (envelope-from gnats) Resent-Date: Thu, 6 Nov 1997 16:40:02 -0800 (PST) Resent-Message-Id: <199711070040.QAA25297@hub.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@FreeBSD.ORG, tege@pdc.kth.se Received: from pro.tmg.se (quiet.matematik.su.se [130.237.198.146]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id QAA24876 for ; Thu, 6 Nov 1997 16:31:23 -0800 (PST) (envelope-from tege@pro.tmg.se) Received: (from tege@localhost) by pro.tmg.se (8.8.5/8.8.5) id BAA12795; Fri, 7 Nov 1997 01:31:26 +0100 (CET) Message-Id: <199711070031.BAA12795@pro.tmg.se> Date: Fri, 7 Nov 1997 01:31:26 +0100 (CET) From: tege@pdc.kth.se Reply-To: tege@pdc.kth.se To: FreeBSD-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: 3.2 Subject: bin/4961: Problems with fseek and fprints Sender: owner-freebsd-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >Number: 4961 >Category: bin >Synopsis: Problems with fseek and fprints >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Nov 6 16:40:01 PST 1997 >Last-Modified: >Originator: Torbjorn Granlund >Organization: TMG Datakonsult >Release: FreeBSD 2.2.2-RELEASE i386 >Environment: Quite likely irrelevant. (Reproducible on radically different configurations.) >Description: 1) fseek is ignored on files that were fdopen'ed in append mode. 2) The second fprintf below sets errno even while no error really happens. Note that this incorrect behaviour happens even if the fseek belowcall of the test case is removed. >How-To-Repeat: Compile the test case below. Then run it and redirect its output to a file. I think it should print "errno should be zero here: 0". But it prints "This should be overwritten;errno should be zero here: 2". #include #include extern int errno; main () { FILE *fs; fs = fdopen (dup (fileno (stdout)), "a"); fprintf (fs, "This should be overwritten;"); fseek (fs, 0L, SEEK_SET); fprintf (fs, "errno should be zero here: %d\n", errno); exit (0); } >Fix: >Audit-Trail: >Unformatted: