1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00

1 Commits

Author SHA1 Message Date
Olaf Barthel
d308d79f85 This commit was manufactured by cvs2svn to create tag 'V1_172'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_172@14714 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2004-08-21 18:57:42 +00:00
47 changed files with 172 additions and 1024 deletions

View File

@@ -1,5 +1,5 @@
# #
# $Id: GNUmakefile.68k,v 1.9 2004-09-20 17:16:06 obarthel Exp $ # $Id: GNUmakefile.68k,v 1.6 2004-08-16 09:33:11 obarthel Exp $
# #
# :ts=8 # :ts=8
# #
@@ -103,9 +103,9 @@ WARNINGS = \
-Wundef -Wbad-function-cast -Wmissing-declarations -Wconversion -Wundef -Wbad-function-cast -Wmissing-declarations -Wconversion
INCLUDES = -Iinclude -I. -Inetinclude INCLUDES = -Iinclude -I. -Inetinclude
OPTIONS = -DNDEBUG -fno-builtin -DNO_INLINE_STDARG OPTIONS = -DUSE_64_BIT_INTS -DNDEBUG -fno-builtin -DNO_INLINE_STDARG
#OPTIONS = -D__MEM_DEBUG -fno-builtin #OPTIONS = -DUSE_64_BIT_INTS -D__MEM_DEBUG -fno-builtin
#OPTIONS = -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG -fno-builtin #OPTIONS = -DUSE_64_BIT_INTS -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG -fno-builtin
OPTIMIZE = -O OPTIMIZE = -O
#OPTIMIZE = -O2 -fomit-frame-pointer #OPTIMIZE = -O2 -fomit-frame-pointer
#DEBUG = -g2 #DEBUG = -g2
@@ -144,7 +144,6 @@ C_LIB = \
fcntl_open.o \ fcntl_open.o \
fcntl_read.o \ fcntl_read.o \
fcntl_write.o \ fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \ libgen_basename.o \
libgen_dirname.o \ libgen_dirname.o \
locale_data.o \ locale_data.o \
@@ -307,8 +306,6 @@ C_LIB = \
stdlib_startup.o \ stdlib_startup.o \
stdlib_strtol.o \ stdlib_strtol.o \
stdlib_strtoul.o \ stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \ stdlib_swapstack.o \
stdlib_sysbase.o \ stdlib_sysbase.o \
stdlib_system.o \ stdlib_system.o \
@@ -398,7 +395,6 @@ UNIX_LIB = \
fcntl_creat.o \ fcntl_creat.o \
fcntl_fcntl.o \ fcntl_fcntl.o \
fcntl_open.o \ fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \ mount_convertinfo.o \
mount_statfs.o \ mount_statfs.o \
stat_chmod.o \ stat_chmod.o \

View File

@@ -1,5 +1,5 @@
# #
# $Id: GNUmakefile.os4,v 1.8 2004-09-27 15:04:51 tfrieden Exp $ # $Id: GNUmakefile.os4,v 1.5 2004-08-16 09:33:11 obarthel Exp $
# #
# :ts=8 # :ts=8
# #
@@ -65,7 +65,7 @@ $(LIBUNIX_OBJS)/%.o : %.c
$(LIBM_OBJS)/%.o : %.c $(LIBM_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):m]" @echo "Compiling $< [$(TYPE):m]"
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) $< @$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
$(LIBSTACK_OBJS)/%.o : %.c $(LIBSTACK_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):stack]" @echo "Compiling $< [$(TYPE):stack]"
@@ -86,15 +86,11 @@ $(LIBAMIGA_OBJS)/%.o : %.c
############################################################################## ##############################################################################
ifeq (small_data,$(TYPE)) ifeq (small_data,$(TYPE))
CODE_TYPE := -msdata=sysv -DSMALL_DATA -DPPC_FLOATING_POINT_SUPPORT CODE_TYPE := -msdata=sysv -DSMALL_DATA
endif endif
ifeq (large_data,$(TYPE)) ifeq (large_data,$(TYPE))
CODE_TYPE := -msdata=data -DPPC_FLOATING_POINT_SUPPORT CODE_TYPE := -msdata=data
endif
ifeq (large_data_softfloat, $(TYPE))
CODE_TYPE := -msdata=data -msoft-float
endif endif
############################################################################## ##############################################################################
@@ -142,7 +138,6 @@ C_LIB = \
fcntl_open.o \ fcntl_open.o \
fcntl_read.o \ fcntl_read.o \
fcntl_write.o \ fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \ libgen_basename.o \
libgen_dirname.o \ libgen_dirname.o \
locale_data.o \ locale_data.o \
@@ -306,8 +301,6 @@ C_LIB = \
stdlib_startup.o \ stdlib_startup.o \
stdlib_strtol.o \ stdlib_strtol.o \
stdlib_strtoul.o \ stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \ stdlib_swapstack.o \
stdlib_system.o \ stdlib_system.o \
stdlib_termination_message.o \ stdlib_termination_message.o \
@@ -394,7 +387,6 @@ UNIX_LIB = \
fcntl_creat.o \ fcntl_creat.o \
fcntl_fcntl.o \ fcntl_fcntl.o \
fcntl_open.o \ fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \ mount_convertinfo.o \
mount_statfs.o \ mount_statfs.o \
stat_chmod.o \ stat_chmod.o \
@@ -688,12 +680,7 @@ all: \
lib/crtbegin.o \ lib/crtbegin.o \
lib/crtend.o \ lib/crtend.o \
lib/mainnb.o \ lib/mainnb.o \
lib/libm.a \ lib/libm.a
lib/small-data/libm.a \
lib/bcrt0.o \
lib/bcrtbegin.o \
lib/bcrtend.o \
lib/soft-float/libc.a
copy: copy:
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib $(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
@@ -748,12 +735,6 @@ endif
lib: lib:
-$(MAKEDIR) $@ -$(MAKEDIR) $@
lib/small-data:
-$(MAKEDIR) $@
lib/soft-float:
-$(MAKEDIR) $@
lib/libm.a: lib lib/libm.a: lib
$(MAKE) TYPE=large_data kitchen_sink $(MAKE) TYPE=large_data kitchen_sink
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib $(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
@@ -762,10 +743,6 @@ lib/small-data/libm.a: lib lib/small-data
$(MAKE) TYPE=small_data kitchen_sink $(MAKE) TYPE=small_data kitchen_sink
$(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data $(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data
lib/soft-float/libc.a: lib lib/soft-float
$(MAKE) TYPE=large_data_softfloat kitchen_sink
$(COPY) $(foreach file,$(LIBS),large_data_softfloat/$(file)) lib/soft-float
lib/crt0.o : lib crt0.o lib/crt0.o : lib crt0.o
$(COPY) crt0.o lib $(COPY) crt0.o lib
@@ -781,15 +758,6 @@ lib/mainnb.o : lib mainnb.o
lib/mainb.o : lib mainb.o lib/mainb.o : lib mainb.o
$(COPY) mainb.o lib $(COPY) mainb.o lib
lib/bcrt0.o : lib bcrt0.o
$(COPY) bcrt0.o lib
lib/bcrtbegin.o : lib bcrtbegin.o
$(COPY) bcrtbegin.o lib
lib/bcrtend.o : lib bcrtend.o
$(COPY) bcrtend.o lib
############################################################################## ##############################################################################
$(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c $(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c
@@ -910,13 +878,6 @@ mainb.o : stdlib_main.c
@echo "Compiling $<" @echo "Compiling $<"
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c @$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c
bcrtbegin.o : crtbegin.c
$(CC) -o bcrtbegin.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtbegin.c
bcrtend.o : crtend.c
$(CC) -o bcrtend.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtend.c
############################################################################## ##############################################################################
mkid: mkid:

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "amiga.lib 1.176" #define VERS "amiga.lib 1.172"
#define VSTRING "amiga.lib 1.176 (27.9.2004)\r\n" #define VSTRING "amiga.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: amiga.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "c.lib 1.176" #define VERS "c.lib 1.172"
#define VSTRING "c.lib 1.176 (27.9.2004)\r\n" #define VSTRING "c.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: c.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: c.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,46 +1,3 @@
- Added strtoll() and strtoull(), with further changes to <limits.h>
and <stdlib.h>.
c.lib 1.175 (10.9.2004)
- <stdarg.h> now tries to use the compiler supplied, machine specific
<stdarg.h> file and also includes the OS4-specifc <sys/amigaos-va.h>
file, if necessary.
- Added another test to <sys/time.h> to check if the "timeval" definition is
already in place. If it is, <exec/types.h> will not be included.
- <sys/time.h> can be made to define the timeval data structure locally if
the __USE_CLIB2_TIMEVAL preprocessor symbol is defined. In this case no
<exec/types.h> or <devices/timer.h> file will be read.
- The sprintf() family did not properly handle empty strings as format
specifications. This would result in a necessary buffer flush action
getting skipped, which consequently did not put the string termination
character into the output buffer.
c.lib 1.174 (27.8.2004)
- The parameters of atan2() were swapped. Fixed.
- Merged fdlibm 5.3 changes with __kernel_tan(), __exp() and __pow()
functions.
- Replaced the rint() and rintf() functions with the fdlibm code.
c.lib 1.173 (25.8.2004)
- The <assert.h> header file was missing the C++ 'extern "C" { .. }'
declarations.
- Added a new function __get_default_file() which allows direct access
to the low level file handle/socket descriptor associated with a
file descriptor.
c.lib 1.172 (21.8.2004) c.lib 1.172 (21.8.2004)
- acos() now returns 0 for a domain error. - acos() now returns 0 for a domain error.

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "debug.lib 1.176" #define VERS "debug.lib 1.172"
#define VSTRING "debug.lib 1.176 (27.9.2004)\r\n" #define VSTRING "debug.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: debug.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,69 +0,0 @@
/*
* $Id: fcntl_get_default_file.c,v 1.1 2004-08-25 15:27:27 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _FCNTL_HEADERS_H
#include "fcntl_headers.h"
#endif /* _FCNTL_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
__get_default_file(int file_descriptor,long * file_ptr)
{
struct fd * fd;
int result = -1;
assert( file_descriptor >= 0 && file_descriptor < __num_fd );
assert( __fd[file_descriptor] != NULL );
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
assert( file_ptr != NULL );
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
errno = EBADF;
goto out;
}
(*file_ptr) = (long)fd->fd_DefaultFile;
result = 0;
out:
return(result);
}

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: assert.h,v 1.2 2004-08-25 15:27:28 obarthel Exp $ * $Id: assert.h,v 1.1.1.1 2004-07-26 16:32:49 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -36,12 +36,6 @@
/****************************************************************************/ /****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
#ifndef assert #ifndef assert
/****************************************************************************/ /****************************************************************************/
@@ -73,10 +67,4 @@ extern void __assertion_failure(const char *file_name,int line_number,const char
/****************************************************************************/ /****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _ASSERT_H */ #endif /* _ASSERT_H */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: dos.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $ * $Id: dos.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -112,18 +112,6 @@ extern void __set_a4(unsigned long value);
/****************************************************************************/ /****************************************************************************/
/*
* Obtain the low level 'file' handle or socket ID bound to a file
* descriptor. This function returns 0 for success and non-zero
* otherwise (if, for example, the file descriptor value you
* provided is not valid; errno will be set to the appropriate
* error code, too). Put a pointer to the file handle variable you
* want to be filled in into the second parameter to this function.
*/
extern int __get_default_file(int file_descriptor,long * file_ptr);
/****************************************************************************/
/* /*
* This will be set to TRUE if the current program was launched from * This will be set to TRUE if the current program was launched from
* the internet superserver ('inetd') or an equivalent facility. * the internet superserver ('inetd') or an equivalent facility.

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: limits.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $ * $Id: limits.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -58,12 +58,6 @@
/****************************************************************************/ /****************************************************************************/
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
#define LLONG_MAX 0x7fffffffffffffffLL
#define ULLONG_MAX 0xffffffffffffffffULL
/****************************************************************************/
#define PATH_MAX 1024 #define PATH_MAX 1024
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdarg.h,v 1.2 2004-09-09 08:25:30 obarthel Exp $ * $Id: stdarg.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -57,25 +57,12 @@ typedef char * va_list;
/****************************************************************************/ /****************************************************************************/
#else #else
#if defined(__GNUC__)
/****************************************************************************/ #undef _STDARG_H
#include_next "stdarg.h"
#if defined(__GNUC__) #else
#error "Unknown compiler"
/* Use the compiler supplied, machine specific <stdarg.h> file. */ #endif /* __GNUC__ */
#undef _STDARG_H
#include_next "stdarg.h"
#include <sys/amigaos-va.h>
#else
#error "Unknown compiler"
#endif /* __GNUC__ */
/****************************************************************************/
#endif /* __amigaos4__ */ #endif /* __amigaos4__ */
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $ * $Id: stdio.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -62,7 +62,7 @@ extern "C" {
* correspond to a real limitation for this 'C' runtime library and is * correspond to a real limitation for this 'C' runtime library and is
* included solely for ISO 'C' (1994) compliance. * included solely for ISO 'C' (1994) compliance.
*/ */
#define FOPEN_MAX 64 #define FOPEN_MAX 8
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $ * $Id: stdlib.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -151,11 +151,6 @@ extern long atol(const char *str);
/****************************************************************************/ /****************************************************************************/
extern long long strtoll(const char *str, char **ptr, int base);
extern unsigned long long strtoull(const char *str, char **ptr, int base);
/****************************************************************************/
#if defined(__GNUC__) #if defined(__GNUC__)
#if defined(alloca) #if defined(alloca)
#undef alloca #undef alloca

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: time.h,v 1.6 2004-09-10 07:39:20 obarthel Exp $ * $Id: time.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -52,7 +52,7 @@ extern "C" {
structure and try to get by with this definition. Sometimes it works, structure and try to get by with this definition. Sometimes it works,
sometimes it doesn't. Not sure if there really is a good solution for sometimes it doesn't. Not sure if there really is a good solution for
this problem... */ this problem... */
#if !defined(__TIMEVAL_ALREADY_DEFINED) && !defined(__USE_CLIB2_TIMEVAL) #ifndef DEVICES_TIMER_H
/****************************************************************************/ /****************************************************************************/
@@ -73,23 +73,11 @@ extern "C" {
/****************************************************************************/ /****************************************************************************/
/* This will define the 'struct timeval' */ /* This will define the 'struct timeval' */
#ifndef DEVICES_TIMER_H
#include <devices/timer.h> #include <devices/timer.h>
#endif /* DEVICES_TIMER_H */
/****************************************************************************/ /****************************************************************************/
#endif /* INCLUDE_VERSION */ #else
/****************************************************************************/
#endif /* !__TIMEVAL_ALREADY_DEFINED && !__USE_CLIB2_TIMEVAL */
/****************************************************************************/
/* If the timeval is still undefined or should be defined locally,
define our own now... */
#if !defined(__TIMEVAL_ALREADY_DEFINED)
/****************************************************************************/ /****************************************************************************/
@@ -106,7 +94,11 @@ struct timeval
/****************************************************************************/ /****************************************************************************/
#endif /* !__TIMEVAL_ALREADY_DEFINED */ #endif /* INCLUDE_VERSION */
/****************************************************************************/
#endif /* DEVICES_TIMER_H */
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "m.lib 1.176" #define VERS "m.lib 1.172"
#define VSTRING "m.lib 1.176 (27.9.2004)\r\n" #define VSTRING "m.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: m.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: m.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "m881.lib 1.176" #define VERS "m881.lib 1.172"
#define VSTRING "m881.lib 1.176 (27.9.2004)\r\n" #define VSTRING "m881.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: m881.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_atan2.c,v 1.3 2004-08-27 11:40:49 obarthel Exp $ * $Id: math_atan2.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -63,7 +63,7 @@ extern double __atan(double x);
/****************************************************************************/ /****************************************************************************/
INLINE static const double INLINE static const double
__atan2(double y,double x) __atan2(double x,double y)
{ {
const double pi = 3.14159265358979323846; const double pi = 3.14159265358979323846;
const double pi_over_2 = pi / 2.0; const double pi_over_2 = pi / 2.0;
@@ -135,7 +135,7 @@ __atan(double x)
} }
INLINE static const double INLINE static const double
__atan2(double y,double x) __atan2(double x,double y)
{ {
double pi,pi_over_2; double pi,pi_over_2;
double result; double result;
@@ -210,7 +210,7 @@ pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */ pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
INLINE static const double INLINE static const double
__atan2(double y,double x) __atan2(double x,double y)
{ {
double z; double z;
int k,m,hx,hy,ix,iy; int k,m,hx,hy,ix,iy;
@@ -319,11 +319,11 @@ __atan2(double y,double x)
/****************************************************************************/ /****************************************************************************/
double double
atan2(double y,double x) atan2(double x,double y)
{ {
double result; double result;
result = __atan2(y,x); result = __atan2(x,y);
return(result); return(result);
} }

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_exp.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $ * $Id: math_exp.c,v 1.1.1.1 2004-07-26 16:30:41 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -194,7 +194,7 @@ __exp(double x)
} }
else else
{ {
k = (int)(invln2*x+halF[xsb]); k = invln2*x+halF[xsb];
t = k; t = k;
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */ hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
lo = t*ln2LO[0]; lo = t*ln2LO[0];

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_fabs.c,v 1.2 2004-09-27 15:06:16 tfrieden Exp $ * $Id: math_fabs.c,v 1.1.1.1 2004-07-26 16:30:42 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -141,17 +141,6 @@ __fabs(double x)
} }
#else
INLINE static const double
__fabs(double x)
{
if (x > 0)
return x;
else
return -x;
}
#endif /* PPC_FLOATING_POINT_SUPPORT */ #endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_headers.h,v 1.4 2004-08-27 13:49:17 obarthel Exp $ * $Id: math_headers.h,v 1.3 2004-08-21 18:57:40 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -148,33 +148,6 @@ do { \
(d) = sl_u.value; \ (d) = sl_u.value; \
} while (0) } while (0)
/* A union which permits us to convert between a float and a 32 bit
int. */
typedef union
{
float value;
unsigned int word;
} ieee_float_shape_type;
/* Get a 32 bit int from a float. */
#define GET_FLOAT_WORD(i,d) \
do { \
ieee_float_shape_type gf_u; \
gf_u.value = (d); \
(i) = gf_u.word; \
} while (0)
/* Set a float from a 32 bit int. */
#define SET_FLOAT_WORD(d,i) \
do { \
ieee_float_shape_type sf_u; \
sf_u.word = (i); \
(d) = sf_u.value; \
} while (0)
extern double __kernel_cos(double x, double y); extern double __kernel_cos(double x, double y);
extern double __kernel_sin(double x, double y, int iy); extern double __kernel_sin(double x, double y, int iy);
extern int __rem_pio2(double x, double *y); extern int __rem_pio2(double x, double *y);

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_kernel_tan.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $ * $Id: math_kernel_tan.c,v 1.1.1.1 2004-07-26 16:30:48 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -82,21 +82,7 @@ double __kernel_tan(double x, double y, int iy)
unsigned int low; unsigned int low;
GET_LOW_WORD(low,x); GET_LOW_WORD(low,x);
if(((ix|low)|(iy+1))==0) return one/fabs(x); if(((ix|low)|(iy+1))==0) return one/fabs(x);
else { else return (iy==1)? x: -one/x;
if (iy == 1)
return x;
else { /* compute -1 / (x+y) carefully */
double a, t;
z = w = x + y;
SET_LOW_WORD(z,0);
v = y - (z - x);
t = a = -one / w;
SET_LOW_WORD(t,0);
s = one + t * z;
return t + a * (s + t * v);
}
}
} }
} }
if(ix>=0x3FE59428) { /* |x|>=0.6744 */ if(ix>=0x3FE59428) { /* |x|>=0.6744 */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_log.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $ * $Id: math_log.c,v 1.1.1.1 2004-07-26 16:30:49 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -135,7 +135,7 @@ __log(double x)
/****************************************************************************/ /****************************************************************************/
#if defined(__PPC__) #if defined(PPC_FLOATING_POINT_SUPPORT)
static const double static const double
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */ ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_modf.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $ * $Id: math_modf.c,v 1.1.1.1 2004-07-26 16:30:50 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -109,7 +109,7 @@ __modf(double x,double *nptr)
/****************************************************************************/ /****************************************************************************/
#if defined(__PPC__) #if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE static const double INLINE static const double
__modf(double x,double *nptr) __modf(double x,double *nptr)

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_pow.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $ * $Id: math_pow.c,v 1.1.1.1 2004-07-26 16:30:52 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -171,7 +171,7 @@ __pow(double x,double y)
/****************************************************************************/ /****************************************************************************/
#if defined(__PPC__) #if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/ /****************************************************************************/
@@ -286,12 +286,11 @@ __pow(double x,double y)
} }
/* (x<0)**(non-int) is NaN */ /* (x<0)**(non-int) is NaN */
n = ((unsigned int)hx>>31)+1; /* REDHAT LOCAL: This used to be
if((n|yisint)==0) return (x-x)/(x-x); if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
but ANSI C says a right shift of a signed negative quantity is
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */ implementation defined. */
if((n|(yisint-1))==0) if(((((unsigned int)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
s = -one;/* (-ve)**(odd int) */
/* |y| is huge */ /* |y| is huge */
if(iy>0x41e00000) { /* if |y| > 2**31 */ if(iy>0x41e00000) { /* if |y| > 2**31 */
@@ -300,11 +299,11 @@ __pow(double x,double y)
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny; if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
} }
/* over/underflow if x is not close to one */ /* over/underflow if x is not close to one */
if(ix<0x3fefffff) return (hy<0)? s*huge*huge:s*tiny*tiny; if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
if(ix>0x3ff00000) return (hy>0)? s*huge*huge:s*tiny*tiny; if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
/* now |1-x| is tiny <= 2**-20, suffice to compute /* now |1-x| is tiny <= 2**-20, suffice to compute
log(x) by x-x^2/2+x^3/3-x^4/4 */ log(x) by x-x^2/2+x^3/3-x^4/4 */
t = ax-one; /* t has 20 trailing zeros */ t = ax-1; /* t has 20 trailing zeros */
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25)); w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */ u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
v = t*ivln2_l-w*ivln2; v = t*ivln2_l-w*ivln2;
@@ -312,7 +311,7 @@ __pow(double x,double y)
SET_LOW_WORD(t1,0); SET_LOW_WORD(t1,0);
t2 = v-(t1-u); t2 = v-(t1-u);
} else { } else {
double ss,s2,s_h,s_l,t_h,t_l; double s2,s_h,s_l,t_h,t_l;
n = 0; n = 0;
/* take care subnormal number */ /* take care subnormal number */
if(ix<0x00100000) if(ix<0x00100000)
@@ -326,11 +325,11 @@ __pow(double x,double y)
else {k=0;n+=1;ix -= 0x00100000;} else {k=0;n+=1;ix -= 0x00100000;}
SET_HIGH_WORD(ax,ix); SET_HIGH_WORD(ax,ix);
/* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */ /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */ u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
v = one/(ax+bp[k]); v = one/(ax+bp[k]);
ss = u*v; s = u*v;
s_h = ss; s_h = s;
SET_LOW_WORD(s_h,0); SET_LOW_WORD(s_h,0);
/* t_h=ax+bp[k] High */ /* t_h=ax+bp[k] High */
t_h = zero; t_h = zero;
@@ -338,29 +337,33 @@ __pow(double x,double y)
t_l = ax - (t_h-bp[k]); t_l = ax - (t_h-bp[k]);
s_l = v*((u-s_h*t_h)-s_h*t_l); s_l = v*((u-s_h*t_h)-s_h*t_l);
/* compute log(ax) */ /* compute log(ax) */
s2 = ss*ss; s2 = s*s;
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
r += s_l*(s_h+ss); r += s_l*(s_h+s);
s2 = s_h*s_h; s2 = s_h*s_h;
t_h = 3.0+s2+r; t_h = 3.0+s2+r;
SET_LOW_WORD(t_h,0); SET_LOW_WORD(t_h,0);
t_l = r-((t_h-3.0)-s2); t_l = r-((t_h-3.0)-s2);
/* u+v = ss*(1+...) */ /* u+v = s*(1+...) */
u = s_h*t_h; u = s_h*t_h;
v = s_l*t_h+t_l*ss; v = s_l*t_h+t_l*s;
/* 2/(3log2)*(ss+...) */ /* 2/(3log2)*(s+...) */
p_h = u+v; p_h = u+v;
SET_LOW_WORD(p_h,0); SET_LOW_WORD(p_h,0);
p_l = v-(p_h-u); p_l = v-(p_h-u);
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
z_l = cp_l*p_h+p_l*cp+dp_l[k]; z_l = cp_l*p_h+p_l*cp+dp_l[k];
/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */ /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
t = (double)n; t = (double)n;
t1 = (((z_h+z_l)+dp_h[k])+t); t1 = (((z_h+z_l)+dp_h[k])+t);
SET_LOW_WORD(t1,0); SET_LOW_WORD(t1,0);
t2 = z_l-(((t1-t)-dp_h[k])-z_h); t2 = z_l-(((t1-t)-dp_h[k])-z_h);
} }
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
if(((((unsigned int)hx>>31)-1)|(yisint-1))==0)
s = -one;/* (-ve)**(odd int) */
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
y1 = y; y1 = y;
SET_LOW_WORD(y1,0); SET_LOW_WORD(y1,0);

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_rint.c,v 1.3 2004-08-27 13:49:17 obarthel Exp $ * $Id: math_rint.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -54,10 +54,6 @@
/****************************************************************************/ /****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
double double
rint(double x) rint(double x)
{ {
@@ -66,71 +62,5 @@ rint(double x)
/****************************************************************************/ /****************************************************************************/
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/
static const double
TWO52[2]={
4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
-4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
};
double
rint(double x)
{
int i0,j0,sx;
unsigned i,i1;
double w,t;
GET_HIGH_WORD(i0,x);
sx = (i0>>31)&1;
GET_LOW_WORD(i1,x);
j0 = ((i0>>20)&0x7ff)-0x3ff;
if(j0<20) {
if(j0<0) {
if(((i0&0x7fffffff)|i1)==0) return x;
i1 |= (i0&0x0fffff);
i0 &= 0xfffe0000;
i0 |= ((i1|-i1)>>12)&0x80000;
SET_HIGH_WORD(x,i0);
w = TWO52[sx]+x;
t = w-TWO52[sx];
GET_HIGH_WORD(i0,t);
SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
return t;
} else {
i = (0x000fffff)>>j0;
if(((i0&i)|i1)==0) return x; /* x is integral */
i>>=1;
if(((i0&i)|i1)!=0) {
if(j0==19) i1 = 0x40000000; else
i0 = (i0&(~i))|((0x20000)>>j0);
}
}
} else if (j0>51) {
if(j0==0x400) return x+x; /* inf or NaN */
else return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff))>>(j0-20);
if((i1&i)==0) return x; /* x is integral */
i>>=1;
if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
}
SET_HIGH_WORD(x,i0);
SET_LOW_WORD(x,i1);
w = TWO52[sx]+x;
return w-TWO52[sx];
}
/****************************************************************************/
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */ #endif /* FLOATING_POINT_SUPPORT */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_rintf.c,v 1.2 2004-08-27 13:49:17 obarthel Exp $ * $Id: math_rintf.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -54,10 +54,6 @@
/****************************************************************************/ /****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
float float
rintf(float x) rintf(float x)
{ {
@@ -66,64 +62,5 @@ rintf(float x)
/****************************************************************************/ /****************************************************************************/
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/
/* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. */
/****************************************************************************/
static const float
TWO23[2]={
8.3886080000e+06, /* 0x4b000000 */
-8.3886080000e+06, /* 0xcb000000 */
};
float
rintf(float x)
{
int i0,j0,sx;
unsigned int i,i1;
float w,t;
GET_FLOAT_WORD(i0,x);
sx = (i0>>31)&1;
j0 = ((i0>>23)&0xff)-0x7f;
if(j0<23) {
if(j0<0) {
if((i0&0x7fffffff)==0) return x;
i1 = (i0&0x07fffff);
i0 &= 0xfff00000;
i0 |= ((i1|-i1)>>9)&0x400000;
SET_FLOAT_WORD(x,i0);
w = TWO23[sx]+x;
t = w-TWO23[sx];
GET_FLOAT_WORD(i0,t);
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
return t;
} else {
i = (0x007fffff)>>j0;
if((i0&i)==0) return x; /* x is integral */
i>>=1;
if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
}
} else {
if(j0==0x80) return x+x; /* inf or NaN */
else return x; /* x is integral */
}
SET_FLOAT_WORD(x,i0);
w = TWO23[sx]+x;
return w-TWO23[sx];
}
/****************************************************************************/
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */ #endif /* FLOATING_POINT_SUPPORT */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: math_sqrt.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $ * $Id: math_sqrt.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -135,7 +135,7 @@ __sqrt(double x)
/****************************************************************************/ /****************************************************************************/
#ifdef __PPC__ #if defined(PPC_FLOATING_POINT_SUPPORT)
static const double one = 1.0, tiny=1.0e-300; static const double one = 1.0, tiny=1.0e-300;
@@ -236,7 +236,7 @@ __sqrt(double x)
return z; return z;
} }
#endif #endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/ /****************************************************************************/

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "net.lib 1.176" #define VERS "net.lib 1.172"
#define VSTRING "net.lib 1.176 (27.9.2004)\r\n" #define VSTRING "net.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: net.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: net.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,11 +1,15 @@
c.lib 1.175 (10.9.2004) c.lib 1.172 (21.8.2004)
- The timeval definition in <sys/time.h> can now be used without - Changed the values which the acos(), asin(), atan2(), fmod()
having to include <exec/types.h> and <devices/timer.h>. Just and sqrt() functions return when they find that their parameters
define the __USE_CLIB2_TIMEVAL preprocessor symbol. However, are invalid.
this is intended only for code which for certain reasons cannot
include these header files. Don't use this approach if your
code may include <devices/timer.h> at some point.
- The sprintf() function family did not properly terminate the - The atan2() function failed to perform a correct parameter check.
output string if the format string itself was empty. Fixed.
c.lib 1.171 (16.8.2004)
- Added hypot()
- vfprintf/vfscanf now support the %lld/%llu (64 bit integer) format
by default

View File

@@ -1,5 +1,5 @@
# #
# $Id: smakefile,v 1.8 2004-09-20 17:16:06 obarthel Exp $ # $Id: smakefile,v 1.6 2004-08-16 09:33:12 obarthel Exp $
# #
# :ts=8 # :ts=8
# #
@@ -163,8 +163,7 @@ FCNTL_OBJ = \
fcntl_lseek.o \ fcntl_lseek.o \
fcntl_open.o \ fcntl_open.o \
fcntl_read.o \ fcntl_read.o \
fcntl_write.o \ fcntl_write.o
fcntl_get_default_file.o
LIBGEN_OBJ = \ LIBGEN_OBJ = \
libgen_basename.o \ libgen_basename.o \
@@ -415,8 +414,6 @@ STDLIB_OBJ = \
stdlib_strtod.o \ stdlib_strtod.o \
stdlib_strtol.o \ stdlib_strtol.o \
stdlib_strtoul.o \ stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \ stdlib_swapstack.o \
stdlib_system.o \ stdlib_system.o \
stdlib_unsetenv.o \ stdlib_unsetenv.o \

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "stack.lib 1.176" #define VERS "stack.lib 1.172"
#define VSTRING "stack.lib 1.176 (27.9.2004)\r\n" #define VSTRING "stack.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: stack.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_puts.c,v 1.2 2004-09-10 07:39:19 obarthel Exp $ * $Id: stdio_puts.c,v 1.1.1.1 2004-07-26 16:31:40 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -94,7 +94,7 @@ puts(const char *s)
out: out:
/* Note: if buffering is disabled for this stream, then we still /* Note: if buffering is disabled for this stdout, then we still
may have buffered data around, queued to be printed right now. may have buffered data around, queued to be printed right now.
This is intended to improve performance as it takes more effort This is intended to improve performance as it takes more effort
to write a single character to a file than to write a bunch. */ to write a single character to a file than to write a bunch. */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_vfprintf.c,v 1.5 2004-09-10 07:39:19 obarthel Exp $ * $Id: stdio_vfprintf.c,v 1.4 2004-08-14 11:11:01 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -262,6 +262,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -343,6 +344,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -564,6 +566,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -620,6 +623,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1009,6 +1013,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1163,6 +1168,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1218,6 +1224,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL) if(arg == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1236,6 +1243,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(short_ptr == NULL) if(short_ptr == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1260,6 +1268,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL) if(int_ptr == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1280,6 +1289,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL) if(int_ptr == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1301,6 +1311,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL) if(int_ptr == NULL)
{ {
errno = EFAULT; errno = EFAULT;
result = EOF;
goto out; goto out;
} }
} }
@@ -1513,7 +1524,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
may have buffered data around, queued to be printed right now. may have buffered data around, queued to be printed right now.
This is intended to improve performance as it takes more effort This is intended to improve performance as it takes more effort
to write a single character to a file than to write a bunch. */ to write a single character to a file than to write a bunch. */
if(result != EOF && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE) if(result > 0 && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE)
{ {
if(__iob_write_buffer_is_valid(iob) && __flush_iob_write_buffer(iob) < 0) if(__iob_write_buffer_is_valid(iob) && __flush_iob_write_buffer(iob) < 0)
result = EOF; result = EOF;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_main.c,v 1.2 2004-09-18 09:03:30 obarthel Exp $ * $Id: stdlib_main.c,v 1.1.1.1 2004-07-26 16:31:58 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -64,10 +64,7 @@ extern int main(int arg_c,char ** arg_v);
/****************************************************************************/ /****************************************************************************/
/* The SAS/C profiling hooks can be used to track call chains. Neat #if 0
trick, but not always necessary. Don't enable this unless you know
what you're doing... */
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
/****************************************************************************/ /****************************************************************************/
@@ -103,7 +100,7 @@ _EPILOG(REG(a0,char * id))
/****************************************************************************/ /****************************************************************************/
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */ #endif
/****************************************************************************/ /****************************************************************************/
@@ -167,25 +164,14 @@ call_main(void)
/* Go through the constructor list */ /* Go through the constructor list */
_init(); _init();
/* If the SAS/C profiling code is set up for printing function //show_profile_names = TRUE;
call chains, switch it on now. */
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
{
show_profile_names = TRUE;
}
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
/* After all these preparations, get this show on the road... */ /* After all these preparations, get this show on the road... */
exit(main((int)__argc,(char **)__argv)); exit(main((int)__argc,(char **)__argv));
out: out:
/* Switch off function name printing, if it was enabled. */ //show_profile_names = FALSE;
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
{
show_profile_names = FALSE;
}
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
/* If we end up here with the __stack_overflow variable /* If we end up here with the __stack_overflow variable
* set then the stack overflow handler dropped into * set then the stack overflow handler dropped into
@@ -412,9 +398,8 @@ _main(void)
stack_size = (__stack_size + 15UL) & ~15UL; stack_size = (__stack_size + 15UL) & ~15UL;
/* We allocate a little more memory so that we can align /* We allocate a little more memory so that we can align
the stack to a 128 bit boundary. The extra 20 bytes are the stack to a 128 bit boundary. */
to mimic the Task stack setup in dos.library/CreateProc. */ stk = AllocVec(sizeof(*stk) + 15 + stack_size,MEMF_PUBLIC|MEMF_ANY);
stk = AllocVec(sizeof(*stk) + 15 + 20 + stack_size,MEMF_PUBLIC|MEMF_ANY);
if(stk == NULL) if(stk == NULL)
goto out; goto out;
@@ -425,12 +410,9 @@ _main(void)
lower = (((ULONG)(stk+1)) + 15UL) & ~15UL; lower = (((ULONG)(stk+1)) + 15UL) & ~15UL;
upper = lower + stack_size; upper = lower + stack_size;
/* Fill in the lower and upper bounds, then take care of
the stack pointer itself. This layout mimics the process
creation code in dos.library. */
stk->stk_Lower = (APTR)lower; stk->stk_Lower = (APTR)lower;
stk->stk_Upper = upper - 4; stk->stk_Upper = upper;
stk->stk_Pointer = (APTR)(upper - 20); stk->stk_Pointer = (APTR)upper;
/* If necessary, set up for stack size usage measurement. */ /* If necessary, set up for stack size usage measurement. */
__stack_usage_init(stk); __stack_usage_init(stk);

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_setjmp.c,v 1.2 2004-09-27 15:07:20 tfrieden Exp $ * $Id: stdlib_setjmp.c,v 1.1.1.1 2004-07-26 16:32:05 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -283,8 +283,6 @@ l1: moveml a0@(4:W),d1-d7 | restore all data registers \n\
/****************************************************************************/ /****************************************************************************/
#ifdef PPC_FLOATING_POINT_SUPPORT
__asm(" \n\ __asm(" \n\
\n\ \n\
.text \n\ .text \n\
@@ -360,48 +358,6 @@ longjmp: \n\
blr \n\ blr \n\
\n\ \n\
"); ");
#else
__asm(" \n\
\n\
.text \n\
.align 2 \n\
\n\
.globl setjmp \n\
\n\
setjmp: \n\
\n\
mflr r10 \n\
mfcr r11 \n\
mr r12, r1 \n\
stmw r10, 0(r3) \n\
li r3, 0 \n\
blr \n\
\n\
");
__asm(" \n\
.text \n\
.align 2 \n\
\n\
.globl longjmp \n\
\n\
longjmp: \n\
\n\
lmw r10,0(r3) \n\
mtlr r10 \n\
mtcr r11 \n\
mr r1,r12 \n\
cmpwi r4, 0 \n\
bne 1f \n\
li r3,1 \n\
blr \n\
1: \n\
mr r3, r4 \n\
blr \n\
\n\
");
#endif /* defined PPC_FLOATING_POINT_SUPPORT */
#endif /* defined STACK_EXTENSION */ #endif /* defined STACK_EXTENSION */

View File

@@ -1,204 +0,0 @@
/*
* $Id: stdlib_strtoll.c,v 1.1 2004-09-20 17:16:06 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _STDLIB_NULL_POINTER_CHECK_H
#include "stdlib_null_pointer_check.h"
#endif /* _STDLIB_NULL_POINTER_CHECK_H */
/****************************************************************************/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
#if defined(USE_64_BIT_INTS)
/****************************************************************************/
long long
strtoll(const char *str, char **ptr, int base)
{
BOOL is_negative;
long long result = 0;
long long new_sum;
long long sum;
char c;
ENTER();
SHOWSTRING(str);
SHOWPOINTER(ptr);
SHOWVALUE(base);
assert(str != NULL && base >= 0);
#if defined(CHECK_FOR_NULL_POINTERS)
{
if(str == NULL)
{
SHOWMSG("invalid str parameter");
errno = EFAULT;
goto out;
}
}
#endif /* CHECK_FOR_NULL_POINTERS */
if(base < 0)
{
SHOWMSG("invalid base parameter");
errno = ERANGE;
goto out;
}
/* Skip all leading blanks. */
while((c = (*str)) != '\0')
{
if(NOT isspace(c))
break;
str++;
}
/* The first character may be a sign. */
if(c == '-')
{
/* It's a negative number. */
is_negative = TRUE;
str++;
}
else
{
/* It's not going to be negative. */
is_negative = FALSE;
/* But there may be a sign we will choose to
* ignore.
*/
if(c == '+')
str++;
}
c = (*str);
/* There may be a leading '0x' to indicate that what
* follows is a hexadecimal number.
*/
if(base == 0 || base == 16)
{
if((c == '0') && (str[1] == 'x' || str[1] == 'X'))
{
base = 16;
str += 2;
c = (*str);
}
}
/* If we still don't know what base to use and the
* next letter to follow is a zero then this is
* probably a number in octal notation.
*/
if(base == 0)
{
if(c == '0')
base = 8;
else
base = 10;
}
sum = 0;
if(1 <= base && base <= 36)
{
while(c != '\0')
{
if('0' <= c && c <= '9')
c -= '0';
else if ('a' <= c)
c -= 'a' - 10;
else if ('A' <= c)
c -= 'A' - 10;
else
break;
/* Ignore invalid numbers. */
if(c >= base)
break;
new_sum = base * sum + c;
if(new_sum < sum) /* overflow? */
{
errno = ERANGE;
if(is_negative)
result = LONG_MIN;
else
result = LONG_MAX;
goto out;
}
sum = new_sum;
str++;
c = (*str);
}
}
if(is_negative)
result = (-sum);
else
result = sum;
out:
/* If desired, remember where we stopped reading the
* number from the buffer.
*/
if(ptr != NULL)
(*ptr) = (char *)str;
RETURN(result);
return(result);
}
/****************************************************************************/
#endif /* USE_64_BIT_INTS */

View File

@@ -1,201 +0,0 @@
/*
* $Id: stdlib_strtoull.c,v 1.1 2004-09-20 17:16:06 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _STDLIB_NULL_POINTER_CHECK_H
#include "stdlib_null_pointer_check.h"
#endif /* _STDLIB_NULL_POINTER_CHECK_H */
/****************************************************************************/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
#if defined(USE_64_BIT_INTS)
/****************************************************************************/
unsigned long long
strtoull(const char *str, char **ptr, int base)
{
BOOL is_negative;
unsigned long long result = 0;
unsigned long long new_sum;
unsigned long long sum;
char c;
ENTER();
SHOWSTRING(str);
SHOWPOINTER(ptr);
SHOWVALUE(base);
assert(str != NULL && base >= 0);
#if defined(CHECK_FOR_NULL_POINTERS)
{
if(str == NULL)
{
SHOWMSG("invalid str parameter");
errno = EFAULT;
goto out;
}
}
#endif /* CHECK_FOR_NULL_POINTERS */
if(base < 0)
{
SHOWMSG("invalid base parameter");
errno = ERANGE;
goto out;
}
/* Skip all leading blanks. */
while((c = (*str)) != '\0')
{
if(NOT isspace(c))
break;
str++;
}
/* The first character may be a sign. */
if(c == '-')
{
/* It's a negative number. */
is_negative = TRUE;
str++;
}
else
{
/* It's not going to be negative. */
is_negative = FALSE;
/* But there may be a sign we will choose to
* ignore.
*/
if(c == '+')
str++;
}
c = (*str);
/* There may be a leading '0x' to indicate that what
* follows is a hexadecimal number.
*/
if(base == 0 || base == 16)
{
if((c == '0') && (str[1] == 'x' || str[1] == 'X'))
{
base = 16;
str += 2;
c = (*str);
}
}
/* If we still don't know what base to use and the
* next letter to follow is a zero then this is
* probably a number in octal notation.
*/
if(base == 0)
{
if(c == '0')
base = 8;
else
base = 10;
}
sum = 0;
if(1 <= base && base <= 36)
{
while(c != '\0')
{
if('0' <= c && c <= '9')
c -= '0';
else if ('a' <= c)
c -= 'a' - 10;
else if ('A' <= c)
c -= 'A' - 10;
else
break;
/* Ignore invalid numbers. */
if(c >= base)
break;
new_sum = base * sum + c;
if(new_sum < sum) /* overflow? */
{
errno = ERANGE;
result = ULONG_MAX;
goto out;
}
sum = new_sum;
str++;
c = (*str);
}
}
if(is_negative)
result = (-sum);
else
result = sum;
out:
/* If desired, remember where we stopped reading the
* number from the buffer.
*/
if(ptr != NULL)
(*ptr) = (char *)str;
RETURN(result);
return(result);
}
/****************************************************************************/
#endif /* USE_64_BIT_INTS */

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 176 #define REVISION 172
#define DATE "27.9.2004" #define DATE "21.8.2004"
#define VERS "unix.lib 1.176" #define VERS "unix.lib 1.172"
#define VSTRING "unix.lib 1.176 (27.9.2004)\r\n" #define VSTRING "unix.lib 1.172 (21.8.2004)\r\n"
#define VERSTAG "\0$VER: unix.lib 1.176 (27.9.2004)" #define VERSTAG "\0$VER: unix.lib 1.172 (21.8.2004)"

View File

@@ -1 +1 @@
176 172

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: usergroup_headers.h,v 1.2 2004-09-16 08:45:03 obarthel Exp $ * $Id: usergroup_headers.h,v 1.1.1.1 2004-07-26 16:32:38 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -519,18 +519,14 @@ extern int __root_egid;
#define __umask(mask) ({ \ #define __umask(mask) ({ \
ULONG _umask_mask = (mask); \ ULONG _umask_mask = (mask); \
ULONG _umask__re = \ { \
({ \
register struct Library * const __umask__bn __asm("a6") = (struct Library *) (__UserGroupBase);\ register struct Library * const __umask__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register ULONG __umask__re __asm("d0"); \
register ULONG __umask_mask __asm("d0") = (_umask_mask); \ register ULONG __umask_mask __asm("d0") = (_umask_mask); \
__asm volatile ("jsr a6@(-192:W)" \ __asm volatile ("jsr a6@(-192:W)" \
: "=r"(__umask__re) \ : \
: "r"(__umask__bn), "r"(__umask_mask) \ : "r"(__umask__bn), "r"(__umask_mask) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \ : "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__umask__re; \ } \
}); \
_umask__re; \
}) })
#define __getumask() ({ \ #define __getumask() ({ \
@@ -722,7 +718,7 @@ VOID __endgrent(VOID);
UBYTE *__crypt(UBYTE *key,UBYTE *set); UBYTE *__crypt(UBYTE *key,UBYTE *set);
UBYTE *__ug_GetSalt(struct passwd *user,UBYTE *buf,ULONG size); UBYTE *__ug_GetSalt(struct passwd *user,UBYTE *buf,ULONG size);
UBYTE *__getpass(UBYTE *prompt); UBYTE *__getpass(UBYTE *prompt);
UWORD __umask(ULONG mask); VOID __umask(ULONG mask);
UWORD __getumask(VOID); UWORD __getumask(VOID);
LONG __setsid(VOID); LONG __setsid(VOID);
LONG __getpgrp(VOID); LONG __getpgrp(VOID);