From 003be99349136e14e360941adf16de7cfd37ece3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 3 May 2004 09:21:58 +0000 Subject: [PATCH] Added missing header. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7361 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../libroot/posix/glibc/include/bits/stdio.h | 169 +++++++++++++++ src/kernel/libroot/posix/glibc/include/gmp.h | 27 +++ .../libroot/posix/glibc/include/ieee754.h | 199 ++++++++++++++++++ .../posix/glibc/include/stdio_private.h | 114 ++++++++++ 4 files changed, 509 insertions(+) create mode 100644 src/kernel/libroot/posix/glibc/include/bits/stdio.h create mode 100644 src/kernel/libroot/posix/glibc/include/gmp.h create mode 100644 src/kernel/libroot/posix/glibc/include/ieee754.h create mode 100644 src/kernel/libroot/posix/glibc/include/stdio_private.h diff --git a/src/kernel/libroot/posix/glibc/include/bits/stdio.h b/src/kernel/libroot/posix/glibc/include/bits/stdio.h new file mode 100644 index 0000000000..118118adce --- /dev/null +++ b/src/kernel/libroot/posix/glibc/include/bits/stdio.h @@ -0,0 +1,169 @@ +/* Optimizing macros and inline functions for stdio functions. + Copyright (C) 1998, 2000, 2001 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _STDIO_H +# error "Never include directly; use instead." +#endif + +#ifdef __cplusplus +# define __STDIO_INLINE inline +#else +# define __STDIO_INLINE extern __inline +#endif + + +#ifdef __USE_EXTERN_INLINES +/* Write formatted output to stdout from argument list ARG. */ +__STDIO_INLINE int +vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW +{ + return vfprintf (stdout, __fmt, __arg); +} + +/* Read a character from stdin. */ +__STDIO_INLINE int +getchar (void) __THROW +{ + return _IO_getc (stdin); +} + + +# if defined __USE_POSIX || defined __USE_MISC +/* This is defined in POSIX.1:1996. */ +__STDIO_INLINE int +getc_unlocked (FILE *__fp) __THROW +{ + return _IO_getc_unlocked (__fp); +} + +/* This is defined in POSIX.1:1996. */ +__STDIO_INLINE int +getchar_unlocked (void) __THROW +{ + return _IO_getc_unlocked (stdin); +} +# endif /* POSIX || misc */ + + +/* Write a character to stdout. */ +__STDIO_INLINE int +putchar (int __c) __THROW +{ + return _IO_putc (__c, stdout); +} + + +# ifdef __USE_MISC +/* Faster version when locking is not necessary. */ +__STDIO_INLINE int +fputc_unlocked (int __c, FILE *__stream) __THROW +{ + return _IO_putc_unlocked (__c, __stream); +} +# endif /* misc */ + + +# if defined __USE_POSIX || defined __USE_MISC +/* This is defined in POSIX.1:1996. */ +__STDIO_INLINE int +putc_unlocked (int __c, FILE *__stream) __THROW +{ + return _IO_putc_unlocked (__c, __stream); +} + +/* This is defined in POSIX.1:1996. */ +__STDIO_INLINE int +putchar_unlocked (int __c) __THROW +{ + return _IO_putc_unlocked (__c, stdout); +} +# endif /* POSIX || misc */ + + +# ifdef __USE_GNU +/* Like `getdelim', but reads up to a newline. */ +__STDIO_INLINE _IO_ssize_t +getline (char **__lineptr, size_t *__n, FILE *__stream) __THROW +{ + return __getdelim (__lineptr, __n, '\n', __stream); +} +# endif /* GNU */ + + +# ifdef __USE_MISC +/* Faster versions when locking is not required. */ +__STDIO_INLINE int +feof_unlocked (FILE *__stream) __THROW +{ + return _IO_feof_unlocked (__stream); +} + +/* Faster versions when locking is not required. */ +__STDIO_INLINE int +ferror_unlocked (FILE *__stream) __THROW +{ + return _IO_ferror_unlocked (__stream); +} +# endif /* misc */ + +#endif /* Use extern inlines. */ + + +#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__ +/* Perform some simple optimizations. */ +# define fread_unlocked(ptr, size, n, stream) \ + (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \ + && (size_t) ((size) * (n)) <= 8 && (size) != 0) \ + ? ({ char *__ptr = (char *) (ptr); \ + FILE *__stream = (stream); \ + size_t __cnt; \ + for (__cnt = (size) * (n); __cnt > 0; --__cnt) \ + { \ + int __c = _IO_getc_unlocked (__stream); \ + if (__c == EOF) \ + break; \ + *__ptr++ = __c; \ + } \ + ((size_t) ((size) * (n)) - __cnt) / (size); }) \ + : (((__builtin_constant_p (size) && (size) == 0) \ + || (__builtin_constant_p (n) && (n) == 0)) \ + /* Evaluate all parameters once. */ \ + ? ((void) (ptr), (void) (stream), (void) (size), \ + (void) (n), 0) \ + : fread_unlocked (ptr, size, n, stream)))) + +# define fwrite_unlocked(ptr, size, n, stream) \ + (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \ + && (size_t) ((size) * (n)) <= 8 && (size) != 0) \ + ? ({ const char *__ptr = (const char *) (ptr); \ + FILE *__stream = (stream); \ + size_t __cnt; \ + for (__cnt = (size) * (n); __cnt > 0; --__cnt) \ + if (_IO_putc_unlocked (*__ptr++, __stream) == EOF) \ + break; \ + ((size_t) ((size) * (n)) - __cnt) / (size); }) \ + : (((__builtin_constant_p (size) && (size) == 0) \ + || (__builtin_constant_p (n) && (n) == 0)) \ + /* Evaluate all parameters once. */ \ + ? ((void) (ptr), (void) (stream), (void) (size), n) \ + : fwrite_unlocked (ptr, size, n, stream)))) +#endif + +/* Define helper macro. */ +#undef __STDIO_INLINE diff --git a/src/kernel/libroot/posix/glibc/include/gmp.h b/src/kernel/libroot/posix/glibc/include/gmp.h new file mode 100644 index 0000000000..b74167097d --- /dev/null +++ b/src/kernel/libroot/posix/glibc/include/gmp.h @@ -0,0 +1,27 @@ +/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB + and _LONG_LONG_LIMB in it can take effect into gmp.h. */ +#include + +#ifndef __GMP_H__ + +#include + +/* Now define the internal interfaces. */ +extern mp_size_t __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + double value); + +extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + long double value); + +extern float __mpn_construct_float (mp_srcptr frac_ptr, int expt, int sign); + +extern double __mpn_construct_double (mp_srcptr frac_ptr, int expt, + int negative); + +extern long double __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, + int sign); + + +#endif diff --git a/src/kernel/libroot/posix/glibc/include/ieee754.h b/src/kernel/libroot/posix/glibc/include/ieee754.h new file mode 100644 index 0000000000..7131e5de6c --- /dev/null +++ b/src/kernel/libroot/posix/glibc/include/ieee754.h @@ -0,0 +1,199 @@ +/* Copyright (C) 1992, 1995, 1996, 1999 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _IEEE754_H + +#define _IEEE754_H 1 +#include + +#include + +__BEGIN_DECLS + +union ieee754_float + { + float f; + + /* This is the IEEE 754 single-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:8; + unsigned int mantissa:23; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int mantissa:23; + unsigned int exponent:8; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee; + + /* This format makes it easier to see if a NaN is a signalling NaN. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:8; + unsigned int quiet_nan:1; + unsigned int mantissa:22; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int mantissa:22; + unsigned int quiet_nan:1; + unsigned int exponent:8; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee_nan; + }; + +#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ + + +union ieee754_double + { + double d; + + /* This is the IEEE 754 double-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:11; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:20; + unsigned int mantissa1:32; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN +# if __FLOAT_WORD_ORDER == BIG_ENDIAN + unsigned int mantissa0:20; + unsigned int exponent:11; + unsigned int negative:1; + unsigned int mantissa1:32; +# else + /* Together these comprise the mantissa. */ + unsigned int mantissa1:32; + unsigned int mantissa0:20; + unsigned int exponent:11; + unsigned int negative:1; +# endif +#endif /* Little endian. */ + } ieee; + + /* This format makes it easier to see if a NaN is a signalling NaN. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:11; + unsigned int quiet_nan:1; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:19; + unsigned int mantissa1:32; +#else +# if __FLOAT_WORD_ORDER == BIG_ENDIAN + unsigned int mantissa0:19; + unsigned int quiet_nan:1; + unsigned int exponent:11; + unsigned int negative:1; + unsigned int mantissa1:32; +# else + /* Together these comprise the mantissa. */ + unsigned int mantissa1:32; + unsigned int mantissa0:19; + unsigned int quiet_nan:1; + unsigned int exponent:11; + unsigned int negative:1; +# endif +#endif + } ieee_nan; + }; + +#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ + + +union ieee854_long_double + { + long double d; + + /* This is the IEEE 854 double-extended-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:15; + unsigned int empty:16; + unsigned int mantissa0:32; + unsigned int mantissa1:32; +#endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +# if __FLOAT_WORD_ORDER == BIG_ENDIAN + unsigned int exponent:15; + unsigned int negative:1; + unsigned int empty:16; + unsigned int mantissa0:32; + unsigned int mantissa1:32; +# else + unsigned int mantissa1:32; + unsigned int mantissa0:32; + unsigned int exponent:15; + unsigned int negative:1; + unsigned int empty:16; +# endif +#endif + } ieee; + + /* This is for NaNs in the IEEE 854 double-extended-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:15; + unsigned int empty:16; + unsigned int one:1; + unsigned int quiet_nan:1; + unsigned int mantissa0:30; + unsigned int mantissa1:32; +#endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +# if __FLOAT_WORD_ORDER == BIG_ENDIAN + unsigned int exponent:15; + unsigned int negative:1; + unsigned int empty:16; + unsigned int mantissa0:30; + unsigned int quiet_nan:1; + unsigned int one:1; + unsigned int mantissa1:32; +# else + unsigned int mantissa1:32; + unsigned int mantissa0:30; + unsigned int quiet_nan:1; + unsigned int one:1; + unsigned int exponent:15; + unsigned int negative:1; + unsigned int empty:16; +# endif +#endif + } ieee_nan; + }; + +#define IEEE854_LONG_DOUBLE_BIAS 0x3fff + +__END_DECLS + +#endif /* ieee754.h */ diff --git a/src/kernel/libroot/posix/glibc/include/stdio_private.h b/src/kernel/libroot/posix/glibc/include/stdio_private.h new file mode 100644 index 0000000000..63e49f0969 --- /dev/null +++ b/src/kernel/libroot/posix/glibc/include/stdio_private.h @@ -0,0 +1,114 @@ +#ifndef _STDIO_H +# if defined __need_FILE || defined __need___FILE +# include +# else +# include + +/* Now define the internal interfaces. */ +extern int __fcloseall (void); +extern int __snprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern int __vsnprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, _G_va_list __arg) + __attribute__ ((__format__ (__printf__, 3, 0))); +extern int __vfscanf (FILE *__restrict __s, + __const char *__restrict __format, + _G_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))); +libc_hidden_proto (__vfscanf) +extern int __vscanf (__const char *__restrict __format, + _G_va_list __arg) + __attribute__ ((__format__ (__scanf__, 1, 0))); +extern _IO_ssize_t __getline (char **__lineptr, size_t *__n, + FILE *__stream); +extern int __vsscanf (__const char *__restrict __s, + __const char *__restrict __format, + _G_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))); + +/* Prototypes for compatibility functions. */ +extern FILE *__new_tmpfile (void); +extern FILE *__old_tmpfile (void); + + + +# define __need_size_t +# include +/* Generate a unique file name (and possibly open it). */ +extern int __path_search (char *__tmpl, size_t __tmpl_len, + __const char *__dir, __const char *__pfx, + int __try_tempdir); + +extern int __gen_tempname (char *__tmpl, int __kind); +/* The __kind argument to __gen_tempname may be one of: */ +# define __GT_FILE 0 /* create a file */ +# define __GT_BIGFILE 1 /* create a file, using open64 */ +# define __GT_DIR 2 /* create a directory */ +# define __GT_NOCREATE 3 /* just find a name not currently in use */ + +/* Print out MESSAGE on the error output and abort. */ +extern void __libc_fatal (__const char *__message) + __attribute__ ((__noreturn__)); + +/* Acquire ownership of STREAM. */ +extern void __flockfile (FILE *__stream); + +/* Relinquish the ownership granted for STREAM. */ +extern void __funlockfile (FILE *__stream); + +/* Try to acquire ownership of STREAM but do not block if it is not + possible. */ +extern int __ftrylockfile (FILE *__stream); + +extern int __getc_unlocked (FILE *__fp); +extern wint_t __getwc_unlocked (FILE *__fp); + + +extern __const char *__const _sys_errlist_internal[] attribute_hidden; +extern int _sys_nerr_internal attribute_hidden; + +extern int __asprintf_internal (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + attribute_hidden __attribute__ ((__format__ (__printf__, 2, 3))); +# if !defined NOT_IN_libc && !defined _ISOMAC +# define __asprintf(ptr, fmt, args...) \ + INTUSE(__asprintf) (ptr, fmt, ##args) + +extern _IO_FILE *_IO_new_fopen __P((const char*, const char*)); +# define fopen(fname, mode) _IO_new_fopen (fname, mode) +extern _IO_FILE *_IO_new_fdopen __P((int, const char*)); +# define fdopen(fd, mode) _IO_new_fdopen (fd, mode) +extern int _IO_new_fclose __P((_IO_FILE*)); +# define fclose(fp) _IO_new_fclose (fp) +extern int _IO_fputs __P((const char*, _IO_FILE*)); +libc_hidden_proto (_IO_fputs) +# define fputs(str, fp) _IO_fputs (str, fp) +extern int _IO_new_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *)); +# define fsetpos(fp, posp) _IO_new_fsetpos (fp, posp) +extern int _IO_new_fgetpos __P ((_IO_FILE *, _IO_fpos_t *)); +# define fgetpos(fp, posp) _IO_new_fgetpos (fp, posp) +# endif + +libc_hidden_proto (dprintf) +libc_hidden_proto (fprintf) +libc_hidden_proto (vfprintf) +libc_hidden_proto (sprintf) +libc_hidden_proto (sscanf) +libc_hidden_proto (fwrite) +libc_hidden_proto (perror) +libc_hidden_proto (remove) +libc_hidden_proto (rewind) +libc_hidden_proto (fileno) +libc_hidden_proto (fwrite) +libc_hidden_proto (fseek) +libc_hidden_proto (fflush_unlocked) +libc_hidden_proto (fread_unlocked) +libc_hidden_proto (fwrite_unlocked) +libc_hidden_proto (fgets_unlocked) +libc_hidden_proto (fputs_unlocked) +libc_hidden_proto (open_memstream) + +# endif + +#endif