Mail Archives: djgpp-workers/2007/08/03/18:00:13
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-workers-bounces using -f
|
X-Authenticated: | #27081556
|
X-Provags-ID: | V01U2FsdGVkX19+dbYrb8l+SXKuoDbSSBzU+ekBd1d4mUvPuGGmxT
|
| +MogxJvt5tyRPl
|
From: | Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
|
To: | djgpp-workers AT delorie DOT com
|
Subject: | Re: fseeko and ftello
|
Date: | Sat, 4 Aug 2007 00:03:32 +0200
|
User-Agent: | KMail/1.9.5
|
MIME-Version: | 1.0
|
Message-Id: | <200708040003.32896.juan.guerrero@gmx.de>
|
X-Y-GMX-Trusted: | 0
|
Reply-To: | djgpp-workers AT delorie DOT com
|
>> 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.
>
> Nope, what you want to do is add a __DJ_off_t chunk to stdio much like
> there already is for __DJ_size_t. As per ISO specs, headers can't
> include each other, so we use things like djtypes.h to stay properly
> namespace-clean.
OK. I hope this time the thing is a lttle bit better.
2007-08-03 Juan Manuell Guerrero <juan DOT guerrero AT gmx DOT de>
* include/stdio.h: Declaration of fseeko and ftello and
__DJ_off_t definition added.
* 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:55:46 +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 */
@@ -41,6 +42,11 @@ __DJ_va_list
#define _VA_LIST
#endif
+#ifndef _OFF_T
+__DJ_off_t
+#define _OFF_T
+#endif
+
#ifndef _SIZE_T
__DJ_size_t
#define _SIZE_T
@@ -89,8 +95,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:51:12 +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:51:12 +0000
@@ -0,0 +1,10 @@
+/* Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details */
+#include <stdio.h>
+
+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:51:12 +0000
@@ -0,0 +1,51 @@
+@node fseeko, stdio
+@findex fseeko
+@subheading Syntax
+
+@example
+#include <stdio.h>
+
+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:51:12 +0000
@@ -0,0 +1,10 @@
+/* Copyright (C) 2007 DJ Delorie, see COPYING.DJ for details */
+#include <stdio.h>
+
+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:51:12 +0000
@@ -0,0 +1,33 @@
+@node ftello, stdio
+@findex ftello
+@subheading Syntax
+
+@example
+#include <stdio.h>
+
+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:51:12 +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
- Raw text -