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
baf7257d89 This commit was manufactured by cvs2svn to create tag 'V1_168'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_168@14701 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2004-08-07 10:24:05 +00:00
102 changed files with 3933 additions and 5343 deletions

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.68k,v 1.11 2004-10-07 09:20:44 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.3 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -40,7 +40,7 @@ endif
.c.o:
@echo "Compiling $<"
@$(CC) -c $(CFLAGS) $<
@$(CC) -c $(CFLAGS) -DIEEE_FLOATING_POINT_SUPPORT $<
$(LIBC_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):c]"
@ -144,9 +144,9 @@ C_LIB = \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_data.o \
locale_init_exit.o \
locale_localeconv.o \
locale_setlocale.o \
@ -306,8 +306,6 @@ C_LIB = \
stdlib_startup.o \
stdlib_strtol.o \
stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_sysbase.o \
stdlib_system.o \
@ -317,6 +315,7 @@ C_LIB = \
stdlib_udivsi4.o \
stdlib_umodsi3.o \
stdlib_unsetenv.o \
stdlib_usergroup.o \
stdlib_wildcard_expand.o \
strings_strcasecmp.o \
strings_strncasecmp.o \
@ -362,9 +361,9 @@ C_LIB = \
time_time.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_currentpathname.o \
unistd_data.o \
unistd_dup.o \
unistd_dup2.o \
unistd_fchown.o \
@ -382,11 +381,8 @@ C_LIB = \
unistd_realpath.o \
unistd_sleep.o \
unistd_symlink.o \
unistd_timer.o \
unistd_time_delay.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_usleep.o \
utime_utime.o
UNIX_LIB = \
@ -399,7 +395,6 @@ UNIX_LIB = \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \
mount_statfs.o \
stat_chmod.o \
@ -425,7 +420,6 @@ UNIX_LIB = \
stdlib_system.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_getcwd.o \
unistd_lchown.o \
@ -458,14 +452,12 @@ MATH_LIB = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isinf.o \
math_isnan.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \
@ -706,6 +698,11 @@ STARTUPS := nrcrt0.o nbcrt0.o nr32crt0.o nb32crt0.o ncrt0.o mainnb.o mainb.o mai
##############################################################################
all: \
lib/libm020/libm.a \
lib/libm.a \
lib/libb/libm020/libm.a \
lib/libb/libm.a \
lib/libb32/libm020/libm.a \
lib/nrcrt0.o \
lib/nbcrt0.o \
lib/ncrt0.o \
@ -713,12 +710,7 @@ all: \
lib/n32rcrt0.o \
lib/mainnb.o \
lib/mainb.o \
lib/mainb32.o \
lib/libm.a \
lib/libm020/libm.a \
lib/libb/libm.a \
lib/libb/libm020/libm.a \
lib/libb32/libm020/libm.a
lib/mainb32.o
##############################################################################

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.os4,v 1.12 2004-10-07 11:03:46 tfrieden Exp $
# $Id: GNUmakefile.os4,v 1.3 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -53,7 +53,7 @@ endif
%.o : %.c
@echo "Compiling $<"
@$(CC) -c $(CFLAGS) $<
@$(CC) -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
$(LIBC_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):c]"
@ -65,7 +65,7 @@ $(LIBUNIX_OBJS)/%.o : %.c
$(LIBM_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):m]"
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) $(FLOAT_TYPE) $<
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
$(LIBSTACK_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):stack]"
@ -87,17 +87,10 @@ $(LIBAMIGA_OBJS)/%.o : %.c
ifeq (small_data,$(TYPE))
CODE_TYPE := -msdata=sysv -DSMALL_DATA
FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT
endif
ifeq (large_data,$(TYPE))
CODE_TYPE := -msdata=data
FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT
endif
ifeq (large_data_softfloat, $(TYPE))
CODE_TYPE := -msdata=data -msoft-float
FLOAT_TYPE :=
endif
##############################################################################
@ -108,7 +101,7 @@ WARNINGS = \
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -fno-builtin -D__USE_INLINE__ -Wa,-mregnames
OPTIMIZE = -O -fomit-frame-pointer -funroll-loops
OPTIMIZE = -O3 -fomit-frame-pointer -funroll-loops
#DEBUG = -g
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
@ -145,9 +138,9 @@ C_LIB = \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_data.o \
locale_init_exit.o \
locale_localeconv.o \
locale_setlocale.o \
@ -308,13 +301,12 @@ C_LIB = \
stdlib_startup.o \
stdlib_strtol.o \
stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_system.o \
stdlib_termination_message.o \
stdlib_threshold.o \
stdlib_unsetenv.o \
stdlib_usergroup.o \
stdlib_wildcard_expand.o \
strings_strcasecmp.o \
strings_strncasecmp.o \
@ -360,9 +352,9 @@ C_LIB = \
time_time.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_currentpathname.o \
unistd_data.o \
unistd_dup.o \
unistd_dup2.o \
unistd_fchown.o \
@ -380,11 +372,8 @@ C_LIB = \
unistd_realpath.o \
unistd_sleep.o \
unistd_symlink.o \
unistd_time_delay.o \
unistd_timer.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_usleep.o \
utime_utime.o
@ -398,7 +387,6 @@ UNIX_LIB = \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \
mount_statfs.o \
stat_chmod.o \
@ -424,7 +412,6 @@ UNIX_LIB = \
stdlib_system.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_getcwd.o \
unistd_lchown.o \
@ -457,14 +444,12 @@ MATH_LIB = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isnan.o \
math_isinf.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \
@ -693,12 +678,7 @@ all: \
lib/crtbegin.o \
lib/crtend.o \
lib/mainnb.o \
lib/libm.a \
lib/small-data/libm.a \
lib/bcrt0.o \
lib/bcrtbegin.o \
lib/bcrtend.o \
lib/soft-float/libc.a
lib/libm.a
copy:
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
@ -711,7 +691,7 @@ clean:
realclean:
$(MAKE) clean
-$(DELETE) lib small_data large_data large_data_softfloat
-$(DELETE) lib small_data large_data
##############################################################################
@ -753,12 +733,6 @@ endif
lib:
-$(MAKEDIR) $@
lib/small-data:
-$(MAKEDIR) $@
lib/soft-float:
-$(MAKEDIR) $@
lib/libm.a: lib
$(MAKE) TYPE=large_data kitchen_sink
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
@ -767,10 +741,6 @@ lib/small-data/libm.a: lib lib/small-data
$(MAKE) TYPE=small_data kitchen_sink
$(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
$(COPY) crt0.o lib
@ -786,15 +756,6 @@ lib/mainnb.o : lib mainnb.o
lib/mainb.o : lib mainb.o
$(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
@ -915,13 +876,6 @@ mainb.o : stdlib_main.c
@echo "Compiling $<"
@$(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:

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "amiga.lib 1.180"
#define VSTRING "amiga.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "amiga.lib 1.168"
#define VSTRING "amiga.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "c.lib 1.180"
#define VSTRING "c.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: c.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "c.lib 1.168"
#define VSTRING "c.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: c.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*
* $Id: crtbegin.c,v 1.3 2004-09-29 16:54:54 obarthel Exp $
* $Id: crtbegin.c,v 1.1.1.1 2004-07-26 16:30:22 obarthel Exp $
*
* :ts=4
*

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "debug.lib 1.180"
#define VSTRING "debug.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "debug.lib 1.168"
#define VSTRING "debug.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

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
*
@ -36,12 +36,6 @@
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
#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 */

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype.h,v 1.3 2004-08-07 10:42:04 obarthel Exp $
* $Id: ctype.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -63,6 +63,12 @@ extern int toupper(int c);
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
#define isascii(c) ((unsigned)(c) <= 127)
/****************************************************************************/
/*
* If requested, reimplement the character classification functions as macros;
* note that the macro variants ignore the current locale and default to the
@ -107,12 +113,6 @@ extern const unsigned char * const __ctype_table;
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
#define isascii(c) ((unsigned)(c) <= 127)
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */

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
*
@ -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
* 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
*
@ -58,12 +58,6 @@
/****************************************************************************/
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
#define LLONG_MAX 0x7fffffffffffffffLL
#define ULLONG_MAX 0xffffffffffffffffULL
/****************************************************************************/
#define PATH_MAX 1024
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: math.h,v 1.4 2004-08-16 09:33:13 obarthel Exp $
* $Id: math.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -89,8 +89,6 @@ extern double rint(double x);
extern float rintf(float x);
extern int isinf(double x);
extern int isnan(double x);
extern double logb(double x);
extern double hypot(double x,double y);
/****************************************************************************/

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
*
@ -57,25 +57,12 @@ typedef char * va_list;
/****************************************************************************/
#else
/****************************************************************************/
#if defined(__GNUC__)
/* Use the compiler supplied, machine specific <stdarg.h> file. */
#undef _STDARG_H
#include_next "stdarg.h"
#include <sys/amigaos-va.h>
#else
#error "Unknown compiler"
#endif /* __GNUC__ */
/****************************************************************************/
#if defined(__GNUC__)
#undef _STDARG_H
#include_next "stdarg.h"
#else
#error "Unknown compiler"
#endif /* __GNUC__ */
#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
*
@ -62,7 +62,7 @@ extern "C" {
* correspond to a real limitation for this 'C' runtime library and is
* 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
*
@ -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(alloca)
#undef alloca

View File

@ -1,5 +1,5 @@
/*
* $Id: time.h,v 1.7 2004-09-29 10:15:57 obarthel Exp $
* $Id: time.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -52,7 +52,7 @@ extern "C" {
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
this problem... */
#if !defined(__TIMEVAL_ALREADY_DEFINED) && !defined(__USE_CLIB2_TIMEVAL)
#ifndef DEVICES_TIMER_H
/****************************************************************************/
@ -73,26 +73,11 @@ extern "C" {
/****************************************************************************/
/* This will define the 'struct timeval' */
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif /* DEVICES_TIMER_H */
/* Assume that the 'struct timeval' definition is now in place. */
#define __TIMEVAL_ALREADY_DEFINED
/****************************************************************************/
#endif /* INCLUDE_VERSION */
/****************************************************************************/
#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)
#else
/****************************************************************************/
@ -109,7 +94,11 @@ struct timeval
/****************************************************************************/
#endif /* !__TIMEVAL_ALREADY_DEFINED */
#endif /* INCLUDE_VERSION */
/****************************************************************************/
#endif /* DEVICES_TIMER_H */
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd.h,v 1.6 2004-09-29 14:17:46 obarthel Exp $
* $Id: unistd.h,v 1.4 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -52,13 +52,6 @@ extern "C" {
/****************************************************************************/
/* Endianness: we assume a big endian memory layout (for 68k and PowerPC). */
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN 4321
#define BYTE_ORDER BIG_ENDIAN
/****************************************************************************/
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
@ -94,7 +87,6 @@ extern int symlink(const char * actual_path, const char * symbolic_path);
extern int readlink(const char * path_name, char * buffer, int buffer_size);
extern int chdir(const char * path_name);
extern unsigned int sleep(unsigned int seconds);
extern void usleep(unsigned long microseconds);
extern int getopt(int argc, char * argv[], char *opts);
extern pid_t getpid(void);
extern char *realpath(const char *file_name, char *resolved_name);
@ -208,32 +200,28 @@ extern int h_errno;
/****************************************************************************/
typedef int socklen_t;
/****************************************************************************/
extern int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen);
extern int accept(int sockfd,struct sockaddr *cliaddr,int *addrlen);
extern int bind(int sockfd,struct sockaddr *name,int namelen);
extern int connect(int sockfd,struct sockaddr *name,socklen_t namelen);
extern struct hostent * gethostbyaddr(const char *addr, socklen_t len, int type);
extern int connect(int sockfd,struct sockaddr *name,int namelen);
extern struct hostent * gethostbyaddr(const char *addr, int len, int type);
extern struct hostent * gethostbyname(const char *name);
extern int gethostname(const char *name, int namelen);
extern struct netent * getnetbyname(const char *name);
extern int getpeername(int sockfd,struct sockaddr *name,socklen_t *namelen);
extern int getsockname(int sockfd,struct sockaddr *name,socklen_t *namelen);
extern int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen);
extern int getpeername(int sockfd,struct sockaddr *name,int *namelen);
extern int getsockname(int sockfd,struct sockaddr *name,int *namelen);
extern int getsockopt(int sockfd,int level,int optname,void *optval,int *optlen);
extern unsigned long inet_addr(const char *addr);
extern char * inet_ntoa(struct in_addr in);
extern int ioctl(int fd,unsigned long request, ... /* char *arg */);
extern int listen(int sockfd,int backlog);
extern int recv(int fd,void *buff,size_t nbytes,int flags);
extern int recvfrom(int sockfd,void *buff,int len,int flags,struct sockaddr *from,socklen_t *fromlen);
extern int recvfrom(int sockfd,void *buff,int len,int flags,struct sockaddr *from,int *fromlen);
extern int recvmsg(int socket,struct msghdr *msg,int flags);
extern int select(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout);
extern int send(int fd,const void *buff,size_t nbytes,int flags);
extern int send(int fd,void *buff,size_t nbytes,int flags);
extern int sendmsg(int socket,struct msghdr *msg,int flags);
extern int sendto(int sockfd,const void *buff,int len,int flags,struct sockaddr *to,socklen_t tolen);
extern int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t optlen);
extern int sendto(int sockfd,void *buff,int len,int flags,struct sockaddr *to,int tolen);
extern int setsockopt(int sockfd,int level,int optname,void *optval,int optlen);
extern int shutdown(int socket, int how);
extern int socket(int domain,int type,int protocol);
extern long gethostid(void);

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_get_default_file.c,v 1.1 2004-08-25 15:27:27 obarthel Exp $
* $Id: locale_data.c,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
*
* :ts=4
*
@ -31,39 +31,15 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _FCNTL_HEADERS_H
#include "fcntl_headers.h"
#endif /* _FCNTL_HEADERS_H */
#ifndef _LOCALE_HEADERS_H
#include "locale_headers.h"
#endif /* _LOCALE_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
struct Locale * __default_locale;
struct Locale * __locale_table[NUM_LOCALES];
/****************************************************************************/
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);
}
char __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_headers.h,v 1.2 2004-09-29 19:57:57 obarthel Exp $
* $Id: locale_headers.h,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
*
* :ts=4
*
@ -69,12 +69,12 @@
/****************************************************************************/
extern struct Locale * NOCOMMON __default_locale;
extern struct Locale * NOCOMMON __locale_table[NUM_LOCALES];
extern struct Locale * __default_locale;
extern struct Locale * __locale_table[NUM_LOCALES];
/****************************************************************************/
extern char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
extern char __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_init_exit.c,v 1.3 2004-09-29 19:57:57 obarthel Exp $
* $Id: locale_init_exit.c,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
*
* :ts=4
*
@ -41,25 +41,6 @@
/****************************************************************************/
struct Library * NOCOMMON __LocaleBase;
/****************************************************************************/
#if defined(__amigaos4__)
struct LocaleIFace * NOCOMMON __ILocale;
#endif /* __amigaos4__ */
/****************************************************************************/
struct Locale * NOCOMMON __default_locale;
struct Locale * NOCOMMON __locale_table[NUM_LOCALES];
/****************************************************************************/
char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
/****************************************************************************/
void
__close_all_locales(void)
{
@ -90,7 +71,8 @@ __close_all_locales(void)
/****************************************************************************/
CLIB_DESTRUCTOR(__locale_exit)
void
__locale_exit(void)
{
ENTER();
@ -125,7 +107,8 @@ CLIB_DESTRUCTOR(__locale_exit)
/****************************************************************************/
CLIB_CONSTRUCTOR(__locale_init)
int
__locale_init(void)
{
int i;
@ -162,6 +145,5 @@ CLIB_CONSTRUCTOR(__locale_init)
PROFILE_ON();
RETURN(OK);
CONSTRUCTOR_SUCCEED();
return(OK);
}

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "m.lib 1.180"
#define VSTRING "m.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: m.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "m.lib 1.168"
#define VSTRING "m.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: m.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "m881.lib 1.180"
#define VSTRING "m881.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "m881.lib 1.168"
#define VSTRING "m881.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

View File

@ -1,5 +1,5 @@
/*
* $Id: macros.h,v 1.2 2004-09-29 19:57:57 obarthel Exp $
* $Id: macros.h,v 1.1.1.1 2004-07-26 16:30:36 obarthel Exp $
*
* :ts=4
*
@ -148,10 +148,8 @@
#ifndef UNUSED
#ifdef __GNUC__
#define UNUSED __attribute__((unused))
#define NOCOMMON __attribute__((nocommon))
#else
#define UNUSED /* UNUSED */
#define NOCOMMON /* NOCOMMON */
#endif
#endif /* UNUSED */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_acos.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_acos.c,v 1.1.1.1 2004-07-26 16:30:37 obarthel Exp $
*
* :ts=4
*
@ -226,7 +226,7 @@ acos(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_asin.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_asin.c,v 1.1.1.1 2004-07-26 16:30:38 obarthel Exp $
*
* :ts=4
*
@ -237,7 +237,7 @@ asin(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

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.1.1.1 2004-07-26 16:30:39 obarthel Exp $
*
* :ts=4
*
@ -63,7 +63,7 @@ extern double __atan(double x);
/****************************************************************************/
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
const double pi = 3.14159265358979323846;
const double pi_over_2 = pi / 2.0;
@ -107,7 +107,7 @@ __atan2(double y,double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}
}
@ -135,7 +135,7 @@ __atan(double x)
}
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
double pi,pi_over_2;
double result;
@ -186,7 +186,7 @@ __atan2(double y,double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}
}
@ -201,6 +201,9 @@ __atan2(double y,double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double
tiny = 1.0e-300,
zero = 0.0,
@ -210,7 +213,7 @@ pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
double z;
int k,m,hx,hy,ix,iy;
@ -319,11 +322,19 @@ __atan2(double y,double x)
/****************************************************************************/
double
atan2(double y,double x)
atan2(double x,double y)
{
double result;
result = __atan2(y,x);
if(x != 0.0 && y != 0.0)
{
result = __atan2(x,y);
}
else
{
result = HUGE_VAL;
errno = EDOM;
}
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_data.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_data.c,v 1.1.1.1 2004-07-26 16:30:40 obarthel Exp $
*
* :ts=4
*
@ -48,5 +48,3 @@ struct Library * MathIeeeDoubTransBase;
/****************************************************************************/
double __huge_val;
double __not_a_number;
double __infinity;

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
*
@ -194,7 +194,7 @@ __exp(double x)
}
else
{
k = (int)(invln2*x+halF[xsb]);
k = invln2*x+halF[xsb];
t = k;
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
lo = t*ln2LO[0];

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fabs.c,v 1.4 2004-09-29 14:30:03 obarthel Exp $
* $Id: math_fabs.c,v 1.1.1.1 2004-07-26 16:30:42 obarthel Exp $
*
* :ts=4
*
@ -126,14 +126,8 @@ __fabs(double x)
/****************************************************************************/
#if defined(__PPC__)
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/
INLINE static const double
__fabs(double x)
{
@ -147,35 +141,10 @@ __fabs(double x)
}
/****************************************************************************/
#else
/****************************************************************************/
INLINE static const double
__fabs(double x)
{
double res;
if(x < 0)
res = (-x);
else
res = x;
return res;
}
/****************************************************************************/
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* __PPC__ */
/****************************************************************************/
double
fabs(double x)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fmod.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_fmod.c,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
*
* :ts=4
*
@ -284,7 +284,7 @@ fmod(double x,double y)
}
else
{
result = x;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fp_support.h,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_fp_support.h,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
*
* :ts=4
*
@ -36,47 +36,9 @@
/****************************************************************************/
/* If any of the three supported floating point support flavours is
enabled, make sure that the generic 'FLOATING_POINT_SUPPORT' symbol
is defined, too.*/
#if (defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT) || defined(PPC_FLOATING_POINT_SUPPORT))
#define FLOATING_POINT_SUPPORT
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT || PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
/* This selects whether or not the 'long double' type should be used. So far,
only 'double' can be supported, and 'long double' defaults to 'double'. */
/*#define USE_LONG_DOUBLE*/
/****************************************************************************/
#if defined(USE_LONG_DOUBLE)
typedef long double __long_double_t;
#else
typedef double __long_double_t;
#endif /* USE_LONG_DOUBLE */
/****************************************************************************/
/* 'Portable' raw representations of three IEEE floating point formats. */
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
#endif
/****************************************************************************/

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.1.1.1 2004-07-26 16:30:45 obarthel Exp $
*
* :ts=4
*
@ -38,7 +38,6 @@
#include <limits.h>
#include <errno.h>
#include <float.h>
#include <math.h>
/****************************************************************************/
@ -148,33 +147,6 @@ do { \
(d) = sl_u.value; \
} 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_sin(double x, double y, int iy);
extern int __rem_pio2(double x, double *y);
@ -192,9 +164,4 @@ extern double __scalbn(double x, int n);
/****************************************************************************/
extern double __not_a_number;
extern double __infinity;
/****************************************************************************/
#endif /* _MATH_HEADERS_H */

View File

@ -1,171 +0,0 @@
/*
* $Id: math_hypot.c,v 1.1 2004-08-16 09:33:11 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.
*
*
* PowerPC math library based in part on work by Sun Microsystems
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
*/
#ifndef _MATH_HEADERS_H
#include "math_headers.h"
#endif /* _MATH_HEADERS_H */
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
INLINE static const double
__hypot(double x,double y)
{
double yx;
x = fabs(x);
y = fabs(y);
if ( x < y )
{
double temp = x;
x = y;
y = temp;
}
if (x == 0.)
{
return 0.;
}
else
{
yx = y/x;
return x*sqrt(1. + yx*yx);
}
}
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double one = 1.0;
INLINE static const double
__hypot(double x,double y)
{
int n0;
double a=x,b=y,t1,t2,y1,y2,w;
int j,k,ha,hb;
n0 = ((*(int*)&one)>>29)^1; /* high word index */
ha = *(n0+(int*)&x)&0x7fffffff; /* high word of x */
hb = *(n0+(int*)&y)&0x7fffffff; /* high word of y */
if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
*(n0+(int*)&a) = ha; /* a <- |a| */
*(n0+(int*)&b) = hb; /* b <- |b| */
if((ha-hb)>0x3c00000) {return a+b;} /* x/y > 2**60 */
k=0;
if(ha > 0x5f300000) { /* a>2**500 */
if(ha >= 0x7ff00000) { /* Inf or NaN */
w = a+b; /* for sNaN */
if(((ha&0xfffff)|*(1-n0+(int*)&a))==0) w = a;
if(((hb^0x7ff00000)|*(1-n0+(int*)&b))==0) w = b;
return w;
}
/* scale a and b by 2**-600 */
ha -= 0x25800000; hb -= 0x25800000; k += 600;
*(n0+(int*)&a) = ha;
*(n0+(int*)&b) = hb;
}
if(hb < 0x20b00000) { /* b < 2**-500 */
if(hb <= 0x000fffff) { /* subnormal b or 0 */
if((hb|(*(1-n0+(int*)&b)))==0) return a;
t1=0;
*(n0+(int*)&t1) = 0x7fd00000; /* t1=2^1022 */
b *= t1;
a *= t1;
k -= 1022;
} else { /* scale a and b by 2^600 */
ha += 0x25800000; /* a *= 2^600 */
hb += 0x25800000; /* b *= 2^600 */
k -= 600;
*(n0+(int*)&a) = ha;
*(n0+(int*)&b) = hb;
}
}
/* medium size a and b */
w = a-b;
if (w>b) {
t1 = 0;
*(n0+(int*)&t1) = ha;
t2 = a-t1;
w = sqrt(t1*t1-(b*(-b)-t2*(a+t1)));
} else {
a = a+a;
y1 = 0;
*(n0+(int*)&y1) = hb;
y2 = b - y1;
t1 = 0;
*(n0+(int*)&t1) = ha+0x00100000;
t2 = a - t1;
w = sqrt(t1*y1-(w*(-w)-(t1*y2+t2*b)));
}
if(k!=0) {
t1 = 1.0;
*(n0+(int*)&t1) += (k<<20);
return t1*w;
} else return w;
}
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
double
hypot(double x,double y)
{
double result;
result = __hypot(x,y);
return(result);
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_init_exit.c,v 1.5 2004-09-29 19:57:57 obarthel Exp $
* $Id: math_init_exit.c,v 1.1.1.1 2004-07-26 16:30:46 obarthel Exp $
*
* :ts=4
*
@ -53,10 +53,9 @@
/****************************************************************************/
CLIB_DESTRUCTOR(__math_exit)
void
__math_exit(void)
{
ENTER();
#if defined(IEEE_FLOATING_POINT_SUPPORT)
{
if(MathIeeeSingBasBase != NULL)
@ -78,8 +77,6 @@ CLIB_DESTRUCTOR(__math_exit)
}
}
#endif /* IEEE_FLOATING_POINT_SUPPORT */
LEAVE();
}
/****************************************************************************/
@ -124,87 +121,41 @@ __math_init(void)
#endif /* IEEE_FLOATING_POINT_SUPPORT */
/* Now fill in the HUGE_VAL constant, which is set to
the largest representable floating point value. */
* +Infinity.
*/
if(sizeof(__huge_val) == 4) /* single precision */
{
static const unsigned long largest_fp_value[1] =
static const unsigned long infinity[] =
{
/* Exponent = +126, Mantissa = 8,388,607 */
0x7f7fffff
0x7F800000
};
static const unsigned long not_a_number[1] =
{
/* Exponent = 255 and fraction != 0.0 */
0x7fffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[1] =
{
/* Exponent = 255 and fraction = 0.0 */
0x7f800000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
else if (sizeof(__huge_val) == 8) /* double precision */
{
static const unsigned long largest_fp_value[2] =
static const unsigned long infinity[] =
{
/* Exponent = +1022, Mantissa = 4,503,599,627,370,495 */
0x7fefffff,0xffffffff
0x7FF00000,0x00000000
};
static const unsigned long not_a_number[2] =
{
/* Exponent = 2047 and fraction != 0.0 */
0x7fffffff,0xffffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[2] =
{
/* Exponent = 2047 and fraction = 0.0 */
0x7ff00000,0x00000000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(__huge_val) == 12) /* extended precision */
{
static const unsigned long largest_fp_value[3] =
static const unsigned long infinity[] =
{
/* Exponent = +32766, Mantissa = 18,446,744,073,709,551,615 */
0x7ffe0000,0xffffffff,0xffffffff
0x7FFF0000,0x00000000,0x00000000
};
static const unsigned long not_a_number[3] =
{
/* Exponent = 32767 and fraction != 0.0 */
0x7fff0000,0xffffffff,0xffffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[3] =
{
/* Exponent = 32767 and fraction = 0.0 */
0x7fff0000,0x00000000,0x00000000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
#endif /* USE_LONG_DOUBLE */
result = OK;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_isinf.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_isinf.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -45,6 +45,26 @@
/****************************************************************************/
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
/****************************************************************************/
int
isinf(double number)
{
@ -73,7 +93,6 @@ isinf(double number)
/* Exponent = 2047 and fraction = 0.0 */
is_infinity = (((x.raw[0] & 0x7FFFFFFF) == 0x7FF00000) && (x.raw[1] == 0));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(number) == 12) /* extended precision */
{
union ieee_long_double x;
@ -83,7 +102,6 @@ isinf(double number)
/* Exponent = 32767 and fraction = 0.0 */
is_infinity = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && (x.raw[1] & 0x7FFFFFFF) == 0 && (x.raw[2] == 0));
}
#endif /* USE_LONG_DOUBLE */
else
{
/* Can't happen */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_isnan.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_isnan.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -45,6 +45,26 @@
/****************************************************************************/
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
/****************************************************************************/
int
isnan(double number)
{
@ -72,17 +92,15 @@ isnan(double number)
/* Exponent = 2047 and fraction != 0.0 */
result = (((x.raw[0] & 0x7FF00000) == 0x7FF00000) && ((x.raw[0] & 0x000FFFFF) != 0 || (x.raw[1] != 0)));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(number) == 12) /* extended precision */
{
union ieee_long_double x;
x.value = number;
/* Exponent = 32766 and fraction != 0.0 */
/* Exponent = 32767 and fraction != 0.0 */
result = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && ((x.raw[1] & 0x7FFFFFFF) != 0 || x.raw[2] != 0));
}
#endif /* USE_LONG_DOUBLE */
else
{
/* Can't happen */

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
*
@ -82,21 +82,7 @@ double __kernel_tan(double x, double y, int iy)
unsigned int low;
GET_LOW_WORD(low,x);
if(((ix|low)|(iy+1))==0) return one/fabs(x);
else {
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);
}
}
else return (iy==1)? x: -one/x;
}
}
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
*
@ -135,7 +135,7 @@ __log(double x)
/****************************************************************************/
#if defined(__PPC__)
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */

View File

@ -1,136 +0,0 @@
/*
* $Id: math_logb.c,v 1.2 2004-08-14 11:11:01 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.
*
*
* PowerPC math library based in part on work by Sun Microsystems
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
*/
#ifndef _MATH_HEADERS_H
#include "math_headers.h"
#endif /* _MATH_HEADERS_H */
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
INLINE static const double
__logb(double x)
{
double result;
result = log(x) / log((double)FLT_RADIX);
return(result);
}
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE static const double
__logb(double x)
{
unsigned int lx,ix;
EXTRACT_WORDS(ix,lx,x);
ix &= 0x7fffffff; /* high |x| */
if((ix|lx)==0)
return -1.0/fabs(x);
if(ix>=0x7ff00000)
return x*x;
if((ix>>=20)==0) /* IEEE 754 logb */
return -1022.0;
else
return (double) (ix-1023);
}
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
double
logb(double x)
{
double result;
int sign;
if(x == 0.0)
{
result = -HUGE_VAL;
goto out;
}
if(isnan(x))
{
result = x;
goto out;
}
sign = isinf(x);
if(sign != 0)
{
if(sign < 0)
result = (-x);
else
result = x;
goto out;
}
result = __logb(x);
out:
return(result);
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

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
*
@ -109,7 +109,7 @@ __modf(double x,double *nptr)
/****************************************************************************/
#if defined(__PPC__)
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE static const double
__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
*
@ -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 */
n = ((unsigned int)hx>>31)+1;
if((n|yisint)==0) return (x-x)/(x-x);
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
if((n|(yisint-1))==0)
s = -one;/* (-ve)**(odd int) */
/* REDHAT LOCAL: This used to be
if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
but ANSI C says a right shift of a signed negative quantity is
implementation defined. */
if(((((unsigned int)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
/* |y| is huge */
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;
}
/* over/underflow if x is not close to one */
if(ix<0x3fefffff) return (hy<0)? s*huge*huge:s*tiny*tiny;
if(ix>0x3ff00000) 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)? huge*huge:tiny*tiny;
/* now |1-x| is tiny <= 2**-20, suffice to compute
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));
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
v = t*ivln2_l-w*ivln2;
@ -312,7 +311,7 @@ __pow(double x,double y)
SET_LOW_WORD(t1,0);
t2 = v-(t1-u);
} else {
double ss,s2,s_h,s_l,t_h,t_l;
double s2,s_h,s_l,t_h,t_l;
n = 0;
/* take care subnormal number */
if(ix<0x00100000)
@ -326,11 +325,11 @@ __pow(double x,double y)
else {k=0;n+=1;ix -= 0x00100000;}
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 */
v = one/(ax+bp[k]);
ss = u*v;
s_h = ss;
s = u*v;
s_h = s;
SET_LOW_WORD(s_h,0);
/* t_h=ax+bp[k] High */
t_h = zero;
@ -338,29 +337,33 @@ __pow(double x,double y)
t_l = ax - (t_h-bp[k]);
s_l = v*((u-s_h*t_h)-s_h*t_l);
/* compute log(ax) */
s2 = ss*ss;
s2 = s*s;
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;
t_h = 3.0+s2+r;
SET_LOW_WORD(t_h,0);
t_l = r-((t_h-3.0)-s2);
/* u+v = ss*(1+...) */
/* u+v = s*(1+...) */
u = s_h*t_h;
v = s_l*t_h+t_l*ss;
/* 2/(3log2)*(ss+...) */
v = s_l*t_h+t_l*s;
/* 2/(3log2)*(s+...) */
p_h = u+v;
SET_LOW_WORD(p_h,0);
p_l = v-(p_h-u);
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];
/* 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;
t1 = (((z_h+z_l)+dp_h[k])+t);
SET_LOW_WORD(t1,0);
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) */
y1 = y;
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
*
@ -54,10 +54,6 @@
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
double
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 */

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
*
@ -54,10 +54,6 @@
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
float
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 */

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.1.1.1 2004-07-26 16:30:53 obarthel Exp $
*
* :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;
@ -236,7 +236,7 @@ __sqrt(double x)
return z;
}
#endif
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
@ -251,7 +251,7 @@ sqrt(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "net.lib 1.180"
#define VSTRING "net.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: net.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "net.lib 1.168"
#define VSTRING "net.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: net.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#
# $Id: smakefile,v 1.10 2004-09-29 14:17:44 obarthel Exp $
# $Id: smakefile,v 1.4 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -163,14 +163,14 @@ FCNTL_OBJ = \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o
fcntl_write.o
LIBGEN_OBJ = \
libgen_basename.o \
libgen_dirname.o
LOCALE_OBJ = \
locale_data.o \
locale_init_exit.o \
locale_localeconv.o \
locale_setlocale.o
@ -189,14 +189,12 @@ MATH_OBJ = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isinf.o \
math_isnan.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \
@ -414,8 +412,6 @@ STDLIB_OBJ = \
stdlib_strtod.o \
stdlib_strtol.o \
stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_system.o \
stdlib_unsetenv.o \
@ -473,9 +469,9 @@ TIME_OBJ = \
UNISTD_OBJ = \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_currentpathname.o \
unistd_data.o \
unistd_dup.o \
unistd_dup2.o \
unistd_fchown.o \
@ -496,15 +492,12 @@ UNISTD_OBJ = \
unistd_sleep.o \
unistd_strip_double_slash.o \
unistd_symlink.o \
unistd_time_delay.o \
unistd_timer.o \
unistd_translatea2u.o \
unistd_translaterel.o \
unistd_translateu2a.o \
unistd_truncate.o \
unistd_unix_path_semantics.o \
unistd_unlink.o \
unistd_usleep.o
unistd_unlink.o
# \
# unistd_wildcard_expand.o

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_init_exit.c,v 1.4 2004-09-29 17:03:57 obarthel Exp $
* $Id: socket_init_exit.c,v 1.2 2004-07-28 15:50:45 obarthel Exp $
*
* :ts=4
*
@ -84,11 +84,16 @@ extern BOOL __is_daemon;
/****************************************************************************/
extern void __show_error(const char * message);
/****************************************************************************/
extern void __socket_hook_entry(struct Hook * hook,struct fd * fd,struct file_hook_message * message);
/****************************************************************************/
CLIB_DESTRUCTOR(__socket_exit)
void
__socket_exit(void)
{
ENTER();
@ -111,7 +116,16 @@ CLIB_DESTRUCTOR(__socket_exit)
* does not happen, the stdio cleanup function will
* crash (with bells on).
*/
__close_all_files();
if(__fd != NULL)
{
int i;
for(i = 0 ; i < __num_fd ; i++)
{
if(FLAG_IS_SET(__fd[i]->fd_Flags,FDF_IS_SOCKET) && FLAG_IS_SET(__fd[i]->fd_Flags,FDF_IN_USE))
close(i);
}
}
#if defined(__amigaos4__)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_send.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
* $Id: socket_send.c,v 1.1.1.1 2004-07-26 16:31:19 obarthel Exp $
*
* :ts=4
*
@ -48,7 +48,7 @@
/****************************************************************************/
int
send(int sockfd,const void *buff,size_t nbytes,int flags)
send(int sockfd,void *buff,size_t nbytes,int flags)
{
struct fd * fd;
int result = -1;

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_sendto.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
* $Id: socket_sendto.c,v 1.1.1.1 2004-07-26 16:31:20 obarthel Exp $
*
* :ts=4
*
@ -48,7 +48,7 @@
/****************************************************************************/
int
sendto(int sockfd,const void *buff,int len,int flags,struct sockaddr *to,int tolen)
sendto(int sockfd,void *buff,int len,int flags,struct sockaddr *to,int tolen)
{
struct fd * fd;
int result = -1;

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_setsockopt.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
* $Id: socket_setsockopt.c,v 1.1.1.1 2004-07-26 16:31:20 obarthel Exp $
*
* :ts=4
*
@ -48,7 +48,7 @@
/****************************************************************************/
int
setsockopt(int sockfd,int level,int optname,const void *optval,int optlen)
setsockopt(int sockfd,int level,int optname,void *optval,int optlen)
{
struct fd * fd;
int result = -1;

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "stack.lib 1.180"
#define VSTRING "stack.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "stack.lib 1.168"
#define VSTRING "stack.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_init_exit.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdio_init_exit.c,v 1.1.1.1 2004-07-26 16:31:36 obarthel Exp $
*
* :ts=4
*
@ -52,7 +52,7 @@
/****************************************************************************/
void
__close_all_files(void)
__stdio_exit(void)
{
int i;
@ -60,7 +60,7 @@ __close_all_files(void)
__check_abort_enabled = FALSE;
if(__iob != NULL && __num_iob > 0)
if(__iob != NULL)
{
for(i = 0 ; i < __num_iob ; i++)
{
@ -72,7 +72,7 @@ __close_all_files(void)
__iob = NULL;
}
if(__fd != NULL && __num_fd > 0)
if(__fd != NULL)
{
for(i = 0 ; i < __num_fd ; i++)
{
@ -89,17 +89,6 @@ __close_all_files(void)
/****************************************************************************/
CLIB_DESTRUCTOR(__stdio_exit)
{
ENTER();
__close_all_files();
LEAVE();
}
/****************************************************************************/
int
__stdio_init(void)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_protos.h,v 1.3 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdio_protos.h,v 1.1.1.1 2004-07-26 16:31:39 obarthel Exp $
*
* :ts=4
*
@ -65,11 +65,6 @@ struct fd;
/****************************************************************************/
/* stdio_init_exit.c */
void __close_all_files(void);
/****************************************************************************/
/* stdio_translateioerror.c */
extern void __translate_io_error_to_errno(LONG io_error,int * errno_ptr);
extern void __translate_access_io_error_to_errno(LONG io_error,int * errno_ptr);
@ -205,4 +200,22 @@ extern void __duplicate_fd(struct fd * duplicate_fd,struct fd * original_fd);
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
/* stdio_isnotanumber.c */
extern int __is_not_a_number(long double number);
/****************************************************************************/
/* stdio_isinfinity.c */
extern int __is_infinity(long double number);
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* _STDIO_PROTOS_H */

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
*
@ -94,7 +94,7 @@ puts(const char *s)
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.
This is intended to improve performance as it takes more effort
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.6 2004-10-23 16:38:18 obarthel Exp $
* $Id: stdio_vfprintf.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -72,7 +72,7 @@
/****************************************************************************/
static int
get_num_leading_digits(__long_double_t v)
get_num_leading_digits(long double v)
{
int num_digits;
@ -262,6 +262,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -343,6 +344,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -564,6 +566,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -620,6 +623,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -630,26 +634,25 @@ vfprintf(FILE * stream,const char * format, va_list arg)
const char * buffer_stop = &buffer[sizeof(buffer)-1];
char * buffer_start = buffer;
__long_double_t v;
int sign;
long double v;
output_buffer = buffer_start;
D(("sizeof(long double) == %ld",sizeof(v)));
if(parameter_size == parameter_size_long_double)
v = va_arg(arg, __long_double_t);
v = va_arg(arg, long double);
else
v = va_arg(arg, double);
if((sign = isinf(v)) != 0)
if(isinf(v) != 0)
{
SHOWMSG("infinity");
strcpy(output_buffer,"Inf");
output_len = 3;
if(sign < 0)
if(v < 0.0)
SET_FLAG(format_flags,FORMATF_IsNegative);
fill_character = ' ';
@ -673,7 +676,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
else
{
BOOL strip_trailing_zeroes = FALSE;
__long_double_t roundoff_fudge = 0.0;
long double roundoff_fudge = 0.0;
int max_digits = -1;
int exponent = 0;
int digit;
@ -710,7 +713,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
/* Figure out whether 'e' or 'f' format should be used. */
if(conversion_type == 'g' || conversion_type == 'e')
{
__long_double_t local_v = v;
long double local_v = v;
int local_exponent = 0;
/* Put one single digit in front of the decimal point. */
@ -975,12 +978,19 @@ vfprintf(FILE * stream,const char * format, va_list arg)
/* Remove the parameter from the argument vector and
don't produce any output. */
if(parameter_size == parameter_size_long_double)
(void)va_arg(arg, __long_double_t);
(void)va_arg(arg, long double);
else
(void)va_arg(arg, double);
minimum_field_width = 0;
format_flags = 0;
#ifndef NDEBUG
{
output_buffer = "*FLOATING POINT NUMBER*";
output_len = strlen(output_buffer);
}
#endif /* NDEBUG */
CLEAR_FLAG(format_flags,FORMATF_ProduceSign);
CLEAR_FLAG(format_flags,FORMATF_ProduceSpace);
}
#endif /* FLOATING_POINT_SUPPORT */
}
@ -1002,6 +1012,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1156,6 +1167,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1211,6 +1223,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1229,6 +1242,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(short_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1253,6 +1267,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1273,6 +1288,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1294,6 +1310,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1506,7 +1523,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
may have buffered data around, queued to be printed right now.
This is intended to improve performance as it takes more effort
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)
result = EOF;

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_vfscanf.c,v 1.3 2004-10-22 10:57:53 obarthel Exp $
* $Id: stdio_vfscanf.c,v 1.1.1.1 2004-07-26 16:31:48 obarthel Exp $
*
* :ts=4
*
@ -456,8 +456,8 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
#if defined(FLOATING_POINT_SUPPORT)
{
__long_double_t sum = 0.0;
__long_double_t new_sum;
long double sum = 0.0;
long double new_sum;
BOOL is_negative = FALSE;
BOOL decimal_point_matches = FALSE;
BOOL have_exponent = FALSE;
@ -495,7 +495,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
SHOWMSG("extended format (long double)");
next_parameter = va_arg(arg,__long_double_t *);
next_parameter = va_arg(arg,long double *);
}
assert( next_parameter != NULL );
@ -520,7 +520,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
}
else
{
*((__long_double_t *)next_parameter) = 0;
*((long double *)next_parameter) = 0;
}
}
@ -869,7 +869,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
}
else
{
*((__long_double_t *)next_parameter) = sum;
*((long double *)next_parameter) = sum;
}
num_assignments++;
@ -912,7 +912,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
SHOWMSG("extended format (long double)");
next_parameter = va_arg(arg,__long_double_t *);
next_parameter = va_arg(arg,long double *);
}
assert( next_parameter != NULL );
@ -1016,10 +1016,6 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
}
}
/* Chose a base according to the conversion to be
expected. For the 'x' and 'i' we examine the
incoming data rather than commit ourselves to
a peculiar data format now. */
if(conversion_type == 'd' || conversion_type == 'u')
base = 10;
else if (conversion_type == 'o')
@ -1064,11 +1060,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
* '0x' prefix or just a zero.
*/
c = __getc(stream);
/* This takes care of the '0x' prefix for hexadecimal
numbers ('%x') and also picks the right type of
data for the '%i' type. */
if ((c == 'x' || c == 'X') && (conversion_type == 'x' || conversion_type == 'i'))
if (c == 'x' || c == 'X')
{
/* It's the hex prefix. */
base = 16;
@ -1083,7 +1075,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
if(maximum_field_width > 0)
maximum_field_width--;
}
else if (isdigit(c) && (conversion_type == 'i')) /* This could be the octal prefix for the '%i' format. */
else if (isdigit(c))
{
/* The preceding '0' was part of the
octal prefix. So we don't really know

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_constructor_begin.c,v 1.2 2004-09-29 19:57:57 obarthel Exp $
* $Id: stdlib_constructor_begin.c,v 1.1.1.1 2004-07-26 16:31:52 obarthel Exp $
*
* :ts=4
*
@ -42,7 +42,80 @@
/****************************************************************************/
#if defined(__SASC)
#if defined(__amigaos4__)
/****************************************************************************/
/*
* Dummy constructor and destructor array. The linker script will put these at the
* very beginning of section ".ctors" and ".dtors". crtend.o contains a similar entry
* with a NULL pointer entry and is put at the end of the sections. This way, the init
* code can find the global constructor/destructor pointers
*/
static void (*__CTOR_LIST__[1]) (void) __attribute__((section(".ctors"))) = { (void *)-1 };
static void (*__DTOR_LIST__[1]) (void) __attribute__((section(".dtors"))) = { (void *)-1 };
/****************************************************************************/
static void
_do_ctors(void)
{
void (**pFuncPtr)(void);
/* Skip the first entry in the list (it's -1 anyway) */
pFuncPtr = __CTOR_LIST__ + 1;
/* Call all constructors in forward order */
while (*pFuncPtr != NULL)
(**pFuncPtr++)();
}
/****************************************************************************/
static void
_do_dtors(void)
{
static ULONG i = ~0UL;
void (**pFuncPtr)(void);
if(i == ~0UL)
{
ULONG j = (ULONG)__DTOR_LIST__[0];
if(j == ~0UL)
{
/* Find the end of the destructors list. */
j = 1;
while(__DTOR_LIST__[j] != NULL)
j++;
/* We're at the NULL entry now. Go back by one. */
j--;
}
i = j;
}
/* If one of the destructors drops into
* exit(), processing will continue with
* the next following destructor.
*/
(void)setjmp(__exit_jmp_buf);
/* Call all destructors in reverse order. */
pFuncPtr = &__DTOR_LIST__[i];
while(i > 0)
{
i--;
(**pFuncPtr--)();
}
}
/****************************************************************************/
#elif defined(__SASC)
/****************************************************************************/
@ -128,21 +201,9 @@ _do_ctors(void)
ULONG nptrs = (ULONG)__CTOR_LIST__[0];
ULONG i;
ENTER();
D(("there are %ld constructors to be called",nptrs));
/* Call all constructors in forward order */
for(i = 0 ; i < nptrs ; i++)
{
D(("calling constructor #%ld, 0x%08lx",i,__CTOR_LIST__[1+i]));
__CTOR_LIST__[1+i]();
}
SHOWMSG("all done.");
LEAVE();
}
/****************************************************************************/
@ -155,10 +216,6 @@ _do_dtors(void)
ULONG nptrs = (ULONG)__DTOR_LIST__[0];
static ULONG i;
ENTER();
D(("there are %ld destructors to be called",nptrs));
/* If one of the destructors drops into
* exit(), processing will continue with
* the next following destructor.
@ -167,15 +224,7 @@ _do_dtors(void)
/* Call all destructors in reverse order */
while(i++ < nptrs)
{
D(("calling destructor #%ld, 0x%08lx",i,__DTOR_LIST__[1+nptrs - i]));
__DTOR_LIST__[1+nptrs - i]();
}
SHOWMSG("all done.");
LEAVE();
}
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_data.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_data.c,v 1.1.1.1 2004-07-26 16:31:53 obarthel Exp $
*
* :ts=4
*
@ -85,11 +85,15 @@ ULONG __stk_extensions;
/****************************************************************************/
struct Library * __UtilityBase;
struct Library * __LocaleBase;
/****************************************************************************/
#if defined(__amigaos4__)
struct UtilityIFace * __IUtility;
struct UtilityIFace * __IUtility;
struct LocaleIFace * __ILocale;
#endif /* __amigaos4__ */
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_locale_utility.h,v 1.2 2004-09-29 19:57:58 obarthel Exp $
* $Id: stdlib_locale_utility.h,v 1.1.1.1 2004-07-26 16:31:57 obarthel Exp $
*
* :ts=4
*
@ -49,14 +49,8 @@
/****************************************************************************/
#ifndef _MACROS_H
#include "macros.h"
#endif /* _MACROS_H */
/****************************************************************************/
extern struct Library * NOCOMMON __UtilityBase;
extern struct Library * NOCOMMON __LocaleBase;
extern struct Library * __UtilityBase;
extern struct Library * __LocaleBase;
/****************************************************************************/
@ -64,8 +58,8 @@ extern struct Library * NOCOMMON __LocaleBase;
/****************************************************************************/
extern struct UtilityIFace NOCOMMON * __IUtility;
extern struct LocaleIFace NOCOMMON * __ILocale;
extern struct UtilityIFace * __IUtility;
extern struct LocaleIFace * __ILocale;
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_main.c,v 1.5 2004-10-02 15:56:13 obarthel Exp $
* $Id: stdlib_main.c,v 1.1.1.1 2004-07-26 16:31:58 obarthel Exp $
*
* :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
trick, but not always necessary. Don't enable this unless you know
what you're doing... */
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
#if 0
/****************************************************************************/
@ -103,7 +100,7 @@ _EPILOG(REG(a0,char * id))
/****************************************************************************/
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
#endif
/****************************************************************************/
@ -122,7 +119,10 @@ call_main(void)
__stdio_init,
__machine_test,
__math_init,
__locale_init,
__unistd_init,
__socket_init,
__usergroup_init,
__wildcard_expand_init,
NULL
@ -135,6 +135,15 @@ call_main(void)
*/
static exit_func_ptr exit_functions[] =
{
__wildcard_expand_exit,
__usergroup_exit,
__socket_exit,
__unistd_exit,
__locale_exit,
__math_exit,
__stdio_exit,
__startup_exit,
__stk_exit,
__stdlib_exit,
NULL
@ -142,51 +151,27 @@ call_main(void)
static size_t i;
ENTER();
/* This plants the return buffer for _exit(). */
if(setjmp(__exit_jmp_buf) != 0)
goto out;
SHOWMSG("calling init functions");
for(i = 0 ; init_functions[i] != NULL ; i++)
{
D(("calling init function #%ld",i));
if((*init_functions[i])() != OK)
{
SHOWMSG("that didn't work");
goto out;
}
}
SHOWMSG("now invoking the constructors");
/* Go through the constructor list */
_init();
SHOWMSG("done.");
/* If the SAS/C profiling code is set up for printing function
call chains, switch it on now. */
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
{
show_profile_names = TRUE;
}
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
//show_profile_names = TRUE;
/* After all these preparations, get this show on the road... */
exit(main((int)__argc,(char **)__argv));
out:
/* Switch off function name printing, if it was enabled. */
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
{
show_profile_names = FALSE;
}
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
//show_profile_names = FALSE;
/* If we end up here with the __stack_overflow variable
* set then the stack overflow handler dropped into
@ -196,8 +181,6 @@ call_main(void)
*/
if(__stack_overflow)
{
SHOWMSG("we have a stack overflow");
/* Dump whatever is waiting to be written to the
* standard I/O streams, and make sure that no
* break signal is about to make things any more
@ -220,15 +203,9 @@ call_main(void)
/* If necessary, print stack size usage information. */
__stack_usage_exit();
SHOWMSG("invoking the destructors");
/* Go through the destructor list */
_fini();
SHOWMSG("done.");
SHOWMSG("calling the exit functions");
/* Any of the following cleanup routines may call
* _exit() by way of abort() or through a hook
* function. Which is why we redirect the exit
@ -236,13 +213,10 @@ call_main(void)
*/
for(i = 0 ; exit_functions[i] != NULL ; i++)
{
D(("calling exit function #%ld",i));
if(setjmp(__exit_jmp_buf) == 0)
(*exit_functions[i])();
}
RETURN(__exit_value);
return(__exit_value);
}
@ -373,6 +347,9 @@ _main(void)
}
#endif /* __amigaos4__ */
/* Remember when this program was started. */
DateStamp(&__start_time);
/* If a callback was provided which can fill us in on which
* minimum stack size should be used, invoke it now and
* store its result in the global __stack_size variable.
@ -415,36 +392,33 @@ _main(void)
{
struct StackSwapStruct * stk;
unsigned int stack_size;
APTR new_stack;
ULONG lower,upper;
/* Make the stack size a multiple of 32 bytes. */
stack_size = 32 + ((__stack_size + 31UL) & ~31UL);
/* Make the stack size a multiple of 16 bytes. */
stack_size = (__stack_size + 15UL) & ~15UL;
/* Allocate the stack swapping data structure
and the stack space separately. */
stk = AllocVec(sizeof(*stk),MEMF_PUBLIC|MEMF_ANY);
/* We allocate a little more memory so that we can align
the stack to a 128 bit boundary. */
stk = AllocVec(sizeof(*stk) + 15 + stack_size,MEMF_PUBLIC|MEMF_ANY);
if(stk == NULL)
goto out;
new_stack = AllocMem(stack_size,MEMF_PUBLIC|MEMF_ANY);
if(new_stack == NULL)
{
FreeVec(stk);
goto out;
}
/* Align the lower stack bound to a 128 bit boundary, then
fix up the upper bound, which is guaranteed to be on
a 128 bit boundary, too, on account of the stack size
having being rounded to that boundary. */
lower = (((ULONG)(stk+1)) + 15UL) & ~15UL;
upper = lower + stack_size;
/* Fill in the lower and upper bounds, then take care of
the stack pointer itself. */
stk->stk_Lower = new_stack;
stk->stk_Upper = (ULONG)(new_stack) + stack_size;
stk->stk_Pointer = (APTR)(stk->stk_Upper - 32);
stk->stk_Lower = (APTR)lower;
stk->stk_Upper = upper;
stk->stk_Pointer = (APTR)upper;
/* If necessary, set up for stack size usage measurement. */
__stack_usage_init(stk);
return_code = __swap_stack_and_call(stk,(APTR)call_main);
FreeMem(new_stack, stack_size);
FreeVec(stk);
}
else

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_math.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_math.c,v 1.1.1.1 2004-07-26 16:31:59 obarthel Exp $
*
* :ts=4
*
@ -41,6 +41,13 @@
/****************************************************************************/
void
__math_exit(void)
{
}
/****************************************************************************/
int
__math_init(void)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_protos.h,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_protos.h,v 1.1.1.1 2004-07-26 16:32:02 obarthel Exp $
*
* :ts=4
*
@ -60,6 +60,7 @@ struct MemoryTree;
/* math_init_exit.c */
extern int __math_init(void);
extern void __math_exit(void);
/****************************************************************************/
@ -68,8 +69,15 @@ extern int __machine_test(void);
/****************************************************************************/
/* locale_init_exit.c */
extern int __locale_init(void);
extern void __locale_exit(void);
/****************************************************************************/
/* stdio_init_exit.c */
extern int __stdio_init(void);
extern void __stdio_exit(void);
/****************************************************************************/
@ -79,6 +87,18 @@ extern void __stdlib_exit(void);
/****************************************************************************/
/* unistd_init_exit.c */
extern int __unistd_init(void);
extern void __unistd_exit(void);
/****************************************************************************/
/* dirent_init_exit.c */
extern int __dirent_init(void);
extern void __dirent_exit(void);
/****************************************************************************/
/* stdlib_atexit.c */
extern void __exit_trap_trigger(void);
@ -86,6 +106,13 @@ extern void __exit_trap_trigger(void);
/* socket_init_exit.c */
extern int __socket_init(void);
extern void __socket_exit(void);
/****************************************************************************/
/* usergroup_init_exit.c */
extern int __usergroup_init(void);
extern void __usergroup_exit(void);
/****************************************************************************/
@ -107,11 +134,13 @@ extern unsigned long __get_sp(void);
/* stdlib_wildcard_expand.c */
extern UBYTE * __allocate_quote_vector(int num_parameters);
extern int __wildcard_expand_init(void);
extern void __wildcard_expand_exit(void);
/****************************************************************************/
/* stdlib_stackextension.c */
extern int __stk_init(void);
extern void __stk_exit(void);
/****************************************************************************/
@ -134,6 +163,7 @@ void _fini(void);
/* stdlib_startup.c */
extern int __startup_init(void);
extern void __startup_exit(void);
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_qsort.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: stdlib_qsort.c,v 1.1.1.1 2004-07-26 16:32:02 obarthel Exp $
*
* :ts=4
*
@ -81,7 +81,7 @@
/* For an 68030 and beyond the alignment does not matter and you can skip the
second half of the test (everything beyond the 'nbytes >= sizeof(long)'). */
#if defined(M68020)
#define IS_WORD_ALIGNED(a,b) (1)
#define IS_WORD_ALIGNED(a,b) 1
#else
#define IS_WORD_ALIGNED(a,b) (((((unsigned long)(a)) | ((unsigned long)(b))) & 1) == 0)
#endif /* M68020 */

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
*
@ -283,8 +283,6 @@ l1: moveml a0@(4:W),d1-d7 | restore all data registers \n\
/****************************************************************************/
#ifdef PPC_FLOATING_POINT_SUPPORT
__asm(" \n\
\n\
.text \n\
@ -360,48 +358,6 @@ longjmp: \n\
blr \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 */

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_socket.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_socket.c,v 1.1.1.1 2004-07-26 16:32:06 obarthel Exp $
*
* :ts=4
*
@ -37,6 +37,13 @@
/****************************************************************************/
void
__socket_exit(void)
{
}
/****************************************************************************/
int
__socket_init(void)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_stackcheck.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_stackcheck.c,v 1.1.1.1 2004-07-26 16:32:07 obarthel Exp $
*
* :ts=4
*
@ -123,3 +123,8 @@ __stk_init(void)
return(OK);
}
void
__stk_exit(void)
{
}

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_stackextension.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_stackextension.c,v 1.1.1.1 2004-07-26 16:32:08 obarthel Exp $
*
* :ts=4
*
@ -294,7 +294,8 @@ __stk_init(void)
/****************************************************************************/
/* Free all spare stackframes */
CLIB_DESTRUCTOR(__stk_exit)
void
__stk_exit(void)
{
ENTER();

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_startup.c,v 1.3 2004-09-29 19:57:58 obarthel Exp $
* $Id: stdlib_startup.c,v 1.1.1.1 2004-07-26 16:32:10 obarthel Exp $
*
* :ts=4
*
@ -421,10 +421,9 @@ __startup_init(void)
/****************************************************************************/
CLIB_DESTRUCTOR(__startup_exit)
void
__startup_exit(void)
{
ENTER();
PROFILE_OFF();
/* Now clean up after the streams set up for the Workbench
@ -462,6 +461,4 @@ CLIB_DESTRUCTOR(__startup_exit)
}
PROFILE_ON();
LEAVE();
}

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,5 +1,5 @@
/*
* $Id: stdlib_swapstack.c,v 1.2 2004-10-02 15:56:13 obarthel Exp $
* $Id: stdlib_swapstack.c,v 1.1.1.1 2004-07-26 16:32:11 obarthel Exp $
*
* :ts=4
*
@ -94,19 +94,51 @@ ___swap_stack_and_call: \n\
/****************************************************************************/
/* Swap the current stack configuration out, call a function provided,
swap the stack configuration back and return. */
int
__swap_stack_and_call(struct StackSwapStruct * stk,APTR function)
{
register int result;
StackSwap(stk);
result = ((int (*)(void))function)();
StackSwap(stk);
return(result);
}
__asm(" \n\
\n\
.text \n\
.align 2 \n\
\n\
.set MainInterface, 632 \n\
.set IExec_StackSwap, 272 \n\
\n\
.globl SysBase \n\
.globl __swap_stack_and_call \n\
\n\
__swap_stack_and_call: \n\
stwu r1, -32(r1) # Make a stack frame \n\
mflr r0 \n\
stw r0, 36(r1) \n\
stmw r29, 8(r1) # Get us three GPRs \n\
# r29 will store IExec \n\
mr r4, r31 # Backup ptr to function to call \n\
mr r3, r30 # Backup ptr to StackSwapStruct \n\
\n\
lis r3, SysBase@ha # Retrieve sysbase pointer \n\
lwz r3, SysBase@l(r3) \n\
lwz r29, MainInterface(r3) # Get IExec \n\
\n\
addi r3, r29, IExec_StackSwap # StackSwap entry \n\
mr r4, r30 # StackSwap struct in r4 \n\
mtlr r3 \n\
blrl # IExec->StackSwap(r4) \n\
\n\
mtlr r31 # Call payload \n\
blrl \n\
\n\
addi r3, r29, IExec_StackSwap # Revert to old stack \n\
mr r4, r30 \n\
mtlr r3 \n\
blrl \n\
\n\
lmw r29, 8(r1) # Restore registers \n\
lwz r0, 36(r1) \n\
mtlr r0 \n\
addi r1, r1, 32 # Clean up stack \n\
\n\
blr \n\
\n\
");
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_usleep.c,v 1.1 2004-09-29 12:10:29 obarthel Exp $
* $Id: stdlib_usergroup.c,v 1.1.1.1 2004-07-26 16:32:13 obarthel Exp $
*
* :ts=4
*
@ -31,24 +31,21 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
void
usleep(unsigned long microseconds)
__usergroup_exit(void)
{
ENTER();
SHOWVALUE(microseconds);
__time_delay(0,microseconds);
LEAVE();
}
/****************************************************************************/
int
__usergroup_init(void)
{
return(OK);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_wildcard_expand.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: stdlib_wildcard_expand.c,v 1.1.1.1 2004-07-26 16:32:13 obarthel Exp $
*
* :ts=4
*
@ -39,6 +39,7 @@
UBYTE * WEAK __allocate_quote_vector(int num_parameters UNUSED);
int WEAK __wildcard_expand_init(void);
void WEAK __wildcard_expand_exit(void);
/****************************************************************************/
@ -55,3 +56,10 @@ __wildcard_expand_init(void)
{
return(0);
}
/****************************************************************************/
void
__wildcard_expand_exit(void)
{
}

View File

@ -1,5 +1,5 @@
/*
* $Id: string_headers.h,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_headers.h,v 1.1.1.1 2004-07-26 16:32:14 obarthel Exp $
*
* :ts=4
*
@ -57,21 +57,4 @@
/****************************************************************************/
/* Address is neither aligned to a word or long word boundary. */
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
/* Address is aligned to a word boundary, but not to a long
word boundary. */
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
/* Address is aligned to a long word boundary. For an 68030 and beyond the
alignment does not matter. */
#if defined(M68020)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 3) == 0)
#else
#define IS_LONG_ALIGNED(a) (1)
#endif /* M68020 */
/****************************************************************************/
#endif /* _STRING_HEADERS_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memchr.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memchr.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
/* Check if one of the four bytes which make up a long word is zero. */
#define LONG_CONTAINS_ZERO_OCTET(x) (((x) + 0xfefefeff) & ~((x) | 0x7f7f7f7f))

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memcmp.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memcmp.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static int
__memcmp(const char *m1,const char *m2,size_t len)
{
@ -148,16 +154,8 @@ __memcmp(const char *m1,const char *m2,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
int
memcmp(const void *ptr1, const void *ptr2, unsigned long len)
#else
int
memcmp(const void *ptr1, const void *ptr2, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
int result = 0;

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memcpy.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memcpy.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -184,16 +184,8 @@ extern void __bcopy(const void *src,void *dst,size_t len);
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memcpy(void *dst, const void *src, unsigned long len)
#else
void *
memcpy(void *dst, const void *src, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = dst;
@ -229,6 +221,12 @@ memcpy(void *dst, const void *src, size_t len)
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memcpy(unsigned char * to,unsigned char * from,size_t len)
{
@ -324,16 +322,8 @@ __memcpy(unsigned char * to,unsigned char * from,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memcpy(void *dst, const void *src, unsigned long len)
#else
void *
memcpy(void *dst, const void *src, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = dst;

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memmove.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memmove.c,v 1.1.1.1 2004-07-26 16:32:16 obarthel Exp $
*
* :ts=4
*
@ -351,6 +351,12 @@ memmove(void *dest, const void * src, size_t len)
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memmove(unsigned char * to,unsigned char * from,size_t len)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memset.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memset.c,v 1.1.1.1 2004-07-26 16:32:17 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memset(unsigned char * to,unsigned char value,size_t len)
{
@ -126,16 +132,8 @@ __memset(unsigned char * to,unsigned char value,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memset(void *ptr, int val, unsigned long len)
#else
void *
memset(void *ptr, int val, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = ptr;
unsigned char * m = ptr;

View File

@ -1,5 +1,5 @@
/*
* $Id: time_clock.c,v 1.2 2004-09-29 19:57:58 obarthel Exp $
* $Id: time_clock.c,v 1.1.1.1 2004-07-26 16:32:21 obarthel Exp $
*
* :ts=4
*
@ -37,22 +37,6 @@
/****************************************************************************/
static struct DateStamp start_time;
/****************************************************************************/
CLIB_CONSTRUCTOR(init_start_time)
{
/* Remember when this program was started. */
DateStamp(&start_time);
RETURN(OK);
CONSTRUCTOR_SUCCEED();
}
/****************************************************************************/
clock_t
clock(void)
{
@ -73,8 +57,8 @@ clock(void)
minutes_now = now.ds_Days * 24 * 60 + now.ds_Minute;
ticks_now = now.ds_Tick;
minutes_start = start_time.ds_Days * 24 * 60 + start_time.ds_Minute;
ticks_start = start_time.ds_Tick;
minutes_start = __start_time.ds_Days * 24 * 60 + __start_time.ds_Minute;
ticks_start = __start_time.ds_Tick;
/* Subtract the start time from the current time. We start
* with the ticks.

View File

@ -1,5 +1,5 @@
/*
* $Id: time_data.c,v 1.2 2004-09-29 19:57:58 obarthel Exp $
* $Id: time_data.c,v 1.1.1.1 2004-07-26 16:32:22 obarthel Exp $
*
* :ts=4
*
@ -37,6 +37,10 @@
/****************************************************************************/
struct DateStamp __start_time;
/****************************************************************************/
const char * const __abbreviated_week_day_names[7] =
{
"Sun",

View File

@ -1,5 +1,5 @@
/*
* $Id: time_headers.h,v 1.2 2004-09-29 19:57:58 obarthel Exp $
* $Id: time_headers.h,v 1.1.1.1 2004-07-26 16:32:23 obarthel Exp $
*
* :ts=4
*
@ -84,6 +84,10 @@
/****************************************************************************/
extern struct DateStamp __start_time;
/****************************************************************************/
extern const char * const __abbreviated_week_day_names[7];
extern const char * const __week_day_names[7];
extern const char * const __abbreviated_month_names[12];

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_chdir_exit.c,v 1.2 2004-09-29 19:57:58 obarthel Exp $
* $Id: unistd_data.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -41,34 +41,20 @@
/****************************************************************************/
/* If the program's current directory was changed, here is where
we find out about it. */
BPTR NOCOMMON __original_current_directory;
BOOL NOCOMMON __current_directory_changed;
BOOL NOCOMMON __unlock_current_directory;
/* Names of files and directories to delete when shutting down. */
struct MinList __unlink_list;
/****************************************************************************/
CLIB_DESTRUCTOR(__chdir_exit)
{
ENTER();
/* Local timer I/O. */
struct MsgPort * __timer_port;
struct timerequest * __timer_request;
if(__current_directory_changed)
{
BPTR old_dir;
/****************************************************************************/
old_dir = CurrentDir(__original_current_directory);
__original_current_directory = ZERO;
if(__unlock_current_directory)
{
UnLock(old_dir);
__unlock_current_directory = FALSE;
}
__current_directory_changed = FALSE;
}
LEAVE();
}
/* If the program's current directory was changed, here is where
* we find out about it.
*/
BPTR __original_current_directory;
BOOL __current_directory_changed;
BOOL __unlock_current_directory;

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_headers.h,v 1.3 2004-09-29 19:57:58 obarthel Exp $
* $Id: unistd_headers.h,v 1.1.1.1 2004-07-26 16:32:28 obarthel Exp $
*
* :ts=4
*
@ -47,29 +47,22 @@ extern char __current_path_name[MAXPATHLEN];
/****************************************************************************/
/* Names of files and directories to delete when shutting down. */
extern struct MinList NOCOMMON __unlink_list;
extern struct MinList __unlink_list;
/****************************************************************************/
/* Local timer I/O. */
extern struct MsgPort * NOCOMMON __timer_port;
extern struct timerequest * NOCOMMON __timer_request;
extern BOOL NOCOMMON __timer_busy;
extern struct Library * NOCOMMON __TimerBase;
/****************************************************************************/
#if defined(__amigaos4__)
extern struct TimerIFace * NOCOMMON __ITimer;
#endif /* __amigaos4__ */
extern struct MsgPort * __timer_port;
extern struct timerequest * __timer_request;
/****************************************************************************/
/* If the program's current directory was changed, here is where
we find out about it. */
extern BPTR NOCOMMON __original_current_directory;
extern BOOL NOCOMMON __current_directory_changed;
extern BOOL NOCOMMON __unlock_current_directory;
* we find out about it.
*/
extern BPTR __original_current_directory;
extern BOOL __current_directory_changed;
extern BOOL __unlock_current_directory;
/****************************************************************************/
@ -82,8 +75,4 @@ extern void __strip_double_slash(char * file_name,int len);
/****************************************************************************/
extern unsigned int __time_delay(unsigned long seconds,unsigned long microseconds);
/****************************************************************************/
#endif /* _UNISTD_HEADERS_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_init_exit.c,v 1.6 2004-09-29 19:57:58 obarthel Exp $
* $Id: unistd_init_exit.c,v 1.3 2004-08-07 10:24:04 obarthel Exp $
*
* :ts=4
*
@ -41,25 +41,21 @@
/****************************************************************************/
/* Names of files and directories to delete when shutting down. */
struct MinList NOCOMMON __unlink_list;
/****************************************************************************/
CLIB_CONSTRUCTOR(__unistd_init)
int
__unistd_init(void)
{
ENTER();
NewList((struct List *)&__unlink_list);
RETURN(OK);
CONSTRUCTOR_SUCCEED();
return(OK);
}
/****************************************************************************/
CLIB_DESTRUCTOR(__unistd_exit)
void
__unistd_exit(void)
{
ENTER();
@ -70,9 +66,6 @@ CLIB_DESTRUCTOR(__unistd_exit)
struct UnlinkNode * uln;
BPTR old_dir;
/* Close all the files that still might be open. */
__close_all_files();
while((uln = (struct UnlinkNode *)RemHead((struct List *)&__unlink_list)))
{
old_dir = CurrentDir(uln->uln_Lock);
@ -87,6 +80,38 @@ CLIB_DESTRUCTOR(__unistd_exit)
}
}
if(__timer_request != NULL)
{
if(__timer_request->tr_node.io_Device != NULL)
CloseDevice((struct IORequest *)__timer_request);
DeleteIORequest((struct IORequest *)__timer_request);
__timer_request = NULL;
}
if(__timer_port != NULL)
{
DeleteMsgPort(__timer_port);
__timer_port = NULL;
}
if(__current_directory_changed)
{
BPTR old_dir;
old_dir = CurrentDir(__original_current_directory);
__original_current_directory = ZERO;
if(__unlock_current_directory)
{
UnLock(old_dir);
__unlock_current_directory = FALSE;
}
__current_directory_changed = FALSE;
}
PROFILE_ON();
LEAVE();

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_sleep.c,v 1.3 2004-09-29 12:10:29 obarthel Exp $
* $Id: unistd_sleep.c,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -44,11 +44,132 @@
unsigned int
sleep(unsigned int seconds)
{
unsigned int result;
static BOOL sleeping;
unsigned int result = 0;
ENTER();
result = __time_delay(seconds,0);
SHOWVALUE(seconds);
if(__check_abort_enabled)
__check_abort();
if(seconds > 0)
{
if(NOT sleeping)
{
BOOL timer_open;
sleeping = TRUE;
if(__timer_request == NULL)
{
timer_open = FALSE;
SHOWMSG("trying to open the timer");
PROFILE_OFF();
__timer_port = CreateMsgPort();
if(__timer_port != NULL)
{
__timer_request = (struct timerequest *)CreateIORequest(__timer_port,sizeof(*__timer_request));
if(__timer_request != NULL)
{
if(OpenDevice(TIMERNAME,UNIT_VBLANK,(struct IORequest *)__timer_request,0) == 0)
timer_open = TRUE;
}
}
if(NOT timer_open)
{
SHOWMSG("that didn't work");
DeleteIORequest((struct IORequest *)__timer_request);
__timer_request = NULL;
DeleteMsgPort(__timer_port);
__timer_port = NULL;
}
PROFILE_ON();
}
else
{
timer_open = TRUE;
}
if(timer_open)
{
ULONG signals_to_wait_for;
ULONG seconds_then;
ULONG timer_signal;
struct DateStamp ds;
ULONG signals;
__timer_request->tr_node.io_Command = TR_ADDREQUEST;
__timer_request->tr_time.tv_secs = seconds;
__timer_request->tr_time.tv_micro = 0;
timer_signal = (1UL << __timer_port->mp_SigBit);
signals_to_wait_for = timer_signal;
SetSignal(0,signals_to_wait_for);
if(__check_abort_enabled)
SET_FLAG(signals_to_wait_for,SIGBREAKF_CTRL_C);
PROFILE_OFF();
DateStamp(&ds);
PROFILE_ON();
seconds_then = (ds.ds_Days * 24 * 60 + ds.ds_Minute) * 60 + ds.ds_Tick / TICKS_PER_SECOND;
SendIO((struct IORequest *)__timer_request);
while(TRUE)
{
PROFILE_OFF();
signals = Wait(signals_to_wait_for);
PROFILE_ON();
if(FLAG_IS_SET(signals,SIGBREAKF_CTRL_C))
{
ULONG seconds_now;
if(CheckIO((struct IORequest *)__timer_request))
AbortIO((struct IORequest *)__timer_request);
WaitIO((struct IORequest *)__timer_request);
SetSignal(SIGBREAKF_CTRL_C,SIGBREAKF_CTRL_C);
__check_abort();
PROFILE_OFF();
DateStamp(&ds);
PROFILE_ON();
seconds_now = (ds.ds_Days * 24 * 60 + ds.ds_Minute) * 60 + ds.ds_Tick / TICKS_PER_SECOND;
seconds_now -= seconds_then;
if(seconds_now < seconds)
result = (seconds - seconds_now);
break;
}
if(FLAG_IS_SET(signals,timer_signal))
{
WaitIO((struct IORequest *)__timer_request);
break;
}
}
}
sleeping = FALSE;
}
}
RETURN(result);
return(result);

View File

@ -1,139 +0,0 @@
/*
* $Id: unistd_time_delay.c,v 1.2 2004-09-29 14:17:44 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
#include <proto/timer.h>
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
unsigned int
__time_delay(unsigned long seconds,unsigned long microseconds)
{
unsigned int result = 0;
ENTER();
SHOWVALUE(seconds);
if(__check_abort_enabled)
__check_abort();
if((seconds > 0 || microseconds > 0) && NOT __timer_busy)
{
struct Library * TimerBase = __TimerBase;
#if defined(__amigaos4__)
struct TimerIFace * ITimer = __ITimer;
#endif /* __amigaos4__ */
ULONG signals_to_wait_for;
ULONG seconds_then;
ULONG timer_signal;
struct timeval tv;
ULONG signals;
__timer_busy = TRUE;
__timer_request->tr_node.io_Command = TR_ADDREQUEST;
__timer_request->tr_time.tv_secs = seconds;
__timer_request->tr_time.tv_micro = microseconds;
timer_signal = (1UL << __timer_port->mp_SigBit);
signals_to_wait_for = timer_signal;
SetSignal(0,signals_to_wait_for);
if(__check_abort_enabled)
SET_FLAG(signals_to_wait_for,SIGBREAKF_CTRL_C);
PROFILE_OFF();
GetSysTime(&tv);
PROFILE_ON();
seconds_then = tv.tv_secs + seconds;
SendIO((struct IORequest *)__timer_request);
while(TRUE)
{
PROFILE_OFF();
signals = Wait(signals_to_wait_for);
PROFILE_ON();
if(FLAG_IS_SET(signals,SIGBREAKF_CTRL_C))
{
ULONG seconds_now;
if(CheckIO((struct IORequest *)__timer_request))
AbortIO((struct IORequest *)__timer_request);
WaitIO((struct IORequest *)__timer_request);
SetSignal(SIGBREAKF_CTRL_C,SIGBREAKF_CTRL_C);
__check_abort();
/* Now figure out how many seconds have elapsed and
how many would still remain. */
PROFILE_OFF();
GetSysTime(&tv);
PROFILE_ON();
seconds_now = tv.tv_secs;
if(seconds_now < seconds_then)
result = seconds_then - seconds_now;
break;
}
if(FLAG_IS_SET(signals,timer_signal))
{
WaitIO((struct IORequest *)__timer_request);
break;
}
}
__timer_busy = FALSE;
}
RETURN(result);
return(result);
}

View File

@ -1,146 +0,0 @@
/*
* $Id: unistd_timer.c,v 1.2 2004-09-29 19:57:58 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
/* Local timer I/O. */
struct MsgPort * NOCOMMON __timer_port;
struct timerequest * NOCOMMON __timer_request;
BOOL NOCOMMON __timer_busy;
struct Library * NOCOMMON __TimerBase;
/****************************************************************************/
#if defined(__amigaos4__)
struct TimerIFace * NOCOMMON __ITimer;
#endif /* __amigaos4__ */
/****************************************************************************/
CLIB_CONSTRUCTOR(__timer_init)
{
BOOL success = FALSE;
ENTER();
__timer_port = CreateMsgPort();
if(__timer_port == NULL)
{
__show_error("The timer message port could not be created.");
goto out;
}
__timer_request = (struct timerequest *)CreateIORequest(__timer_port,sizeof(*__timer_request));
if(__timer_request == NULL)
{
__show_error("The timer I/O request could not be created.");
goto out;
}
if(OpenDevice(TIMERNAME,UNIT_VBLANK,(struct IORequest *)__timer_request,0) != OK)
{
__show_error("The timer could not be opened.");
goto out;
}
__TimerBase = (struct Library *)__timer_request->tr_node.io_Device;
#if defined(__amigaos4__)
{
__ITimer = (struct TimerIFace *)GetInterface(__TimerBase, "main", 1, 0);
if(__ITimer == NULL)
{
__show_error("The timer interface could not be obtained.");
goto out;
}
}
#endif /* __amigaos4__ */
success = TRUE;
out:
RETURN(success);
if(success)
CONSTRUCTOR_SUCCEED();
else
CONSTRUCTOR_FAIL();
}
/****************************************************************************/
CLIB_DESTRUCTOR(__timer_exit)
{
ENTER();
#if defined(__amigaos4__)
{
if(__ITimer != NULL)
DropInterface((struct Interface *)__ITimer);
__ITimer = NULL;
}
#endif /* __amigaos4__ */
__TimerBase = NULL;
if(__timer_request != NULL)
{
if(__timer_request->tr_node.io_Device != NULL)
CloseDevice((struct IORequest *)__timer_request);
DeleteIORequest((struct IORequest *)__timer_request);
__timer_request = NULL;
}
if(__timer_port != NULL)
{
DeleteMsgPort(__timer_port);
__timer_port = NULL;
}
LEAVE();
}

View File

@ -1,5 +1,5 @@
/*
* $Id: unistd_wildcard_expand.c,v 1.3 2004-09-29 19:57:58 obarthel Exp $
* $Id: unistd_wildcard_expand.c,v 1.1.1.1 2004-07-26 16:32:33 obarthel Exp $
*
* :ts=4
*
@ -74,17 +74,16 @@ static struct AnchorPath * anchor;
/****************************************************************************/
CLIB_DESTRUCTOR(__wildcard_expand_exit)
void
__wildcard_expand_exit(void)
{
ENTER();
if(anchor != NULL)
{
MatchEnd(anchor);
free(anchor);
anchor = NULL;
}
LEAVE();
}
/****************************************************************************/

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 180
#define DATE "23.10.2004"
#define VERS "unix.lib 1.180"
#define VSTRING "unix.lib 1.180 (23.10.2004)\r\n"
#define VERSTAG "\0$VER: unix.lib 1.180 (23.10.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "unix.lib 1.168"
#define VSTRING "unix.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: unix.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
180
168

View File

@ -1,5 +1,5 @@
/*
* $Id: usergroup_data.c,v 1.2 2004-09-29 14:17:44 obarthel Exp $
* $Id: usergroup_data.c,v 1.1.1.1 2004-07-26 16:32:34 obarthel Exp $
*
* :ts=4
*
@ -41,6 +41,18 @@
/****************************************************************************/
struct Library * __UserGroupBase;
/****************************************************************************/
#if defined(__amigaos4__)
struct UserGroupIFace *__IUserGroup;
#endif /* __amigaos4__ */
/****************************************************************************/
int __root_uid;
int __root_gid;
int __root_euid;

Some files were not shown because too many files have changed in this diff Show More