From 7f77e07b004bacb367119c8aa7f260ffa0cb57d7 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 25 Apr 1996 18:13:38 +0000 Subject: [PATCH] Wed Apr 24 00:22:42 1996 Roland McGrath * stdio/internals.c (seek_to_target): Set errno if seek function returns the wrong offset. --- stdio/internals.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/stdio/internals.c b/stdio/internals.c index acdf97783a..a1d1fa4989 100644 --- a/stdio/internals.c +++ b/stdio/internals.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -169,8 +169,19 @@ DEFUN(seek_to_target, (fp), FILE *fp) { fp->__offset = pos; if (pos != fp->__target) - /* Seek didn't go to the right place! */ - fp->__error = 1; + { + /* Seek didn't go to the right place! + This should never happen. */ +#ifdef EGRATUITOUS + /* It happens in the Hurd when the io server doesn't + obey the protocol for io_seek. */ + errno = EGRATUITOUS; +#else + /* I don't think this can happen in Unix. */ + errno = ESPIPE; /* ??? */ +#endif + fp->__error = 1; + } } } }