| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | /* Copyright (C) 2004       Manuel Novoa III    <mjn3@codepoet.org> * * GNU Library General Public License (LGPL) version 2 or later. * * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details. */#include "_stdio.h"#if SEEK_SET != 0 || SEEK_CUR != 1 || SEEK_END != 2# error Assumption violated -- values of SEEK_SET, SEEK_CUR, SEEK_END#endif#ifndef __DO_LARGEFILE# define FSEEK         fseek# define OFFSET_TYPE   long int#endifint FSEEK(register FILE *stream, OFFSET_TYPE offset, int whence){#if defined(__UCLIBC_HAS_LFS__) && !defined(__DO_LARGEFILE)	return fseeko64(stream, offset, whence);#else	__offmax_t pos = offset;	int retval = -1;	__STDIO_AUTO_THREADLOCK_VAR;	if (((unsigned int) whence) > 2) {		__set_errno(EINVAL);	} else {		__STDIO_AUTO_THREADLOCK(stream);		__STDIO_STREAM_VALIDATE(stream);		if ((!__STDIO_STREAM_IS_WRITING(stream)			  || !__STDIO_COMMIT_WRITE_BUFFER(stream))			&& ((whence != SEEK_CUR)				 || (__stdio_adjust_position(stream, &pos) >= 0))			&& (__SEEK(stream, &pos, whence) >= 0)			) {			/* Clear reading/writing modes, EOF, and ungots. */			stream->__modeflags &=				~(__MASK_READING|__FLAG_WRITING|__FLAG_EOF);			/* Make sure all pointers are reset. */			__STDIO_STREAM_INIT_BUFREAD_BUFPOS(stream);			__STDIO_STREAM_DISABLE_GETC(stream);			__STDIO_STREAM_DISABLE_PUTC(stream);			/* We reinitialize the mbstate object.  Doing so is			 * implementation defined behavior. */#ifdef __STDIO_MBSTATE			__INIT_MBSTATE(&(stream->__state));#endif#ifdef __UCLIBC_HAS_WCHAR__			stream->__ungot_width[0] = 0;#endif			retval = 0;		}		__STDIO_STREAM_VALIDATE(stream);		__STDIO_AUTO_THREADUNLOCK(stream);	}	return retval;#endif}#ifdef __DO_LARGEFILElibc_hidden_def(fseeko64)#elselibc_hidden_def(fseek)strong_alias_untyped(fseek,fseeko)#endif
 |