summary refs log tree commit diff
path: root/libio/iofopen64.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-01-07 09:33:53 +0000
committerUlrich Drepper <drepper@redhat.com>2002-01-07 09:33:53 +0000
commit0469311e8702371ee6270ec0ccd05e85e5138483 (patch)
treeefbf96c9796b587b09119d832df76a1a23ccd186 /libio/iofopen64.c
parent463918b5f2323285b89bde42c732b83f63eb4881 (diff)
downloadglibc-0469311e8702371ee6270ec0ccd05e85e5138483.tar.gz
glibc-0469311e8702371ee6270ec0ccd05e85e5138483.tar.xz
glibc-0469311e8702371ee6270ec0ccd05e85e5138483.zip
Update.
2002-01-07  Ulrich Drepper  <drepper@redhat.com>

	* libio/fileops.c (_IO_file_underflow_mmap): New function.
	(_IO_file_close_mmap): New function.
	(_IO_file_jumps_mmap): New variable.
	* libio/wfileops.c (_IO_wfile_underflow): Reset read pointer before
	trying to convert rest of byte buffer.
	(_IO_wfile_underflow_mmap): New function.
	(_IO_wfile_jumps_mmap): New variable.
	* libio/iofopen.c (__fopen_maybe_mmap): New function.
	(__fopen_internal): New function.  Split out from _IO_new_fopen.
	(_IO_new_fopen): Call __fopen_internal.
	* libio/iofopen64.c: Just call __fopen_internal.
	* libio/iofdopen.c: Call __fopen_maybe_mmap before returning
	successfully.
	* libio/iolibio.h: Declare __fopen_internal and __fopen_maybe_mmap.
	* libio/libioP.h: Declare _IO_file_jumps_mmap, _IO_wfile_jumps_mmap,
	_IO_file_close_mmap.

	* sysdeps/gnu/_G_config.h: Define _G_MMAP64.
	* sysdeps/unix/sysv/linux/cris/_G_config.h: Likewise.

	* stdio-common/Makefile (tests): Add tst-rndseek.
	* stdio-common/tst-rndseek.c: New file.
Diffstat (limited to 'libio/iofopen64.c')
-rw-r--r--libio/iofopen64.c28
1 files changed, 2 insertions, 26 deletions
diff --git a/libio/iofopen64.c b/libio/iofopen64.c
index d7f97478f6..69e62b8cda 100644
--- a/libio/iofopen64.c
+++ b/libio/iofopen64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -36,31 +36,7 @@ _IO_fopen64 (filename, mode)
      const char *mode;
 {
 #ifdef _G_OPEN64
-  struct locked_FILE
-  {
-    struct _IO_FILE_plus fp;
-#ifdef _IO_MTSAFE_IO
-    _IO_lock_t lock;
-#endif
-    struct _IO_wide_data wd;
-  } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE));
-
-  if (new_f == NULL)
-    return NULL;
-#ifdef _IO_MTSAFE_IO
-  new_f->fp.file._lock = &new_f->lock;
-#endif
-  _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps);
-  _IO_JUMPS (&new_f->fp) = &_IO_file_jumps;
-  _IO_file_init (&new_f->fp);
-#if  !_IO_UNIFIED_JUMPTABLES
-  new_f->fp.vtable = NULL;
-#endif
-  if (_IO_file_fopen ((_IO_FILE *) new_f, filename, mode, 0) != NULL)
-    return (_IO_FILE *) &new_f->fp;
-  _IO_un_link (&new_f->fp);
-  free (new_f);
-  return NULL;
+  return __fopen_internal (filename, mode, 0);
 #else
   __set_errno (ENOSYS);
   return NULL;