X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f X-Authenticated: #27081556 X-Provags-ID: V01U2FsdGVkX1+ULZlLL8OU2WNFKv2tPYI5t8UWdcl8eNZRLN5d3P VqCPKH/gDM9zNB From: Juan Manuel Guerrero To: djgpp-workers AT delorie DOT com Subject: fseeko and ftello Date: Fri, 3 Aug 2007 22:34:29 +0200 User-Agent: KMail/1.9.5 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200708032234.30007.juan.guerrero@gmx.de> X-Y-GMX-Trusted: 0 Reply-To: djgpp-workers AT delorie DOT com While trying to port m4-1.4.10 I have noticed that the configuration script founds a certain amount of missing functions. The replacement functions supplied by the gnulib library require some times a lot of djgpp specific adjustment that leads me to the conclusion that those changes probably will never be accepted by the gnulib maintainers. So here is an attempt to fix the issue partially in djgpp itself. Here is a small patch to implement fseeko() and ftello(). fseeko() and ftello() are both declared in stdio.h an require off_t, so I have replaced the inclusion of djtypes.h with types.h in stdio.h. If this is not wanted/correct, please let me know how to solve the issue. Regards, Juan M. Guerrero 2007-08-03 Juan Manuell Guerrero * include/stdio.h: Declaration of fseeko and ftello and inclusion of sys/types instead of sys/djtypes for off_t definition. * src/docs/kb/wc204.txi: Add fseeko and ftello reference. * src/libc/ansi/stdio/fseeko.c: Definition of fseeko. * src/libc/ansi/stdio/fseeko.txh: Function description added. * src/libc/ansi/stdio/ftello.c: Definition of ftello. * src/libc/ansi/stdio/ftello.txh: Function description added. * src/libc/ansi/stdio/makefile: Add fseeko and ftello. diff -aprNU3 djgpp.orig/include/stdio.h djgpp/include/stdio.h --- djgpp.orig/include/stdio.h 2007-08-03 19:57:48 +0000 +++ djgpp/include/stdio.h 2007-08-03 22:08:52 +0000 @@ -1,3 +1,4 @@ +/* Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 2003 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details */ @@ -15,7 +16,7 @@ extern "C" { #ifndef __dj_ENFORCE_ANSI_FREESTANDING #include -#include +#include #define _IOFBF 00001 #define _IONBF 00002 @@ -89,8 +90,10 @@ size_t fread(void *_ptr, size_t _size, s FILE * freopen(const char *_filename, const char *_mode, FILE *_stream); int fscanf(FILE *_stream, const char *_format, ...); int fseek(FILE *_stream, long _offset, int _mode); +int fseeko(FILE *_stream, off_t _offset, int _mode); int fsetpos(FILE *_stream, const fpos_t *_pos); long ftell(FILE *_stream); +off_t ftello(FILE *_stream); size_t fwrite(const void *_ptr, size_t _size, size_t _nelem, FILE *_stream); int getc(FILE *_stream); int getchar(void); diff -aprNU3 djgpp.orig/src/docs/kb/wc204.txi djgpp/src/docs/kb/wc204.txi --- djgpp.orig/src/docs/kb/wc204.txi 2005-05-11 20:06:08 +0000 +++ djgpp/src/docs/kb/wc204.txi 2007-08-03 22:08:52 +0000 @@ -1094,3 +1094,8 @@ formats for @code{"%x"} and @code{"%X"} @pindex djasm AT r{, cr4 register} @code{djasm} recognises the fourth control register, @code{cr4}. + +@findex fseeko +@findex ftello +Functions @code{fseeko} and @code{ftello} added. + diff -aprNU3 djgpp.orig/src/libc/ansi/stdio/fseeko.c djgpp/src/libc/ansi/stdio/fseeko.c --- djgpp.orig/src/libc/ansi/stdio/fseeko.c 1970-01-01 00:00:00 +0000 +++ djgpp/src/libc/ansi/stdio/fseeko.c 2007-08-03 22:08:52 +0000 @@ -0,0 +1,10 @@ +/* Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details */ +#include + +int +fseeko(FILE *f, off_t offset, int ptrname) +{ + /* As long as off_t is equal long, a cast should be enough. */ + + return fseek(f, (long)offset, ptrname); +} diff -aprNU3 djgpp.orig/src/libc/ansi/stdio/fseeko.txh djgpp/src/libc/ansi/stdio/fseeko.txh --- djgpp.orig/src/libc/ansi/stdio/fseeko.txh 1970-01-01 00:00:00 +0000 +++ djgpp/src/libc/ansi/stdio/fseeko.txh 2007-08-03 22:16:24 +0000 @@ -0,0 +1,51 @@ +@node fseeko, stdio +@findex fseeko +@subheading Syntax + +@example +#include + +int fseeko(FILE *file, off_t offset, int mode); +@end example + +@subheading Description + +The @code{fseeko} function is equivalent to the @code{fseek} +function except that the @var{offset} argument is of type off_t. +This function moves the file pointer for @var{file} according to +@var{mode}: + +@table @code + +@item SEEK_SET + +The file pointer is moved to the offset specified. + +@item SEEK_CUR + +The file pointer is moved relative to its current position. + +@item SEEK_END + +The file pointer is moved to a position @var{offset} bytes from the end +of the file. The offset is usually nonpositive in this case. + +@end table + +For further information see the documentation for the @code{fseek} function +(@pxref{fseek}). + +@subheading Return Value + +Zero if successful, nonzero if not. + +@subheading Portability + +@portability ansi, posix + +@subheading Example + +@example +fseeko(stdin, 12, SEEK_CUR); /* skip 12 bytes */ +@end example + diff -aprNU3 djgpp.orig/src/libc/ansi/stdio/ftello.c djgpp/src/libc/ansi/stdio/ftello.c --- djgpp.orig/src/libc/ansi/stdio/ftello.c 1970-01-01 00:00:00 +0000 +++ djgpp/src/libc/ansi/stdio/ftello.c 2007-08-03 22:08:52 +0000 @@ -0,0 +1,10 @@ +/* Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details */ +#include + +off_t +ftello(FILE *f) +{ + /* As long as off_t is equal long, a cast should be enough. */ + + return (off_t)ftell(f); +} diff -aprNU3 djgpp.orig/src/libc/ansi/stdio/ftello.txh djgpp/src/libc/ansi/stdio/ftello.txh --- djgpp.orig/src/libc/ansi/stdio/ftello.txh 1970-01-01 00:00:00 +0000 +++ djgpp/src/libc/ansi/stdio/ftello.txh 2007-08-03 22:16:20 +0000 @@ -0,0 +1,33 @@ +@node ftello, stdio +@findex ftello +@subheading Syntax + +@example +#include + +off_t ftello(FILE *file); +@end example + +@subheading Description +The @code{ftello} function is equivalent to the @code{ftell} +function except that the return value is of type off_t. +Returns the current file position for @code{file}. This is suitable for +a future call to @code{fseeko}. + +For further information see the documentation for the @code{ftell} function +(@pxref{ftell}). + +@subheading Return Value + +The file position, or -1 on error. + +@subheading Portability + +@portability ansi, posix + +@subheading Example + +@example +off_t p = ftello(stdout); +@end example + diff -aprNU3 djgpp.orig/src/libc/ansi/stdio/makefile djgpp/src/libc/ansi/stdio/makefile --- djgpp.orig/src/libc/ansi/stdio/makefile 2001-05-21 20:25:48 +0000 +++ djgpp/src/libc/ansi/stdio/makefile 2007-08-03 22:08:52 +0000 @@ -1,3 +1,4 @@ +# Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details # Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details # Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details # Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details @@ -25,8 +26,10 @@ SRC += freopen.c SRC += frlist.c SRC += fscanf.c SRC += fseek.c +SRC += fseeko.c SRC += fsetpos.c SRC += ftell.c +SRC += ftello.c SRC += fwalk.c SRC += fwrite.c SRC += getc.c