mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-07 06:43:00 +03:00
Update.
* libio/iofopncook.c: Adjust for renaming of structure elements. * libio/libio.h: Define cookie functions with all the names.
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
1999-06-09 Ulrich Drepper <drepper@cygnus.com>
|
1999-06-09 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* libio/iofopncook.c: Adjust for renaming of structure elements.
|
||||||
|
* libio/libio.h: Define cookie functions with all the names.
|
||||||
|
|
||||||
* pwd/fgetpwent_r.c: Set errno in the correct way.
|
* pwd/fgetpwent_r.c: Set errno in the correct way.
|
||||||
* shadow/fgetspent_r.c: Likewise.
|
* shadow/fgetspent_r.c: Likewise.
|
||||||
* pwd/fgetpwent.c: Handle long lines correctly. Little
|
* pwd/fgetpwent.c: Handle long lines correctly. Little
|
||||||
|
@@ -46,10 +46,10 @@ _IO_cookie_read (fp, buf, size)
|
|||||||
{
|
{
|
||||||
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
||||||
|
|
||||||
if (cfile->io_functions.read == NULL)
|
if (cfile->__io_functions.read == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return cfile->io_functions.read (cfile->cookie, buf, size);
|
return cfile->__io_functions.read (cfile->__cookie, buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _IO_ssize_t
|
static _IO_ssize_t
|
||||||
@@ -60,10 +60,10 @@ _IO_cookie_write (fp, buf, size)
|
|||||||
{
|
{
|
||||||
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
||||||
|
|
||||||
if (cfile->io_functions.write == NULL)
|
if (cfile->__io_functions.write == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return cfile->io_functions.write (cfile->cookie, buf, size);
|
return cfile->__io_functions.write (cfile->__cookie, buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _IO_fpos64_t
|
static _IO_fpos64_t
|
||||||
@@ -73,15 +73,11 @@ _IO_cookie_seek (fp, offset, dir)
|
|||||||
int dir;
|
int dir;
|
||||||
{
|
{
|
||||||
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
||||||
_IO_fpos64_t pos;
|
|
||||||
|
|
||||||
if (cfile->io_functions.seek == NULL)
|
if (cfile->__io_functions.seek == NULL)
|
||||||
return _IO_pos_BAD;
|
return _IO_pos_BAD;
|
||||||
|
|
||||||
pos = _IO_pos_0;
|
return cfile->__io_functions.seek (cfile->__cookie, offset, dir);
|
||||||
_IO_pos_adjust (pos, offset);
|
|
||||||
|
|
||||||
return cfile->io_functions.seek (cfile->cookie, pos, dir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -90,10 +86,10 @@ _IO_cookie_close (fp)
|
|||||||
{
|
{
|
||||||
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
|
||||||
|
|
||||||
if (cfile->io_functions.close == NULL)
|
if (cfile->__io_functions.close == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return cfile->io_functions.close (cfile->cookie);
|
return cfile->__io_functions.close (cfile->__cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -157,19 +153,19 @@ fopencookie (cookie, mode, io_functions)
|
|||||||
if (new_f == NULL)
|
if (new_f == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
#ifdef _IO_MTSAFE_IO
|
#ifdef _IO_MTSAFE_IO
|
||||||
new_f->cfile.file._lock = &new_f->lock;
|
new_f->cfile.__file._lock = &new_f->lock;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_IO_init (&new_f->cfile.file, 0);
|
_IO_init (&new_f->cfile.__file, 0);
|
||||||
_IO_JUMPS (&new_f->cfile.file) = &_IO_cookie_jumps;
|
_IO_JUMPS (&new_f->cfile.__file) = &_IO_cookie_jumps;
|
||||||
new_f->cfile.cookie = cookie;
|
new_f->cfile.__cookie = cookie;
|
||||||
new_f->cfile.io_functions = io_functions;
|
new_f->cfile.__io_functions = io_functions;
|
||||||
|
|
||||||
_IO_file_init(&new_f->cfile.file);
|
_IO_file_init(&new_f->cfile.__file);
|
||||||
|
|
||||||
new_f->cfile.file._IO_file_flags =
|
new_f->cfile.__file._IO_file_flags =
|
||||||
_IO_mask_flags (&new_f->cfile.file, read_write,
|
_IO_mask_flags (&new_f->cfile.__file, read_write,
|
||||||
_IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING);
|
_IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING);
|
||||||
|
|
||||||
return &new_f->cfile.file;
|
return &new_f->cfile.__file;
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1991, 92, 93, 94, 95, 97, 98 Free Software Foundation, Inc.
|
/* Copyright (C) 1991,92,93,94,95,97,98,99 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU IO Library.
|
This file is part of the GNU IO Library.
|
||||||
Written by Per Bothner <bothner@cygnus.com>.
|
Written by Per Bothner <bothner@cygnus.com>.
|
||||||
|
|
||||||
@@ -255,23 +255,58 @@ extern _IO_FILE *_IO_stderr;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Functions to do I/O and file management for a stream. */
|
||||||
|
|
||||||
|
/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
|
||||||
|
Return number of bytes read. */
|
||||||
|
typedef __ssize_t __io_read_fn __PMT ((__ptr_t __cookie, char *__buf,
|
||||||
|
size_t __nbytes));
|
||||||
|
|
||||||
|
/* Write N bytes pointed to by BUF to COOKIE. Write all N bytes
|
||||||
|
unless there is an error. Return number of bytes written, or -1 if
|
||||||
|
there is an error without writing anything. If the file has been
|
||||||
|
opened for append (__mode.__append set), then set the file pointer
|
||||||
|
to the end of the file and then do the write; if not, just write at
|
||||||
|
the current file pointer. */
|
||||||
|
typedef __ssize_t __io_write_fn __PMT ((__ptr_t __cookie, __const char *__buf,
|
||||||
|
size_t __n));
|
||||||
|
|
||||||
|
/* Move COOKIE's file position to *POS bytes from the
|
||||||
|
beginning of the file (if W is SEEK_SET),
|
||||||
|
the current position (if W is SEEK_CUR),
|
||||||
|
or the end of the file (if W is SEEK_END).
|
||||||
|
Set *POS to the new file position.
|
||||||
|
Returns zero if successful, nonzero if not. */
|
||||||
|
typedef int __io_seek_fn __PMT ((__ptr_t __cookie, _IO_off_t __pos, int __w));
|
||||||
|
|
||||||
|
/* Close COOKIE. */
|
||||||
|
typedef int __io_close_fn __PMT ((__ptr_t __cookie));
|
||||||
|
|
||||||
|
|
||||||
#ifdef _GNU_SOURCE
|
#ifdef _GNU_SOURCE
|
||||||
/* Define the user-visible type, with user-friendly member names. */
|
/* User-visible names for the above. */
|
||||||
|
typedef __io_read_fn cookie_read_function_t;
|
||||||
|
typedef __io_write_fn cookie_write_function_t;
|
||||||
|
typedef __io_seek_fn cookie_seek_function_t;
|
||||||
|
typedef __io_close_fn cookie_close_function_t;
|
||||||
|
|
||||||
|
/* The structure with the cookie function pointers. */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
_IO_ssize_t (*read) __PMT ((struct _IO_FILE *, void *, _IO_ssize_t));
|
__io_read_fn *read; /* Read bytes. */
|
||||||
_IO_ssize_t (*write) __PMT ((struct _IO_FILE *, const void *, _IO_ssize_t));
|
__io_write_fn *write; /* Write bytes. */
|
||||||
_IO_fpos_t (*seek) __PMT ((struct _IO_FILE *, _IO_off_t, int));
|
__io_seek_fn *seek; /* Seek/tell file position. */
|
||||||
int (*close) __PMT ((struct _IO_FILE *));
|
__io_close_fn *close; /* Close file. */
|
||||||
} _IO_cookie_io_functions_t;
|
} _IO_cookie_io_functions_t;
|
||||||
|
typedef _IO_cookie_io_functions_t cookie_io_functions_t;
|
||||||
|
|
||||||
/* Special file type for fopencookie function. */
|
/* Special file type for fopencookie function. */
|
||||||
struct _IO_cookie_file
|
struct _IO_cookie_file
|
||||||
{
|
{
|
||||||
struct _IO_FILE file;
|
struct _IO_FILE __file;
|
||||||
const void *vtable;
|
const void *__vtable;
|
||||||
void *cookie;
|
void *__cookie;
|
||||||
_IO_cookie_io_functions_t io_functions;
|
_IO_cookie_io_functions_t __io_functions;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user