From b4f095585f1e139cba8d2e078c807e384b3e102d Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 1 May 2007 23:03:36 +0000 Subject: [PATCH] * libc/stdio64/local64.h: Delete, move contents to... * libc/stdio/local.h: ...here. * libc/stdio64/fdopen64.c: Update includes. * libc/stdio64/fopen64.c: Likewise. * libc/stdio64/freopen64.c: Likewise. * libc/stdio64/fseeko64.c: Likewise. * libc/stdio64/ftello64.c: Likewise. * libc/stdio/findfp.c (std) [__LARGE64_FILES]: Open stdin, stdout, and stderr with 64-bit offset. * libc/stdio/fseek.c (_fseek_r): Avoid compile warning. * libc/stdio/makebuf.c (__smakebuf_r): Likewise. * libc/stdio/mktemp.c (_gettemp): Likewise. --- newlib/ChangeLog | 17 ++++++++++++++++- newlib/libc/stdio/findfp.c | 24 +++++++++++++++--------- newlib/libc/stdio/fseek.c | 8 ++++++-- newlib/libc/stdio/local.h | 8 ++++++++ newlib/libc/stdio/makebuf.c | 4 ++++ newlib/libc/stdio/mktemp.c | 6 +++++- newlib/libc/stdio64/fdopen64.c | 2 +- newlib/libc/stdio64/fopen64.c | 8 ++++---- newlib/libc/stdio64/freopen64.c | 6 +++--- newlib/libc/stdio64/fseeko64.c | 12 ++++++------ newlib/libc/stdio64/ftello64.c | 4 ++-- newlib/libc/stdio64/local64.h | 16 ---------------- 12 files changed, 70 insertions(+), 45 deletions(-) delete mode 100644 newlib/libc/stdio64/local64.h diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 3c172266d..0d7930fcc 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,18 @@ +2007-05-01 Eric Blake + + * libc/stdio64/local64.h: Delete, move contents to... + * libc/stdio/local.h: ...here. + * libc/stdio64/fdopen64.c: Update includes. + * libc/stdio64/fopen64.c: Likewise. + * libc/stdio64/freopen64.c: Likewise. + * libc/stdio64/fseeko64.c: Likewise. + * libc/stdio64/ftello64.c: Likewise. + * libc/stdio/findfp.c (std) [__LARGE64_FILES]: Open stdin, stdout, + and stderr with 64-bit offset. + * libc/stdio/fseek.c (_fseek_r): Avoid compile warning. + * libc/stdio/makebuf.c (__smakebuf_r): Likewise. + * libc/stdio/mktemp.c (_gettemp): Likewise. + 2007-05-01 Cary R. yahoo.com> * libm/math/e_pow.c: Fix to be consistent with glibc with regards @@ -66,7 +81,7 @@ 2007-04-25 Patrick Mansfield - * libm/machine/spu/headers/feholdexcept.h: Use *envp not env so + * libm/machine/spu/headers/feholdexcept.h: Use *envp not env so we clear the proper bits in the fpscr, and don't set some random ones. 2007-04-24 Eric Blake diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c index ac1354619..43f02ba5f 100644 --- a/newlib/libc/stdio/findfp.c +++ b/newlib/libc/stdio/findfp.c @@ -52,7 +52,13 @@ _DEFUN(std, (ptr, flags, file, data), ptr->_lbfsize = 0; ptr->_cookie = ptr; ptr->_read = __sread; +#ifndef __LARGE64_FILES ptr->_write = __swrite; +#else /* __LARGE64_FILES */ + ptr->_write = __swrite64; + ptr->_seek64 = __sseek64; + ptr->_flags |= __SL64; +#endif /* __LARGE64_FILES */ ptr->_seek = __sseek; ptr->_close = __sclose; #if !defined(__SINGLE_THREAD__) && !defined(_REENT_SMALL) @@ -100,7 +106,7 @@ _DEFUN(__sfp, (d), int n; struct _glue *g; - __sfp_lock_acquire (); + __sfp_lock_acquire (); if (!_GLOBAL_REENT->__sdidinit) __sinit (_GLOBAL_REENT); @@ -113,7 +119,7 @@ _DEFUN(__sfp, (d), (g->_next = __sfmoreglue (d, NDYNAMIC)) == NULL) break; } - __sfp_lock_release (); + __sfp_lock_release (); d->_errno = ENOMEM; return NULL; @@ -123,7 +129,7 @@ found: #ifndef __SINGLE_THREAD__ __lock_init_recursive (fp->_lock); #endif - __sfp_lock_release (); + __sfp_lock_release (); fp->_p = NULL; /* no current pointer */ fp->_w = 0; /* nothing to read or write */ @@ -198,7 +204,7 @@ _DEFUN(__sinit, (s), std (s->_stdin, __SRD, 0, s); - /* on platforms that have true file system I/O, we can verify whether stdout + /* on platforms that have true file system I/O, we can verify whether stdout is an interactive terminal or not. For all other platforms, we will default to line buffered mode here. */ #ifdef HAVE_FCNTL @@ -220,25 +226,25 @@ __LOCK_INIT_RECURSIVE(static, __sinit_lock); _VOID _DEFUN_VOID(__sfp_lock_acquire) { - __lock_acquire_recursive (__sfp_lock); + __lock_acquire_recursive (__sfp_lock); } _VOID _DEFUN_VOID(__sfp_lock_release) { - __lock_release_recursive (__sfp_lock); + __lock_release_recursive (__sfp_lock); } _VOID _DEFUN_VOID(__sinit_lock_acquire) { - __lock_acquire_recursive (__sinit_lock); + __lock_acquire_recursive (__sinit_lock); } _VOID _DEFUN_VOID(__sinit_lock_release) { - __lock_release_recursive (__sinit_lock); + __lock_release_recursive (__sinit_lock); } /* Walkable file locking routine. */ @@ -264,7 +270,7 @@ _DEFUN(__fp_unlock, (ptr), _VOID _DEFUN_VOID(__fp_lock_all) { - __sfp_lock_acquire (); + __sfp_lock_acquire (); _CAST_VOID _fwalk (_REENT, __fp_lock); } diff --git a/newlib/libc/stdio/fseek.c b/newlib/libc/stdio/fseek.c index 9ba9fac36..e1670e1a1 100644 --- a/newlib/libc/stdio/fseek.c +++ b/newlib/libc/stdio/fseek.c @@ -32,9 +32,9 @@ ANSI_SYNOPSIS #include int fseek(FILE *<[fp]>, long <[offset]>, int <[whence]>) int fseeko(FILE *<[fp]>, off_t <[offset]>, int <[whence]>) - int _fseek_r(struct _reent *<[ptr]>, FILE *<[fp]>, + int _fseek_r(struct _reent *<[ptr]>, FILE *<[fp]>, long <[offset]>, int <[whence]>) - int _fseeko_r(struct _reent *<[ptr]>, FILE *<[fp]>, + int _fseeko_r(struct _reent *<[ptr]>, FILE *<[fp]>, off_t <[offset]>, int <[whence]>) TRAD_SYNOPSIS @@ -126,7 +126,11 @@ _DEFUN(_fseek_r, (ptr, fp, offset, whence), _fpos_t target; _fpos_t curoff = 0; size_t n; +#ifdef __USE_INTERNAL_STAT64 + struct stat64 st; +#else struct stat st; +#endif int havepos; /* Make sure stdio is set up. */ diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h index 4263a9de6..0dba774ae 100644 --- a/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h @@ -46,6 +46,14 @@ extern int _EXFUN(_fwalk,(struct _reent *, int (*)(FILE *))); extern int _EXFUN(_fwalk_reent,(struct _reent *, int (*)(struct _reent *, FILE *))); struct _glue * _EXFUN(__sfmoreglue,(struct _reent *,int n)); +#ifdef __LARGE64_FILES +extern _fpos64_t _EXFUN(__sseek64,(void *, _fpos64_t, int)); +extern _fpos64_t _EXFUN(__sseek64_r,(struct _reent *, void *, _fpos64_t, int)); +extern _READ_WRITE_RETURN_TYPE _EXFUN(__swrite64,(void *, char const *, int)); +extern _READ_WRITE_RETURN_TYPE _EXFUN(__swrite64_r,(struct _reent *, void *, + char const *, int)); +#endif + /* Called by the main entry point fns to ensure stdio has been initialized. */ #ifdef _REENT_SMALL diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c index 340ea28c5..d13f162b2 100644 --- a/newlib/libc/stdio/makebuf.c +++ b/newlib/libc/stdio/makebuf.c @@ -41,7 +41,11 @@ _DEFUN(__smakebuf_r, (ptr, fp), { register size_t size, couldbetty; register _PTR p; +#ifdef __USE_INTERNAL_STAT64 + struct stat64 st; +#else struct stat st; +#endif if (fp->_flags & __SNBF) { diff --git a/newlib/libc/stdio/mktemp.c b/newlib/libc/stdio/mktemp.c index 59e7a5c66..e00228e15 100644 --- a/newlib/libc/stdio/mktemp.c +++ b/newlib/libc/stdio/mktemp.c @@ -60,7 +60,7 @@ TRAD_SYNOPSIS DESCRIPTION <> and <> attempt to generate a file name that is not -yet in use for any existing file. <> creates the file and +yet in use for any existing file. <> creates the file and opens it for reading and writing; <> simply generates the file name. You supply a simple pattern for the generated file name, as the string @@ -108,7 +108,11 @@ _DEFUN(_gettemp, (ptr, path, doopen), register int *doopen) { register char *start, *trv; +#ifdef __USE_INTERNAL_STAT64 + struct stat64 sbuf; +#else struct stat sbuf; +#endif unsigned int pid; pid = _getpid_r (ptr); diff --git a/newlib/libc/stdio64/fdopen64.c b/newlib/libc/stdio64/fdopen64.c index aa5a9ce56..4f159e813 100644 --- a/newlib/libc/stdio64/fdopen64.c +++ b/newlib/libc/stdio64/fdopen64.c @@ -28,7 +28,7 @@ File pointer or <>, as for <>. #include #include -#include "local64.h" +#include "local.h" #include <_syslist.h> #include diff --git a/newlib/libc/stdio64/fopen64.c b/newlib/libc/stdio64/fopen64.c index 61c4e4f45..aa6775116 100644 --- a/newlib/libc/stdio64/fopen64.c +++ b/newlib/libc/stdio64/fopen64.c @@ -27,7 +27,7 @@ INDEX ANSI_SYNOPSIS #include FILE *fopen64(const char *<[file]>, const char *<[mode]>); - FILE *_fopen64_r(void *<[reent]>, + FILE *_fopen64_r(void *<[reent]>, const char *<[file]>, const char *<[mode]>); TRAD_SYNOPSIS @@ -66,7 +66,7 @@ static char sccsid[] = "%W% (Berkeley) %G%"; #include #include -#include "local64.h" +#include "local.h" #ifdef __CYGWIN__ #include #endif @@ -91,12 +91,12 @@ _DEFUN (_fopen64_r, (ptr, file, mode), if ((f = _open64_r (ptr, file, oflags, 0666)) < 0) { - __sfp_lock_acquire (); + __sfp_lock_acquire (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif - __sfp_lock_release (); + __sfp_lock_release (); return NULL; } diff --git a/newlib/libc/stdio64/freopen64.c b/newlib/libc/stdio64/freopen64.c index 4cc717261..10a45e4ed 100644 --- a/newlib/libc/stdio64/freopen64.c +++ b/newlib/libc/stdio64/freopen64.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 2006 The Regents of the University of California. + * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted @@ -28,7 +28,7 @@ ANSI_SYNOPSIS #include FILE *freopen64(const char *<[file]>, const char *<[mode]>, FILE *<[fp]>); - FILE *_freopen64_r(struct _reent *<[ptr]>, const char *<[file]>, + FILE *_freopen64_r(struct _reent *<[ptr]>, const char *<[file]>, const char *<[mode]>, FILE *<[fp]>); TRAD_SYNOPSIS @@ -78,7 +78,7 @@ Supporting OS subroutines required: <>, <>, <>, #include #include #include -#include "local64.h" +#include "local.h" /* * Re-direct an existing, open (probably) file to some other file. diff --git a/newlib/libc/stdio64/fseeko64.c b/newlib/libc/stdio64/fseeko64.c index 15f285f40..33e22dcc5 100644 --- a/newlib/libc/stdio64/fseeko64.c +++ b/newlib/libc/stdio64/fseeko64.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 2007 The Regents of the University of California. + * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted @@ -27,7 +27,7 @@ INDEX ANSI_SYNOPSIS #include int fseeko64(FILE *<[fp]>, _off64_t <[offset]>, int <[whence]>) - int _fseeko64_r (struct _reent *<[ptr]>, FILE *<[fp]>, + int _fseeko64_r (struct _reent *<[ptr]>, FILE *<[fp]>, _off64_t <[offset]>, int <[whence]>) TRAD_SYNOPSIS #include @@ -49,8 +49,8 @@ of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to set the position for the file identified by -<[fp]> that was opened via <>. The value of <[offset]> determines -the new position, in one of three ways selected by the value of <[whence]> +<[fp]> that was opened via <>. The value of <[offset]> determines +the new position, in one of three ways selected by the value of <[whence]> (defined as macros in `<>'): <>---<[offset]> is the absolute file position (an offset @@ -69,7 +69,7 @@ RETURNS <> returns <<0>> when successful. On failure, the result is <>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support -repositioning or wasn't opened via <>) or <> +repositioning or wasn't opened via <>) or <> (invalid file position). PORTABILITY @@ -86,7 +86,7 @@ Supporting OS subroutines required: <>, <>, <>, #include #include #include -#include "local64.h" +#include "local.h" #define POS_ERR (-(_fpos64_t)1) diff --git a/newlib/libc/stdio64/ftello64.c b/newlib/libc/stdio64/ftello64.c index 2a8d30925..cad175b87 100644 --- a/newlib/libc/stdio64/ftello64.c +++ b/newlib/libc/stdio64/ftello64.c @@ -60,7 +60,7 @@ An error occurs if the <[fp]> was not opened via <>. RETURNS <> returns the file position, if possible. If it cannot do this, it returns <<-1>>. Failure occurs on streams that do not support -positioning or not opened via <>; the global <> indicates +positioning or not opened via <>; the global <> indicates this condition with the value <>. PORTABILITY @@ -80,7 +80,7 @@ static char sccsid[] = "%W% (Berkeley) %G%"; #include #include -#include "local64.h" +#include "local.h" #ifdef __LARGE64_FILES diff --git a/newlib/libc/stdio64/local64.h b/newlib/libc/stdio64/local64.h deleted file mode 100644 index b86c95d03..000000000 --- a/newlib/libc/stdio64/local64.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Information local to this implementation of stdio64, - * in particular, macros and private variables. - */ - -#include "local.h" - -#ifdef __LARGE64_FILES -extern _fpos64_t _EXFUN(__sseek64,(void *, _fpos64_t, int)); -extern _fpos64_t _EXFUN(__sseek64_r,(struct _reent *, void *, _fpos64_t, int)); -extern _fpos64_t _EXFUN(__sseek64_error,(void *, _fpos64_t, int)); -extern _READ_WRITE_RETURN_TYPE _EXFUN(__swrite64,(void *, char const *, int)); -extern _READ_WRITE_RETURN_TYPE _EXFUN(__swrite64_r,(struct _reent *, void *, - char const *, int)); -#endif -