mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 04:03:35 +08:00
ba1ffaa1c6
Thu Oct 31 00:01:39 1996 Ulrich Drepper <drepper@cygnus.com> * signal/Makefile (routines): Add sigwait. * signal/signal.h: Add prototype for sigwait. * sysdeps/posix/sigwait.c: New file. Implementation of sigwait function from POSIX.1c. * sysdeps/stub/sigwait.c: New file. Stub version of sigwait. Wed Oct 30 02:01:17 1996 Richard Henderson <rth@tamu.edu> * sunrpc/xdr_float.c (xdr_float): Handle sizeof(float)!=sizeof(long), but don't bother going farther than sizeof(float)==sizeof(int). (xdr_double): Handle little-endian machines! Handle sizeof(double) != 2*sizeof(long), though again don't bother with more than int. Thu Oct 29 16:09:42 1996 Craig Metz <cmetz@inner.net> * sysdeps/posix/getaddrinfo.c: Use buffer limits for inet_ntop function. Tue Oct 29 12:37:22 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules: Create symbolic links for linking in $(libdir). (make-link): Use absolute path for destination if this is not in the same directory. * elf/rtld.c (dl_main): When verifying don't check the name of the dynamic linker. * shlib-versions: Change entries for Hurd specific libs from *-*-gnu* to *-*-gnu?* so that i586-pc-linux-gnu does not match these entries. * assert/assert.h: Reformat copyright. Change reference to ANSI into reference to ISO C. * ctype/ctype.h: Likewise. * errno.h: Likewise. * limits.h: Likewise. * math/math.h: Likewise. * setjmp/setjmp.h: Likewise. * stdio/stdio.h: Likewise. * libio/stdio.h: Likewise. * stdlib/stdlib.h: Likewise. * string/string.h: Likewise. * time/time.h: Likewise. * string/argz.h: Use __const is definitions. * elf/dlfcn.h: Use __const and __P. Reformat copyright. * misc/err.h: Likewise. * wctype/wctype.h (wctrans_t): Use __const instead of const. * Makeconfig ($(common-objpfx)soversions.mk): Generate list of sonames for versioned libraries. * Makefile: Remove code to generate libc-version.h. Generate gnu/lib-names.h with info from soversions.mk. * features.h: Define __GLIBC__ and __GLIBC_MINOR__. * dirent/tst-seekdir.c: Initialize save3. * grp/testgrp.c: Initialize my_group. * grp/fgetgrent_r.c: Change interface to follow POSIX.1c. * grp/grp.h: Likewise. * nss/getXXbyYY.c: Likewise. * nss/getXXbyYY_r.c: Likewise. * nss/getXXent.c: Likewise. * nss/getXXent_r.c: Likewise. * pwd/fgetpwent_r.c: Likewise. * pwd/pwd.h: Likewise. * shadow/fgetspent_r.c: Likewise. * shadow/sgetspent.c: Likewise. * shadow/sgetspent_r.c: Likewise. * grp/fgetgrent.c: Adapt for change in interface of fgetgrent_r. * pwd/fgetpwent.c: Likewise, for fgetpwent_r.c. * shadow/fgetspent.c: Likewise, for fgetpwent_r.c. * resolv/netdb.h: Adapt prototypes for reentrant functions to follow POSIX.1c. * sunrpc/rpc/netdb.h: Likewise, * shadow/shadow.h: Likewise. * inet/getnetgrent_r.c: Follow change in pwd/grp function interface. * sysdeps/unix/getlogin_r.c: Return ERANGE when buffer is too small. * inet/herrno.c: Don't define __h_errno. Only h_errno otherwise the ELF aliasing creates strange situations. * sysdeps/unix/sysv/linux/errnos.H: Define __set_errno as inline function. * sysdeps/unix/sysv/linux/i386/sysdep.S: Don't define __errno. * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. * libio/libio.h: Don't declare _IO_flockfile and _IO_funlockfile weak. * locale/programs/charmap.c: Add casts to prevent warnings. * locale/programs/linereader.h: Likewise. * locale/programs/ld-collate.c: Likewise. * locale/programs/stringtrans.c: Likewise. Change types for various variables to prevent warnings. * locale/programs/ld-ctype.c: Likewise. * locale/programs/linereader.h (lr_ungetc): Likewise. * locale/programs/charset.h (struct charset): Use `unsigned int' as type for width_default. * posix/regex.c: Change type of `this_reg' variables. * stdio-common/Makefile: Use -Wno-format for tstdiomisc.c. * stdio-common/bug5.c: De-ANSI-fy. Use correct types for variables. * stdio-common/printf_fp.c: Initialize to_shift. * stdio-common/test_rdwr.c: Add cast. * stdio-common/vfprintf.c: Add casts and use correct types to prevent warnings. * stdio-common/vfscanf.c: Initialize str and strptr. * sysdeps/libm-ieee754/e_jnf.c: Use correct types to prevent warnings. * sysdeps/libm-ieee754/e_pow.c: Likewise. * sysdeps/libm-ieee754/e_powf.c: Likewise. * sysdeps/libm-ieee754/e_rem_pio2f.c: Likewise. * time/test-tz.c: Likewise. * manual/creature.texi: Document _REENTRANT and _THREAD_SAFE. * manual/libc.texinfo: Prevent makeinfo failure by avoiding libc.cp index. This must be fixed. * manual/nss.texi: Adapt for correct POSIX.1c interface of reentrant functions. * manual/users.texi: Document netgroup functions. * po/es.po: Updated. * po/fr.po: Updated. * posix/fnmatch.c: Change to match libit version. * posix/unistd.h: Change prototype for ttyname_r to match POSIX.1c. * sysdep/posix/ttyname_r.c: Likewise. * stdlib/atexit.h (__new_exitfn): Add internal locking. * stdlib/exit.c: De-ANSI-fy. Handle new ef_us value for flavor. * stdlib/exit.h: De-ANSI-fy. Define new ef_us value for flavor. * stdlib/random.c (__srandom): Add internal locking. (__initstate): Likewise. (__setstate): Likewise. (__random): Likewise. Mon Oct 28 22:28:37 1996 NIIBE Yutaka <gniibe@mri.co.jp> * sysdeps/generic/crypt-entry.c (crypt_r): Use __set_errno. (crypt): Likewise. * resolv/gethnamaddr.c (gethostbyname2): Likewise. * sysdeps/generic/uname.c: Likewise. * sysdeps/posix/rename.c: Likewise. * sysdeps/stub/setrlimit.c: Likewise. * nss/nss_db/db-netgrp.c (_nss_db_setnetgrent): Fix typo. Sun Oct 27 11:12:50 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * locale/programs/ld-collate.c (collate_order_elem): Fix format string. (collate_element_to): Cast field width argument to `int' for format string. (collate_symbol): Likewise. (collate_order_elem): Likewise. (collate_weight_bsymbol): Likewise. (collate_simple_weight): Likewise. * locale/programs/ld-time.c (STRARR_ELEM): Fix format string. * locale/programs/ld-ctype.c (ctype_class_newP): Add missing argument for format string. (ctype_map_newP): Likewise. (set_class_defaults): Fix format string. * locale/programs/localedef.c (construct_output_path): Putting an explicit \0 into the format string does not work, use %c. Sat Oct 26 20:38:36 1996 Richard Henderson <rth@tamu.edu> * Makerules: Install all shared libraries in $(slibdir). * login/Makefile: Build libutil.so in others pass after libc.so is created. * misc/mntent.h: Include <paths.h> for _PATH_MNTTAB & _PATH_MOUNTED. * string/stratcliff.c: Allocate 3 pages instead of one, then use mprotect so that we know that the adjacent pages are inaccessible. * resource/sys/resource.h: Move all structures and enums to ... * sysdeps/generic/resourcebits.h: ... here ... * sysdeps/unix/bsd/sun/sunos4/resourcebits.h: ... and here. * sysdeps/unix/sysv/linux/alpha/resourcebits.h: Remove. * sysdeps/unix/sysv/linux/i386/resourcebits.h: Remove. * sysdeps/unix/sysv/linux/m68k/resourcebits.h: Remove. * sysdeps/unix/sysv/linux/mips/resourcebits.h: Remove. * sysdeps/unix/sysv/linux/resourcebits.h: New file. Use kernel header for RLIMIT_* definitions. The members of struct rlimit are longs. Thu Oct 24 17:43:34 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * MakeTAGS (sysdep-dirs): Fix typo. Wed Oct 23 03:45:22 1996 Ulrich Drepper <drepper@cygnus.com> * Makefile (headers): Don't mention libc-version.h. (install-others): ...but here. * time/strptime.c: Recognize %s, %u, %g, and %G format. nothing is found. This guarantees all subsequent calls behave * sysdeps/unix/sysv/linux/syscalls.list: Change function name for * io/getwd.c (getwd) [! PATH_MAX]: Don't assume that the user's buffer is any longer than the amount necessary to hold the filename; the Hurd getcwd uses the *entire* contents of the buffer, however long it is specified to be. * posix/getconf.c: De-ANSI-fy. Recognize POSIX.2 constant names. since these do not depend on the platform.
266 lines
8.6 KiB
C
266 lines
8.6 KiB
C
/* This is part of the iostream/stdio library, providing -*- C -*- I/O.
|
|
Define ANSI C stdio on top of C++ iostreams.
|
|
Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
/*
|
|
* ISO C Standard: 4.9 INPUT/OUTPUT <stdio.h>
|
|
*/
|
|
|
|
#ifndef _STDIO_H
|
|
#define _STDIO_H
|
|
#define _STDIO_USES_IOSTREAM
|
|
|
|
#include <libio.h>
|
|
|
|
#ifndef NULL
|
|
#ifdef __cplusplus
|
|
#define NULL 0
|
|
#else
|
|
#define NULL (void*)0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EOF
|
|
#define EOF (-1)
|
|
#endif
|
|
#ifndef BUFSIZ
|
|
#define BUFSIZ _IO_BUFSIZ
|
|
#endif
|
|
|
|
#define _IOFBF 0 /* Fully buffered. */
|
|
#define _IOLBF 1 /* Line buffered. */
|
|
#define _IONBF 2 /* No buffering. */
|
|
|
|
#define SEEK_SET 0
|
|
#define SEEK_CUR 1
|
|
#define SEEK_END 2
|
|
|
|
/* define size_t. Crud in case <sys/types.h> has defined it. */
|
|
#if !defined(_SIZE_T) && !defined(_T_SIZE_) && !defined(_T_SIZE)
|
|
#if !defined(__SIZE_T) && !defined(_SIZE_T_) && !defined(___int_size_t_h)
|
|
#if !defined(_GCC_SIZE_T) && !defined(_SIZET_)
|
|
#define _SIZE_T
|
|
#define _T_SIZE_
|
|
#define _T_SIZE
|
|
#define __SIZE_T
|
|
#define _SIZE_T_
|
|
#define ___int_size_t_h
|
|
#define _GCC_SIZE_T
|
|
#define _SIZET_
|
|
typedef _IO_size_t size_t;
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
typedef struct _IO_FILE FILE;
|
|
typedef _IO_fpos_t fpos_t;
|
|
|
|
#include <stdio_lim.h>
|
|
|
|
#define P_tmpdir "/tmp"
|
|
|
|
/* For use by debuggers. These are linked in if printf or fprintf are used. */
|
|
extern FILE *stdin, *stdout, *stderr; /* TODO */
|
|
|
|
#define stdin _IO_stdin
|
|
#define stdout _IO_stdout
|
|
#define stderr _IO_stderr
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef __P
|
|
#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
|
|
#define __P(args) args
|
|
#else
|
|
#define __P(args) ()
|
|
#endif
|
|
#endif /*!__P*/
|
|
|
|
extern void clearerr __P ((FILE*));
|
|
extern int fclose __P ((FILE*));
|
|
extern int feof __P ((FILE*));
|
|
extern int ferror __P ((FILE*));
|
|
extern int fflush __P ((FILE*));
|
|
extern int fgetc __P ((FILE *));
|
|
extern int fgetpos __P ((FILE* fp, fpos_t *pos));
|
|
extern char* fgets __P ((char*, int, FILE*));
|
|
extern FILE* fopen __P ((__const char*, __const char*));
|
|
extern FILE* fopencookie __P ((void *cookie, __const char *mode,
|
|
_IO_cookie_io_functions_t io_functions));
|
|
extern int fprintf __P ((FILE*, __const char* format, ...));
|
|
extern int fputc __P ((int, FILE*));
|
|
extern int fputs __P ((__const char *str, FILE *fp));
|
|
extern size_t fread __P ((void*, size_t, size_t, FILE*));
|
|
extern FILE* freopen __P ((__const char*, __const char*, FILE*));
|
|
extern int fscanf __P ((FILE *fp, __const char* format, ...));
|
|
extern int fseek __P ((FILE* fp, long int offset, int whence));
|
|
extern int fsetpos __P ((FILE* fp, __const fpos_t *pos));
|
|
extern long int ftell __P ((FILE* fp));
|
|
extern size_t fwrite __P ((__const void*, size_t, size_t, FILE*));
|
|
extern int getc __P ((FILE *));
|
|
extern int getchar __P ((void));
|
|
extern char* gets __P ((char*));
|
|
extern void perror __P ((__const char *));
|
|
extern int printf __P ((__const char* format, ...));
|
|
extern int putc __P ((int, FILE *));
|
|
extern int putchar __P ((int));
|
|
extern int puts __P ((__const char *str));
|
|
extern int remove __P ((__const char*));
|
|
extern int rename __P ((__const char* _old, __const char* _new));
|
|
extern void rewind __P ((FILE*));
|
|
extern int scanf __P ((__const char* format, ...));
|
|
extern void setbuf __P ((FILE*, char*));
|
|
extern void setlinebuf __P ((FILE*));
|
|
extern void setbuffer __P ((FILE*, char*, int));
|
|
extern int setvbuf __P ((FILE*, char*, int mode, size_t size));
|
|
extern int sprintf __P ((char*, __const char* format, ...));
|
|
extern int sscanf __P ((__const char* string, __const char* format, ...));
|
|
extern FILE* tmpfile __P ((void));
|
|
extern char* tmpnam __P ((char*));
|
|
#ifdef __USE_REENTRANT
|
|
extern char* tmpnam_r __P ((char*));
|
|
#endif
|
|
#ifdef __USE_SVID
|
|
extern char *tempnam __P ((__const char *__dir, __const char *__pfx));
|
|
#endif
|
|
extern char *__stdio_gen_tempname __P ((char *__buf, size_t bufsize,
|
|
__const char *dir, __const char *pfx,
|
|
int dir_search, size_t *lenptr,
|
|
FILE **streamptr));
|
|
extern int ungetc __P ((int c, FILE* fp));
|
|
extern int vfprintf __P ((FILE *fp, char __const *fmt0, _G_va_list));
|
|
extern int vprintf __P ((char __const *fmt, _G_va_list));
|
|
extern int vsprintf __P ((char* string, __const char* format, _G_va_list));
|
|
extern void __libc_fatal __P ((__const char *__message))
|
|
__attribute__ ((__noreturn__));
|
|
|
|
#ifndef __STRICT_ANSI__
|
|
extern int dprintf __P ((int, __const char *, ...));
|
|
extern int vdprintf __P ((int, __const char *, _G_va_list));
|
|
extern int vfscanf __P ((FILE*, __const char *, _G_va_list));
|
|
extern int __vfscanf __P ((FILE*, __const char *, _G_va_list));
|
|
extern int vscanf __P ((__const char *, _G_va_list));
|
|
extern int vsscanf __P ((__const char *, __const char *, _G_va_list));
|
|
extern int __vsscanf __P ((__const char *, __const char *, _G_va_list));
|
|
#endif
|
|
|
|
#if !defined(__STRICT_ANSI__) || defined(_POSIX_SOURCE)
|
|
extern FILE *fdopen __P ((int, __const char *));
|
|
extern int fileno __P ((FILE*));
|
|
extern FILE* popen __P ((__const char*, __const char*));
|
|
extern int pclose __P ((FILE*));
|
|
|
|
#define L_ctermid 9
|
|
#define L_cuserid 9
|
|
|
|
/* Return the name of the controlling terminal. */
|
|
extern char *ctermid __P ((char *__buf));
|
|
|
|
/* Get character login name of the user. */
|
|
extern char *cuserid __P ((char * __buf));
|
|
#endif
|
|
|
|
#ifdef __USE_GNU
|
|
extern _IO_ssize_t getdelim __P ((char **, size_t *, int, FILE*));
|
|
extern _IO_ssize_t getline __P ((char **, size_t *, FILE *));
|
|
extern _IO_ssize_t __getline __P ((char **, size_t *, FILE *));
|
|
|
|
extern int snprintf __P ((char *, size_t, __const char *, ...));
|
|
extern int __snprintf __P ((char *, size_t, __const char *, ...));
|
|
extern int vsnprintf __P ((char *, size_t, __const char *, _G_va_list));
|
|
extern int __vsnprintf __P ((char *, size_t, __const char *, _G_va_list));
|
|
|
|
extern int asprintf __P ((char **, const char *, ...));
|
|
extern int vasprintf __P ((char **, const char *, _G_va_list));
|
|
|
|
/* Open a stream that writes into a malloc'd buffer that is expanded as
|
|
necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
|
|
and the number of characters written on fflush or fclose. */
|
|
extern FILE *open_memstream __P ((char **__bufloc, size_t *__sizeloc));
|
|
#endif
|
|
|
|
extern int __underflow __P ((struct _IO_FILE*));
|
|
extern int __overflow __P ((struct _IO_FILE*, int));
|
|
|
|
#ifdef __USE_BSD
|
|
extern int sys_nerr;
|
|
extern const char *const sys_errlist[];
|
|
#endif
|
|
#ifdef __USE_GNU
|
|
extern int _sys_nerr;
|
|
extern const char *const _sys_errlist[];
|
|
#endif
|
|
|
|
/* Handle locking of streams. */
|
|
#ifdef __USE_REENTRANT
|
|
extern void clearerr_locked __P ((FILE *));
|
|
extern void clearerr_unlocked __P ((FILE *));
|
|
extern int feof_locked __P ((FILE *));
|
|
extern int feof_unlocked __P ((FILE *));
|
|
extern int ferror_locked __P ((FILE*));
|
|
extern int ferror_unlocked __P ((FILE*));
|
|
extern int fileno_locked __P ((FILE *));
|
|
extern int fileno_unlocked __P ((FILE *));
|
|
extern void flockfile __P ((FILE *));
|
|
extern void funlockfile __P ((FILE *));
|
|
extern int ftrylockfile __P ((FILE *));
|
|
extern int fclose_unlocked __P ((FILE *));
|
|
extern int fflush_locked __P ((FILE *));
|
|
extern int fflush_unlocked __P ((FILE *));
|
|
extern size_t fread_unlocked __P ((void *, size_t, size_t, FILE *));
|
|
extern size_t fwrite_unlocked __P ((const void *, size_t, size_t, FILE *));
|
|
|
|
extern int fputc_locked __P ((int, FILE*));
|
|
extern int fputc_unlocked __P ((int, FILE*));
|
|
extern int getc_locked __P ((FILE *));
|
|
extern int getc_unlocked __P ((FILE *));
|
|
extern int getchar_locked __P ((void));
|
|
extern int getchar_unlocked __P ((void));
|
|
extern int putc_locked __P ((int, FILE *));
|
|
extern int putc_unlocked __P ((int, FILE *));
|
|
extern int putchar_locked __P ((int));
|
|
extern int putchar_unlocked __P ((int));
|
|
|
|
# ifndef _LIBC
|
|
# define getc_unlocked(fp) _IO_getc_unlocked (fp)
|
|
# define getc_locked(fp) _IO_getc (fp)
|
|
# define getchar_unlocked() _IO_getc_unlocked (stdin)
|
|
# define getchar_locked() _IO_getc (stdin)
|
|
# define putchar_unlocked(c) _IO_putc_unlocked (c, stdout)
|
|
# define putchar_locked(c) _IO_putc (c, stdout)
|
|
# endif
|
|
|
|
#endif /* __USE_REENTRANT */
|
|
|
|
#define getc(_fp) _IO_getc (_fp)
|
|
#define putc(_ch, _fp) _IO_putc (_ch, _fp)
|
|
#define putchar(_ch) _IO_putc (_ch, stdout)
|
|
#define getchar() _IO_getc (stdin)
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* !_STDIO_H */
|