mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d308d79f85 |
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: GNUmakefile.68k,v 1.11 2004-10-07 09:20:44 obarthel Exp $
|
# $Id: GNUmakefile.68k,v 1.6 2004-08-16 09:33:11 obarthel Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -40,7 +40,7 @@ endif
|
|||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -c $(CFLAGS) $<
|
@$(CC) -c $(CFLAGS) -DIEEE_FLOATING_POINT_SUPPORT $<
|
||||||
|
|
||||||
$(LIBC_OBJS)/%.o : %.c
|
$(LIBC_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):c]"
|
@echo "Compiling $< [$(TYPE):c]"
|
||||||
@@ -103,9 +103,9 @@ WARNINGS = \
|
|||||||
-Wundef -Wbad-function-cast -Wmissing-declarations -Wconversion
|
-Wundef -Wbad-function-cast -Wmissing-declarations -Wconversion
|
||||||
|
|
||||||
INCLUDES = -Iinclude -I. -Inetinclude
|
INCLUDES = -Iinclude -I. -Inetinclude
|
||||||
OPTIONS = -DNDEBUG -fno-builtin -DNO_INLINE_STDARG
|
OPTIONS = -DUSE_64_BIT_INTS -DNDEBUG -fno-builtin -DNO_INLINE_STDARG
|
||||||
#OPTIONS = -D__MEM_DEBUG -fno-builtin
|
#OPTIONS = -DUSE_64_BIT_INTS -D__MEM_DEBUG -fno-builtin
|
||||||
#OPTIONS = -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG -fno-builtin
|
#OPTIONS = -DUSE_64_BIT_INTS -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG -fno-builtin
|
||||||
OPTIMIZE = -O
|
OPTIMIZE = -O
|
||||||
#OPTIMIZE = -O2 -fomit-frame-pointer
|
#OPTIMIZE = -O2 -fomit-frame-pointer
|
||||||
#DEBUG = -g2
|
#DEBUG = -g2
|
||||||
@@ -144,9 +144,9 @@ C_LIB = \
|
|||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o \
|
fcntl_write.o \
|
||||||
fcntl_get_default_file.o \
|
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o \
|
libgen_dirname.o \
|
||||||
|
locale_data.o \
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o \
|
locale_setlocale.o \
|
||||||
@@ -306,8 +306,6 @@ C_LIB = \
|
|||||||
stdlib_startup.o \
|
stdlib_startup.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
stdlib_strtoll.o \
|
|
||||||
stdlib_strtoull.o \
|
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_sysbase.o \
|
stdlib_sysbase.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
@@ -317,6 +315,7 @@ C_LIB = \
|
|||||||
stdlib_udivsi4.o \
|
stdlib_udivsi4.o \
|
||||||
stdlib_umodsi3.o \
|
stdlib_umodsi3.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
|
stdlib_usergroup.o \
|
||||||
stdlib_wildcard_expand.o \
|
stdlib_wildcard_expand.o \
|
||||||
strings_strcasecmp.o \
|
strings_strcasecmp.o \
|
||||||
strings_strncasecmp.o \
|
strings_strncasecmp.o \
|
||||||
@@ -362,9 +361,9 @@ C_LIB = \
|
|||||||
time_time.o \
|
time_time.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
unistd_chdir_exit.o \
|
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
|
unistd_data.o \
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -382,11 +381,8 @@ C_LIB = \
|
|||||||
unistd_realpath.o \
|
unistd_realpath.o \
|
||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
unistd_timer.o \
|
|
||||||
unistd_time_delay.o \
|
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unlink.o \
|
unistd_unlink.o \
|
||||||
unistd_usleep.o \
|
|
||||||
utime_utime.o
|
utime_utime.o
|
||||||
|
|
||||||
UNIX_LIB = \
|
UNIX_LIB = \
|
||||||
@@ -399,7 +395,6 @@ UNIX_LIB = \
|
|||||||
fcntl_creat.o \
|
fcntl_creat.o \
|
||||||
fcntl_fcntl.o \
|
fcntl_fcntl.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_get_default_file.o \
|
|
||||||
mount_convertinfo.o \
|
mount_convertinfo.o \
|
||||||
mount_statfs.o \
|
mount_statfs.o \
|
||||||
stat_chmod.o \
|
stat_chmod.o \
|
||||||
@@ -425,7 +420,6 @@ UNIX_LIB = \
|
|||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
unistd_chdir_exit.o \
|
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_getcwd.o \
|
unistd_getcwd.o \
|
||||||
unistd_lchown.o \
|
unistd_lchown.o \
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: GNUmakefile.os4,v 1.12 2004-10-07 11:03:46 tfrieden Exp $
|
# $Id: GNUmakefile.os4,v 1.5 2004-08-16 09:33:11 obarthel Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -53,7 +53,7 @@ endif
|
|||||||
|
|
||||||
%.o : %.c
|
%.o : %.c
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -c $(CFLAGS) $<
|
@$(CC) -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
|
||||||
|
|
||||||
$(LIBC_OBJS)/%.o : %.c
|
$(LIBC_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):c]"
|
@echo "Compiling $< [$(TYPE):c]"
|
||||||
@@ -65,7 +65,7 @@ $(LIBUNIX_OBJS)/%.o : %.c
|
|||||||
|
|
||||||
$(LIBM_OBJS)/%.o : %.c
|
$(LIBM_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):m]"
|
@echo "Compiling $< [$(TYPE):m]"
|
||||||
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) $(FLOAT_TYPE) $<
|
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
|
||||||
|
|
||||||
$(LIBSTACK_OBJS)/%.o : %.c
|
$(LIBSTACK_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):stack]"
|
@echo "Compiling $< [$(TYPE):stack]"
|
||||||
@@ -87,17 +87,10 @@ $(LIBAMIGA_OBJS)/%.o : %.c
|
|||||||
|
|
||||||
ifeq (small_data,$(TYPE))
|
ifeq (small_data,$(TYPE))
|
||||||
CODE_TYPE := -msdata=sysv -DSMALL_DATA
|
CODE_TYPE := -msdata=sysv -DSMALL_DATA
|
||||||
FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (large_data,$(TYPE))
|
ifeq (large_data,$(TYPE))
|
||||||
CODE_TYPE := -msdata=data
|
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
|
endif
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@@ -108,7 +101,7 @@ WARNINGS = \
|
|||||||
|
|
||||||
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
|
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
|
||||||
OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -fno-builtin -D__USE_INLINE__ -Wa,-mregnames
|
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
|
#DEBUG = -g
|
||||||
|
|
||||||
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
|
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
|
||||||
@@ -145,9 +138,9 @@ C_LIB = \
|
|||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o \
|
fcntl_write.o \
|
||||||
fcntl_get_default_file.o \
|
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o \
|
libgen_dirname.o \
|
||||||
|
locale_data.o \
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o \
|
locale_setlocale.o \
|
||||||
@@ -308,13 +301,12 @@ C_LIB = \
|
|||||||
stdlib_startup.o \
|
stdlib_startup.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
stdlib_strtoll.o \
|
|
||||||
stdlib_strtoull.o \
|
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
stdlib_termination_message.o \
|
stdlib_termination_message.o \
|
||||||
stdlib_threshold.o \
|
stdlib_threshold.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
|
stdlib_usergroup.o \
|
||||||
stdlib_wildcard_expand.o \
|
stdlib_wildcard_expand.o \
|
||||||
strings_strcasecmp.o \
|
strings_strcasecmp.o \
|
||||||
strings_strncasecmp.o \
|
strings_strncasecmp.o \
|
||||||
@@ -360,9 +352,9 @@ C_LIB = \
|
|||||||
time_time.o \
|
time_time.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
unistd_chdir_exit.o \
|
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
|
unistd_data.o \
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -380,11 +372,8 @@ C_LIB = \
|
|||||||
unistd_realpath.o \
|
unistd_realpath.o \
|
||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
unistd_time_delay.o \
|
|
||||||
unistd_timer.o \
|
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unlink.o \
|
unistd_unlink.o \
|
||||||
unistd_usleep.o \
|
|
||||||
utime_utime.o
|
utime_utime.o
|
||||||
|
|
||||||
|
|
||||||
@@ -398,7 +387,6 @@ UNIX_LIB = \
|
|||||||
fcntl_creat.o \
|
fcntl_creat.o \
|
||||||
fcntl_fcntl.o \
|
fcntl_fcntl.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_get_default_file.o \
|
|
||||||
mount_convertinfo.o \
|
mount_convertinfo.o \
|
||||||
mount_statfs.o \
|
mount_statfs.o \
|
||||||
stat_chmod.o \
|
stat_chmod.o \
|
||||||
@@ -424,7 +412,6 @@ UNIX_LIB = \
|
|||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
unistd_chdir_exit.o \
|
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_getcwd.o \
|
unistd_getcwd.o \
|
||||||
unistd_lchown.o \
|
unistd_lchown.o \
|
||||||
@@ -693,12 +680,7 @@ all: \
|
|||||||
lib/crtbegin.o \
|
lib/crtbegin.o \
|
||||||
lib/crtend.o \
|
lib/crtend.o \
|
||||||
lib/mainnb.o \
|
lib/mainnb.o \
|
||||||
lib/libm.a \
|
lib/libm.a
|
||||||
lib/small-data/libm.a \
|
|
||||||
lib/bcrt0.o \
|
|
||||||
lib/bcrtbegin.o \
|
|
||||||
lib/bcrtend.o \
|
|
||||||
lib/soft-float/libc.a
|
|
||||||
|
|
||||||
copy:
|
copy:
|
||||||
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
||||||
@@ -711,7 +693,7 @@ clean:
|
|||||||
|
|
||||||
realclean:
|
realclean:
|
||||||
$(MAKE) clean
|
$(MAKE) clean
|
||||||
-$(DELETE) lib small_data large_data large_data_softfloat
|
-$(DELETE) lib small_data large_data
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
@@ -753,12 +735,6 @@ endif
|
|||||||
lib:
|
lib:
|
||||||
-$(MAKEDIR) $@
|
-$(MAKEDIR) $@
|
||||||
|
|
||||||
lib/small-data:
|
|
||||||
-$(MAKEDIR) $@
|
|
||||||
|
|
||||||
lib/soft-float:
|
|
||||||
-$(MAKEDIR) $@
|
|
||||||
|
|
||||||
lib/libm.a: lib
|
lib/libm.a: lib
|
||||||
$(MAKE) TYPE=large_data kitchen_sink
|
$(MAKE) TYPE=large_data kitchen_sink
|
||||||
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
||||||
@@ -767,10 +743,6 @@ lib/small-data/libm.a: lib lib/small-data
|
|||||||
$(MAKE) TYPE=small_data kitchen_sink
|
$(MAKE) TYPE=small_data kitchen_sink
|
||||||
$(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data
|
$(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data
|
||||||
|
|
||||||
lib/soft-float/libc.a: lib lib/soft-float
|
|
||||||
$(MAKE) TYPE=large_data_softfloat kitchen_sink
|
|
||||||
$(COPY) $(foreach file,$(LIBS),large_data_softfloat/$(file)) lib/soft-float
|
|
||||||
|
|
||||||
lib/crt0.o : lib crt0.o
|
lib/crt0.o : lib crt0.o
|
||||||
$(COPY) crt0.o lib
|
$(COPY) crt0.o lib
|
||||||
|
|
||||||
@@ -786,15 +758,6 @@ lib/mainnb.o : lib mainnb.o
|
|||||||
lib/mainb.o : lib mainb.o
|
lib/mainb.o : lib mainb.o
|
||||||
$(COPY) mainb.o lib
|
$(COPY) mainb.o lib
|
||||||
|
|
||||||
lib/bcrt0.o : lib bcrt0.o
|
|
||||||
$(COPY) bcrt0.o lib
|
|
||||||
|
|
||||||
lib/bcrtbegin.o : lib bcrtbegin.o
|
|
||||||
$(COPY) bcrtbegin.o lib
|
|
||||||
|
|
||||||
lib/bcrtend.o : lib bcrtend.o
|
|
||||||
$(COPY) bcrtend.o lib
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
$(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c
|
$(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c
|
||||||
@@ -915,13 +878,6 @@ mainb.o : stdlib_main.c
|
|||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c
|
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c
|
||||||
|
|
||||||
bcrtbegin.o : crtbegin.c
|
|
||||||
$(CC) -o bcrtbegin.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtbegin.c
|
|
||||||
|
|
||||||
bcrtend.o : crtend.c
|
|
||||||
$(CC) -o bcrtend.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtend.c
|
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
mkid:
|
mkid:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "amiga.lib 1.180"
|
#define VERS "amiga.lib 1.172"
|
||||||
#define VSTRING "amiga.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "amiga.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: amiga.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: amiga.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "c.lib 1.180"
|
#define VERS "c.lib 1.172"
|
||||||
#define VSTRING "c.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "c.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: c.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: c.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
105
library/changes
105
library/changes
@@ -1,108 +1,3 @@
|
|||||||
c.lib 1.180 (23.10.2004)
|
|
||||||
|
|
||||||
- The printf() family now produces no output at all for %e, %f and %g if the
|
|
||||||
floating point support code is disabled. Previously, a minimum field width
|
|
||||||
specification could take effect, printing a series of 0 or blank space
|
|
||||||
characters where no output should have been produced.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.179 (22.10.2004)
|
|
||||||
|
|
||||||
- The scanf() family no longer assumes that a leading '0' indicates that the
|
|
||||||
following digits form an octal number if the conversion type has been
|
|
||||||
specified as already '%x' already.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.178 (7.10.2004)
|
|
||||||
|
|
||||||
- The OS4 version had floating point math support code enabled in all
|
|
||||||
libraries and not just "libm.a". Fixed.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.177 (29.9.2004)
|
|
||||||
|
|
||||||
- Moved the locale initialization/cleanup code into constructors
|
|
||||||
and destructors.
|
|
||||||
|
|
||||||
- The socket cleanup function is now a destructor.
|
|
||||||
|
|
||||||
- The math cleanup function is now a destructor.
|
|
||||||
|
|
||||||
- The wildcard cleanup function is now a destructor.
|
|
||||||
|
|
||||||
- The stdio cleanup function is now a destructor.
|
|
||||||
|
|
||||||
- The stack extension cleanup function is now a destructor.
|
|
||||||
|
|
||||||
- The code that cleans up after the program's current directory
|
|
||||||
was changed is now a destructor function.
|
|
||||||
|
|
||||||
- Moved the initialization/cleanup code for unlink() into constructors
|
|
||||||
and destructors.
|
|
||||||
|
|
||||||
- Moved the initialization/cleanup code for usergroup.library into
|
|
||||||
constructors and destructors.
|
|
||||||
|
|
||||||
- Added usleep(), and created wrapper code that both sleep() and
|
|
||||||
usleep() can use.
|
|
||||||
|
|
||||||
- Added strtoll() and strtoull(), with further changes to <limits.h>
|
|
||||||
and <stdlib.h>.
|
|
||||||
|
|
||||||
- The socket exit code now calls the common stdio function which
|
|
||||||
flushes and shuts down all buffered and unbuffered files.
|
|
||||||
|
|
||||||
- Fixed the stack swapping function which, for reasons unknown, ceased
|
|
||||||
to work...
|
|
||||||
|
|
||||||
- The start time used by clock() is now initialized by a constructor
|
|
||||||
function.
|
|
||||||
|
|
||||||
- NOTE THAT ALL THE CHANGES WITH REGARD TO USE OF DESTRUCTOR AND
|
|
||||||
CONSTRUCTOR FUNCTIONS REQUIRE A COMPLETE REBUILD OF THE LIBRARY! IF
|
|
||||||
YOU DO NOT DO THIS, THE CONSTRUCTOR/DESTRUCTOR FUNCTIONS MAY NOT
|
|
||||||
GET CALLED.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.175 (10.9.2004)
|
|
||||||
|
|
||||||
- <stdarg.h> now tries to use the compiler supplied, machine specific
|
|
||||||
<stdarg.h> file and also includes the OS4-specifc <sys/amigaos-va.h>
|
|
||||||
file, if necessary.
|
|
||||||
|
|
||||||
- Added another test to <sys/time.h> to check if the "timeval" definition is
|
|
||||||
already in place. If it is, <exec/types.h> will not be included.
|
|
||||||
|
|
||||||
- <sys/time.h> can be made to define the timeval data structure locally if
|
|
||||||
the __USE_CLIB2_TIMEVAL preprocessor symbol is defined. In this case no
|
|
||||||
<exec/types.h> or <devices/timer.h> file will be read.
|
|
||||||
|
|
||||||
- The sprintf() family did not properly handle empty strings as format
|
|
||||||
specifications. This would result in a necessary buffer flush action
|
|
||||||
getting skipped, which consequently did not put the string termination
|
|
||||||
character into the output buffer.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.174 (27.8.2004)
|
|
||||||
|
|
||||||
- The parameters of atan2() were swapped. Fixed.
|
|
||||||
|
|
||||||
- Merged fdlibm 5.3 changes with __kernel_tan(), __exp() and __pow()
|
|
||||||
functions.
|
|
||||||
|
|
||||||
- Replaced the rint() and rintf() functions with the fdlibm code.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.173 (25.8.2004)
|
|
||||||
|
|
||||||
- The <assert.h> header file was missing the C++ 'extern "C" { .. }'
|
|
||||||
declarations.
|
|
||||||
|
|
||||||
- Added a new function __get_default_file() which allows direct access
|
|
||||||
to the low level file handle/socket descriptor associated with a
|
|
||||||
file descriptor.
|
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.172 (21.8.2004)
|
c.lib 1.172 (21.8.2004)
|
||||||
|
|
||||||
- acos() now returns 0 for a domain error.
|
- acos() now returns 0 for a domain error.
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "debug.lib 1.180"
|
#define VERS "debug.lib 1.172"
|
||||||
#define VSTRING "debug.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "debug.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: debug.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: debug.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: assert.h,v 1.2 2004-08-25 15:27:28 obarthel Exp $
|
* $Id: assert.h,v 1.1.1.1 2004-07-26 16:32:49 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,12 +36,6 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef assert
|
#ifndef assert
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
@@ -73,10 +67,4 @@ extern void __assertion_failure(const char *file_name,int line_number,const char
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* _ASSERT_H */
|
#endif /* _ASSERT_H */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dos.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
|
* $Id: dos.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -112,18 +112,6 @@ extern void __set_a4(unsigned long value);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* Obtain the low level 'file' handle or socket ID bound to a file
|
|
||||||
* descriptor. This function returns 0 for success and non-zero
|
|
||||||
* otherwise (if, for example, the file descriptor value you
|
|
||||||
* provided is not valid; errno will be set to the appropriate
|
|
||||||
* error code, too). Put a pointer to the file handle variable you
|
|
||||||
* want to be filled in into the second parameter to this function.
|
|
||||||
*/
|
|
||||||
extern int __get_default_file(int file_descriptor,long * file_ptr);
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This will be set to TRUE if the current program was launched from
|
* This will be set to TRUE if the current program was launched from
|
||||||
* the internet superserver ('inetd') or an equivalent facility.
|
* the internet superserver ('inetd') or an equivalent facility.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: limits.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $
|
* $Id: limits.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -58,12 +58,6 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
|
|
||||||
#define LLONG_MAX 0x7fffffffffffffffLL
|
|
||||||
#define ULLONG_MAX 0xffffffffffffffffULL
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#define PATH_MAX 1024
|
#define PATH_MAX 1024
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdarg.h,v 1.2 2004-09-09 08:25:30 obarthel Exp $
|
* $Id: stdarg.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -57,25 +57,12 @@ typedef char * va_list;
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#if defined(__GNUC__)
|
||||||
/****************************************************************************/
|
#undef _STDARG_H
|
||||||
|
#include_next "stdarg.h"
|
||||||
#if defined(__GNUC__)
|
#else
|
||||||
|
#error "Unknown compiler"
|
||||||
/* Use the compiler supplied, machine specific <stdarg.h> file. */
|
#endif /* __GNUC__ */
|
||||||
#undef _STDARG_H
|
|
||||||
#include_next "stdarg.h"
|
|
||||||
|
|
||||||
#include <sys/amigaos-va.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#error "Unknown compiler"
|
|
||||||
|
|
||||||
#endif /* __GNUC__ */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdio.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
|
* $Id: stdio.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -62,7 +62,7 @@ extern "C" {
|
|||||||
* correspond to a real limitation for this 'C' runtime library and is
|
* correspond to a real limitation for this 'C' runtime library and is
|
||||||
* included solely for ISO 'C' (1994) compliance.
|
* included solely for ISO 'C' (1994) compliance.
|
||||||
*/
|
*/
|
||||||
#define FOPEN_MAX 64
|
#define FOPEN_MAX 8
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdlib.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $
|
* $Id: stdlib.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -151,11 +151,6 @@ extern long atol(const char *str);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern long long strtoll(const char *str, char **ptr, int base);
|
|
||||||
extern unsigned long long strtoull(const char *str, char **ptr, int base);
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#if defined(alloca)
|
#if defined(alloca)
|
||||||
#undef alloca
|
#undef alloca
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -52,7 +52,7 @@ extern "C" {
|
|||||||
structure and try to get by with this definition. Sometimes it works,
|
structure and try to get by with this definition. Sometimes it works,
|
||||||
sometimes it doesn't. Not sure if there really is a good solution for
|
sometimes it doesn't. Not sure if there really is a good solution for
|
||||||
this problem... */
|
this problem... */
|
||||||
#if !defined(__TIMEVAL_ALREADY_DEFINED) && !defined(__USE_CLIB2_TIMEVAL)
|
#ifndef DEVICES_TIMER_H
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -73,26 +73,11 @@ extern "C" {
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* This will define the 'struct timeval' */
|
/* This will define the 'struct timeval' */
|
||||||
#ifndef DEVICES_TIMER_H
|
|
||||||
#include <devices/timer.h>
|
#include <devices/timer.h>
|
||||||
#endif /* DEVICES_TIMER_H */
|
|
||||||
|
|
||||||
/* Assume that the 'struct timeval' definition is now in place. */
|
|
||||||
#define __TIMEVAL_ALREADY_DEFINED
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* INCLUDE_VERSION */
|
#else
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* !__TIMEVAL_ALREADY_DEFINED && !__USE_CLIB2_TIMEVAL */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/* If the timeval is still undefined or should be defined locally,
|
|
||||||
define our own now... */
|
|
||||||
#if !defined(__TIMEVAL_ALREADY_DEFINED)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -109,7 +94,11 @@ struct timeval
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* !__TIMEVAL_ALREADY_DEFINED */
|
#endif /* INCLUDE_VERSION */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* DEVICES_TIMER_H */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :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 STDIN_FILENO 0
|
||||||
#define STDOUT_FILENO 1
|
#define STDOUT_FILENO 1
|
||||||
#define STDERR_FILENO 2
|
#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 readlink(const char * path_name, char * buffer, int buffer_size);
|
||||||
extern int chdir(const char * path_name);
|
extern int chdir(const char * path_name);
|
||||||
extern unsigned int sleep(unsigned int seconds);
|
extern unsigned int sleep(unsigned int seconds);
|
||||||
extern void usleep(unsigned long microseconds);
|
|
||||||
extern int getopt(int argc, char * argv[], char *opts);
|
extern int getopt(int argc, char * argv[], char *opts);
|
||||||
extern pid_t getpid(void);
|
extern pid_t getpid(void);
|
||||||
extern char *realpath(const char *file_name, char *resolved_name);
|
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,int *addrlen);
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
extern int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen);
|
|
||||||
extern int bind(int sockfd,struct sockaddr *name,int namelen);
|
extern int bind(int sockfd,struct sockaddr *name,int namelen);
|
||||||
extern int connect(int sockfd,struct sockaddr *name,socklen_t namelen);
|
extern int connect(int sockfd,struct sockaddr *name,int namelen);
|
||||||
extern struct hostent * gethostbyaddr(const char *addr, socklen_t len, int type);
|
extern struct hostent * gethostbyaddr(const char *addr, int len, int type);
|
||||||
extern struct hostent * gethostbyname(const char *name);
|
extern struct hostent * gethostbyname(const char *name);
|
||||||
extern int gethostname(const char *name, int namelen);
|
extern int gethostname(const char *name, int namelen);
|
||||||
extern struct netent * getnetbyname(const char *name);
|
extern struct netent * getnetbyname(const char *name);
|
||||||
extern int getpeername(int sockfd,struct sockaddr *name,socklen_t *namelen);
|
extern int getpeername(int sockfd,struct sockaddr *name,int *namelen);
|
||||||
extern int getsockname(int sockfd,struct sockaddr *name,socklen_t *namelen);
|
extern int getsockname(int sockfd,struct sockaddr *name,int *namelen);
|
||||||
extern int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen);
|
extern int getsockopt(int sockfd,int level,int optname,void *optval,int *optlen);
|
||||||
extern unsigned long inet_addr(const char *addr);
|
extern unsigned long inet_addr(const char *addr);
|
||||||
extern char * inet_ntoa(struct in_addr in);
|
extern char * inet_ntoa(struct in_addr in);
|
||||||
extern int ioctl(int fd,unsigned long request, ... /* char *arg */);
|
extern int ioctl(int fd,unsigned long request, ... /* char *arg */);
|
||||||
extern int listen(int sockfd,int backlog);
|
extern int listen(int sockfd,int backlog);
|
||||||
extern int recv(int fd,void *buff,size_t nbytes,int flags);
|
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 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 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 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 sendto(int sockfd,void *buff,int len,int flags,struct sockaddr *to,int tolen);
|
||||||
extern int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t optlen);
|
extern int setsockopt(int sockfd,int level,int optname,void *optval,int optlen);
|
||||||
extern int shutdown(int socket, int how);
|
extern int shutdown(int socket, int how);
|
||||||
extern int socket(int domain,int type,int protocol);
|
extern int socket(int domain,int type,int protocol);
|
||||||
extern long gethostid(void);
|
extern long gethostid(void);
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -31,39 +31,15 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _FCNTL_HEADERS_H
|
#ifndef _LOCALE_HEADERS_H
|
||||||
#include "fcntl_headers.h"
|
#include "locale_headers.h"
|
||||||
#endif /* _FCNTL_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
|
char __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
|
||||||
__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);
|
|
||||||
}
|
|
||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -69,12 +69,12 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern struct Locale * NOCOMMON __default_locale;
|
extern struct Locale * __default_locale;
|
||||||
extern struct Locale * NOCOMMON __locale_table[NUM_LOCALES];
|
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];
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :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
|
void
|
||||||
__close_all_locales(void)
|
__close_all_locales(void)
|
||||||
{
|
{
|
||||||
@@ -90,7 +71,8 @@ __close_all_locales(void)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__locale_exit)
|
void
|
||||||
|
__locale_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
@@ -125,7 +107,8 @@ CLIB_DESTRUCTOR(__locale_exit)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_CONSTRUCTOR(__locale_init)
|
int
|
||||||
|
__locale_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -162,6 +145,5 @@ CLIB_CONSTRUCTOR(__locale_init)
|
|||||||
PROFILE_ON();
|
PROFILE_ON();
|
||||||
|
|
||||||
RETURN(OK);
|
RETURN(OK);
|
||||||
|
return(OK);
|
||||||
CONSTRUCTOR_SUCCEED();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "m.lib 1.180"
|
#define VERS "m.lib 1.172"
|
||||||
#define VSTRING "m.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "m.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: m.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: m.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "m881.lib 1.180"
|
#define VERS "m881.lib 1.172"
|
||||||
#define VSTRING "m881.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "m881.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: m881.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: m881.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -148,10 +148,8 @@
|
|||||||
#ifndef UNUSED
|
#ifndef UNUSED
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED __attribute__((unused))
|
||||||
#define NOCOMMON __attribute__((nocommon))
|
|
||||||
#else
|
#else
|
||||||
#define UNUSED /* UNUSED */
|
#define UNUSED /* UNUSED */
|
||||||
#define NOCOMMON /* NOCOMMON */
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* UNUSED */
|
#endif /* UNUSED */
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_atan2.c,v 1.3 2004-08-27 11:40:49 obarthel Exp $
|
* $Id: math_atan2.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -63,7 +63,7 @@ extern double __atan(double x);
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double y,double x)
|
__atan2(double x,double y)
|
||||||
{
|
{
|
||||||
const double pi = 3.14159265358979323846;
|
const double pi = 3.14159265358979323846;
|
||||||
const double pi_over_2 = pi / 2.0;
|
const double pi_over_2 = pi / 2.0;
|
||||||
@@ -135,7 +135,7 @@ __atan(double x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double y,double x)
|
__atan2(double x,double y)
|
||||||
{
|
{
|
||||||
double pi,pi_over_2;
|
double pi,pi_over_2;
|
||||||
double result;
|
double result;
|
||||||
@@ -210,7 +210,7 @@ pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
|
|||||||
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double y,double x)
|
__atan2(double x,double y)
|
||||||
{
|
{
|
||||||
double z;
|
double z;
|
||||||
int k,m,hx,hy,ix,iy;
|
int k,m,hx,hy,ix,iy;
|
||||||
@@ -319,11 +319,11 @@ __atan2(double y,double x)
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
double
|
double
|
||||||
atan2(double y,double x)
|
atan2(double x,double y)
|
||||||
{
|
{
|
||||||
double result;
|
double result;
|
||||||
|
|
||||||
result = __atan2(y,x);
|
result = __atan2(x,y);
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_exp.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
|
* $Id: math_exp.c,v 1.1.1.1 2004-07-26 16:30:41 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -194,7 +194,7 @@ __exp(double x)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
k = (int)(invln2*x+halF[xsb]);
|
k = invln2*x+halF[xsb];
|
||||||
t = k;
|
t = k;
|
||||||
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
|
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
|
||||||
lo = t*ln2LO[0];
|
lo = t*ln2LO[0];
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -126,14 +126,8 @@ __fabs(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__PPC__)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__fabs(double x)
|
__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_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* __PPC__ */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
double
|
double
|
||||||
fabs(double x)
|
fabs(double x)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_headers.h,v 1.4 2004-08-27 13:49:17 obarthel Exp $
|
* $Id: math_headers.h,v 1.3 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -148,33 +148,6 @@ do { \
|
|||||||
(d) = sl_u.value; \
|
(d) = sl_u.value; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* A union which permits us to convert between a float and a 32 bit
|
|
||||||
int. */
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
float value;
|
|
||||||
unsigned int word;
|
|
||||||
} ieee_float_shape_type;
|
|
||||||
|
|
||||||
/* Get a 32 bit int from a float. */
|
|
||||||
|
|
||||||
#define GET_FLOAT_WORD(i,d) \
|
|
||||||
do { \
|
|
||||||
ieee_float_shape_type gf_u; \
|
|
||||||
gf_u.value = (d); \
|
|
||||||
(i) = gf_u.word; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/* Set a float from a 32 bit int. */
|
|
||||||
|
|
||||||
#define SET_FLOAT_WORD(d,i) \
|
|
||||||
do { \
|
|
||||||
ieee_float_shape_type sf_u; \
|
|
||||||
sf_u.word = (i); \
|
|
||||||
(d) = sf_u.value; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
extern double __kernel_cos(double x, double y);
|
extern double __kernel_cos(double x, double y);
|
||||||
extern double __kernel_sin(double x, double y, int iy);
|
extern double __kernel_sin(double x, double y, int iy);
|
||||||
extern int __rem_pio2(double x, double *y);
|
extern int __rem_pio2(double x, double *y);
|
||||||
|
|||||||
@@ -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.3 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -53,10 +53,9 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__math_exit)
|
void
|
||||||
|
__math_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
|
||||||
|
|
||||||
#if defined(IEEE_FLOATING_POINT_SUPPORT)
|
#if defined(IEEE_FLOATING_POINT_SUPPORT)
|
||||||
{
|
{
|
||||||
if(MathIeeeSingBasBase != NULL)
|
if(MathIeeeSingBasBase != NULL)
|
||||||
@@ -78,8 +77,6 @@ CLIB_DESTRUCTOR(__math_exit)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
LEAVE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_kernel_tan.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
|
* $Id: math_kernel_tan.c,v 1.1.1.1 2004-07-26 16:30:48 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -82,21 +82,7 @@ double __kernel_tan(double x, double y, int iy)
|
|||||||
unsigned int low;
|
unsigned int low;
|
||||||
GET_LOW_WORD(low,x);
|
GET_LOW_WORD(low,x);
|
||||||
if(((ix|low)|(iy+1))==0) return one/fabs(x);
|
if(((ix|low)|(iy+1))==0) return one/fabs(x);
|
||||||
else {
|
else return (iy==1)? x: -one/x;
|
||||||
if (iy == 1)
|
|
||||||
return x;
|
|
||||||
else { /* compute -1 / (x+y) carefully */
|
|
||||||
double a, t;
|
|
||||||
|
|
||||||
z = w = x + y;
|
|
||||||
SET_LOW_WORD(z,0);
|
|
||||||
v = y - (z - x);
|
|
||||||
t = a = -one / w;
|
|
||||||
SET_LOW_WORD(t,0);
|
|
||||||
s = one + t * z;
|
|
||||||
return t + a * (s + t * v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ix>=0x3FE59428) { /* |x|>=0.6744 */
|
if(ix>=0x3FE59428) { /* |x|>=0.6744 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_log.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $
|
* $Id: math_log.c,v 1.1.1.1 2004-07-26 16:30:49 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -135,7 +135,7 @@ __log(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__PPC__)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
static const double
|
static const double
|
||||||
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
|
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_modf.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $
|
* $Id: math_modf.c,v 1.1.1.1 2004-07-26 16:30:50 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -109,7 +109,7 @@ __modf(double x,double *nptr)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__PPC__)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__modf(double x,double *nptr)
|
__modf(double x,double *nptr)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_pow.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $
|
* $Id: math_pow.c,v 1.1.1.1 2004-07-26 16:30:52 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -171,7 +171,7 @@ __pow(double x,double y)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__PPC__)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -286,12 +286,11 @@ __pow(double x,double y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (x<0)**(non-int) is NaN */
|
/* (x<0)**(non-int) is NaN */
|
||||||
n = ((unsigned int)hx>>31)+1;
|
/* REDHAT LOCAL: This used to be
|
||||||
if((n|yisint)==0) return (x-x)/(x-x);
|
if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
|
||||||
|
but ANSI C says a right shift of a signed negative quantity is
|
||||||
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
|
implementation defined. */
|
||||||
if((n|(yisint-1))==0)
|
if(((((unsigned int)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
|
||||||
s = -one;/* (-ve)**(odd int) */
|
|
||||||
|
|
||||||
/* |y| is huge */
|
/* |y| is huge */
|
||||||
if(iy>0x41e00000) { /* if |y| > 2**31 */
|
if(iy>0x41e00000) { /* if |y| > 2**31 */
|
||||||
@@ -300,11 +299,11 @@ __pow(double x,double y)
|
|||||||
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
||||||
}
|
}
|
||||||
/* over/underflow if x is not close to one */
|
/* over/underflow if x is not close to one */
|
||||||
if(ix<0x3fefffff) return (hy<0)? s*huge*huge:s*tiny*tiny;
|
if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
|
||||||
if(ix>0x3ff00000) return (hy>0)? s*huge*huge:s*tiny*tiny;
|
if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
||||||
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
||||||
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
||||||
t = ax-one; /* t has 20 trailing zeros */
|
t = ax-1; /* t has 20 trailing zeros */
|
||||||
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
|
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
|
||||||
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
|
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
|
||||||
v = t*ivln2_l-w*ivln2;
|
v = t*ivln2_l-w*ivln2;
|
||||||
@@ -312,7 +311,7 @@ __pow(double x,double y)
|
|||||||
SET_LOW_WORD(t1,0);
|
SET_LOW_WORD(t1,0);
|
||||||
t2 = v-(t1-u);
|
t2 = v-(t1-u);
|
||||||
} else {
|
} else {
|
||||||
double ss,s2,s_h,s_l,t_h,t_l;
|
double s2,s_h,s_l,t_h,t_l;
|
||||||
n = 0;
|
n = 0;
|
||||||
/* take care subnormal number */
|
/* take care subnormal number */
|
||||||
if(ix<0x00100000)
|
if(ix<0x00100000)
|
||||||
@@ -326,11 +325,11 @@ __pow(double x,double y)
|
|||||||
else {k=0;n+=1;ix -= 0x00100000;}
|
else {k=0;n+=1;ix -= 0x00100000;}
|
||||||
SET_HIGH_WORD(ax,ix);
|
SET_HIGH_WORD(ax,ix);
|
||||||
|
|
||||||
/* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
||||||
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
||||||
v = one/(ax+bp[k]);
|
v = one/(ax+bp[k]);
|
||||||
ss = u*v;
|
s = u*v;
|
||||||
s_h = ss;
|
s_h = s;
|
||||||
SET_LOW_WORD(s_h,0);
|
SET_LOW_WORD(s_h,0);
|
||||||
/* t_h=ax+bp[k] High */
|
/* t_h=ax+bp[k] High */
|
||||||
t_h = zero;
|
t_h = zero;
|
||||||
@@ -338,29 +337,33 @@ __pow(double x,double y)
|
|||||||
t_l = ax - (t_h-bp[k]);
|
t_l = ax - (t_h-bp[k]);
|
||||||
s_l = v*((u-s_h*t_h)-s_h*t_l);
|
s_l = v*((u-s_h*t_h)-s_h*t_l);
|
||||||
/* compute log(ax) */
|
/* compute log(ax) */
|
||||||
s2 = ss*ss;
|
s2 = s*s;
|
||||||
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
||||||
r += s_l*(s_h+ss);
|
r += s_l*(s_h+s);
|
||||||
s2 = s_h*s_h;
|
s2 = s_h*s_h;
|
||||||
t_h = 3.0+s2+r;
|
t_h = 3.0+s2+r;
|
||||||
SET_LOW_WORD(t_h,0);
|
SET_LOW_WORD(t_h,0);
|
||||||
t_l = r-((t_h-3.0)-s2);
|
t_l = r-((t_h-3.0)-s2);
|
||||||
/* u+v = ss*(1+...) */
|
/* u+v = s*(1+...) */
|
||||||
u = s_h*t_h;
|
u = s_h*t_h;
|
||||||
v = s_l*t_h+t_l*ss;
|
v = s_l*t_h+t_l*s;
|
||||||
/* 2/(3log2)*(ss+...) */
|
/* 2/(3log2)*(s+...) */
|
||||||
p_h = u+v;
|
p_h = u+v;
|
||||||
SET_LOW_WORD(p_h,0);
|
SET_LOW_WORD(p_h,0);
|
||||||
p_l = v-(p_h-u);
|
p_l = v-(p_h-u);
|
||||||
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||||
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
||||||
/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||||
t = (double)n;
|
t = (double)n;
|
||||||
t1 = (((z_h+z_l)+dp_h[k])+t);
|
t1 = (((z_h+z_l)+dp_h[k])+t);
|
||||||
SET_LOW_WORD(t1,0);
|
SET_LOW_WORD(t1,0);
|
||||||
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
|
||||||
|
if(((((unsigned int)hx>>31)-1)|(yisint-1))==0)
|
||||||
|
s = -one;/* (-ve)**(odd int) */
|
||||||
|
|
||||||
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
|
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
|
||||||
y1 = y;
|
y1 = y;
|
||||||
SET_LOW_WORD(y1,0);
|
SET_LOW_WORD(y1,0);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_rint.c,v 1.3 2004-08-27 13:49:17 obarthel Exp $
|
* $Id: math_rint.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -54,10 +54,6 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
double
|
double
|
||||||
rint(double x)
|
rint(double x)
|
||||||
{
|
{
|
||||||
@@ -66,71 +62,5 @@ rint(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static const double
|
|
||||||
TWO52[2]={
|
|
||||||
4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
|
|
||||||
-4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
|
|
||||||
};
|
|
||||||
|
|
||||||
double
|
|
||||||
rint(double x)
|
|
||||||
{
|
|
||||||
int i0,j0,sx;
|
|
||||||
unsigned i,i1;
|
|
||||||
double w,t;
|
|
||||||
GET_HIGH_WORD(i0,x);
|
|
||||||
sx = (i0>>31)&1;
|
|
||||||
GET_LOW_WORD(i1,x);
|
|
||||||
j0 = ((i0>>20)&0x7ff)-0x3ff;
|
|
||||||
if(j0<20) {
|
|
||||||
if(j0<0) {
|
|
||||||
if(((i0&0x7fffffff)|i1)==0) return x;
|
|
||||||
i1 |= (i0&0x0fffff);
|
|
||||||
i0 &= 0xfffe0000;
|
|
||||||
i0 |= ((i1|-i1)>>12)&0x80000;
|
|
||||||
SET_HIGH_WORD(x,i0);
|
|
||||||
w = TWO52[sx]+x;
|
|
||||||
t = w-TWO52[sx];
|
|
||||||
GET_HIGH_WORD(i0,t);
|
|
||||||
SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
|
||||||
return t;
|
|
||||||
} else {
|
|
||||||
i = (0x000fffff)>>j0;
|
|
||||||
if(((i0&i)|i1)==0) return x; /* x is integral */
|
|
||||||
i>>=1;
|
|
||||||
if(((i0&i)|i1)!=0) {
|
|
||||||
if(j0==19) i1 = 0x40000000; else
|
|
||||||
i0 = (i0&(~i))|((0x20000)>>j0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (j0>51) {
|
|
||||||
if(j0==0x400) return x+x; /* inf or NaN */
|
|
||||||
else return x; /* x is integral */
|
|
||||||
} else {
|
|
||||||
i = ((unsigned)(0xffffffff))>>(j0-20);
|
|
||||||
if((i1&i)==0) return x; /* x is integral */
|
|
||||||
i>>=1;
|
|
||||||
if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
|
|
||||||
}
|
|
||||||
|
|
||||||
SET_HIGH_WORD(x,i0);
|
|
||||||
SET_LOW_WORD(x,i1);
|
|
||||||
w = TWO52[sx]+x;
|
|
||||||
return w-TWO52[sx];
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* FLOATING_POINT_SUPPORT */
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_rintf.c,v 1.2 2004-08-27 13:49:17 obarthel Exp $
|
* $Id: math_rintf.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -54,10 +54,6 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
float
|
float
|
||||||
rintf(float x)
|
rintf(float x)
|
||||||
{
|
{
|
||||||
@@ -66,64 +62,5 @@ rintf(float x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static const float
|
|
||||||
TWO23[2]={
|
|
||||||
8.3886080000e+06, /* 0x4b000000 */
|
|
||||||
-8.3886080000e+06, /* 0xcb000000 */
|
|
||||||
};
|
|
||||||
|
|
||||||
float
|
|
||||||
rintf(float x)
|
|
||||||
{
|
|
||||||
int i0,j0,sx;
|
|
||||||
unsigned int i,i1;
|
|
||||||
float w,t;
|
|
||||||
GET_FLOAT_WORD(i0,x);
|
|
||||||
sx = (i0>>31)&1;
|
|
||||||
j0 = ((i0>>23)&0xff)-0x7f;
|
|
||||||
if(j0<23) {
|
|
||||||
if(j0<0) {
|
|
||||||
if((i0&0x7fffffff)==0) return x;
|
|
||||||
i1 = (i0&0x07fffff);
|
|
||||||
i0 &= 0xfff00000;
|
|
||||||
i0 |= ((i1|-i1)>>9)&0x400000;
|
|
||||||
SET_FLOAT_WORD(x,i0);
|
|
||||||
w = TWO23[sx]+x;
|
|
||||||
t = w-TWO23[sx];
|
|
||||||
GET_FLOAT_WORD(i0,t);
|
|
||||||
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
|
||||||
return t;
|
|
||||||
} else {
|
|
||||||
i = (0x007fffff)>>j0;
|
|
||||||
if((i0&i)==0) return x; /* x is integral */
|
|
||||||
i>>=1;
|
|
||||||
if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(j0==0x80) return x+x; /* inf or NaN */
|
|
||||||
else return x; /* x is integral */
|
|
||||||
}
|
|
||||||
SET_FLOAT_WORD(x,i0);
|
|
||||||
w = TWO23[sx]+x;
|
|
||||||
return w-TWO23[sx];
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* FLOATING_POINT_SUPPORT */
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_sqrt.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $
|
* $Id: math_sqrt.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -135,7 +135,7 @@ __sqrt(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef __PPC__
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
static const double one = 1.0, tiny=1.0e-300;
|
static const double one = 1.0, tiny=1.0e-300;
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ __sqrt(double x)
|
|||||||
return z;
|
return z;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "net.lib 1.180"
|
#define VERS "net.lib 1.172"
|
||||||
#define VSTRING "net.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "net.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: net.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: net.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
c.lib 1.180 (23.10.2004)
|
c.lib 1.172 (21.8.2004)
|
||||||
|
|
||||||
- The printf() family now produces no output at all for floating point
|
- Changed the values which the acos(), asin(), atan2(), fmod()
|
||||||
numbers (%e, %f and %g) if the floating point support code is disabled.
|
and sqrt() functions return when they find that their parameters
|
||||||
In previous versions of the library some output (series of 0 or blank
|
are invalid.
|
||||||
space characters) could still be produced.
|
|
||||||
|
|
||||||
- The scanf() family no longer ignores a conversion request of
|
- The atan2() function failed to perform a correct parameter check.
|
||||||
type '%x' (hexadecimal) and treats the number to be processed
|
|
||||||
as in octal notation if that number begins with the digit 0.
|
|
||||||
|
c.lib 1.171 (16.8.2004)
|
||||||
|
|
||||||
|
- Added hypot()
|
||||||
|
|
||||||
|
- vfprintf/vfscanf now support the %lld/%llu (64 bit integer) format
|
||||||
|
by default
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: smakefile,v 1.10 2004-09-29 14:17:44 obarthel Exp $
|
# $Id: smakefile,v 1.6 2004-08-16 09:33:12 obarthel Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -163,14 +163,14 @@ FCNTL_OBJ = \
|
|||||||
fcntl_lseek.o \
|
fcntl_lseek.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o \
|
fcntl_write.o
|
||||||
fcntl_get_default_file.o
|
|
||||||
|
|
||||||
LIBGEN_OBJ = \
|
LIBGEN_OBJ = \
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o
|
libgen_dirname.o
|
||||||
|
|
||||||
LOCALE_OBJ = \
|
LOCALE_OBJ = \
|
||||||
|
locale_data.o \
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o
|
locale_setlocale.o
|
||||||
@@ -414,8 +414,6 @@ STDLIB_OBJ = \
|
|||||||
stdlib_strtod.o \
|
stdlib_strtod.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
stdlib_strtoll.o \
|
|
||||||
stdlib_strtoull.o \
|
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
@@ -473,9 +471,9 @@ TIME_OBJ = \
|
|||||||
UNISTD_OBJ = \
|
UNISTD_OBJ = \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
unistd_chdir_exit.o \
|
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
|
unistd_data.o \
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -496,15 +494,12 @@ UNISTD_OBJ = \
|
|||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_strip_double_slash.o \
|
unistd_strip_double_slash.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
unistd_time_delay.o \
|
|
||||||
unistd_timer.o \
|
|
||||||
unistd_translatea2u.o \
|
unistd_translatea2u.o \
|
||||||
unistd_translaterel.o \
|
unistd_translaterel.o \
|
||||||
unistd_translateu2a.o \
|
unistd_translateu2a.o \
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unix_path_semantics.o \
|
unistd_unix_path_semantics.o \
|
||||||
unistd_unlink.o \
|
unistd_unlink.o
|
||||||
unistd_usleep.o
|
|
||||||
# \
|
# \
|
||||||
# unistd_wildcard_expand.o
|
# unistd_wildcard_expand.o
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :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);
|
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();
|
ENTER();
|
||||||
|
|
||||||
@@ -111,7 +116,16 @@ CLIB_DESTRUCTOR(__socket_exit)
|
|||||||
* does not happen, the stdio cleanup function will
|
* does not happen, the stdio cleanup function will
|
||||||
* crash (with bells on).
|
* 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__)
|
#if defined(__amigaos4__)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
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;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
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;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
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;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "stack.lib 1.180"
|
#define VERS "stack.lib 1.172"
|
||||||
#define VSTRING "stack.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "stack.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: stack.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: stack.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
__close_all_files(void)
|
__stdio_exit(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ __close_all_files(void)
|
|||||||
|
|
||||||
__check_abort_enabled = FALSE;
|
__check_abort_enabled = FALSE;
|
||||||
|
|
||||||
if(__iob != NULL && __num_iob > 0)
|
if(__iob != NULL)
|
||||||
{
|
{
|
||||||
for(i = 0 ; i < __num_iob ; i++)
|
for(i = 0 ; i < __num_iob ; i++)
|
||||||
{
|
{
|
||||||
@@ -72,7 +72,7 @@ __close_all_files(void)
|
|||||||
__iob = NULL;
|
__iob = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(__fd != NULL && __num_fd > 0)
|
if(__fd != NULL)
|
||||||
{
|
{
|
||||||
for(i = 0 ; i < __num_fd ; i++)
|
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
|
int
|
||||||
__stdio_init(void)
|
__stdio_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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.2 2004-08-08 10:55:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -65,11 +65,6 @@ struct fd;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* stdio_init_exit.c */
|
|
||||||
void __close_all_files(void);
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/* stdio_translateioerror.c */
|
/* stdio_translateioerror.c */
|
||||||
extern void __translate_io_error_to_errno(LONG io_error,int * errno_ptr);
|
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);
|
extern void __translate_access_io_error_to_errno(LONG io_error,int * errno_ptr);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdio_puts.c,v 1.2 2004-09-10 07:39:19 obarthel Exp $
|
* $Id: stdio_puts.c,v 1.1.1.1 2004-07-26 16:31:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -94,7 +94,7 @@ puts(const char *s)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
||||||
/* Note: if buffering is disabled for this stream, then we still
|
/* Note: if buffering is disabled for this stdout, then we still
|
||||||
may have buffered data around, queued to be printed right now.
|
may have buffered data around, queued to be printed right now.
|
||||||
This is intended to improve performance as it takes more effort
|
This is intended to improve performance as it takes more effort
|
||||||
to write a single character to a file than to write a bunch. */
|
to write a single character to a file than to write a bunch. */
|
||||||
|
|||||||
@@ -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.4 2004-08-14 11:11:01 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -262,6 +262,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -343,6 +344,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -564,6 +566,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -620,6 +623,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -979,8 +983,15 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
else
|
else
|
||||||
(void)va_arg(arg, double);
|
(void)va_arg(arg, double);
|
||||||
|
|
||||||
minimum_field_width = 0;
|
#ifndef NDEBUG
|
||||||
format_flags = 0;
|
{
|
||||||
|
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 */
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
}
|
}
|
||||||
@@ -1002,6 +1013,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1156,6 +1168,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1211,6 +1224,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(arg == NULL)
|
if(arg == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1229,6 +1243,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(short_ptr == NULL)
|
if(short_ptr == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1253,6 +1268,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(int_ptr == NULL)
|
if(int_ptr == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1273,6 +1289,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(int_ptr == NULL)
|
if(int_ptr == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1294,6 +1311,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
if(int_ptr == NULL)
|
if(int_ptr == NULL)
|
||||||
{
|
{
|
||||||
errno = EFAULT;
|
errno = EFAULT;
|
||||||
|
result = EOF;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1506,7 +1524,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
|
|||||||
may have buffered data around, queued to be printed right now.
|
may have buffered data around, queued to be printed right now.
|
||||||
This is intended to improve performance as it takes more effort
|
This is intended to improve performance as it takes more effort
|
||||||
to write a single character to a file than to write a bunch. */
|
to write a single character to a file than to write a bunch. */
|
||||||
if(result != EOF && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE)
|
if(result > 0 && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE)
|
||||||
{
|
{
|
||||||
if(__iob_write_buffer_is_valid(iob) && __flush_iob_write_buffer(iob) < 0)
|
if(__iob_write_buffer_is_valid(iob) && __flush_iob_write_buffer(iob) < 0)
|
||||||
result = EOF;
|
result = EOF;
|
||||||
|
|||||||
@@ -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.2 2004-08-08 10:55:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -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')
|
if(conversion_type == 'd' || conversion_type == 'u')
|
||||||
base = 10;
|
base = 10;
|
||||||
else if (conversion_type == 'o')
|
else if (conversion_type == 'o')
|
||||||
@@ -1064,11 +1060,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
|
|||||||
* '0x' prefix or just a zero.
|
* '0x' prefix or just a zero.
|
||||||
*/
|
*/
|
||||||
c = __getc(stream);
|
c = __getc(stream);
|
||||||
|
if (c == 'x' || c == 'X')
|
||||||
/* 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'))
|
|
||||||
{
|
{
|
||||||
/* It's the hex prefix. */
|
/* It's the hex prefix. */
|
||||||
base = 16;
|
base = 16;
|
||||||
@@ -1083,7 +1075,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
|
|||||||
if(maximum_field_width > 0)
|
if(maximum_field_width > 0)
|
||||||
maximum_field_width--;
|
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
|
/* The preceding '0' was part of the
|
||||||
octal prefix. So we don't really know
|
octal prefix. So we don't really know
|
||||||
|
|||||||
@@ -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
|
* :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 nptrs = (ULONG)__CTOR_LIST__[0];
|
||||||
ULONG i;
|
ULONG i;
|
||||||
|
|
||||||
ENTER();
|
|
||||||
|
|
||||||
D(("there are %ld constructors to be called",nptrs));
|
|
||||||
|
|
||||||
/* Call all constructors in forward order */
|
/* Call all constructors in forward order */
|
||||||
for(i = 0 ; i < nptrs ; i++)
|
for(i = 0 ; i < nptrs ; i++)
|
||||||
{
|
|
||||||
D(("calling constructor #%ld, 0x%08lx",i,__CTOR_LIST__[1+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];
|
ULONG nptrs = (ULONG)__DTOR_LIST__[0];
|
||||||
static ULONG i;
|
static ULONG i;
|
||||||
|
|
||||||
ENTER();
|
|
||||||
|
|
||||||
D(("there are %ld destructors to be called",nptrs));
|
|
||||||
|
|
||||||
/* If one of the destructors drops into
|
/* If one of the destructors drops into
|
||||||
* exit(), processing will continue with
|
* exit(), processing will continue with
|
||||||
* the next following destructor.
|
* the next following destructor.
|
||||||
@@ -167,15 +224,7 @@ _do_dtors(void)
|
|||||||
|
|
||||||
/* Call all destructors in reverse order */
|
/* Call all destructors in reverse order */
|
||||||
while(i++ < nptrs)
|
while(i++ < nptrs)
|
||||||
{
|
|
||||||
D(("calling destructor #%ld, 0x%08lx",i,__DTOR_LIST__[1+nptrs - i]));
|
|
||||||
|
|
||||||
__DTOR_LIST__[1+nptrs - i]();
|
__DTOR_LIST__[1+nptrs - i]();
|
||||||
}
|
|
||||||
|
|
||||||
SHOWMSG("all done.");
|
|
||||||
|
|
||||||
LEAVE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -85,11 +85,15 @@ ULONG __stk_extensions;
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
struct Library * __UtilityBase;
|
struct Library * __UtilityBase;
|
||||||
|
struct Library * __LocaleBase;
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__amigaos4__)
|
#if defined(__amigaos4__)
|
||||||
struct UtilityIFace * __IUtility;
|
|
||||||
|
struct UtilityIFace * __IUtility;
|
||||||
|
struct LocaleIFace * __ILocale;
|
||||||
|
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -49,14 +49,8 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifndef _MACROS_H
|
extern struct Library * __UtilityBase;
|
||||||
#include "macros.h"
|
extern struct Library * __LocaleBase;
|
||||||
#endif /* _MACROS_H */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
extern struct Library * NOCOMMON __UtilityBase;
|
|
||||||
extern struct Library * NOCOMMON __LocaleBase;
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -64,8 +58,8 @@ extern struct Library * NOCOMMON __LocaleBase;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern struct UtilityIFace NOCOMMON * __IUtility;
|
extern struct UtilityIFace * __IUtility;
|
||||||
extern struct LocaleIFace NOCOMMON * __ILocale;
|
extern struct LocaleIFace * __ILocale;
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -64,10 +64,7 @@ extern int main(int arg_c,char ** arg_v);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The SAS/C profiling hooks can be used to track call chains. Neat
|
#if 0
|
||||||
trick, but not always necessary. Don't enable this unless you know
|
|
||||||
what you're doing... */
|
|
||||||
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -103,7 +100,7 @@ _EPILOG(REG(a0,char * id))
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
|
#endif
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -122,7 +119,10 @@ call_main(void)
|
|||||||
__stdio_init,
|
__stdio_init,
|
||||||
__machine_test,
|
__machine_test,
|
||||||
__math_init,
|
__math_init,
|
||||||
|
__locale_init,
|
||||||
|
__unistd_init,
|
||||||
__socket_init,
|
__socket_init,
|
||||||
|
__usergroup_init,
|
||||||
__wildcard_expand_init,
|
__wildcard_expand_init,
|
||||||
|
|
||||||
NULL
|
NULL
|
||||||
@@ -135,6 +135,15 @@ call_main(void)
|
|||||||
*/
|
*/
|
||||||
static exit_func_ptr exit_functions[] =
|
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,
|
__stdlib_exit,
|
||||||
|
|
||||||
NULL
|
NULL
|
||||||
@@ -142,51 +151,27 @@ call_main(void)
|
|||||||
|
|
||||||
static size_t i;
|
static size_t i;
|
||||||
|
|
||||||
ENTER();
|
|
||||||
|
|
||||||
/* This plants the return buffer for _exit(). */
|
/* This plants the return buffer for _exit(). */
|
||||||
if(setjmp(__exit_jmp_buf) != 0)
|
if(setjmp(__exit_jmp_buf) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
SHOWMSG("calling init functions");
|
|
||||||
|
|
||||||
for(i = 0 ; init_functions[i] != NULL ; i++)
|
for(i = 0 ; init_functions[i] != NULL ; i++)
|
||||||
{
|
{
|
||||||
D(("calling init function #%ld",i));
|
|
||||||
|
|
||||||
if((*init_functions[i])() != OK)
|
if((*init_functions[i])() != OK)
|
||||||
{
|
|
||||||
SHOWMSG("that didn't work");
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SHOWMSG("now invoking the constructors");
|
|
||||||
|
|
||||||
/* Go through the constructor list */
|
/* Go through the constructor list */
|
||||||
_init();
|
_init();
|
||||||
|
|
||||||
SHOWMSG("done.");
|
//show_profile_names = TRUE;
|
||||||
|
|
||||||
/* 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 */
|
|
||||||
|
|
||||||
/* After all these preparations, get this show on the road... */
|
/* After all these preparations, get this show on the road... */
|
||||||
exit(main((int)__argc,(char **)__argv));
|
exit(main((int)__argc,(char **)__argv));
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
||||||
/* Switch off function name printing, if it was enabled. */
|
//show_profile_names = FALSE;
|
||||||
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
|
|
||||||
{
|
|
||||||
show_profile_names = FALSE;
|
|
||||||
}
|
|
||||||
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
|
|
||||||
|
|
||||||
/* If we end up here with the __stack_overflow variable
|
/* If we end up here with the __stack_overflow variable
|
||||||
* set then the stack overflow handler dropped into
|
* set then the stack overflow handler dropped into
|
||||||
@@ -196,8 +181,6 @@ call_main(void)
|
|||||||
*/
|
*/
|
||||||
if(__stack_overflow)
|
if(__stack_overflow)
|
||||||
{
|
{
|
||||||
SHOWMSG("we have a stack overflow");
|
|
||||||
|
|
||||||
/* Dump whatever is waiting to be written to the
|
/* Dump whatever is waiting to be written to the
|
||||||
* standard I/O streams, and make sure that no
|
* standard I/O streams, and make sure that no
|
||||||
* break signal is about to make things any more
|
* break signal is about to make things any more
|
||||||
@@ -220,15 +203,9 @@ call_main(void)
|
|||||||
/* If necessary, print stack size usage information. */
|
/* If necessary, print stack size usage information. */
|
||||||
__stack_usage_exit();
|
__stack_usage_exit();
|
||||||
|
|
||||||
SHOWMSG("invoking the destructors");
|
|
||||||
|
|
||||||
/* Go through the destructor list */
|
/* Go through the destructor list */
|
||||||
_fini();
|
_fini();
|
||||||
|
|
||||||
SHOWMSG("done.");
|
|
||||||
|
|
||||||
SHOWMSG("calling the exit functions");
|
|
||||||
|
|
||||||
/* Any of the following cleanup routines may call
|
/* Any of the following cleanup routines may call
|
||||||
* _exit() by way of abort() or through a hook
|
* _exit() by way of abort() or through a hook
|
||||||
* function. Which is why we redirect the exit
|
* function. Which is why we redirect the exit
|
||||||
@@ -236,13 +213,10 @@ call_main(void)
|
|||||||
*/
|
*/
|
||||||
for(i = 0 ; exit_functions[i] != NULL ; i++)
|
for(i = 0 ; exit_functions[i] != NULL ; i++)
|
||||||
{
|
{
|
||||||
D(("calling exit function #%ld",i));
|
|
||||||
|
|
||||||
if(setjmp(__exit_jmp_buf) == 0)
|
if(setjmp(__exit_jmp_buf) == 0)
|
||||||
(*exit_functions[i])();
|
(*exit_functions[i])();
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN(__exit_value);
|
|
||||||
return(__exit_value);
|
return(__exit_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,6 +347,9 @@ _main(void)
|
|||||||
}
|
}
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
|
/* Remember when this program was started. */
|
||||||
|
DateStamp(&__start_time);
|
||||||
|
|
||||||
/* If a callback was provided which can fill us in on which
|
/* If a callback was provided which can fill us in on which
|
||||||
* minimum stack size should be used, invoke it now and
|
* minimum stack size should be used, invoke it now and
|
||||||
* store its result in the global __stack_size variable.
|
* store its result in the global __stack_size variable.
|
||||||
@@ -415,36 +392,33 @@ _main(void)
|
|||||||
{
|
{
|
||||||
struct StackSwapStruct * stk;
|
struct StackSwapStruct * stk;
|
||||||
unsigned int stack_size;
|
unsigned int stack_size;
|
||||||
APTR new_stack;
|
ULONG lower,upper;
|
||||||
|
|
||||||
/* Make the stack size a multiple of 32 bytes. */
|
/* Make the stack size a multiple of 16 bytes. */
|
||||||
stack_size = 32 + ((__stack_size + 31UL) & ~31UL);
|
stack_size = (__stack_size + 15UL) & ~15UL;
|
||||||
|
|
||||||
/* Allocate the stack swapping data structure
|
/* We allocate a little more memory so that we can align
|
||||||
and the stack space separately. */
|
the stack to a 128 bit boundary. */
|
||||||
stk = AllocVec(sizeof(*stk),MEMF_PUBLIC|MEMF_ANY);
|
stk = AllocVec(sizeof(*stk) + 15 + stack_size,MEMF_PUBLIC|MEMF_ANY);
|
||||||
if(stk == NULL)
|
if(stk == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
new_stack = AllocMem(stack_size,MEMF_PUBLIC|MEMF_ANY);
|
/* Align the lower stack bound to a 128 bit boundary, then
|
||||||
if(new_stack == NULL)
|
fix up the upper bound, which is guaranteed to be on
|
||||||
{
|
a 128 bit boundary, too, on account of the stack size
|
||||||
FreeVec(stk);
|
having being rounded to that boundary. */
|
||||||
goto out;
|
lower = (((ULONG)(stk+1)) + 15UL) & ~15UL;
|
||||||
}
|
upper = lower + stack_size;
|
||||||
|
|
||||||
/* Fill in the lower and upper bounds, then take care of
|
stk->stk_Lower = (APTR)lower;
|
||||||
the stack pointer itself. */
|
stk->stk_Upper = upper;
|
||||||
stk->stk_Lower = new_stack;
|
stk->stk_Pointer = (APTR)upper;
|
||||||
stk->stk_Upper = (ULONG)(new_stack) + stack_size;
|
|
||||||
stk->stk_Pointer = (APTR)(stk->stk_Upper - 32);
|
|
||||||
|
|
||||||
/* If necessary, set up for stack size usage measurement. */
|
/* If necessary, set up for stack size usage measurement. */
|
||||||
__stack_usage_init(stk);
|
__stack_usage_init(stk);
|
||||||
|
|
||||||
return_code = __swap_stack_and_call(stk,(APTR)call_main);
|
return_code = __swap_stack_and_call(stk,(APTR)call_main);
|
||||||
|
|
||||||
FreeMem(new_stack, stack_size);
|
|
||||||
FreeVec(stk);
|
FreeVec(stk);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -41,6 +41,13 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
__math_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
__math_init(void)
|
__math_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -60,6 +60,7 @@ struct MemoryTree;
|
|||||||
|
|
||||||
/* math_init_exit.c */
|
/* math_init_exit.c */
|
||||||
extern int __math_init(void);
|
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 */
|
/* stdio_init_exit.c */
|
||||||
extern int __stdio_init(void);
|
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 */
|
/* stdlib_atexit.c */
|
||||||
extern void __exit_trap_trigger(void);
|
extern void __exit_trap_trigger(void);
|
||||||
|
|
||||||
@@ -86,6 +106,13 @@ extern void __exit_trap_trigger(void);
|
|||||||
|
|
||||||
/* socket_init_exit.c */
|
/* socket_init_exit.c */
|
||||||
extern int __socket_init(void);
|
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 */
|
/* stdlib_wildcard_expand.c */
|
||||||
extern UBYTE * __allocate_quote_vector(int num_parameters);
|
extern UBYTE * __allocate_quote_vector(int num_parameters);
|
||||||
extern int __wildcard_expand_init(void);
|
extern int __wildcard_expand_init(void);
|
||||||
|
extern void __wildcard_expand_exit(void);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* stdlib_stackextension.c */
|
/* stdlib_stackextension.c */
|
||||||
extern int __stk_init(void);
|
extern int __stk_init(void);
|
||||||
|
extern void __stk_exit(void);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -134,6 +163,7 @@ void _fini(void);
|
|||||||
|
|
||||||
/* stdlib_startup.c */
|
/* stdlib_startup.c */
|
||||||
extern int __startup_init(void);
|
extern int __startup_init(void);
|
||||||
|
extern void __startup_exit(void);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdlib_setjmp.c,v 1.2 2004-09-27 15:07:20 tfrieden Exp $
|
* $Id: stdlib_setjmp.c,v 1.1.1.1 2004-07-26 16:32:05 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -283,8 +283,6 @@ l1: moveml a0@(4:W),d1-d7 | restore all data registers \n\
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef PPC_FLOATING_POINT_SUPPORT
|
|
||||||
|
|
||||||
__asm(" \n\
|
__asm(" \n\
|
||||||
\n\
|
\n\
|
||||||
.text \n\
|
.text \n\
|
||||||
@@ -360,48 +358,6 @@ longjmp: \n\
|
|||||||
blr \n\
|
blr \n\
|
||||||
\n\
|
\n\
|
||||||
");
|
");
|
||||||
#else
|
|
||||||
__asm(" \n\
|
|
||||||
\n\
|
|
||||||
.text \n\
|
|
||||||
.align 2 \n\
|
|
||||||
\n\
|
|
||||||
.globl setjmp \n\
|
|
||||||
\n\
|
|
||||||
setjmp: \n\
|
|
||||||
\n\
|
|
||||||
mflr r10 \n\
|
|
||||||
mfcr r11 \n\
|
|
||||||
mr r12, r1 \n\
|
|
||||||
stmw r10, 0(r3) \n\
|
|
||||||
li r3, 0 \n\
|
|
||||||
blr \n\
|
|
||||||
\n\
|
|
||||||
");
|
|
||||||
|
|
||||||
__asm(" \n\
|
|
||||||
.text \n\
|
|
||||||
.align 2 \n\
|
|
||||||
\n\
|
|
||||||
.globl longjmp \n\
|
|
||||||
\n\
|
|
||||||
longjmp: \n\
|
|
||||||
\n\
|
|
||||||
lmw r10,0(r3) \n\
|
|
||||||
mtlr r10 \n\
|
|
||||||
mtcr r11 \n\
|
|
||||||
mr r1,r12 \n\
|
|
||||||
cmpwi r4, 0 \n\
|
|
||||||
bne 1f \n\
|
|
||||||
li r3,1 \n\
|
|
||||||
blr \n\
|
|
||||||
1: \n\
|
|
||||||
mr r3, r4 \n\
|
|
||||||
blr \n\
|
|
||||||
\n\
|
|
||||||
");
|
|
||||||
|
|
||||||
#endif /* defined PPC_FLOATING_POINT_SUPPORT */
|
|
||||||
|
|
||||||
#endif /* defined STACK_EXTENSION */
|
#endif /* defined STACK_EXTENSION */
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,6 +37,13 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
__socket_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
__socket_init(void)
|
__socket_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -123,3 +123,8 @@ __stk_init(void)
|
|||||||
|
|
||||||
return(OK);
|
return(OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
__stk_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -294,7 +294,8 @@ __stk_init(void)
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* Free all spare stackframes */
|
/* Free all spare stackframes */
|
||||||
CLIB_DESTRUCTOR(__stk_exit)
|
void
|
||||||
|
__stk_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -421,10 +421,9 @@ __startup_init(void)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__startup_exit)
|
void
|
||||||
|
__startup_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
|
||||||
|
|
||||||
PROFILE_OFF();
|
PROFILE_OFF();
|
||||||
|
|
||||||
/* Now clean up after the streams set up for the Workbench
|
/* Now clean up after the streams set up for the Workbench
|
||||||
@@ -462,6 +461,4 @@ CLIB_DESTRUCTOR(__startup_exit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PROFILE_ON();
|
PROFILE_ON();
|
||||||
|
|
||||||
LEAVE();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 */
|
|
||||||
@@ -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 */
|
|
||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -94,19 +94,51 @@ ___swap_stack_and_call: \n\
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* Swap the current stack configuration out, call a function provided,
|
__asm(" \n\
|
||||||
swap the stack configuration back and return. */
|
\n\
|
||||||
int
|
.text \n\
|
||||||
__swap_stack_and_call(struct StackSwapStruct * stk,APTR function)
|
.align 2 \n\
|
||||||
{
|
\n\
|
||||||
register int result;
|
.set MainInterface, 632 \n\
|
||||||
|
.set IExec_StackSwap, 272 \n\
|
||||||
StackSwap(stk);
|
\n\
|
||||||
result = ((int (*)(void))function)();
|
.globl SysBase \n\
|
||||||
StackSwap(stk);
|
.globl __swap_stack_and_call \n\
|
||||||
|
\n\
|
||||||
return(result);
|
__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\
|
||||||
|
");
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -31,24 +31,21 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _UNISTD_HEADERS_H
|
#ifndef _STDLIB_HEADERS_H
|
||||||
#include "unistd_headers.h"
|
#include "stdlib_headers.h"
|
||||||
#endif /* _UNISTD_HEADERS_H */
|
#endif /* _STDLIB_HEADERS_H */
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
usleep(unsigned long microseconds)
|
__usergroup_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
}
|
||||||
|
|
||||||
SHOWVALUE(microseconds);
|
/****************************************************************************/
|
||||||
|
|
||||||
__time_delay(0,microseconds);
|
int
|
||||||
|
__usergroup_init(void)
|
||||||
LEAVE();
|
{
|
||||||
|
return(OK);
|
||||||
}
|
}
|
||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
UBYTE * WEAK __allocate_quote_vector(int num_parameters UNUSED);
|
UBYTE * WEAK __allocate_quote_vector(int num_parameters UNUSED);
|
||||||
int WEAK __wildcard_expand_init(void);
|
int WEAK __wildcard_expand_init(void);
|
||||||
|
void WEAK __wildcard_expand_exit(void);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -55,3 +56,10 @@ __wildcard_expand_init(void)
|
|||||||
{
|
{
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
__wildcard_expand_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
* :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_t
|
||||||
clock(void)
|
clock(void)
|
||||||
{
|
{
|
||||||
@@ -73,8 +57,8 @@ clock(void)
|
|||||||
minutes_now = now.ds_Days * 24 * 60 + now.ds_Minute;
|
minutes_now = now.ds_Days * 24 * 60 + now.ds_Minute;
|
||||||
ticks_now = now.ds_Tick;
|
ticks_now = now.ds_Tick;
|
||||||
|
|
||||||
minutes_start = start_time.ds_Days * 24 * 60 + start_time.ds_Minute;
|
minutes_start = __start_time.ds_Days * 24 * 60 + __start_time.ds_Minute;
|
||||||
ticks_start = start_time.ds_Tick;
|
ticks_start = __start_time.ds_Tick;
|
||||||
|
|
||||||
/* Subtract the start time from the current time. We start
|
/* Subtract the start time from the current time. We start
|
||||||
* with the ticks.
|
* with the ticks.
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,6 +37,10 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
struct DateStamp __start_time;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
const char * const __abbreviated_week_day_names[7] =
|
const char * const __abbreviated_week_day_names[7] =
|
||||||
{
|
{
|
||||||
"Sun",
|
"Sun",
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -84,6 +84,10 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern struct DateStamp __start_time;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
extern const char * const __abbreviated_week_day_names[7];
|
extern const char * const __abbreviated_week_day_names[7];
|
||||||
extern const char * const __week_day_names[7];
|
extern const char * const __week_day_names[7];
|
||||||
extern const char * const __abbreviated_month_names[12];
|
extern const char * const __abbreviated_month_names[12];
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -41,34 +41,20 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* If the program's current directory was changed, here is where
|
/* Names of files and directories to delete when shutting down. */
|
||||||
we find out about it. */
|
struct MinList __unlink_list;
|
||||||
BPTR NOCOMMON __original_current_directory;
|
|
||||||
BOOL NOCOMMON __current_directory_changed;
|
|
||||||
BOOL NOCOMMON __unlock_current_directory;
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__chdir_exit)
|
/* Local timer I/O. */
|
||||||
{
|
struct MsgPort * __timer_port;
|
||||||
ENTER();
|
struct timerequest * __timer_request;
|
||||||
|
|
||||||
if(__current_directory_changed)
|
/****************************************************************************/
|
||||||
{
|
|
||||||
BPTR old_dir;
|
|
||||||
|
|
||||||
old_dir = CurrentDir(__original_current_directory);
|
/* If the program's current directory was changed, here is where
|
||||||
__original_current_directory = ZERO;
|
* we find out about it.
|
||||||
|
*/
|
||||||
if(__unlock_current_directory)
|
BPTR __original_current_directory;
|
||||||
{
|
BOOL __current_directory_changed;
|
||||||
UnLock(old_dir);
|
BOOL __unlock_current_directory;
|
||||||
|
|
||||||
__unlock_current_directory = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
__current_directory_changed = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
LEAVE();
|
|
||||||
}
|
|
||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -47,29 +47,22 @@ extern char __current_path_name[MAXPATHLEN];
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* Names of files and directories to delete when shutting down. */
|
/* 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. */
|
/* Local timer I/O. */
|
||||||
extern struct MsgPort * NOCOMMON __timer_port;
|
extern struct MsgPort * __timer_port;
|
||||||
extern struct timerequest * NOCOMMON __timer_request;
|
extern struct timerequest * __timer_request;
|
||||||
extern BOOL NOCOMMON __timer_busy;
|
|
||||||
extern struct Library * NOCOMMON __TimerBase;
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#if defined(__amigaos4__)
|
|
||||||
extern struct TimerIFace * NOCOMMON __ITimer;
|
|
||||||
#endif /* __amigaos4__ */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* If the program's current directory was changed, here is where
|
/* If the program's current directory was changed, here is where
|
||||||
we find out about it. */
|
* we find out about it.
|
||||||
extern BPTR NOCOMMON __original_current_directory;
|
*/
|
||||||
extern BOOL NOCOMMON __current_directory_changed;
|
extern BPTR __original_current_directory;
|
||||||
extern BOOL NOCOMMON __unlock_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 */
|
#endif /* _UNISTD_HEADERS_H */
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -41,25 +41,21 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* Names of files and directories to delete when shutting down. */
|
int
|
||||||
struct MinList NOCOMMON __unlink_list;
|
__unistd_init(void)
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
CLIB_CONSTRUCTOR(__unistd_init)
|
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
NewList((struct List *)&__unlink_list);
|
NewList((struct List *)&__unlink_list);
|
||||||
|
|
||||||
RETURN(OK);
|
RETURN(OK);
|
||||||
|
return(OK);
|
||||||
CONSTRUCTOR_SUCCEED();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__unistd_exit)
|
void
|
||||||
|
__unistd_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
@@ -70,9 +66,6 @@ CLIB_DESTRUCTOR(__unistd_exit)
|
|||||||
struct UnlinkNode * uln;
|
struct UnlinkNode * uln;
|
||||||
BPTR old_dir;
|
BPTR old_dir;
|
||||||
|
|
||||||
/* Close all the files that still might be open. */
|
|
||||||
__close_all_files();
|
|
||||||
|
|
||||||
while((uln = (struct UnlinkNode *)RemHead((struct List *)&__unlink_list)))
|
while((uln = (struct UnlinkNode *)RemHead((struct List *)&__unlink_list)))
|
||||||
{
|
{
|
||||||
old_dir = CurrentDir(uln->uln_Lock);
|
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();
|
PROFILE_ON();
|
||||||
|
|
||||||
LEAVE();
|
LEAVE();
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -44,11 +44,132 @@
|
|||||||
unsigned int
|
unsigned int
|
||||||
sleep(unsigned int seconds)
|
sleep(unsigned int seconds)
|
||||||
{
|
{
|
||||||
unsigned int result;
|
static BOOL sleeping;
|
||||||
|
unsigned int result = 0;
|
||||||
|
|
||||||
ENTER();
|
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);
|
||||||
return(result);
|
return(result);
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -74,17 +74,16 @@ static struct AnchorPath * anchor;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__wildcard_expand_exit)
|
void
|
||||||
|
__wildcard_expand_exit(void)
|
||||||
{
|
{
|
||||||
ENTER();
|
|
||||||
|
|
||||||
if(anchor != NULL)
|
if(anchor != NULL)
|
||||||
{
|
{
|
||||||
MatchEnd(anchor);
|
MatchEnd(anchor);
|
||||||
|
|
||||||
|
free(anchor);
|
||||||
anchor = NULL;
|
anchor = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LEAVE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 180
|
#define REVISION 172
|
||||||
#define DATE "23.10.2004"
|
#define DATE "21.8.2004"
|
||||||
#define VERS "unix.lib 1.180"
|
#define VERS "unix.lib 1.172"
|
||||||
#define VSTRING "unix.lib 1.180 (23.10.2004)\r\n"
|
#define VSTRING "unix.lib 1.172 (21.8.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: unix.lib 1.180 (23.10.2004)"
|
#define VERSTAG "\0$VER: unix.lib 1.172 (21.8.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
180
|
172
|
||||||
|
|||||||
@@ -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
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -41,6 +41,18 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
struct Library * __UserGroupBase;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__amigaos4__)
|
||||||
|
|
||||||
|
struct UserGroupIFace *__IUserGroup;
|
||||||
|
|
||||||
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
int __root_uid;
|
int __root_uid;
|
||||||
int __root_gid;
|
int __root_gid;
|
||||||
int __root_euid;
|
int __root_euid;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: usergroup_headers.h,v 1.3 2004-09-29 19:57:58 obarthel Exp $
|
* $Id: usergroup_headers.h,v 1.1.1.1 2004-07-26 16:32:38 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -42,13 +42,13 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern struct Library * NOCOMMON __UserGroupBase;
|
extern struct Library * __UserGroupBase;
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__amigaos4__)
|
#if defined(__amigaos4__)
|
||||||
|
|
||||||
extern struct UserGroupIFace * NOCOMMON __IUserGroup;
|
extern struct UserGroupIFace *__IUserGroup;
|
||||||
|
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
@@ -519,18 +519,14 @@ extern int __root_egid;
|
|||||||
|
|
||||||
#define __umask(mask) ({ \
|
#define __umask(mask) ({ \
|
||||||
ULONG _umask_mask = (mask); \
|
ULONG _umask_mask = (mask); \
|
||||||
ULONG _umask__re = \
|
{ \
|
||||||
({ \
|
|
||||||
register struct Library * const __umask__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
|
register struct Library * const __umask__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
|
||||||
register ULONG __umask__re __asm("d0"); \
|
|
||||||
register ULONG __umask_mask __asm("d0") = (_umask_mask); \
|
register ULONG __umask_mask __asm("d0") = (_umask_mask); \
|
||||||
__asm volatile ("jsr a6@(-192:W)" \
|
__asm volatile ("jsr a6@(-192:W)" \
|
||||||
: "=r"(__umask__re) \
|
: \
|
||||||
: "r"(__umask__bn), "r"(__umask_mask) \
|
: "r"(__umask__bn), "r"(__umask_mask) \
|
||||||
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
|
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
|
||||||
__umask__re; \
|
} \
|
||||||
}); \
|
|
||||||
_umask__re; \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
#define __getumask() ({ \
|
#define __getumask() ({ \
|
||||||
@@ -722,7 +718,7 @@ VOID __endgrent(VOID);
|
|||||||
UBYTE *__crypt(UBYTE *key,UBYTE *set);
|
UBYTE *__crypt(UBYTE *key,UBYTE *set);
|
||||||
UBYTE *__ug_GetSalt(struct passwd *user,UBYTE *buf,ULONG size);
|
UBYTE *__ug_GetSalt(struct passwd *user,UBYTE *buf,ULONG size);
|
||||||
UBYTE *__getpass(UBYTE *prompt);
|
UBYTE *__getpass(UBYTE *prompt);
|
||||||
UWORD __umask(ULONG mask);
|
VOID __umask(ULONG mask);
|
||||||
UWORD __getumask(VOID);
|
UWORD __getumask(VOID);
|
||||||
LONG __setsid(VOID);
|
LONG __setsid(VOID);
|
||||||
LONG __getpgrp(VOID);
|
LONG __getpgrp(VOID);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: usergroup_init_exit.c,v 1.3 2004-09-29 19:57:58 obarthel Exp $
|
* $Id: usergroup_init_exit.c,v 1.1.1.1 2004-07-26 16:32:38 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -54,17 +54,12 @@ extern char * __program_name;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
struct Library * NOCOMMON __UserGroupBase;
|
extern void __show_error(const char * message);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(__amigaos4__)
|
void
|
||||||
struct UserGroupIFace * NOCOMMON __IUserGroup;
|
__usergroup_exit(void)
|
||||||
#endif /* __amigaos4__ */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
CLIB_DESTRUCTOR(__usergroup_exit)
|
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
@@ -89,7 +84,8 @@ CLIB_DESTRUCTOR(__usergroup_exit)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
CLIB_CONSTRUCTOR(__usergroup_init)
|
int
|
||||||
|
__usergroup_init(void)
|
||||||
{
|
{
|
||||||
struct TagItem tags[2];
|
struct TagItem tags[2];
|
||||||
int result = ERROR;
|
int result = ERROR;
|
||||||
@@ -143,11 +139,7 @@ CLIB_CONSTRUCTOR(__usergroup_init)
|
|||||||
PROFILE_ON();
|
PROFILE_ON();
|
||||||
|
|
||||||
RETURN(result);
|
RETURN(result);
|
||||||
|
return(result);
|
||||||
if(result == OK)
|
|
||||||
CONSTRUCTOR_SUCCEED();
|
|
||||||
else
|
|
||||||
CONSTRUCTOR_FAIL();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
Reference in New Issue
Block a user