source: trunk/minix/lib/stdio/ftell.c@ 20

Last change on this file since 20 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 811 bytes
Line 
1/*
2 * ftell.c - obtain the value of the file-position indicator of a stream
3 */
4/* $Header: /cvsup/minix/src/lib/stdio/ftell.c,v 1.1.1.1 2005/04/21 14:56:35 beng Exp $ */
5
6#include <stdio.h>
7
8#if (SEEK_CUR != 1) || (SEEK_SET != 0) || (SEEK_END != 2)
9#error SEEK_* values are wrong
10#endif
11
12#include "loc_incl.h"
13
14#include <sys/types.h>
15
16off_t _lseek(int fildes, off_t offset, int whence);
17
18long ftell(FILE *stream)
19{
20 long result;
21 int adjust = 0;
22
23 if (io_testflag(stream,_IOREADING))
24 adjust = -stream->_count;
25 else if (io_testflag(stream,_IOWRITING)
26 && stream->_buf
27 && !io_testflag(stream,_IONBF))
28 adjust = stream->_ptr - stream->_buf;
29 else adjust = 0;
30
31 result = _lseek(fileno(stream), (off_t)0, SEEK_CUR);
32
33 if ( result == -1 )
34 return result;
35
36 result += (long) adjust;
37 return result;
38}
Note: See TracBrowser for help on using the repository browser.