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

1 Commits

Author SHA1 Message Date
1efe5fde4d This commit was manufactured by cvs2svn to create tag 'V1_188'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_188@14829 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2005-02-07 10:52:33 +00:00
276 changed files with 5158 additions and 8624 deletions

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.68k,v 1.40 2005-03-11 09:37:27 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.26 2005-02-07 10:52:16 obarthel Exp $
#
# :ts=8
#
@ -77,28 +77,23 @@ $(LIBAMIGA_OBJS)/%.o : %.c
##############################################################################
ifeq (small_data_020,$(TYPE))
CODE_TYPE := -m68020-60
CODE_FLAGS := -fbaserel -DSMALL_DATA -DM68020
CODE_TYPE := -fbaserel -DSMALL_DATA -m68020-60 -DM68020
endif
ifeq (small_data,$(TYPE))
CODE_TYPE := -m68000
CODE_FLAGS := -fbaserel -DSMALL_DATA
CODE_TYPE := -fbaserel -DSMALL_DATA -m68000
endif
ifeq (small_data32,$(TYPE))
CODE_TYPE := -m68020-60
CODE_FLAGS := -fbaserel32 -DSMALL_DATA32 -DM68020
CODE_TYPE := -fbaserel32 -DSMALL_DATA32 -m68020-60 -DM68020
endif
ifeq (large_data_020,$(TYPE))
CODE_TYPE := -m68020-60
CODE_FLAGS := -DM68020
CODE_TYPE := -m68020-60 -DM68020
endif
ifeq (large_data,$(TYPE))
CODE_TYPE := -m68000
CODE_FLAGS :=
CODE_TYPE := -m68000
endif
##############################################################################
@ -117,7 +112,7 @@ INCLUDES = -Iinclude -I. -Inetinclude
#OPTIMIZE = -O2 -fomit-frame-pointer
#DEBUG = -g2
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_FLAGS) $(CODE_TYPE) $(INCLUDES)
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
##############################################################################
@ -135,30 +130,27 @@ C_LIB = \
ctype_isspace.o \
ctype_isupper.o \
ctype_isxdigit.o \
ctype_table.o \
ctype_tolower.o \
ctype_toupper.o \
ctype_table.o \
dirent_closedir.o \
dirent_data.o \
dirent_rewinddir.o \
dirent_opendir.o \
dirent_readdir.o \
dirent_rewinddir.o \
errno_data.o \
fcntl_close.o \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_get_default_file.o \
fcntl_lock.o \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
ftw_ftw.o \
ftw_nftw.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_init_exit.o \
locale_localeconv.o \
locale_open_locale.o \
locale_setlocale.o \
mount_convertinfo.o \
mount_fstatfs.o \
@ -176,6 +168,7 @@ C_LIB = \
signal_sigsetmask.o \
stat_chmod.o \
stat_convertfileinfo.o \
stat_data.o \
stat_fchmod.o \
stat_fstat.o \
stat_lstat.o \
@ -185,22 +178,21 @@ C_LIB = \
stat_umask.o \
stdio_asprintf.o \
stdio_clearerr.o \
stdio_data.o \
stdio_dropiobreadbuffer.o \
stdio_duplicate_fd.o \
stdio_examine_fh.o \
stdio_fclose.o \
stdio_fdhookentry.o \
stdio_feof.o \
stdio_ferror.o \
stdio_fflush.o \
stdio_flush.o \
stdio_fgetc.o \
stdio_fgetpos.o \
stdio_fgets.o \
stdio_filliobreadbuffer.o \
stdio_findvacantfdentry.o \
stdio_findvacantiobentry.o \
stdio_flockfile.o \
stdio_flush.o \
stdio_flushiobwritebuffer.o \
stdio_fopen.o \
stdio_fprintf.o \
@ -212,38 +204,27 @@ C_LIB = \
stdio_fseek.o \
stdio_fsetpos.o \
stdio_ftell.o \
stdio_ftrylockfile.o \
stdio_funlockfile.o \
stdio_fwrite.o \
stdio_getc.o \
stdio_getc_unlocked.o \
stdio_getchar.o \
stdio_getchar_unlocked.o \
stdio_gets.o \
stdio_get_file_descriptor.o \
stdio_gets.o \
stdio_growfdtable.o \
stdio_growiobtable.o \
stdio_grow_file.o \
stdio_initializefd.o \
stdio_initializeiob.o \
stdio_init_exit.o \
stdio_file_init.o \
stdio_iobhookentry.o \
stdio_lock.o \
stdio_locksemaphorename.o \
stdio_nostdio.o \
stdio_openiob.o \
stdio_parent_of_fh.o \
stdio_perror.o \
stdio_popen.o \
stdio_printf.o \
stdio_putc.o \
stdio_putc_unlocked.o \
stdio_putchar.o \
stdio_putchar_unlocked.o \
stdio_puts.o \
stdio_remove.o \
stdio_remove_fd_alias.o \
stdio_rename.o \
stdio_rewind.o \
stdio_scanf.o \
@ -257,7 +238,6 @@ C_LIB = \
stdio_tmpnam.o \
stdio_translateioerror.o \
stdio_ungetc.o \
stdio_unlockfile.o \
stdio_vasprintf.o \
stdio_vasprintf_hook_entry.o \
stdio_vfprintf.o \
@ -274,12 +254,13 @@ C_LIB = \
stdlib_atexit.o \
stdlib_atoi.o \
stdlib_atol.o \
stdlib_atoll.o \
stdlib_bsearch.o \
stdlib_calloc.o \
stdlib_checkdetach.o \
stdlib_constructor.o \
stdlib_constructor_begin.o \
stdlib_constructor_end.o \
stdlib_data.o \
stdlib_default_pool_size.o \
stdlib_default_puddle_size.o \
stdlib_destructor.o \
@ -291,10 +272,10 @@ C_LIB = \
stdlib_dosbase.o \
stdlib_exit.o \
stdlib_free.o \
stdlib_get_errno.o \
stdlib_getdefstacksize.o \
stdlib_getenv.o \
stdlib_getsp.o \
stdlib_get_errno.o \
stdlib_init_exit.o \
stdlib_isresident.o \
stdlib_labs.o \
@ -315,13 +296,11 @@ C_LIB = \
stdlib_putenv.o \
stdlib_qsort.o \
stdlib_rand.o \
stdlib_rand_r.o \
stdlib_realloc.o \
stdlib_red_black.o \
stdlib_semaphore.o \
stdlib_setenv.o \
stdlib_setjmp.o \
stdlib_set_errno.o \
stdlib_setjmp.o \
stdlib_set_process_window.o \
stdlib_shell_escape.o \
stdlib_showerror.o \
@ -333,11 +312,10 @@ C_LIB = \
stdlib_stacksafezone.o \
stdlib_stacksize.o \
stdlib_stack_usage.o \
stdlib_arg.o \
stdlib_stdio_window_spec.o \
stdlib_startup.o \
stdlib_strtol.o \
stdlib_strtoll.o \
stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_sysbase.o \
@ -349,7 +327,7 @@ C_LIB = \
stdlib_umodsi3.o \
stdlib_unsetenv.o \
stdlib_wildcard_expand.o \
strings_ffs.o \
stdlib_stdio_window_spec.o \
strings_strcasecmp.o \
strings_strncasecmp.o \
string_bcmp.o \
@ -427,18 +405,17 @@ C_LIB = \
unistd_realpath.o \
unistd_sleep.o \
unistd_symlink.o \
unistd_sync_fd.o \
unistd_timer.o \
unistd_time_delay.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_usleep.o \
utime_utime.o \
utsname_uname.o
utime_utime.o
UNIX_LIB = \
unix.lib_rev.o \
dirent_closedir.o \
dirent_data.o \
dirent_rewinddir.o \
dirent_opendir.o \
dirent_readdir.o \
@ -458,11 +435,9 @@ UNIX_LIB = \
stdio_fflush.o \
stdio_fopen.o \
stdio_init_exit.o \
stdio_file_init.o \
stdio_locksemaphorename.o \
stdio_openiob.o \
stdio_popen.o \
stdio_record_locking.o \
stdio_remove.o \
stdio_rename.o \
stdlib_mkdtemp.o \
@ -498,6 +473,7 @@ MATH_LIB = \
math_ceil.o \
math_cos.o \
math_cosh.o \
math_data.o \
math_exp.o \
math_fabs.o \
math_floor.o \
@ -537,12 +513,12 @@ MATH_LIB = \
stdio_vsnprintf.o \
stdio_vsprintf.o \
stdlib_atof.o \
stdlib_machine_test.o \
stdlib_strtod.o \
time_difftime.o
MATH_LIB_881 = \
m881.lib_rev.o \
stdlib_machine_test.o \
$(MATH_LIB)
MATH_LIB_IEEE = \
@ -592,6 +568,7 @@ NET_LIB = \
socket_accept.o \
socket_bind.o \
socket_connect.o \
socket_data.o \
socket_gethostbyaddr.o \
socket_gethostbyname.o \
socket_gethostid.o \
@ -658,8 +635,7 @@ NET_LIB = \
usergroup_setregid.o \
usergroup_setreuid.o \
usergroup_setsid.o \
usergroup_setuid.o \
utsname_uname.o
usergroup_setuid.o
DEBUG_LIB = \
debug.lib_rev.o \
@ -749,7 +725,7 @@ LIBS_020 := $(LIBM881_OBJS)/libm881.a $(LIBS_68K)
##############################################################################
# The 881 math library won't build in plain 68k mode
ifneq (,$(findstring 68020,$(CODE_FLAGS)))
ifneq (,$(findstring 68020,$(CODE_TYPE)))
LIBS := $(LIBS_020)
else
LIBS := $(LIBS_68K)
@ -846,47 +822,47 @@ lib/libm020 : lib
lib/libb/libm020/libm.a: lib lib/libb/libm020
$(MAKE) TYPE=small_data_020 kitchen_sink
@$(COPY) $(foreach file,$(LIBS_020),small_data_020/$(file)) lib/libb/libm020
$(COPY) $(foreach file,$(LIBS_020),small_data_020/$(file)) lib/libb/libm020
lib/libb/libm.a: lib lib/libb
$(MAKE) TYPE=small_data kitchen_sink
@$(COPY) $(foreach file,$(LIBS_68K),small_data/$(file)) lib/libb
$(COPY) $(foreach file,$(LIBS_68K),small_data/$(file)) lib/libb
lib/libb32/libm020/libm.a: lib lib/libb32 lib/libb32/libm020
$(MAKE) TYPE=small_data32 kitchen_sink
@$(COPY) $(foreach file,$(LIBS_020),small_data32/$(file)) lib/libb32/libm020
$(COPY) $(foreach file,$(LIBS_020),small_data32/$(file)) lib/libb32/libm020
lib/libm020/libm.a: lib lib/libm020
$(MAKE) TYPE=large_data_020 kitchen_sink
@$(COPY) $(foreach file,$(LIBS_020),large_data_020/$(file)) lib/libm020
$(COPY) $(foreach file,$(LIBS_020),large_data_020/$(file)) lib/libm020
lib/libm.a: lib
$(MAKE) TYPE=large_data kitchen_sink
@$(COPY) $(foreach file,$(LIBS_68K),large_data/$(file)) lib
$(COPY) $(foreach file,$(LIBS_68K),large_data/$(file)) lib
lib/nrcrt0.o : lib nrcrt0.o
@$(COPY) nrcrt0.o lib
$(COPY) nrcrt0.o lib
lib/nbcrt0.o : lib nbcrt0.o
@$(COPY) nbcrt0.o lib
$(COPY) nbcrt0.o lib
lib/ncrt0.o : lib ncrt0.o
@$(COPY) ncrt0.o lib
$(COPY) ncrt0.o lib
lib/n32bcrt0.o : lib nb32crt0.o
@$(COPY) nb32crt0.o lib
$(COPY) nb32crt0.o lib
lib/n32rcrt0.o : lib nr32crt0.o
@$(COPY) nr32crt0.o lib
$(COPY) nr32crt0.o lib
lib/mainnb.o : lib mainnb.o
@$(COPY) mainnb.o lib
$(COPY) mainnb.o lib
lib/mainb.o : lib mainb.o
@$(COPY) mainb.o lib
$(COPY) mainb.o lib
lib/mainb32.o : lib mainb32.o
@$(COPY) mainb32.o lib
$(COPY) mainb32.o lib
##############################################################################
@ -940,27 +916,6 @@ $(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_mem_debug.h
##############################################################################
# The -fbaserel32 option requires the CPU type to be 68010/68020, too.
ifneq (,$(findstring fbaserel32,$(CODE_FLAGS)))
LOCAL_CODE_FLAGS := $(CODE_FLAGS) $(CODE_TYPE)
else
LOCAL_CODE_FLAGS := $(CODE_FLAGS)
endif
$(LIBC_OBJS)/stdlib_machine_test.o : stdlib_machine_test.c
@echo "Compiling $< [$(TYPE):c]"
@$(CC) -o $(LIBC_OBJS)/stdlib_machine_test.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(LOCAL_CODE_FLAGS) $(INCLUDES) $<
$(LIBM881_OBJS)/stdlib_machine_test.o : stdlib_machine_test.c
@echo "Compiling $< [$(TYPE):c]"
@$(CC) -o $(LIBM881_OBJS)/stdlib_machine_test.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(LOCAL_CODE_FLAGS) $(INCLUDES) -DM68881_FLOATING_POINT_SUPPORT $<
$(LIBC_OBJS)/stdlib_showerror.o : stdlib_showerror.c
@echo "Compiling $< [$(TYPE):c]"
@$(CC) -o $(LIBC_OBJS)/stdlib_showerror.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(LOCAL_CODE_FLAGS) $(INCLUDES) $<
##############################################################################
$(LIBC_OBJS)/stdlib_alloca_debug.o : stdlib_alloca.c
@echo "Compiling $< [$(TYPE):c debug]"
@$(CC) -o $(LIBC_OBJS)/stdlib_alloca_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_alloca.c
@ -1088,56 +1043,25 @@ $(LIBAMIGA_OBJS)/libamiga.a : $(LIBAMIGA_OBJS) $(foreach file,$(AMIGA_LIB),$(LIB
##############################################################################
nrcrt0.o : nrcrt0.S
@echo "Assembling $< [resident]"
@$(CC) -traditional -o $@ -c nrcrt0.S
$(CC) -traditional -o $@ -c nrcrt0.S
nr32crt0.o : nrcrt0.S
@echo "Assembling $< [resident32]"
@$(CC) -traditional -m68020 -DSMALL_DATA32 -o $@ -c nrcrt0.S
$(CC) -traditional -m68020 -DSMALL_DATA32 -o $@ -c nrcrt0.S
nbcrt0.o : ncrt0.S
@echo "Assembling $< [small_data]"
@$(CC) -traditional -DSMALL_DATA -o $@ -c ncrt0.S
$(CC) -traditional -DSMALL_DATA -o $@ -c ncrt0.S
nb32crt0.o : ncrt0.S
@echo "Assembling $< [small_data32]"
@$(CC) -traditional -m68020 -DSMALL_DATA32 -o $@ -c ncrt0.S
$(CC) -traditional -m68020 -DSMALL_DATA32 -o $@ -c ncrt0.S
ncrt0.o : ncrt0.S
@echo "Assembling $< [large_data]"
@$(CC) -traditional -o $@ -c ncrt0.S
$(CC) -traditional -o $@ -c ncrt0.S
mainb32.o : stdlib_main.c
@echo "Compiling $< [small_data32]"
@$(CC) -o mainb32.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel32 -DSMALL_DATA32 -m68020-60 -DM68020 stdlib_main.c
$(CC) -o mainb32.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel32 -DSMALL_DATA32 -m68020-60 -DM68020 stdlib_main.c
mainb.o : stdlib_main.c
@echo "Compiling $< [small_data]"
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel -DSMALL_DATA -m68000 stdlib_main.c
$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel -DSMALL_DATA -m68000 stdlib_main.c
mainnb.o : stdlib_main.c
@echo "Compiling $< [large_data]"
@$(CC) -o mainnb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -m68000 stdlib_main.c
##############################################################################
CONSTRUCTOR_FILES = \
amiga_rexxvars.c \
dirent_closedir.c \
locale_init_exit.c \
math_init_exit.c \
socket_init_exit.c \
stdio_file_init.c \
stdio_init_exit.c \
stdlib_alloca.c \
stdlib_setenv.c \
stdlib_stackextension.c \
time_clock.c \
unistd_chdir_exit.c \
unistd_init_exit.c \
unistd_timer.c \
unistd_wildcard_expand.c \
usergroup_init_exit.c
touch_constructor_files:
touch $(CONSTRUCTOR_FILES)
$(CC) -o mainnb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -m68000 stdlib_main.c

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.os4,v 1.41 2005-03-11 09:37:28 obarthel Exp $
# $Id: GNUmakefile.os4,v 1.26 2005-02-07 10:52:16 obarthel Exp $
#
# :ts=8
#
@ -111,7 +111,7 @@ WARNINGS = \
# -Wconversion -Wshadow
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
OPTIONS = -D__THREAD_SAFE -DNDEBUG -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames
OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames
OPTIMIZE = -O -fomit-frame-pointer -funroll-loops
#DEBUG = -g
@ -134,30 +134,27 @@ C_LIB = \
ctype_isspace.o \
ctype_isupper.o \
ctype_isxdigit.o \
ctype_table.o \
ctype_tolower.o \
ctype_toupper.o \
ctype_table.o \
dirent_closedir.o \
dirent_data.o \
dirent_rewinddir.o \
dirent_opendir.o \
dirent_readdir.o \
dirent_rewinddir.o \
errno_data.o \
fcntl_close.o \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_get_default_file.o \
fcntl_lock.o \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
ftw_ftw.o \
ftw_nftw.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_init_exit.o \
locale_localeconv.o \
locale_open_locale.o \
locale_setlocale.o \
mount_convertinfo.o \
mount_fstatfs.o \
@ -175,6 +172,7 @@ C_LIB = \
signal_sigsetmask.o \
stat_chmod.o \
stat_convertfileinfo.o \
stat_data.o \
stat_fchmod.o \
stat_fstat.o \
stat_lstat.o \
@ -184,22 +182,21 @@ C_LIB = \
stat_umask.o \
stdio_asprintf.o \
stdio_clearerr.o \
stdio_data.o \
stdio_dropiobreadbuffer.o \
stdio_duplicate_fd.o \
stdio_examine_fh.o \
stdio_fclose.o \
stdio_fdhookentry.o \
stdio_feof.o \
stdio_ferror.o \
stdio_fflush.o \
stdio_flush.o \
stdio_fgetc.o \
stdio_fgetpos.o \
stdio_fgets.o \
stdio_filliobreadbuffer.o \
stdio_findvacantfdentry.o \
stdio_findvacantiobentry.o \
stdio_flockfile.o \
stdio_flush.o \
stdio_flushiobwritebuffer.o \
stdio_fopen.o \
stdio_fprintf.o \
@ -211,38 +208,27 @@ C_LIB = \
stdio_fseek.o \
stdio_fsetpos.o \
stdio_ftell.o \
stdio_ftrylockfile.o \
stdio_funlockfile.o \
stdio_fwrite.o \
stdio_getc.o \
stdio_getc_unlocked.o \
stdio_getchar.o \
stdio_getchar_unlocked.o \
stdio_gets.o \
stdio_get_file_descriptor.o \
stdio_gets.o \
stdio_growfdtable.o \
stdio_growiobtable.o \
stdio_grow_file.o \
stdio_initializefd.o \
stdio_initializeiob.o \
stdio_init_exit.o \
stdio_file_init.o \
stdio_iobhookentry.o \
stdio_lock.o \
stdio_locksemaphorename.o \
stdio_nostdio.o \
stdio_openiob.o \
stdio_parent_of_fh.o \
stdio_perror.o \
stdio_popen.o \
stdio_printf.o \
stdio_putc.o \
stdio_putc_unlocked.o \
stdio_putchar.o \
stdio_putchar_unlocked.o \
stdio_puts.o \
stdio_remove.o \
stdio_remove_fd_alias.o \
stdio_rename.o \
stdio_rewind.o \
stdio_scanf.o \
@ -256,7 +242,6 @@ C_LIB = \
stdio_tmpnam.o \
stdio_translateioerror.o \
stdio_ungetc.o \
stdio_unlockfile.o \
stdio_vasprintf.o \
stdio_vasprintf_hook_entry.o \
stdio_vfprintf.o \
@ -273,12 +258,13 @@ C_LIB = \
stdlib_atexit.o \
stdlib_atoi.o \
stdlib_atol.o \
stdlib_atoll.o \
stdlib_bsearch.o \
stdlib_calloc.o \
stdlib_checkdetach.o \
stdlib_constructor.o \
stdlib_constructor_begin.o \
stdlib_constructor_end.o \
stdlib_data.o \
stdlib_default_pool_size.o \
stdlib_default_puddle_size.o \
stdlib_destructor.o \
@ -291,9 +277,9 @@ C_LIB = \
stdlib_exit.o \
stdlib_free.o \
stdlib_getdefstacksize.o \
stdlib_get_errno.o \
stdlib_getenv.o \
stdlib_getsp.o \
stdlib_get_errno.o \
stdlib_init_exit.o \
stdlib_isresident.o \
stdlib_labs.o \
@ -314,13 +300,11 @@ C_LIB = \
stdlib_putenv.o \
stdlib_qsort.o \
stdlib_rand.o \
stdlib_rand_r.o \
stdlib_realloc.o \
stdlib_red_black.o \
stdlib_semaphore.o \
stdlib_set_errno.o \
stdlib_setenv.o \
stdlib_setjmp.o \
stdlib_set_errno.o \
stdlib_set_process_window.o \
stdlib_shell_escape.o \
stdlib_showerror.o \
@ -332,11 +316,10 @@ C_LIB = \
stdlib_stacksafezone.o \
stdlib_stacksize.o \
stdlib_stack_usage.o \
stdlib_arg.o \
stdlib_stdio_window_spec.o \
stdlib_startup.o \
stdlib_strtol.o \
stdlib_strtoll.o \
stdlib_strtoul.o \
stdlib_strtoll.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_sysbase.o \
@ -348,7 +331,7 @@ C_LIB = \
stdlib_umodsi3.o \
stdlib_unsetenv.o \
stdlib_wildcard_expand.o \
strings_ffs.o \
stdlib_stdio_window_spec.o \
strings_strcasecmp.o \
strings_strncasecmp.o \
string_bcmp.o \
@ -426,19 +409,18 @@ C_LIB = \
unistd_realpath.o \
unistd_sleep.o \
unistd_symlink.o \
unistd_sync_fd.o \
unistd_timer.o \
unistd_time_delay.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_usleep.o \
utime_utime.o \
utsname_uname.o
utime_utime.o
# All objects files which make up libunix.a
UNIX_LIB = \
unix.lib_rev.o \
dirent_closedir.o \
dirent_data.o \
dirent_rewinddir.o \
dirent_opendir.o \
dirent_readdir.o \
@ -457,12 +439,10 @@ UNIX_LIB = \
stdio_fdhookentry.o \
stdio_fflush.o \
stdio_fopen.o \
stdio_file_init.o \
stdio_init_exit.o \
stdio_locksemaphorename.o \
stdio_openiob.o \
stdio_popen.o \
stdio_record_locking.o \
stdio_remove.o \
stdio_rename.o \
stdlib_mkdtemp.o \
@ -499,6 +479,7 @@ MATH_LIB = \
math_ceil.o \
math_cos.o \
math_cosh.o \
math_data.o \
math_exp.o \
math_fabs.o \
math_floor.o \
@ -554,6 +535,7 @@ NET_LIB = \
socket_accept.o \
socket_bind.o \
socket_connect.o \
socket_data.o \
socket_gethostbyaddr.o \
socket_gethostbyname.o \
socket_gethostid.o \
@ -620,8 +602,7 @@ NET_LIB = \
usergroup_setregid.o \
usergroup_setreuid.o \
usergroup_setsid.o \
usergroup_setuid.o \
utsname_uname.o
usergroup_setuid.o
# All objects files which make up libdebug.a
DEBUG_LIB = \

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "amiga.lib 1.189"
#define VSTRING "amiga.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "amiga.lib 1.188"
#define VSTRING "amiga.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,5 +1,5 @@
/*
* $Id: amiga_addtof.c,v 1.3 2005-02-25 10:14:20 obarthel Exp $
* $Id: amiga_addtof.c,v 1.2 2005-01-02 09:07:06 obarthel Exp $
*
* :ts=4
*
@ -57,7 +57,7 @@ typedef LONG (* CFUNC)(APTR arg);
/****************************************************************************/
STATIC LONG INTERRUPT ASM
static LONG INTERRUPT ASM
call_routine(REG(a1,struct Isrvstr *i))
{
CFUNC p = (CFUNC)i->ccode;

View File

@ -1,5 +1,5 @@
/*
* $Id: amiga_dotimer.c,v 1.3 2005-03-06 09:00:16 obarthel Exp $
* $Id: amiga_dotimer.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -58,37 +58,18 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
assert( tv != NULL );
#if defined(__amigaos4__)
mp = AllocVec(sizeof(*mp),MEMF_ANY|MEMF_PUBLIC|MEMF_CLEAR);
if(mp == NULL)
{
mp = AllocSysObjectTags(ASOT_PORT,
ASOPORT_Action, PA_SIGNAL,
ASOPORT_Signal, SIGB_SINGLE,
ASOPORT_Target, FindTask(NULL),
TAG_DONE);
if(mp == NULL)
{
error = IOERR_OPENFAIL;
goto out;
}
error = IOERR_OPENFAIL;
goto out;
}
#else
{
mp = AllocVec(sizeof(*mp),MEMF_ANY|MEMF_PUBLIC|MEMF_CLEAR);
if(mp == NULL)
{
error = IOERR_OPENFAIL;
goto out;
}
mp->mp_Node.ln_Type = NT_MSGPORT;
mp->mp_Flags = PA_SIGNAL;
mp->mp_SigBit = SIGB_SINGLE;
mp->mp_SigTask = FindTask(NULL);
NewList(&mp->mp_MsgList);
}
#endif /* __amigaos4__ */
mp->mp_Node.ln_Type = NT_MSGPORT;
mp->mp_Flags = PA_SIGNAL;
mp->mp_SigBit = SIGB_SINGLE;
mp->mp_SigTask = FindTask(NULL);
NewList(&mp->mp_MsgList);
tr = (struct timerequest *)CreateIORequest(mp,sizeof(*tr));
if(tr == NULL)
@ -126,16 +107,7 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
DeleteIORequest((struct IORequest *)tr);
}
#if defined(__amigaos4__)
{
if(mp != NULL)
FreeSysObject(ASOT_PORT,mp);
}
#else
{
FreeVec(mp);
}
#endif /* __amigaos4__ */
FreeVec(mp);
return(error);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: amiga_invertstring.c,v 1.3 2005-02-25 10:14:20 obarthel Exp $
* $Id: amiga_invertstring.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -49,7 +49,7 @@
/****************************************************************************/
STATIC int
static int
do_escape(int cc)
{
int result;
@ -91,7 +91,7 @@ do_escape(int cc)
/****************************************************************************/
STATIC ULONG
static ULONG
do_angle(STRPTR * strp, struct InputEvent *ie)
{
ULONG result;

View File

@ -1,5 +1,5 @@
/*
* $Id: amiga_setsuperattrs.c,v 1.4 2005-02-25 10:14:20 obarthel Exp $
* $Id: amiga_setsuperattrs.c,v 1.3 2005-01-09 10:10:41 obarthel Exp $
*
* :ts=4
*
@ -46,7 +46,7 @@
/****************************************************************************/
STATIC ULONG
static ULONG
SetSuperAttrsA(Class * cl,Object * obj,struct TagItem * tags)
{
ULONG result = 0;

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "c.lib 1.189"
#define VSTRING "c.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: c.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "c.lib 1.188"
#define VSTRING "c.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: c.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,182 +1,3 @@
- DoTimer() now calls AllocSysObject() rather than making up
a MsgPort locally.
- The record locking semaphore code now builds a semaphore to add
before it tries to find the public one in memory. That way, the
code can spend less time in Forbid() state and, heaven forbid,
refrain from allocating memory while in that state.
- Split the general stdio initialization/cleanup code from the
initialization of the stdin/stdout/stderr streams.
- Moved the Workbench console stream initialization into the
initialization code for the stdin/stdout/stderr streams and
out of the program parameter setup.
- The current program name is now set up in the stdlib
initialization function.
- Simplified the machine test code; moved the FPU check into
the math initialization code.
- Added more safety checks to verify that file descriptor
file handles are valid.
- Made the file descriptor checks in the fsync() and fdatasync()
functions more robust.
- Cleaned up the 68k build makefile, so that the CPU and FPU
tests and the error message display can run safely even
on plain 68000 machines. This won't work for the 32 bit small
data model, which implies 68020 code, but so there...
- Moved the CPU/FPU type tests into the respective linker
libraries.
- Moved the data declarations out of math_data.c, stat_data.c,
socket_data.c, dirent_data.c and stdio_data.c and into the
code that initializes them.
- Moved a few __delete_semaphore() calls into conditional compilation
sections where they should have been in the first place.
- Thanks to J<>rg Strohmayer, the GCC library build now manages to
invoke the library's constructor/destructor functions in a
very particular order. That way, you can use constructor/destructor
functions in your own code and not have them clash with the library's
own functions.
- Reimplemented the constructor/destructor invocation code for GCC.
Both the 68k and PowerPC platform now invoke them in the same order
and the 68k code uses the designated invocation priorities. The
PowerPC destructor function now sets up the exit() jmp_buf before
the destructor functions are called.
- Added S_IREAD, S_IWRITE and S_IEXEC aliases to <sys/stat.h>.
- Moved data out of stdlib_data.c and into the code that references
or initializes it.
- The stdlib constructor now performs the CPU/FPU compatibility test.
- Introduced new constructor types and changed the overall priority
order.
c.lib 1.189 (5.3.2005)
- Rewrote the __translate_unix_to_amiga_path_name() function to
translate patterns such as "foo/bar/../../baz" properly, and to
use strlen() a lot less.
- Major, major changes! Moved most of the monolithic code out of
the file descriptor hook and into the respective functions,
such as dup2(), fchmod(), fchown(), fcntl(), fdatasync(), fstatfs(),
fsync(), ftruncate() and lseek(). Code which is not strictly
required will no longer find its way into your programs if you
link with the updated library.
NOTE: these changes require that the entire library is rebuilt!
- The buffered and unbuffered file hook code is now invoked through
function pointers alone. The utility.library/CallHookPkt mechanism
is no longer required.
- Moved the entire lseek() code relevant for files into the hook
function.
- Simplified the close() function which now just calls into the
hook code to perform whatever is necessary. The hook code is
responsible for cleaning up after aliases, etc. This change in
turn made it possible to greatly simplify the hook code for
buffered files which now bypasses close/read/write/lseek and
directly invokes the hook code for unbuffered files.
- Added various floating point constants to <math.h>, courtesy
of Henning Nielsen Lund. Thank you very much!
- When using the wildcard expansion code for command line
parameters (which is by default linked in with libunix.a),
regular expressions can no longer prompt dos.library requesters
to appear. However, to be on the safe side, if you are expecting
to pass regular expressions on the command line, do not use
the wildcard expansion code such as by overriding the library
symbols with dummy functions such as are used in the file
"stdlib_wildcard_expand.c".
- Added a new variable '__open_locale'<27>which can be used to
restrict all library functions to use the "C" language locale
rather than the current system locale settings. In addition
to that, two new functions __locale_exit() and __locale_init()
can be used to close and (re-)open the system locale at a
later time.
- Local ("static") functions are now identified by the STATIC
qualifier. This was done in preparation for changes that will
deal with global and local data and the issue of thread safety.
- Added stdio thread locking functions flockfile(), funlockfile(),
and ftrylockfile().
- Modified the internal FILE structure to allow for thread locking.
Note that this again requires that the library is rebuilt!
- Added or modified macros for getc_unlocked(), getchar_unlocked(),
putc_unlocked() and putchar_unlocked().
- Added rand_r().
- Added flockfile()/funlockfile() wrappers around all stdio
functions.
- Added more semaphore locking around the basic stdio, memory, locale
and dirent data operations. That should do it! While the library is
not reentrant (this is not ixemul.library) it should be thread-safe
now. Thread-safe in the sense of POSIX 1003.1c-1995.
- The thread-safety code is now subject to conditional compilation.
Both the library and the user code need to be rebuilt with the
preprocessor symbol __THREAD_SAFE defined to get thread-safe
code.
- Extended the thread-safety locking to the file descriptors.
NOTE: these changes require that the entire library is rebuilt!
- The translation of Unix to Amiga path names now silently accepts
absolute Amiga path names passed to it and will use them without
changing them.
- Added atoll(), ffs(), ftw(), nftw(), lstat() and uname() code
contributed by Peter Bengtsson. Thank you very much!
- Reworked the code that handles quoting for the wildcard expansion
routine. We no longer allocate memory and then modify it, but
call a function for each quoted parameter which does whatever is
necessary.
- The shell command parameter parser now considers the non-breaking
space character (ISO code 160) to be a blank space character, too.
- Moved the signal semaphore allocation/initialization/deallocation
into a dedicated module. This also has the advantage that it's
harder to break code by accidentally forgetting to call
InitSemaphore() after having allocated the memory for it.
- Rewrote the code that allocates the file descriptor and file
buffer tables so that all the memory allocations are in one
place and it's possible to specify exactly how many table
entries are required at a time.
- Creation and initialization of semaphores now uses the AmigaOS4
specific functions for this purpose, if available.
- In the thread-safe variant, the library now tries to allow
multiple concurrent callers to use the socket functions. Note
that this works only with the Roadshow TCP/IP stack, and the
results with other TCP/IP stacks are rather unpredictable.
c.lib 1.188 (7.2.2005)
- Folded duplicate code in "stdio_init_exit.c" into a common function.

View File

@ -1,15 +1,11 @@
/*
* $Id: crtbegin.c,v 1.8 2005-03-10 13:30:11 obarthel Exp $
* $Id: crtbegin.c,v 1.3 2004-09-29 16:54:54 obarthel Exp $
*
* :ts=4
*
* Handles global constructors and destructors for the OS4 GCC build.
* Handles global constructors and destructors.
*/
#if defined(__amigaos4__)
/****************************************************************************/
#include <exec/types.h>
/****************************************************************************/
@ -19,28 +15,118 @@
/****************************************************************************/
#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__(( used, section(".ctors"), aligned(sizeof(void (*)(void))) ));
static void (*__DTOR_LIST__[1]) (void) __attribute__(( used, section(".dtors"), aligned(sizeof(void (*)(void))) ));
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)
{
ULONG i = (ULONG)__DTOR_LIST__[0];
void (**pFuncPtr)(void);
if (i == ~0UL)
{
/* Find the end of the destructors list */
i = 1;
while (__DTOR_LIST__[i] != NULL)
i++;
/* We're at the NULL entry now. Go back by one */
i--;
}
/* Call all destructors in reverse order */
pFuncPtr = __DTOR_LIST__ + i;
while (i-- > 0)
(**pFuncPtr--)();
}
/****************************************************************************/
#else
/****************************************************************************/
typedef void (*func_ptr)(void);
/****************************************************************************/
static void
_do_ctors(void)
{
extern func_ptr __CTOR_LIST__[];
ULONG nptrs = (ULONG)__CTOR_LIST__[0];
ULONG i;
for(i = nptrs ; i > 0 ; i--)
__CTOR_LIST__[i]();
}
/****************************************************************************/
static void
_do_dtors(void)
{
extern func_ptr __DTOR_LIST__[];
extern jmp_buf __exit_jmp_buf;
ULONG nptrs = (ULONG)__DTOR_LIST__[0];
static ULONG i;
/* If one of the destructors drops into
* exit(), processing will continue with
* the next following destructor.
*/
(void)setjmp(__exit_jmp_buf);
while(i++ < nptrs)
__DTOR_LIST__[i]();
}
/****************************************************************************/
#endif /*__amigaos4__ */
/****************************************************************************/
/* FIXME: Do we need to put these in .init/.fini sections? */
//void _init(void) __attribute__((section(".init")));
//void _fini(void) __attribute__((section(".fini")));
/****************************************************************************/
void
_init(void)
{
int num_ctors,i;
int j;
for(i = 1, num_ctors = 0 ; __CTOR_LIST__[i] != NULL ; i++)
num_ctors++;
for(j = 0 ; j < num_ctors ; j++)
__CTOR_LIST__[num_ctors - j]();
_do_ctors();
}
/****************************************************************************/
@ -48,23 +134,5 @@ _init(void)
void
_fini(void)
{
extern jmp_buf __exit_jmp_buf;
int num_dtors,i;
static int j;
/* If one of the destructors drops into
exit(), processing will continue with
the next following destructor. */
(void)setjmp(__exit_jmp_buf);
for(i = 1, num_dtors = 0 ; __DTOR_LIST__[i] != NULL ; i++)
num_dtors++;
while(j++ < num_dtors)
__DTOR_LIST__[j]();
_do_dtors();
}
/****************************************************************************/
#endif /*__amigaos4__ */

View File

@ -1,5 +1,5 @@
/*
* $Id: crtend.c,v 1.2 2005-03-09 21:07:25 obarthel Exp $
* $Id: crtend.c,v 1.1.1.1 2004-07-26 16:30:22 obarthel Exp $
*
* :ts=4
*
@ -10,10 +10,9 @@
/****************************************************************************/
static void (*__CTOR_LIST__[1]) (void) __attribute__((used, section(".ctors"), aligned(sizeof(void (*)(void))) ));
static void (*__DTOR_LIST__[1]) (void) __attribute__((used, section(".dtors"), aligned(sizeof(void (*)(void))) ));
static volatile void (*__CTOR_LIST__[1]) (void) __attribute__((used,section(".ctors"))) = { (void *)0 };
static volatile void (*__DTOR_LIST__[1]) (void) __attribute__((used,section(".dtors"))) = { (void *)0 };
/****************************************************************************/
#endif /*__amigaos4__ */

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isalnum.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isalnum.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -49,8 +49,6 @@ isalnum(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -62,7 +60,5 @@ isalnum(int c)
result = isalpha(c) || isdigit(c);
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isalpha.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isalpha.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isalpha(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -61,7 +59,5 @@ isalpha(int c)
('A' <= c && c <= 'Z'));
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_iscntrl.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_iscntrl.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ iscntrl(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ iscntrl(int c)
result = (('\0' <= c && c < ' ') || (c == 127));
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isdigit.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isdigit.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isdigit(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ isdigit(int c)
result = ('0' <= c && c <= '9');
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isgraph.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isgraph.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isgraph(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ isgraph(int c)
result = (' ' < c && c < 127);
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_islower.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_islower.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ islower(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ islower(int c)
result = ('a' <= c && c <= 'z');
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isprint.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isprint.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isprint(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ isprint(int c)
result = (' ' <= c && c <= '~');
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_ispunct.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_ispunct.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ ispunct(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -63,7 +61,5 @@ ispunct(int c)
('{' <= c && c <= '~'));
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isspace.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isspace.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isspace(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -65,7 +63,5 @@ isspace(int c)
c == ' ');
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isupper.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isupper.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isupper(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -60,7 +58,5 @@ isupper(int c)
result = ('A' <= c && c <= 'Z');
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_isxdigit.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_isxdigit.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -47,8 +47,6 @@ isxdigit(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -62,7 +60,5 @@ isxdigit(int c)
('A' <= c && c <= 'F'));
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_tolower.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_tolower.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -43,8 +43,6 @@ tolower(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -56,7 +54,5 @@ tolower(int c)
result = ('A' <= c && c <= 'Z') ? (c + ('a' - 'A')) : c;
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype_toupper.c,v 1.3 2005-02-27 21:58:21 obarthel Exp $
* $Id: ctype_toupper.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -43,8 +43,6 @@ toupper(int c)
DECLARE_LOCALEBASE();
int result;
__locale_lock();
if(__locale_table[LC_CTYPE] != NULL)
{
assert( LocaleBase != NULL );
@ -56,7 +54,5 @@ toupper(int c)
result = ('a' <= c && c <= 'z') ? (c - ('a' - 'A')) : c;
}
__locale_unlock();
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: debug.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: debug.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=8
*
@ -133,7 +133,7 @@ _POPDEBUGLEVEL(void)
/****************************************************************************/
STATIC VOID
static void
_INDENT(void)
{
if(program_name_len > 0)

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "debug.lib 1.189"
#define VSTRING "debug.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "debug.lib 1.188"
#define VSTRING "debug.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,5 +1,5 @@
/*
* $Id: debug_kputfmt.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: debug_kputfmt.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -43,7 +43,7 @@
parameter table is provided, pick up the parameters and store them in
the table. The table layout follows the format string and can include
both 16 and 32 bit data. */
STATIC size_t
static size_t
process_var_args(char *format_string,va_list argument_list,unsigned short * table)
{
size_t num_args = 0;
@ -150,7 +150,7 @@ process_var_args(char *format_string,va_list argument_list,unsigned short * tabl
/****************************************************************************/
STATIC VOID ASM
static VOID ASM
raw_put_char(REG(d0,UBYTE c))
{
kputc(c);

View File

@ -1,5 +1,5 @@
/*
* $Id: dirent_closedir.c,v 1.8 2005-03-09 10:48:59 obarthel Exp $
* $Id: dirent_closedir.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -47,97 +47,11 @@
/****************************************************************************/
/* Directories being scanned whose locks need to be freed when shutting down. */
struct MinList NOCOMMON __directory_list;
/****************************************************************************/
#if defined(__THREAD_SAFE)
/****************************************************************************/
static struct SignalSemaphore * dirent_lock;
/****************************************************************************/
void
__dirent_lock(void)
{
if(dirent_lock != NULL)
ObtainSemaphore(dirent_lock);
}
/****************************************************************************/
void
__dirent_unlock(void)
{
if(dirent_lock != NULL)
ReleaseSemaphore(dirent_lock);
}
/****************************************************************************/
#endif /* __THREAD_SAFE */
/****************************************************************************/
CLIB_CONSTRUCTOR(__dirent_init)
{
BOOL success = FALSE;
ENTER();
NewList((struct List *)&__directory_list);
#if defined(__THREAD_SAFE)
{
dirent_lock = __create_semaphore();
if(dirent_lock == NULL)
goto out;
}
#endif /* __THREAD_SAFE */
success = TRUE;
out:
RETURN(success);
if(success)
CONSTRUCTOR_SUCCEED();
else
CONSTRUCTOR_FAIL();
}
/****************************************************************************/
CLIB_DESTRUCTOR(__dirent_exit)
{
ENTER();
if(__directory_list.mlh_Head != NULL)
{
while(NOT IsListEmpty((struct List *)&__directory_list))
closedir((DIR *)__directory_list.mlh_Head);
}
#if defined(__THREAD_SAFE)
{
__delete_semaphore(dirent_lock);
dirent_lock = NULL;
}
#endif /* __THREAD_SAFE */
LEAVE();
}
/****************************************************************************/
int
closedir(DIR * directory_pointer)
{
struct DirectoryHandle * dh;
struct Node * node;
int result = -1;
ENTER();
@ -147,8 +61,6 @@ closedir(DIR * directory_pointer)
if(__check_abort_enabled)
__check_abort();
__dirent_lock();
if(directory_pointer == NULL)
{
__set_errno(EBADF);
@ -184,8 +96,6 @@ closedir(DIR * directory_pointer)
#if defined(UNIX_PATH_SEMANTICS)
{
struct Node * node;
while((node = RemHead((struct List *)&dh->dh_VolumeList)) != NULL)
free(node);
}
@ -201,8 +111,6 @@ closedir(DIR * directory_pointer)
out:
__dirent_unlock();
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_putchar_unlocked.c,v 1.1 2005-02-27 18:09:11 obarthel Exp $
* $Id: dirent_data.c,v 1.5 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -31,42 +31,38 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _STDLIB_NULL_POINTER_CHECK_H
#include "stdlib_null_pointer_check.h"
#endif /* _STDLIB_NULL_POINTER_CHECK_H */
#ifndef _DIRENT_HEADERS_H
#include "dirent_headers.h"
#endif /* _DIRENT_HEADERS_H */
/****************************************************************************/
#ifndef _STDIO_HEADERS_H
#include "stdio_headers.h"
#endif /* _STDIO_HEADERS_H */
/* Directories being scanned whose locks need to be freed when shutting down. */
struct MinList NOCOMMON __directory_list;
/****************************************************************************/
#undef putchar_unlocked
/****************************************************************************/
int
putchar_unlocked(int c)
CLIB_CONSTRUCTOR(__dirent_init)
{
int result = -1;
ENTER();
assert( stdout != NULL );
NewList((struct List *)&__directory_list);
#if defined(CHECK_FOR_NULL_POINTERS)
{
if(stdout == NULL)
{
__set_errno(EFAULT);
goto out;
}
}
#endif /* CHECK_FOR_NULL_POINTERS */
result = __putc_unlocked(c,stdout);
out:
return(result);
RETURN(OK);
CONSTRUCTOR_SUCCEED();
}
/****************************************************************************/
CLIB_DESTRUCTOR(__dirent_exit)
{
ENTER();
if(__directory_list.mlh_Head != NULL)
{
while(NOT IsListEmpty((struct List *)&__directory_list))
closedir((DIR *)__directory_list.mlh_Head);
}
LEAVE();
}

View File

@ -1,5 +1,5 @@
/*
* $Id: dirent_headers.h,v 1.7 2005-02-28 10:07:30 obarthel Exp $
* $Id: dirent_headers.h,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -73,26 +73,4 @@ extern struct MinList NOCOMMON __directory_list;
/****************************************************************************/
#if defined(__THREAD_SAFE)
/****************************************************************************/
extern void __dirent_lock(void);
extern void __dirent_unlock(void);
/****************************************************************************/
#else
/****************************************************************************/
#define __dirent_lock() ((void)0)
#define __dirent_unlock() ((void)0)
/****************************************************************************/
#endif /* __THREAD_SAFE */
/****************************************************************************/
#endif /* _DIRENT_HEADERS_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: dirent_opendir.c,v 1.8 2005-02-27 21:58:21 obarthel Exp $
* $Id: dirent_opendir.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -57,7 +57,7 @@
/****************************************************************************/
STATIC struct Node *
static struct Node *
find_by_name(struct List * list,const char * name)
{
struct Node * result = NULL;
@ -89,6 +89,7 @@ opendir(const char * path_name)
#endif /* UNIX_PATH_SEMANTICS */
struct DirectoryHandle * dh = NULL;
DIR * result = NULL;
struct Node * node;
ENTER();
@ -122,8 +123,6 @@ opendir(const char * path_name)
#if defined(UNIX_PATH_SEMANTICS)
{
struct Node * node;
NewList((struct List *)&dh->dh_VolumeList);
if(__unix_path_semantics)
@ -244,12 +243,8 @@ opendir(const char * path_name)
assert( __directory_list.mlh_Head != NULL );
__dirent_lock();
AddTail((struct List *)&__directory_list,(struct Node *)dh);
__dirent_unlock();
result = (DIR *)dh;
dh = NULL;
@ -261,8 +256,6 @@ opendir(const char * path_name)
#if defined(UNIX_PATH_SEMANTICS)
{
struct Node * node;
while((node = RemHead((struct List *)&dh->dh_VolumeList)) != NULL)
free(node);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_close.c,v 1.10 2005-02-20 15:46:52 obarthel Exp $
* $Id: fcntl_close.c,v 1.8 2005-02-04 08:49:10 obarthel Exp $
*
* :ts=4
*
@ -42,16 +42,23 @@
/****************************************************************************/
int
close(int file_descriptor)
__close(int file_descriptor,int * error_ptr)
{
struct file_action_message fam;
DECLARE_UTILITYBASE();
struct file_hook_message message;
struct fd * fd;
int result = -1;
BOOL no_close;
BOOL is_alias;
ENTER();
SHOWVALUE(file_descriptor);
assert( UtilityBase != NULL );
assert( error_ptr != NULL );
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) );
@ -62,24 +69,121 @@ close(int file_descriptor)
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
__set_errno(EBADF);
goto out;
}
fam.fam_Action = file_action_close;
assert( fd->fd_Action != NULL );
if((*fd->fd_Action)(fd,&fam) < 0)
{
__set_errno(fam.fam_Error);
(*error_ptr) = EBADF;
goto out;
}
result = 0;
SHOWMSG("last customer; cleaning up");
if(fd->fd_Original != NULL) /* this is an alias */
{
struct fd * list_fd;
SHOWMSG("taking out the alias");
assert( fd->fd_Original != fd );
assert( fd->fd_Original->fd_Original == NULL );
/* Remove this alias from the list. */
for(list_fd = fd->fd_Original ;
list_fd != NULL ;
list_fd = list_fd->fd_NextLink)
{
if(list_fd->fd_NextLink == fd)
{
list_fd->fd_NextLink = fd->fd_NextLink;
break;
}
}
no_close = TRUE;
is_alias = TRUE;
}
else if (fd->fd_NextLink != NULL) /* this one has aliases attached; it is the 'original' resource */
{
struct fd * first_alias;
struct fd * list_fd;
SHOWMSG("closing original descriptor; migrating it to first alias");
/* The first link now becomes the original resource */
first_alias = fd->fd_NextLink;
first_alias->fd_Original = NULL;
/* The resources are migrated to the first link. */
for(list_fd = first_alias->fd_NextLink ;
list_fd != NULL ;
list_fd = list_fd->fd_NextLink)
{
list_fd->fd_Original = first_alias;
}
no_close = TRUE;
is_alias = TRUE;
}
else
{
no_close = FLAG_IS_SET(fd->fd_Flags,FDF_NO_CLOSE);
is_alias = FALSE;
}
/* Reset the console to regular buffered/unbuffered input. We don't do this
for aliases and their like since the original stream is still in use. */
if(NOT is_alias)
{
if(FLAG_IS_SET(fd->fd_Flags,FDF_NON_BLOCKING))
{
SHOWMSG("resetting non-blocking access mode");
message.action = file_hook_action_set_blocking;
message.arg = TRUE;
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
}
}
(*error_ptr) = OK;
if(NOT no_close && NOT is_alias)
{
SHOWMSG("shutting down");
message.action = file_hook_action_close;
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
result = message.result;
(*error_ptr) = message.error;
}
memset(fd,0,sizeof(*fd));
out:
RETURN(result);
return(result);
}
/****************************************************************************/
int
close(int file_descriptor)
{
int result;
int error;
ENTER();
result = __close(file_descriptor,&error);
__set_errno(error);
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_fcntl.c,v 1.12 2005-03-04 09:07:09 obarthel Exp $
* $Id: fcntl_fcntl.c,v 1.6 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -44,13 +44,12 @@
int
fcntl(int file_descriptor, int cmd, ... /* int arg */ )
{
struct file_action_message fam;
DECLARE_UTILITYBASE();
struct file_hook_message message;
struct flock * l;
int vacant_slot;
int result = -1;
struct fd * fd = NULL;
struct fd * fd;
va_list arg;
int error;
int flags;
int fdbase;
int i;
@ -60,6 +59,8 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
SHOWVALUE(file_descriptor);
SHOWVALUE(cmd);
assert( UtilityBase != NULL );
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) );
@ -74,8 +75,6 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
goto out;
}
__fd_lock(fd);
switch(cmd)
{
case F_GETLK:
@ -84,21 +83,16 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
SHOWMSG("cmd=F_GETLK/F_SETLK/F_SETLKW");
if(FLAG_IS_SET(fd->fd_Flags,FDF_IS_SOCKET))
{
__set_errno(EINVAL);
goto out;
}
va_start(arg,cmd);
l = va_arg(arg,struct flock *);
va_end(arg);
assert( l != NULL );
if(l->l_type < F_RDLCK || l->l_type > F_WRLCK)
{
SHOWMSG("invalid flock type");
va_end(arg);
__set_errno(EINVAL);
break;
@ -107,18 +101,24 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
if(l->l_whence < SEEK_SET || l->l_whence > SEEK_END)
{
SHOWMSG("invalid flock offset");
va_end(arg);
__set_errno(EINVAL);
break;
}
if(__handle_record_locking(cmd,l,fd,&error) < 0)
{
__set_errno(error);
goto out;
}
message.action = file_hook_action_lock_record;
message.lock = l;
message.command = cmd;
result = 0;
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
result = message.result;
__set_errno(message.error);
va_end(arg);
break;
@ -126,11 +126,7 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
SHOWMSG("cmd=F_GETFL");
if(FLAG_IS_SET(fd->fd_Flags,FDF_IS_SOCKET))
{
__set_errno(EINVAL);
goto out;
}
result = 0;
if(FLAG_IS_SET(fd->fd_Flags,FDF_NON_BLOCKING))
SET_FLAG(result,O_NONBLOCK);
@ -138,36 +134,34 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
if(FLAG_IS_SET(fd->fd_Flags,FDF_ASYNC_IO))
SET_FLAG(result,O_ASYNC);
result = 0;
break;
case F_SETFL:
SHOWMSG("cmd=F_SETFL");
if(FLAG_IS_SET(fd->fd_Flags,FDF_IS_SOCKET))
{
__set_errno(EINVAL);
goto out;
}
result = 0;
va_start(arg,cmd);
flags = va_arg(arg,int);
va_end(arg);
if((FLAG_IS_SET(flags,O_NONBLOCK) && FLAG_IS_CLEAR(fd->fd_Flags,FDF_NON_BLOCKING)) ||
(FLAG_IS_CLEAR(flags,O_NONBLOCK) && FLAG_IS_SET(fd->fd_Flags,FDF_NON_BLOCKING)))
{
fam.fam_Action = file_action_set_blocking;
fam.fam_Arg = FLAG_IS_CLEAR(flags,O_NONBLOCK);
message.action = file_hook_action_set_blocking;
message.arg = FLAG_IS_CLEAR(flags,O_NONBLOCK);
assert( fd->fd_Action != NULL );
assert( fd->fd_Hook != NULL );
if((*fd->fd_Action)(fd,&fam) < 0)
CallHookPkt(fd->fd_Hook,fd,&message);
result = message.result;
if(result < 0)
{
__set_errno(fam.fam_Error);
__set_errno(message.error);
va_end(arg);
goto out;
}
@ -180,15 +174,19 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
if((FLAG_IS_SET(flags,O_ASYNC) && FLAG_IS_CLEAR(fd->fd_Flags,FDF_ASYNC_IO)) ||
(FLAG_IS_CLEAR(flags,O_ASYNC) && FLAG_IS_SET(fd->fd_Flags,FDF_ASYNC_IO)))
{
fam.fam_Action = file_action_set_async;
fam.fam_Arg = FLAG_IS_SET(flags,O_ASYNC);
message.action = file_hook_action_set_async;
message.arg = FLAG_IS_SET(flags,O_ASYNC);
assert( fd->fd_Action != NULL );
assert( fd->fd_Hook != NULL );
if((*fd->fd_Action)(fd,&fam) < 0)
CallHookPkt(fd->fd_Hook,fd,&message);
result = message.result;
if(result < 0)
{
__set_errno(fam.fam_Error);
__set_errno(message.error);
va_end(arg);
goto out;
}
@ -198,63 +196,70 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
CLEAR_FLAG(fd->fd_Flags,FDF_ASYNC_IO);
}
result = 0;
va_end(arg);
break;
case F_DUPFD:
SHOWMSG("cmd=F_DUPFD");
va_start(arg, cmd);
fdbase = va_arg(arg, int);
va_end(arg);
if(fdbase < 0)
{
__set_errno(EINVAL);
goto out;
}
/* Make sure that we have the required number of file
descriptors available. */
if(__grow_fd_table(fdbase + 1) < 0)
goto out;
vacant_slot = -1;
/* Guaranteed to have enough here */
do
/* Check if we have that many fd's already */
while(fdbase >= __num_fd)
{
__stdio_unlock();
if(__check_abort_enabled)
__check_abort();
__stdio_lock();
/* No; enlarge it */
if(__grow_fd_table() < 0)
goto out;
}
/* Guaranteed to have enough here */
while(TRUE)
{
if(__check_abort_enabled)
__check_abort();
for(i = fdbase ; i < __num_fd ; i++)
{
if(FLAG_IS_CLEAR(__fd[i]->fd_Flags,FDF_IN_USE))
{
vacant_slot = i;
break;
/* Got a file descriptor, duplicate it */
message.action = file_hook_action_duplicate_fd;
message.duplicate_fd = __fd[i];
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
/* If it worked, leave */
if (message.result == 0)
{
result = i;
goto out;
}
}
}
/* Didn't really find any, grow the table further */
if(vacant_slot < 0 && __grow_fd_table(0) < 0)
if (__grow_fd_table() < 0)
goto out;
}
while(vacant_slot < 0);
/* Got a file descriptor, duplicate it */
__duplicate_fd(__fd[vacant_slot],fd);
result = vacant_slot;
break;
__set_errno(EMFILE);
break;
default:
SHOWMSG("something else");
@ -265,8 +270,6 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
out:
__fd_unlock(fd);
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_lseek.c,v 1.7 2005-02-20 15:46:52 obarthel Exp $
* $Id: fcntl_lseek.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -42,11 +42,11 @@
/****************************************************************************/
off_t
lseek(int file_descriptor, off_t offset, int mode)
__lseek(int file_descriptor, off_t offset, int mode, int * error_ptr)
{
struct file_action_message fam;
DECLARE_UTILITYBASE();
struct file_hook_message message;
off_t result = -1;
off_t position;
struct fd * fd;
ENTER();
@ -55,6 +55,9 @@ lseek(int file_descriptor, off_t offset, int mode)
SHOWVALUE(offset);
SHOWVALUE(mode);
assert( UtilityBase != NULL );
assert( error_ptr != NULL );
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) );
@ -65,7 +68,7 @@ lseek(int file_descriptor, off_t offset, int mode)
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
__set_errno(EBADF);
(*error_ptr) = EBADF;
goto out;
}
@ -73,27 +76,52 @@ lseek(int file_descriptor, off_t offset, int mode)
{
SHOWMSG("seek mode is invalid");
__set_errno(EINVAL);
(*error_ptr) = EINVAL;
goto out;
}
fam.fam_Action = file_action_seek;
fam.fam_Offset = offset;
fam.fam_Mode = mode;
SHOWMSG("calling the hook");
assert( fd->fd_Action != NULL );
position = (*fd->fd_Action)(fd,&fam);
if(position < 0)
#if defined(UNIX_PATH_SEMANTICS)
{
__set_errno(fam.fam_Error);
goto out;
message.action = file_hook_action_seek_and_extend;
}
#else
{
message.action = file_hook_action_seek;
}
#endif /* UNIX_PATH_SEMANTICS */
result = position;
message.position = offset;
message.mode = mode;
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
(*error_ptr) = message.error;
result = message.result;
out:
RETURN(result);
return(result);
}
/****************************************************************************/
off_t
lseek(int file_descriptor, off_t offset, int mode)
{
off_t result;
int error;
ENTER();
result = __lseek(file_descriptor,offset,mode,&error);
__set_errno(error);
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_open.c,v 1.14 2005-03-04 09:07:09 obarthel Exp $
* $Id: fcntl_open.c,v 1.8 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -56,7 +56,7 @@
/* This is used in place of ChangeMode() in order to work around a bug in
dos.library V40 and below: a "NIL:" file handle will crash the
caller of the ChangeMode() function. */
STATIC LONG
static LONG
safe_change_mode(LONG type,BPTR file_handle,LONG mode)
{
LONG result = DOSFALSE;
@ -94,7 +94,6 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
struct name_translation_info path_name_nti;
#endif /* UNIX_PATH_SEMANTICS */
D_S(struct FileInfoBlock,fib);
struct SignalSemaphore * fd_lock;
LONG is_file_system = FALSE;
LONG open_mode;
BPTR lock = ZERO;
@ -118,8 +117,6 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
if(__check_abort_enabled)
__check_abort();
__stdio_lock();
#if defined(CHECK_FOR_NULL_POINTERS)
{
if(path_name == NULL)
@ -144,7 +141,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
fd_slot_number = __find_vacant_fd_entry();
if(fd_slot_number < 0)
{
if(__grow_fd_table(0) < 0)
if(__grow_fd_table() < 0)
{
SHOWMSG("couldn't find a vacant file descriptor, and couldn't allocate one either");
goto out;
@ -329,24 +326,9 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
goto out;
}
#if defined(__THREAD_SAFE)
{
fd_lock = __create_semaphore();
if(fd_lock == NULL)
{
__set_errno(ENOMEM);
goto out;
}
}
#else
{
fd_lock = NULL;
}
#endif /* __THREAD_SAFE */
fd = __fd[fd_slot_number];
__initialize_fd(fd,__fd_hook_entry,handle,0,fd_lock);
__initialize_fd(fd,(HOOKFUNC)__fd_hook_entry,handle,0);
/* Figure out if this stream is attached to a console. */
PROFILE_OFF();
@ -361,7 +343,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
{
SHOWMSG("enabling non-blocking mode");
if(SetMode(handle,DOSTRUE)) /* single character mode */
if(SetMode(handle,1)) /* single character mode */
SET_FLAG(fd->fd_Flags,FDF_NON_BLOCKING);
}
}
@ -467,8 +449,6 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
UnLock(lock);
__stdio_unlock();
PROFILE_ON();
RETURN(result);

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_read.c,v 1.7 2005-02-28 10:07:30 obarthel Exp $
* $Id: fcntl_read.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -48,11 +48,11 @@
/****************************************************************************/
ssize_t
read(int file_descriptor, void * buffer, size_t num_bytes)
__read(int file_descriptor, void * buffer, size_t num_bytes, int * error_ptr)
{
ssize_t num_bytes_read;
ssize_t result = -1;
DECLARE_UTILITYBASE();
struct fd * fd;
off_t result = -1;
ENTER();
@ -60,11 +60,10 @@ read(int file_descriptor, void * buffer, size_t num_bytes)
SHOWPOINTER(buffer);
SHOWVALUE(num_bytes);
assert( error_ptr != NULL );
assert( buffer != NULL );
assert( (int)num_bytes >= 0);
if(__check_abort_enabled)
__check_abort();
assert( UtilityBase != NULL );
#if defined(CHECK_FOR_NULL_POINTERS)
{
@ -72,7 +71,7 @@ read(int file_descriptor, void * buffer, size_t num_bytes)
{
SHOWMSG("invalid buffer");
__set_errno(EFAULT);
(*error_ptr) = EFAULT;
goto out;
}
}
@ -82,10 +81,13 @@ read(int file_descriptor, void * buffer, size_t num_bytes)
assert( __fd[file_descriptor] != NULL );
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
if(__check_abort_enabled)
__check_abort();
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
__set_errno(EBADF);
(*error_ptr) = EBADF;
goto out;
}
@ -93,38 +95,54 @@ read(int file_descriptor, void * buffer, size_t num_bytes)
{
SHOWMSG("this descriptor is not read-enabled");
__set_errno(EBADF);
(*error_ptr) = EBADF;
goto out;
}
if(num_bytes > 0)
{
struct file_action_message fam;
struct file_hook_message message;
SHOWMSG("calling the hook");
fam.fam_Action = file_action_read;
fam.fam_Data = buffer;
fam.fam_Size = num_bytes;
message.action = file_hook_action_read;
message.data = buffer;
message.size = num_bytes;
assert( fd->fd_Action != NULL );
assert( fd->fd_Hook != NULL );
num_bytes_read = (*fd->fd_Action)(fd,&fam);
if(num_bytes_read < 0)
{
__set_errno(fam.fam_Error);
goto out;
}
CallHookPkt(fd->fd_Hook,fd,&message);
(*error_ptr) = message.error;
result = message.result;
}
else
{
num_bytes_read = 0;
}
(*error_ptr) = 0;
result = num_bytes_read;
result = 0;
}
out:
RETURN(result);
return(result);
}
/****************************************************************************/
ssize_t
read(int file_descriptor, void * buffer, size_t num_bytes)
{
ssize_t result;
int error;
ENTER();
result = __read(file_descriptor,buffer,num_bytes,&error);
__set_errno(error);
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_write.c,v 1.7 2005-02-28 10:07:30 obarthel Exp $
* $Id: fcntl_write.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -48,11 +48,11 @@
/****************************************************************************/
ssize_t
write(int file_descriptor, const void * buffer, size_t num_bytes)
__write(int file_descriptor, const void * buffer, size_t num_bytes, int * error_ptr)
{
ssize_t num_bytes_written;
ssize_t result = -1;
DECLARE_UTILITYBASE();
struct fd * fd;
off_t result = -1;
ENTER();
@ -60,11 +60,10 @@ write(int file_descriptor, const void * buffer, size_t num_bytes)
SHOWPOINTER(buffer);
SHOWVALUE(num_bytes);
assert( error_ptr != NULL );
assert( buffer != NULL );
assert( (int)num_bytes >= 0 );
if(__check_abort_enabled)
__check_abort();
assert( UtilityBase != NULL );
#if defined(CHECK_FOR_NULL_POINTERS)
{
@ -72,7 +71,7 @@ write(int file_descriptor, const void * buffer, size_t num_bytes)
{
SHOWMSG("invalid buffer address");
__set_errno(EFAULT);
(*error_ptr) = EFAULT;
goto out;
}
}
@ -82,10 +81,13 @@ write(int file_descriptor, const void * buffer, size_t num_bytes)
assert( __fd[file_descriptor] != NULL );
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
if(__check_abort_enabled)
__check_abort();
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
__set_errno(EBADF);
(*error_ptr) = EBADF;
goto out;
}
@ -93,38 +95,54 @@ write(int file_descriptor, const void * buffer, size_t num_bytes)
{
SHOWMSG("file descriptor is not write-enabled");
__set_errno(EBADF);
(*error_ptr) = EBADF;
goto out;
}
if(num_bytes > 0)
{
struct file_action_message fam;
struct file_hook_message message;
SHOWMSG("calling the hook");
fam.fam_Action = file_action_write;
fam.fam_Data = (void *)buffer;
fam.fam_Size = num_bytes;
message.action = file_hook_action_write;
message.data = (void *)buffer;
message.size = num_bytes;
assert( fd->fd_Action != NULL );
assert( fd->fd_Hook != NULL );
num_bytes_written = (*fd->fd_Action)(fd,&fam);
if(num_bytes_written < 0)
{
__set_errno(fam.fam_Error);
goto out;
}
CallHookPkt(fd->fd_Hook,fd,&message);
(*error_ptr) = message.error;
result = message.result;
}
else
{
num_bytes_written = 0;
}
(*error_ptr) = 0;
result = num_bytes_written;
result = 0;
}
out:
RETURN(result);
return(result);
}
/****************************************************************************/
ssize_t
write(int file_descriptor, const void * buffer, size_t num_bytes)
{
ssize_t result;
int error;
ENTER();
result = __write(file_descriptor,buffer,num_bytes,&error);
__set_errno(error);
RETURN(result);
return(result);
}

View File

@ -1,240 +0,0 @@
/*
* $Id: ftw_ftw.c,v 1.2 2005-03-03 10:59:17 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2005 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.
*/
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
/*
* This ftw() implementation builds heavily on existing functionality and could certainly
* be made more efficient (e.g. by combining walk & stat using ExAll()/ExNext()) but this
* way the Unix pathname translation is free.
*/
/****************************************************************************/
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <ftw.h>
#include <errno.h>
#include <dos.h>
/****************************************************************************/
#ifndef _DEBUG_H
#include "debug.h"
#endif /* _DEBUG_H */
#ifndef _FTW_HEADERS_H
#include "ftw_headers.h"
#endif /* _FTW_HEADERS_H */
#ifndef _STDLIB_PROTOS_H
#include "stdlib_protos.h" /* get/set errno. */
#endif /* _STDLIB_PROTOS_H */
/****************************************************************************/
static int
walk(const char *path,int (*func)(const char *,const struct stat *,int),int depth,int level)
{
int result = 0;
DIR *dp;
struct dirent *de;
struct stat st;
char *next_name;
int type;
int old_length;
int errtmp;
ENTER();
SHOWSTRING(path);
SHOWPOINTER(func);
SHOWVALUE(depth);
SHOWVALUE(level);
if(__check_abort_enabled)
__check_abort();
if(level > depth)
goto out;
if(stat(path,&st) == OK)
{
if (S_ISDIR(st.st_mode))
{
if(FLAG_IS_SET(st.st_mode,S_IRUSR))
type = FTW_D; /* Directory */
else
type = FTW_DNR; /* Directory No Read-permission */
}
else if (S_ISREG(st.st_mode))
{
type = FTW_F; /* File */
}
else
{
/* Skip */
goto out;
}
}
else
{
type = FTW_NS; /* No Stat */
}
result = (*func)(path,&st,type);
if(result != 0)
goto out;
if(type == FTW_D)
{
dp = opendir(path); /* Also takes care of Unix->Amiga pathname conversion. */
if(dp == NULL)
{
result = -1; /* Pass errno from opendir() */
goto out;
}
old_length = strlen(path);
next_name = malloc(old_length + NAME_MAX + 2); /* Allocate new for each recursive step to handle extremely long path names. */
if(next_name == NULL)
{
__set_errno(ENOMEM);
result = -1;
goto out;
}
strcpy(next_name,path);
if(old_length > 0 && next_name[old_length - 1] != ':' && next_name[old_length-1] != '/')
next_name[old_length++] = '/';
while((result == 0) && (de = readdir(dp)) != NULL)
{
strlcpy(&next_name[old_length],de->d_name,NAME_MAX + 2);
result = walk(next_name,func,depth,level+1);
}
errtmp = __get_errno();
closedir(dp);
free(next_name);
__set_errno(errtmp);
}
out:
RETURN(result);
return(result);
}
int
ftw(const char *path,int (*func)(const char *,const struct stat *,int),int depth)
{
int result = -1;
char *base;
int len;
ENTER();
SHOWSTRING(path);
SHOWPOINTER(func);
SHOWVALUE(depth);
if(path == NULL)
{
SHOWMSG("NULL pathname to ftw().");
__set_errno(EFAULT);
goto out;
}
if(func == NULL)
{
SHOWMSG("No function supplied.");
__set_errno(EFAULT);
goto out;
}
if(depth < 0)
{
SHOWMSG("Invalid depth.\n");
__set_errno(EINVAL);
goto out;
}
/* Make sure the path never ends with '/' unless used to indicate parent directory. */
len = strlen(path);
if(len > 1 && path[len - 1] == '/' && path[len - 2] != '/')
{
int error;
base = strdup(path);
if(base == NULL)
{
__set_errno(ENOMEM);
goto out;
}
base[len - 1] = '\0';
result = walk(base,func,depth,0);
error = __get_errno();
free(base);
__set_errno(error);
}
else
{
result = walk(path,func,depth,0);
}
out:
RETURN(result);
return(result);
}

View File

@ -1,336 +0,0 @@
/*
* $Id: ftw_nftw.c,v 1.2 2005-03-03 10:59:17 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2005 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.
*/
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
/*
* This nftw() implementation builds heavily on existing functionality and could certainly
* be made more efficient.
*/
/****************************************************************************/
#include <dirent.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <ftw.h>
#include <errno.h>
#include <dos.h>
/****************************************************************************/
#ifndef _DEBUG_H
#include "debug.h"
#endif /* _DEBUG_H */
#ifndef _FTW_HEADERS_H
#include "ftw_headers.h"
#endif /* _FTW_HEADERS_H */
#ifndef _STDLIB_PROTOS_H
#include "stdlib_protos.h" /* get/set errno. */
#endif /* _STDLIB_PROTOS_H */
/****************************************************************************/
static int
walk(const char *path,int (*func)(const char *,const struct stat *,int,struct FTW *),const int depth,int level,const int flags,const int base,int * const prune)
{
int result = 0;
DIR *dp;
struct dirent *de;
struct stat st;
char *next_name;
char *old_cwd = 0;
int type;
int old_length;
int errtmp;
struct FTW extra_info;
int stat_result;
ENTER();
SHOWSTRING(path);
SHOWPOINTER(func);
SHOWVALUE(depth);
SHOWVALUE(level);
SHOWVALUE(flags);
if(__check_abort_enabled)
__check_abort();
if(level > depth)
goto out;
if(FLAG_IS_SET(flags,FTW_PHYS))
stat_result = lstat(path,&st);
else
stat_result = stat(path,&st);
if(stat_result == OK)
{
if (S_ISLNK(st.st_mode)) /* Should only be possible if lstat() is used. */
{
type = FTW_SL;
}
else if (S_ISDIR(st.st_mode))
{
if(FLAG_IS_SET(st.st_mode,S_IRUSR))
type = FTW_D; /* Directory */
else
type = FTW_DNR; /* Directory No Read-permission */
}
else if (S_ISREG(st.st_mode))
{
type = FTW_F; /* File */
}
else
{
/* Skip */
goto out;
}
}
else
{
if(FLAG_IS_CLEAR(flags,FTW_PHYS) && lstat(path,&st) == OK)
type = FTW_SLN; /* Broken link. */
else
type = FTW_NS; /* No Stat */
}
extra_info.quit = 0;
extra_info.base = base;
extra_info.level = level;
if(type == FTW_D)
{
old_length = strlen(path);
if(FLAG_IS_CLEAR(flags,FTW_DEPTH))
result = (*func)(path,&st,type,&extra_info);
if(extra_info.quit == 0)
{
dp = opendir(path); /* Also takes care of Unix->Amiga pathname conversion. */
if(dp == NULL)
{
result = -1;
goto out;
}
if(FLAG_IS_SET(flags,FTW_CHDIR)) /* Change to directory before traversing. */
{
old_cwd = malloc(old_length + NAME_MAX);
if(old_cwd == NULL)
{
__set_errno(ENOMEM);
result = -1;
goto out;
}
getcwd(old_cwd,old_length + NAME_MAX);
chdir(path);
}
next_name = malloc(old_length + NAME_MAX + 2); /* Allocate new for each recursive step to handle extremely long path names. */
if(next_name == NULL)
{
__set_errno(ENOMEM);
result = -1;
goto out;
}
strcpy(next_name,path);
if(old_length > 0 && next_name[old_length - 1] != ':' && next_name[old_length - 1] != '/')
next_name[old_length++] = '/';
while((result == 0) && (de = readdir(dp)) != NULL)
{
strlcpy(&next_name[old_length],de->d_name,NAME_MAX + 2);
result = walk(next_name,func,depth,level + 1,flags,old_length,prune);
if((*prune) != 0)
{
(*prune) = 0;
break;
}
}
errtmp = __get_errno();
closedir(dp);
__set_errno(errtmp);
free(next_name);
if((result == 0) && FLAG_IS_SET(flags,FTW_DEPTH))
result = (*func)(path,&st,FTW_DP,&extra_info);
}
if(extra_info.quit == FTW_PRUNE) /* Abort traversal of current directory. */
(*prune) = 1;
}
else
{
result = (*func)(path,&st,type,&extra_info);
}
out:
if(old_cwd != NULL)
{
errtmp = __get_errno();
chdir(old_cwd); /* Restore (pop) old directory. */
free(old_cwd);
__set_errno(errtmp);
}
RETURN(result);
return(result);
}
/****************************************************************/
static int
index_of_end_part(const char *path)
{
int result = 0;
int i;
i = strlen(path) - 1;
while(i-- > 0)
{
if(path[i] == '/' || path[i] == ':')
{
result = i + 1;
break;
}
}
return(result);
}
/****************************************************************/
int
nftw(const char *path,int (*func)(const char *,const struct stat *,int,struct FTW *),int depth,int flags)
{
char *base;
int len;
int base_index;
int prune = 0;
int result = -1;
ENTER();
SHOWSTRING(path);
SHOWPOINTER(func);
SHOWVALUE(depth);
SHOWVALUE(flags);
if(path == NULL)
{
SHOWMSG("NULL pathname to nftw().");
__set_errno(EFAULT);
goto out;
}
if(func == NULL)
{
SHOWMSG("No function supplied.");
__set_errno(EFAULT);
goto out;
}
if(depth < 0)
{
SHOWMSG("Invalid depth.\n");
__set_errno(EINVAL);
goto out;
}
if((flags & ~FTW_ALL_FLAGS) != 0)
{
SHOWMSG("Bogus flags.");
__set_errno(EINVAL);
goto out;
}
/* Make sure the path never ends with '/' unless used to indicate parent directory. */
len = strlen(path);
if(len > 1 && path[len - 1] == '/' && path[len - 2] != '/')
{
int error;
base = strdup(path);
if(base == NULL)
{
__set_errno(ENOMEM);
goto out;
}
base[len - 1] = '\0';
base_index = index_of_end_part(base);
result = walk(base,func,depth,0,flags,base_index,&prune);
error = __get_errno();
free(base);
__set_errno(error);
}
else
{
base_index = index_of_end_part(path);
result = walk(path,func,depth,0,flags,base_index,&prune);
}
out:
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: dos.h,v 1.9 2005-03-06 09:04:44 obarthel Exp $
* $Id: dos.h,v 1.7 2005-02-03 17:33:54 obarthel Exp $
*
* :ts=4
*
@ -272,32 +272,6 @@ extern unsigned int (* __get_default_stack_size)(void);
/****************************************************************************/
/*
* This library falls back onto locale.library to perform string collation
* in strcoll(), character conversion in toupper() and various other
* functions. This may not your intention. To restrict the library to use
* only the "C" language locale, declare the following variable in your
* code and set it to FALSE, so that it overrides the default settings.
* The variable value is checked during program startup and, if set to
* TRUE, has the effect of opening locale.library and obtaining the
* default locale.
*/
extern BOOL __open_locale;
/*
* Two functions control how this library uses the locale.library API to
* perform string collation, character and time conversion, etc.
*
* __locale_init() opens locale.library and attempts to open the default
* locale. If it succeeds, it will return 0 and -1 otherwise.
*
* __locale_exit() releases the default locale and closes locale.library.
*/
extern int __locale_init(void);
extern void __locale_exit(void);
/****************************************************************************/
/*
* If linked with -lunix, Unix path names are translated to Amiga path
* names (and the other way round). If you wish to disable this, set the

View File

@ -1,102 +0,0 @@
/*
* $Id: ftw.h,v 1.1 2005-03-02 12:57:56 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2005 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 _FTW_H
#define _FTW_H
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#include <sys/stat.h>
/****************************************************************************/
/* Values passed to the user function (argument #3). */
enum
{
FTW_F, /* Regular file. */
FTW_D, /* Directory. */
FTW_DP, /* Directory, already visited. (nftw() only) */
FTW_SL, /* Symlink. (nftw() only) */
FTW_SLN, /* Broken Symlink. (does not point to an existing file, nftw() only) */
FTW_DNR, /* Directory which can not be read (e.g. not enough permissions) */
FTW_NS /* Stat failed. */
};
/****************************************************************************/
/* Flags for FTW.quit */
#define FTW_SKD (1L<<0) /* Skip directory. */
#define FTW_PRUNE (1L<<1) /* Prune traversal. (skip up) */
/****************************************************************************/
/* Flags for nftw() */
#define FTW_PHYS (1L<<0)
#define FTW_MOUNT (1L<<1) /* Currently unsupported. */
#define FTW_DEPTH (1L<<2)
#define FTW_CHDIR (1L<<3)
#define FTW_ALL_FLAGS (0x0000000f)
/****************************************************************************/
struct FTW
{
int quit; /* Flags passed out from the user function to ftw()/nftw() */
int base; /* Index of current item from start of string. e.g. 4 for "foo/bar" */
int level; /* Current depth. (counted from 0) */
};
/****************************************************************************/
extern int ftw(const char *path,int (*func)(const char *,const struct stat *,int),int depth);
extern int nftw(const char *path,int (*func)(const char *,const struct stat *,int,struct FTW *),int depth,int flags);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _FTW_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: math.h,v 1.6 2005-02-25 10:14:22 obarthel Exp $
* $Id: math.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
*
* :ts=4
*
@ -85,22 +85,6 @@ extern double tanh(double x);
/****************************************************************************/
#define M_E 2.7182818284590452354
#define M_LOG2E 1.4426950408889634074
#define M_LOG10E 0.43429448190325182765
#define M_LN2 0.69314718055994530942
#define M_LN10 2.30258509299404568402
#define M_PI 3.14159265358979323846
#define M_PI_2 1.57079632679489661923
#define M_PI_4 0.78539816339744830962
#define M_1_PI 0.31830988618379067154
#define M_2_PI 0.63661977236758134308
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2 1.41421356237309504880
#define M_SQRT1_2 0.70710678118654752440
/****************************************************************************/
extern double rint(double x);
extern float rintf(float x);
extern int isinf(double x);

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio.h,v 1.9 2005-03-06 09:04:44 obarthel Exp $
* $Id: stdio.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
*
* :ts=4
*
@ -249,11 +249,20 @@ extern char *tmpnam(char *buf);
/****************************************************************************/
/*
* A special buffer flush routine which returns the last character written
* in case of success and EOF in case of failure. This is used by the
* putc() macro defined below.
*/
extern int __flush(FILE *stream);
/****************************************************************************/
/*
* fgetc() implemented as a "simple" macro; note that fgetc() does much more than
* can be conveniently expressed as a macro!
*/
#define __getc_unlocked(f) \
#define getc(f) \
(((((FILE *)(f))->flags & (__FILE_IN_USE|__FILE_READABLE|__FILE_EOF)) == (__FILE_IN_USE|__FILE_READABLE) && \
(((FILE *)(f))->flags & __FILE_BUFFER_MASK) != _IONBF && \
((FILE *)(f))->position < ((FILE *)(f))->num_read_bytes) ? \
@ -266,7 +275,7 @@ extern char *tmpnam(char *buf);
* fputc() implemented as a "simple" macro; note that fputc() does much more than
* can be conveniently expressed as a macro!
*/
#define __putc_unlocked(c,f) \
#define putc(c,f) \
(((((FILE *)(f))->flags & (__FILE_IN_USE|__FILE_WRITABLE)) == (__FILE_IN_USE|__FILE_WRITABLE) && \
(((FILE *)(f))->flags & __FILE_BUFFER_MASK) != _IONBF && \
(((FILE *)(f))->num_write_bytes < ((FILE *)(f))->size)) ? \
@ -279,25 +288,6 @@ extern char *tmpnam(char *buf);
/****************************************************************************/
#if defined(__THREAD_SAFE)
#define getc(f) (flockfile(f), __unlockfile((f),__getc_unlocked(f)))
#define putc(c,f) (flockfile(f), __unlockfile((f),__putc_unlocked((c),(f))))
#else
#define getc(f) __getc_unlocked(f)
#define putc(c,f) __putc_unlocked((c),(f))
#endif /* __THREAD_SAFE */
/****************************************************************************/
#define getchar() getc(stdin)
#define putchar(c) putc((c),stdout)
/****************************************************************************/
/*
* If requested, reimplement some of the file I/O routines as macros.
*/
@ -306,6 +296,8 @@ extern char *tmpnam(char *buf);
/****************************************************************************/
#define getchar() getc(stdin)
#define putchar(c) putc((c),stdout)
#define clearerr(file) ((void)((file)->flags &= ~(__FILE_EOF|__FILE_ERROR)))
#define feof(file) (((file)->flags & __FILE_EOF) != 0)
#define ferror(file) (((file)->flags & __FILE_ERROR) != 0)
@ -324,38 +316,6 @@ extern char *tmpnam(char *buf);
/****************************************************************************/
/*
* A special buffer flush routine which returns the last character written
* in case of success and EOF in case of failure. This is used by the
* __putc_unlocked() macro defined above.
*/
extern int __flush(FILE *stream);
/****************************************************************************/
/*
* A special function which returns the input character. This is used by
* the __getc_unlocked() macro defined above.
*/
extern int __unlockfile(FILE *stream,int c);
/****************************************************************************/
extern int getc_unlocked(FILE *stream);
extern int getchar_unlocked(void);
extern int putc_unlocked(int c,FILE *stream);
extern int putchar_unlocked(int c);
/****************************************************************************/
#define getc_unlocked(f) __getc_unlocked(f)
#define putc_unlocked(c,f) __putc_unlocked((c),(f))
#define getchar_unlocked() __getc_unlocked(stdin)
#define putchar_unlocked(c) __putc_unlocked((c),stdout)
/****************************************************************************/
extern FILE * fdopen(int file_descriptor, const char * type);
extern int fileno(FILE * file);
extern int asprintf(char **ret, const char *format, ...);
@ -366,30 +326,6 @@ extern FILE * popen(const char *command, const char *type);
/****************************************************************************/
#if defined(__THREAD_SAFE)
/****************************************************************************/
extern void flockfile(FILE * file);
extern void funlockfile(FILE * file);
extern int ftrylockfile(FILE * file);
/****************************************************************************/
#else
/****************************************************************************/
#define flockfile(file) ((void)0)
#define funlockfile(file) ((void)0)
#define ftrylockfile(file) (0)
/****************************************************************************/
#endif /* __THREAD_SAFE */
/****************************************************************************/
extern int vasprintf(char **ret,const char *format,va_list arg);
#ifdef __MEM_DEBUG

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib.h,v 1.8 2005-03-02 12:57:56 obarthel Exp $
* $Id: stdlib.h,v 1.6 2005-01-30 09:48:06 obarthel Exp $
*
* :ts=4
*
@ -149,16 +149,11 @@ extern long atol(const char *str);
/****************************************************************************/
extern int rand_r(unsigned int * seed);
/****************************************************************************/
/* These functions are unavailable under SAS/C for lack of a
/* These two functions are unavailable under SAS/C for lack of a
"long long" data type. */
#if ! defined(__SASC)
extern long long strtoll(const char *str, char **ptr, int base);
extern unsigned long long strtoull(const char *str, char **ptr, int base);
extern long long atoll(const char *str);
#endif /* __SASC */
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: strings.h,v 1.4 2005-03-02 12:57:56 obarthel Exp $
* $Id: strings.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
*
* :ts=4
*
@ -52,10 +52,9 @@ extern "C" {
/****************************************************************************/
/* These come from 4.4BSD. */
/* These two come from 4.4BSD. */
extern int strcasecmp(const char *s1, const char *s2);
extern int strncasecmp(const char *s1, const char *s2, size_t len);
extern int ffs(int i);
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stat.h,v 1.4 2005-03-10 11:40:57 obarthel Exp $
* $Id: stat.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
*
* :ts=4
*
@ -79,15 +79,6 @@ extern "C" {
#define S_IWOTH 0000002 /* W for other */
#define S_IXOTH 0000001 /* X for other */
/****************************************************************************/
/* Aliases for the owner RWX mask. */
#define S_IREAD S_IRUSR
#define S_IWRITE S_IWUSR
#define S_IEXEC S_IXUSR
/****************************************************************************/
#define S_IFMT 0170000 /* type of file */
#define S_IFIFO 0010000 /* named pipe (fifo) */
#define S_IFDIR 0040000 /* directory */
@ -96,8 +87,6 @@ extern "C" {
#define S_IFLNK 0120000 /* symbolic link */
#define S_IFSOCK 0140000 /* socket */
/****************************************************************************/
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */

View File

@ -1,5 +1,5 @@
/*
* $Id: types.h,v 1.4 2005-02-20 15:46:57 obarthel Exp $
* $Id: types.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
*
* :ts=4
*
@ -53,7 +53,7 @@ typedef unsigned int gid_t;
typedef unsigned int ino_t;
typedef unsigned int mode_t;
typedef unsigned int nlink_t;
typedef long int off_t;
typedef int off_t;
typedef int pid_t;
typedef unsigned int rlim_t;
typedef int ssize_t;

View File

@ -1,74 +0,0 @@
/*
* $Id: utsname.h,v 1.1 2005-03-02 12:57:56 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2005 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 _SYS_UTSNAME_H
#define _SYS_UTSNAME_H
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#define SYS_NMLN 32
/****************************************************************************/
struct utsname
{
char sysname[SYS_NMLN]; /* OS Name ("AmigaOS") */
char nodename[SYS_NMLN]; /* Usually Hostname, but there appears to be no standard. */
char release[SYS_NMLN]; /* Release e.g. "51.1" (The Version of version.library) */
char version[SYS_NMLN]; /* Version e.h. "4.0" (OS Version) */
char machine[SYS_NMLN]; /* Machine e.g. "m68k" or "ppc" */
};
/****************************************************************************/
extern int uname(struct utsname *);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _SYS_UTSNAME_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_headers.h,v 1.6 2005-02-28 10:07:30 obarthel Exp $
* $Id: locale_headers.h,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -78,28 +78,6 @@ extern char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
/****************************************************************************/
#if defined(__THREAD_SAFE)
/****************************************************************************/
extern void __locale_lock(void);
extern void __locale_unlock(void);
/****************************************************************************/
#else
/****************************************************************************/
#define __locale_lock() ((void)0)
#define __locale_unlock() ((void)0)
/****************************************************************************/
#endif /* __THREAD_SAFE */
/****************************************************************************/
extern void __close_all_locales(void);
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_init_exit.c,v 1.8 2005-03-03 14:20:55 obarthel Exp $
* $Id: locale_init_exit.c,v 1.4 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -63,8 +63,6 @@ char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
void
__close_all_locales(void)
{
__locale_lock();
if(__LocaleBase != NULL)
{
DECLARE_LOCALEBASE();
@ -88,19 +86,14 @@ __close_all_locales(void)
CloseLocale(__locale_table[LC_ALL]);
__locale_table[LC_ALL] = NULL;
}
__locale_unlock();
}
/****************************************************************************/
void
__locale_exit(void)
CLIB_DESTRUCTOR(__locale_exit)
{
ENTER();
__locale_lock();
if(__LocaleBase != NULL)
{
DECLARE_LOCALEBASE();
@ -127,140 +120,48 @@ __locale_exit(void)
__LocaleBase = NULL;
}
__locale_unlock();
LEAVE();
}
/****************************************************************************/
int
__locale_init(void)
CLIB_CONSTRUCTOR(__locale_init)
{
int result = -1;
int i;
ENTER();
for(i = 0 ; i < NUM_LOCALES ; i++)
strcpy(__locale_name_table[i],"C");
PROFILE_OFF();
__locale_lock();
__LocaleBase = OpenLibrary("locale.library",38);
if(__LocaleBase == NULL)
#if defined(__amigaos4__)
{
__LocaleBase = OpenLibrary("locale.library",38);
#if defined(__amigaos4__)
if (__LocaleBase != NULL)
{
if (__LocaleBase != NULL)
__ILocale = (struct LocaleIFace *)GetInterface(__LocaleBase, "main", 1, 0);
if(__ILocale == NULL)
{
__ILocale = (struct LocaleIFace *)GetInterface(__LocaleBase, "main", 1, 0);
if(__ILocale == NULL)
{
CloseLibrary(__LocaleBase);
__LocaleBase = NULL;
}
CloseLibrary(__LocaleBase);
__LocaleBase = NULL;
}
}
#endif /* __amigaos4__ */
}
#endif /* __amigaos4__ */
if(__LocaleBase != NULL && __default_locale == NULL)
if(__LocaleBase != NULL)
{
DECLARE_LOCALEBASE();
__default_locale = OpenLocale(NULL);
}
if(__default_locale != NULL)
result = 0;
__locale_unlock();
PROFILE_ON();
RETURN(result);
return(result);
}
/****************************************************************************/
#if defined(__THREAD_SAFE)
/****************************************************************************/
static struct SignalSemaphore * locale_lock;
/****************************************************************************/
void
__locale_lock(void)
{
if(locale_lock != NULL)
ObtainSemaphore(locale_lock);
}
/****************************************************************************/
void
__locale_unlock(void)
{
if(locale_lock != NULL)
ReleaseSemaphore(locale_lock);
}
/****************************************************************************/
#endif /* __THREAD_SAFE */
/****************************************************************************/
CLIB_DESTRUCTOR(__locale_exit_destructor)
{
ENTER();
__locale_exit();
#if defined(__THREAD_SAFE)
{
__delete_semaphore(locale_lock);
locale_lock = NULL;
}
#endif /* __THREAD_SAFE */
LEAVE();
}
/****************************************************************************/
CLIB_CONSTRUCTOR(__locale_init_constructor)
{
BOOL success = FALSE;
int i;
ENTER();
#if defined(__THREAD_SAFE)
{
locale_lock = __create_semaphore();
if(locale_lock == NULL)
goto out;
}
#endif /* __THREAD_SAFE */
for(i = 0 ; i < NUM_LOCALES ; i++)
strcpy(__locale_name_table[i],"C");
if(__open_locale)
__locale_init();
success = TRUE;
out:
RETURN(success);
if(success)
CONSTRUCTOR_SUCCEED();
else
CONSTRUCTOR_FAIL();
RETURN(OK);
CONSTRUCTOR_SUCCEED();
}

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_localeconv.c,v 1.4 2005-02-27 21:58:21 obarthel Exp $
* $Id: locale_localeconv.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -41,18 +41,12 @@ struct lconv *
localeconv(void)
{
static struct lconv loc;
struct Locale * numeric_locale;
struct Locale * monetary_locale;
struct Locale * numeric_locale = __locale_table[LC_NUMERIC];
struct Locale * monetary_locale = __locale_table[LC_MONETARY];
struct lconv * result;
ENTER();
__locale_lock();
numeric_locale = __locale_table[LC_NUMERIC];
monetary_locale = __locale_table[LC_MONETARY];
/* This makes up the current locale settings from the various
* components in use.
*/
@ -77,8 +71,6 @@ localeconv(void)
result = &loc;
__locale_unlock();
RETURN(result);
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: locale_setlocale.c,v 1.4 2005-02-27 21:58:21 obarthel Exp $
* $Id: locale_setlocale.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -52,8 +52,6 @@ setlocale(int category, const char *locale)
else
SHOWSTRING(locale);
__locale_lock();
if(category < LC_ALL || category > LC_TIME)
{
SHOWMSG("invalid category");
@ -157,8 +155,6 @@ setlocale(int category, const char *locale)
out:
__locale_unlock();
RETURN(result);
return(result);
}

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "m.lib 1.189"
#define VSTRING "m.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: m.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "m.lib 1.188"
#define VSTRING "m.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: m.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "m881.lib 1.189"
#define VSTRING "m881.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "m881.lib 1.188"
#define VSTRING "m881.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,5 +1,5 @@
/*
* $Id: macros.h,v 1.15 2005-03-11 11:35:31 obarthel Exp $
* $Id: macros.h,v 1.8 2005-01-30 09:37:59 obarthel Exp $
*
* :ts=4
*
@ -54,6 +54,12 @@
/****************************************************************************/
#ifndef ZERO
#define ZERO ((BPTR)NULL)
#endif /* ZERO */
/****************************************************************************/
#define NUM_ENTRIES(t) (sizeof(t) / sizeof(t[0]))
/****************************************************************************/
@ -69,157 +75,17 @@
/****************************************************************************/
/* Macro to get longword-aligned stack space for a structure
Uses ANSI token catenation to form a name for the char array
based on the variable name, then creates an appropriately
typed pointer to point to the first longword boundary in the
char array allocated. */
* Uses ANSI token catenation to form a name for the char array
* based on the variable name, then creates an appropriately
* typed pointer to point to the first longword boundary in the
* char array allocated.
*/
#define D_S(type, name) \
char a_##name[sizeof(type)+3]; \
type *name = (type *)((LONG)(a_##name+3) & ~3)
/****************************************************************************/
/* BCPL style "NULL"; this should be in <dos/dos.h>. */
#ifndef ZERO
#define ZERO ((BPTR)NULL)
#endif /* ZERO */
/****************************************************************************/
/* Constructor and destructor functions, as used by the library for data
initialization and cleanup. These particular functions are invoked by
the startup code before and after the main() function is/was called.
How this works is very compiler specific. We support three flavours
below. */
/****************************************************************************/
#ifdef __SASC
#define CONSTRUCTOR(name,pri) \
int __stdargs _STI_##pri##_##name(void); \
int __stdargs _STI_##pri##_##name(void)
#define DESTRUCTOR(name,pri) \
int __stdargs _STD_##pri##_##name(void); \
int __stdargs _STD_##pri##_##name(void)
#define CONSTRUCTOR_SUCCEED() \
return(0)
#define CONSTRUCTOR_FAIL() \
return(1)
#endif /* __SASC */
/****************************************************************************/
#ifdef __GNUC__
#if defined(__amigaos4__)
#define CONSTRUCTOR(name,pri) \
STATIC VOID __attribute__((used)) name##_ctor(VOID); \
STATIC VOID (*__##name##_ctor)(VOID) __attribute__((used,section(".ctors._" #pri))) = name##_ctor; \
STATIC VOID name##_ctor(VOID)
#define DESTRUCTOR(name,pri) \
STATIC VOID __attribute__((used)) name##_dtor(VOID); \
STATIC VOID (*__##name##_dtor)(VOID) __attribute__((used,section(".dtors._" #pri))) = name##_dtor; \
STATIC VOID name##_dtor(VOID)
#else
#define CONSTRUCTOR(name,pri) \
STATIC VOID __attribute__((constructor)) __ctor##pri##_##name##(VOID); \
STATIC void __ctor##pri##_##name##(VOID)
#define DESTRUCTOR(name,pri) \
STATIC VOID __attribute__((destructor)) __dtor##pri##_##name##(VOID); \
STATIC VOID __dtor##pri##_##name##(VOID)
#endif /* __amigaos4__ */
#define CONSTRUCTOR_SUCCEED() \
return
#define CONSTRUCTOR_FAIL() \
exit(RETURN_FAIL)
#endif /* __GNUC__ */
/****************************************************************************/
/* These macros are for declaring functions to serve as constructors or
destructors. In which order these should be invoked is defined by the
priority, which is a number in the range 0-999. User-supplied
constructor/destructor functions should have priority 0. That way,
the user-supplied constructors will be invoked after the library
constructors and the user-supplied destructors before the library
destructors. */
#define STDLIB_CONSTRUCTOR(name) CONSTRUCTOR(name, 100)
#define STDLIB_DESTRUCTOR(name) DESTRUCTOR(name, 100)
#define STK_CONSTRUCTOR(name) CONSTRUCTOR(name, 110)
#define STK_DESTRUCTOR(name) DESTRUCTOR(name, 110)
#define STDIO_CONSTRUCTOR(name) CONSTRUCTOR(name, 120)
#define STDIO_DESTRUCTOR(name) DESTRUCTOR(name, 120)
#define FILE_CONSTRUCTOR(name) CONSTRUCTOR(name, 130)
#define FILE_DESTRUCTOR(name) DESTRUCTOR(name, 130)
#define MATH_CONSTRUCTOR(name) CONSTRUCTOR(name, 140)
#define MATH_DESTRUCTOR(name) DESTRUCTOR(name, 140)
#define SOCKET_CONSTRUCTOR(name) CONSTRUCTOR(name, 150)
#define SOCKET_DESTRUCTOR(name) DESTRUCTOR(name, 150)
#define ARG_CONSTRUCTOR(name) CONSTRUCTOR(name, 160)
#define ARG_DESTRUCTOR(name) DESTRUCTOR(name, 160)
#define CLIB_CONSTRUCTOR(name) CONSTRUCTOR(name, 170)
#define CLIB_DESTRUCTOR(name) DESTRUCTOR(name, 170)
#define PROFILE_CONSTRUCTOR(name) CONSTRUCTOR(name, 180)
#define PROFILE_DESTRUCTOR(name) DESTRUCTOR(name, 180)
/****************************************************************************/
/* Magic macros for code profiling, SAS/C style. Normally, you would find
these in <sprof.h>, which is SAS/C-specific. */
/****************************************************************************/
#ifdef __SASC
extern void ASM _PROLOG(REG(a0,char *));
extern void ASM _EPILOG(REG(a0,char *));
#if _PROFILE
#define PROFILE_OFF() _PROLOG(0L)
#define PROFILE_ON() _EPILOG(0L)
#else
#define PROFILE_OFF() ((void)0)
#define PROFILE_ON() ((void)0)
#endif /* _PROFILE */
#endif /* __SASC */
/****************************************************************************/
#ifdef __GNUC__
#define PROFILE_OFF() ((void)0)
#define PROFILE_ON() ((void)0)
#endif /* __GNUC__ */
/****************************************************************************/
/* Special data and function attributes; for OS4 most, if not all of them
are in a file called <amiga_compiler.h> which is pulled in by the
<exec/types.h> header file. */
/****************************************************************************/
#ifndef AMIGA_COMPILER_H
#ifdef __SASC
@ -270,7 +136,7 @@ extern void ASM _EPILOG(REG(a0,char *));
#define WEAK __attribute__((weak))
#else
#define WEAK /* WEAK */
#endif /* __GNUC__ */
#endif
#endif /* WEAK */
/****************************************************************************/
@ -278,20 +144,52 @@ extern void ASM _EPILOG(REG(a0,char *));
#ifndef UNUSED
#ifdef __GNUC__
#define UNUSED __attribute__((unused))
#define NOCOMMON __attribute__((nocommon))
#else
#define UNUSED /* UNUSED */
#endif /* __GNUC__ */
#define NOCOMMON /* NOCOMMON */
#endif
#endif /* UNUSED */
/****************************************************************************/
#ifndef NOCOMMON
#ifdef __SASC
#define CLIB_CONSTRUCTOR(name) int __stdargs _STI_500_##name(void)
#define CLIB_DESTRUCTOR(name) void __stdargs _STD_500_##name(void)
#define PROFILE_CONSTRUCTOR(name) int __stdargs _STI_150_##name(void)
#define PROFILE_DESTRUCTOR(name) void __stdargs _STD_150_##name(void)
#define CONSTRUCTOR_SUCCEED() return(0)
#define CONSTRUCTOR_FAIL() return(1)
#endif /* __SASC */
#ifdef __GNUC__
#define NOCOMMON __attribute__((nocommon))
#else
#define NOCOMMON /* NOCOMMON */
#define CLIB_CONSTRUCTOR(name) static void __attribute__((constructor)) name##_ctor(void)
#define CLIB_DESTRUCTOR(name) static void __attribute__((destructor)) name##_dtor(void)
#define PROFILE_CONSTRUCTOR(name) static void __attribute__((constructor)) name##_ctor(void)
#define PROFILE_DESTRUCTOR(name) static void __attribute__((destructor)) name##_dtor(void)
#define CONSTRUCTOR_SUCCEED() return
#define CONSTRUCTOR_FAIL() exit(RETURN_FAIL) /* ZZZ not a nice thing to do; fix the constructor invocation code! */
#endif /* __GNUC__ */
/****************************************************************************/
#ifdef __SASC
extern void ASM _PROLOG(REG(a0,char *));
extern void ASM _EPILOG(REG(a0,char *));
#if _PROFILE
#define PROFILE_OFF() _PROLOG(0L)
#define PROFILE_ON() _EPILOG(0L)
#else
#define PROFILE_OFF() ((void)0)
#define PROFILE_ON() ((void)0)
#endif /* _PROFILE */
#endif /* __SASC */
#ifdef __GNUC__
#define PROFILE_OFF() ((void)0)
#define PROFILE_ON() ((void)0)
#endif /* __GNUC__ */
#endif /* NOCOMMON */
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: math_acos.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_acos.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___acos:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__acos(double x)
{
double result;
@ -119,7 +119,7 @@ __acos(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__acos(double x)
{
double result;
@ -153,7 +153,7 @@ qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
INLINE STATIC const double
INLINE static const double
__acos(double x)
{
double z,p,q,r,w,s,c,df;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_asin.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_asin.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___asin:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__asin(double x)
{
double result;
@ -119,7 +119,7 @@ __asin(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__asin(double x)
{
double result;
@ -156,7 +156,7 @@ qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
INLINE STATIC const double
INLINE static const double
__asin(double x)
{
double t,w,p,q,c,r,s;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_atan.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_atan.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___atan:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__atan(double x)
{
double result;
@ -119,7 +119,7 @@ __atan(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__atan(double x)
{
double result;
@ -169,7 +169,7 @@ static const double
one = 1.0,
huge = 1.0e300;
INLINE STATIC const double
INLINE static const double
__atan(double x)
{
double w,s1,s2,z;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_atan2.c,v 1.6 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_atan2.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -62,7 +62,7 @@ extern double __atan(double x);
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__atan2(double y,double x)
{
const double pi = 3.14159265358979323846;
@ -122,7 +122,7 @@ __atan2(double y,double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__atan(double x)
{
double result;
@ -134,7 +134,7 @@ __atan(double x)
return(result);
}
INLINE STATIC const double
INLINE static const double
__atan2(double y,double x)
{
double pi,pi_over_2;
@ -209,7 +209,7 @@ pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */
pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
INLINE STATIC const double
INLINE static const double
__atan2(double y,double x)
{
double z;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_ceil.c,v 1.4 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_ceil.c,v 1.3 2005-01-26 09:24:38 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___ceil:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__ceil(double x)
{
double result;
@ -119,7 +119,7 @@ __ceil(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__ceil(double x)
{
int rounding_mode, round_up;
@ -152,7 +152,7 @@ __ceil(double x)
static const double huge = 1.0e300;
INLINE STATIC const double
INLINE static const double
__ceil(double x)
{
int i0,i1,j0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_cos.c,v 1.4 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_cos.c,v 1.3 2005-01-26 09:24:38 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___cos:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__cos(double x)
{
double result;
@ -119,7 +119,7 @@ __cos(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__cos(double x)
{
double result;
@ -137,7 +137,7 @@ __cos(double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__cos(double x)
{
double y[2],z=0.0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_cosh.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_cosh.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___cosh:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__cosh(double x)
{
double result;
@ -119,7 +119,7 @@ __cosh(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__cosh(double x)
{
double result;
@ -139,7 +139,7 @@ __cosh(double x)
static const double one = 1.0, half=0.5, huge = 1.0e300;
INLINE STATIC const double
INLINE static const double
__cosh(double x)
{
double t,w;

View File

@ -1,5 +1,5 @@
/*
* $Id: ftw_headers.h,v 1.1 2005-03-02 12:57:53 obarthel Exp $
* $Id: math_data.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -31,17 +31,20 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _FTW_HEADERS_H
#define _FTW_HEADERS_H
#ifndef _MATH_HEADERS_H
#include "math_headers.h"
#endif /* _MATH_HEADERS_H */
/****************************************************************************/
#include <sys/stat.h>
#if defined(IEEE_FLOATING_POINT_SUPPORT)
struct Library * MathIeeeSingBasBase;
struct Library * MathIeeeDoubBasBase;
struct Library * MathIeeeDoubTransBase;
#endif /* IEEE_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#include "macros.h"
/****************************************************************************/
#endif /* _FTW_HEADERS_H */
double __huge_val;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_exp.c,v 1.4 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_exp.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___exp:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__exp(double x)
{
double result;
@ -119,7 +119,7 @@ __exp(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__exp(double x)
{
double result;
@ -155,7 +155,7 @@ P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */
P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
INLINE STATIC const double
INLINE static const double
__exp(double x)
{
double y,hi,lo,c,t;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fabs.c,v 1.6 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_fabs.c,v 1.5 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -88,7 +88,7 @@ ___fabs:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__fabs(double x)
{
double result;
@ -110,7 +110,7 @@ __fabs(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__fabs(double x)
{
double result;
@ -134,7 +134,7 @@ __fabs(double x)
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__fabs(double x)
{
double res;
@ -153,7 +153,7 @@ __fabs(double x)
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__fabs(double x)
{
double res;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_floor.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_floor.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___floor:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__floor(double x)
{
double result;
@ -119,7 +119,7 @@ __floor(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__floor(double x)
{
int rounding_mode, round_down;
@ -153,7 +153,7 @@ __floor(double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double huge = 1.0e300;
INLINE STATIC const double
INLINE static const double
__floor(double x)
{
int i0,i1,j0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fmod.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_fmod.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -54,7 +54,7 @@
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__fmod(double x,double y)
{
double q,p,result;
@ -79,7 +79,7 @@ __fmod(double x,double y)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__fmod(double x,double y)
{
double result;
@ -102,7 +102,7 @@ static const double
one = 1.0,
Zero[] = {0.0, -0.0,};
INLINE STATIC const double
INLINE static const double
__fmod(double x,double y)
{
int n,hx,hy,hz,ix,iy,sx,i;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_frexp.c,v 1.4 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_frexp.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -58,7 +58,7 @@
#if defined(IEEE_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__frexp(double x,int * nptr)
{
int int_exponent = 0;
@ -106,7 +106,7 @@ __frexp(double x,int * nptr)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__frexp(double x,int * nptr)
{
double float_exponent;
@ -146,7 +146,7 @@ __frexp(double x,int * nptr)
static const double
two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
INLINE STATIC const double
INLINE static const double
__frexp(double x,int * eptr)
{
int hx, ix, lx;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_hypot.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_hypot.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -52,7 +52,7 @@
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__hypot(double x,double y)
{
double yx;
@ -85,7 +85,7 @@ __hypot(double x,double y)
static const double one = 1.0;
INLINE STATIC const double
INLINE static const double
__hypot(double x,double y)
{
int n0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_init_exit.c,v 1.10 2005-03-09 10:48:59 obarthel Exp $
* $Id: math_init_exit.c,v 1.7 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -41,10 +41,6 @@
/****************************************************************************/
#include <exec/execbase.h>
/****************************************************************************/
#include <proto/exec.h>
/****************************************************************************/
@ -57,20 +53,6 @@
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT)
struct Library * MathIeeeSingBasBase;
struct Library * MathIeeeDoubBasBase;
struct Library * MathIeeeDoubTransBase;
#endif /* IEEE_FLOATING_POINT_SUPPORT */
/****************************************************************************/
double __huge_val;
/****************************************************************************/
CLIB_DESTRUCTOR(__math_exit)
{
ENTER();
@ -131,8 +113,8 @@ __math_init(void)
{
char message[60];
strlcpy(message,failed_library,sizeof(message));
strlcat(message," could not be opened.",sizeof(message));
strcpy(message,failed_library);
strcat(message," could not be opened.");
__show_error(message);

View File

@ -1,5 +1,5 @@
/*
* $Id: math_kernel_rem_pio2.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_kernel_rem_pio2.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -69,7 +69,7 @@ one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
INLINE STATIC int kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int *ipio2)
INLINE static int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int *ipio2)
{
int jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
double z,fw,f[20],fq[20],q[20];
@ -341,7 +341,7 @@ int __rem_pio2(double x, double *y)
tx[2] = z;
nx = 3;
while(tx[nx-1]==zero) nx--; /* skip zero term */
n = kernel_rem_pio2(tx,y,e0,nx,2,two_over_pi);
n = __kernel_rem_pio2(tx,y,e0,nx,2,two_over_pi);
if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
return n;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_kernel_scalbn.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_kernel_scalbn.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -50,7 +50,7 @@
/****************************************************************************/
INLINE STATIC double copysign(double x, double y)
INLINE static double copysign(double x, double y)
{
unsigned int hx,hy;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_ldexp.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_ldexp.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -66,7 +66,7 @@ union dtol
long ival[2];
};
INLINE STATIC const double
INLINE static const double
__ldexp(double x,int n)
{
union dtol number;
@ -96,7 +96,7 @@ __ldexp(double x,int n)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__ldexp(double x,int n)
{
double result;
@ -129,7 +129,7 @@ union dtol
long ival[2];
};
INLINE STATIC const double
INLINE static const double
__ldexp(double x,int n)
{
union dtol number;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_log.c,v 1.6 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_log.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___log:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__log(double x)
{
double result;
@ -119,7 +119,7 @@ __log(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__log(double x)
{
double result;
@ -150,7 +150,7 @@ Lg6 = 1.531383769920937332e-01, /* 3FC39A09 D078C69F */
Lg7 = 1.479819860511658591e-01, /* 3FC2F112 DF3E5244 */
zero = 0.0;
INLINE STATIC const double
INLINE static const double
__log(double x)
{
double hfsq,f,s,z,R,w,t1,t2,dk;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_log10.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_log10.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___log10:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__log10(double x)
{
double result;
@ -119,7 +119,7 @@ __log10(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__log10(double x)
{
double result;
@ -144,7 +144,7 @@ log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */
log10_2lo = 3.69423907715893078616e-13, /* 0x3D59FEF3, 0x11F12B36 */
zero = 0.0;
INLINE STATIC const double
INLINE static const double
__log10(double x)
{
double y,z;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_logb.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_logb.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -54,7 +54,7 @@
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__logb(double x)
{
double result;
@ -70,7 +70,7 @@ __logb(double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__logb(double x)
{
unsigned int lx,ix;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_modf.c,v 1.5 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_modf.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -58,7 +58,7 @@
#if defined(IEEE_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__modf(double x,double *nptr)
{
double int_n;
@ -88,7 +88,7 @@ __modf(double x,double *nptr)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__modf(double x,double *nptr)
{
double result;
@ -111,7 +111,7 @@ __modf(double x,double *nptr)
#if defined(__PPC__)
INLINE STATIC const double
INLINE static const double
__modf(double x,double *nptr)
{
double int_n;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_pow.c,v 1.6 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_pow.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -98,7 +98,7 @@ ___pow:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__pow(double x,double y)
{
double result;
@ -121,7 +121,7 @@ __pow(double x,double y)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__exp(double x)
{
double result;
@ -133,7 +133,7 @@ __exp(double x)
return(result);
}
INLINE STATIC const double
INLINE static const double
__log(double x)
{
double result;
@ -145,7 +145,7 @@ __log(double x)
return(result);
}
INLINE STATIC const double
INLINE static const double
__pow(double x,double y)
{
double result;
@ -208,7 +208,7 @@ ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */
ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
INLINE STATIC const double
INLINE static const double
__pow(double x,double y)
{
double z,ax,z_h,z_l,p_h,p_l;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_sin.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_sin.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___sin:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__sin(double x)
{
double result;
@ -119,7 +119,7 @@ __sin(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__sin(double x)
{
double result;
@ -137,7 +137,7 @@ __sin(double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__sin(double x)
{
double y[2],z=0.0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_sinh.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_sinh.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___sinh:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__sinh(double x)
{
double result;
@ -119,7 +119,7 @@ __sinh(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__sinh(double x)
{
double result;
@ -139,7 +139,7 @@ __sinh(double x)
static const double one = 1.0, shuge = 1.0e307;
INLINE STATIC const double
INLINE static const double
__sinh(double x)
{
double t,w,h;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_sqrt.c,v 1.6 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_sqrt.c,v 1.5 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___sqrt:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__sqrt(double x)
{
double result;
@ -119,7 +119,7 @@ __sqrt(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__sqrt(double x)
{
double result;
@ -139,7 +139,7 @@ __sqrt(double x)
static const double one = 1.0, tiny=1.0e-300;
INLINE STATIC const double
INLINE static const double
__sqrt(double x)
{
double z;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_tan.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_tan.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___tan:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__tan(double x)
{
double result;
@ -119,7 +119,7 @@ __tan(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__tan(double x)
{
double result;
@ -137,7 +137,7 @@ __tan(double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__tan(double x)
{
double y[2],z=0.0;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_tanh.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: math_tanh.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
*
* :ts=4
*
@ -97,7 +97,7 @@ ___tanh:
/****************************************************************************/
INLINE STATIC const double
INLINE static const double
__tanh(double x)
{
double result;
@ -119,7 +119,7 @@ __tanh(double x)
#if defined(M68881_FLOATING_POINT_SUPPORT)
INLINE STATIC const double
INLINE static const double
__tanh(double x)
{
double result;
@ -139,7 +139,7 @@ __tanh(double x)
static const double one=1.0, two=2.0, tiny = 1.0e-300;
INLINE STATIC const double
INLINE static const double
__tanh(double x)
{
double t,z;

View File

@ -1,5 +1,5 @@
/*
* $Id: mount_fstatfs.c,v 1.9 2005-03-07 11:16:43 obarthel Exp $
* $Id: mount_fstatfs.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -50,11 +50,11 @@
int
fstatfs(int file_descriptor, struct statfs *buf)
{
DECLARE_UTILITYBASE();
struct file_hook_message message;
D_S(struct InfoData,id);
BPTR parent_dir = ZERO;
int result = -1;
struct fd * fd = NULL;
LONG success;
struct fd * fd;
ENTER();
@ -62,9 +62,7 @@ fstatfs(int file_descriptor, struct statfs *buf)
SHOWPOINTER(buf);
assert( buf != NULL );
if(__check_abort_enabled)
__check_abort();
assert( UtilityBase != NULL );
#if defined(CHECK_FOR_NULL_POINTERS)
{
@ -82,6 +80,9 @@ fstatfs(int file_descriptor, struct statfs *buf)
assert( __fd[file_descriptor] != NULL );
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
if(__check_abort_enabled)
__check_abort();
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
@ -89,54 +90,26 @@ fstatfs(int file_descriptor, struct statfs *buf)
goto out;
}
__fd_lock(fd);
SHOWMSG("calling the hook");
if(FLAG_IS_SET(fd->fd_Flags,FDF_IS_SOCKET))
message.action = file_hook_action_info;
message.info_data = id;
assert( fd->fd_Hook != NULL );
CallHookPkt(fd->fd_Hook,fd,&message);
result = message.result;
if(result != 0)
{
__set_errno(EINVAL);
goto out;
}
if(fd->fd_DefaultFile == ZERO)
{
__set_errno(EBADF);
goto out;
}
PROFILE_OFF();
parent_dir = __safe_parent_of_file_handle(fd->fd_DefaultFile);
PROFILE_ON();
if(parent_dir == ZERO)
{
SHOWMSG("couldn't find parent directory");
__set_errno(__translate_io_error_to_errno(IoErr()));
goto out;
}
PROFILE_OFF();
success = Info(parent_dir,id);
PROFILE_ON();
if(NO success)
{
SHOWMSG("couldn't get info on drive");
__set_errno(__translate_io_error_to_errno(IoErr()));
__set_errno(message.error);
goto out;
}
__convert_info_to_statfs(id,buf);
result = 0;
out:
__fd_unlock(fd);
UnLock(parent_dir);
RETURN(result);
return(result);
}

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 189
#define DATE "5.3.2005"
#define VERS "net.lib 1.189"
#define VSTRING "net.lib 1.189 (5.3.2005)\r\n"
#define VERSTAG "\0$VER: net.lib 1.189 (5.3.2005)"
#define REVISION 188
#define DATE "7.2.2005"
#define VERS "net.lib 1.188"
#define VSTRING "net.lib 1.188 (7.2.2005)\r\n"
#define VERSTAG "\0$VER: net.lib 1.188 (7.2.2005)"

View File

@ -1 +1 @@
189
188

View File

@ -1,5 +1,5 @@
/*
* $Id: sas_profile.c,v 1.3 2005-02-25 10:14:21 obarthel Exp $
* $Id: sas_profile.c,v 1.1.1.1 2004-07-26 16:31:04 obarthel Exp $
*
* :ts=4
*
@ -77,11 +77,11 @@ static BOOL initialized;
/****************************************************************************/
STATIC int send_profiler_message(ULONG clock_value, char *id, ULONG flags);
STATIC ULONG get_current_time(void);
STATIC void update_overhead(void);
STATIC void __profile_init(void);
STATIC void __profile_exit(void);
static int send_profiler_message(ULONG clock_value, char *id, ULONG flags);
static ULONG get_current_time(void);
static void update_overhead(void);
static void __profile_init(void);
static void __profile_exit(void);
/****************************************************************************/
@ -90,7 +90,7 @@ void ASM _EPILOG(REG(a0, char *id));
/****************************************************************************/
STATIC int
static int
send_profiler_message(ULONG clock_value,char * id,ULONG flags)
{
extern long __builtin_getreg(int);
@ -133,7 +133,7 @@ send_profiler_message(ULONG clock_value,char * id,ULONG flags)
PutMsg(profiler_port,(struct Message *)spm);
WaitPort(reply_port);
result = 0;
result = OK;
out:
@ -142,7 +142,7 @@ send_profiler_message(ULONG clock_value,char * id,ULONG flags)
/****************************************************************************/
STATIC ULONG
static ULONG
get_current_time(void)
{
ULONG result;
@ -156,7 +156,7 @@ get_current_time(void)
/****************************************************************************/
STATIC void
static void
update_overhead(void)
{
struct EClockVal ev;
@ -192,7 +192,7 @@ _EPILOG(REG(a0,char * id))
/****************************************************************************/
STATIC VOID
static void
__profile_init(void)
{
struct SPROFMSG * spm;
@ -258,7 +258,7 @@ __profile_init(void)
/****************************************************************************/
STATIC VOID
static void
__profile_exit(void)
{
if(initialized)

View File

@ -1,5 +1,5 @@
#
# $Id: smakefile,v 1.32 2005-03-11 09:37:29 obarthel Exp $
_#
# $Id: smakefile,v 1.20 2005-02-04 15:03:10 obarthel Exp $
#
# :ts=8
#
@ -28,7 +28,7 @@ INCLUDE_DIR = V:include
#DEBUG = debug=line noopt define=CHECK_FOR_NULL_POINTERS
#DEBUG = debug=line
#DEBUG = debug=line define=NDEBUG
DEBUG = debug=sf noopt define=DEBUG
DEBUG = debug=sf noopt
#DEBUG = debug=sf noopt define=CHECK_FOR_NULL_POINTERS
#PROFILE = profile
DATA = data=faronly
@ -36,7 +36,7 @@ INCLUDE_DIR = V:include
CPU = cpu=060
MATH = define=IEEE_FLOATING_POINT_SUPPORT math=IEEE
SUPPORT = define=UNIX_PATH_SEMANTICS define=SOCKET_SUPPORT define=USERGROUP_SUPPORT \
define=__C_MACROS__ define=__THREAD_SAFE
define=__C_MACROS__
##############################################################################
@ -149,6 +149,7 @@ DEBUG_OBJ = \
DIRENT_OBJ = \
dirent_closedir.o \
dirent_data.o \
dirent_opendir.o \
dirent_readdir.o \
dirent_rewinddir.o
@ -160,7 +161,6 @@ FCNTL_OBJ = \
fcntl_close.o \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_lock.o \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
@ -174,7 +174,6 @@ LIBGEN_OBJ = \
LOCALE_OBJ = \
locale_init_exit.o \
locale_localeconv.o \
locale_open_locale.o \
locale_setlocale.o
MATH_OBJ = \
@ -185,6 +184,7 @@ MATH_OBJ = \
math_ceil.o \
math_cos.o \
math_cosh.o \
math_data.o \
math_exp.o \
math_fabs.o \
math_floor.o \
@ -231,6 +231,7 @@ SOCKET_OBJ = \
socket_accept.o \
socket_bind.o \
socket_connect.o \
socket_data.o \
socket_gethostbyaddr.o \
socket_gethostbyname.o \
socket_gethostid.o \
@ -272,6 +273,7 @@ SOCKET_OBJ = \
STAT_OBJ = \
stat_chmod.o \
stat_convertfileinfo.o \
stat_data.o \
stat_fchmod.o \
stat_fstat.o \
stat_lstat.o \
@ -283,22 +285,21 @@ STAT_OBJ = \
STDIO_OBJ = \
stdio_asprintf.o \
stdio_clearerr.o \
stdio_data.o \
stdio_dropiobreadbuffer.o \
stdio_duplicate_fd.o \
stdio_examine_fh.o \
stdio_fclose.o \
stdio_fdhookentry.o \
stdio_feof.o \
stdio_ferror.o \
stdio_fflush.o \
stdio_flush.o \
stdio_fgetc.o \
stdio_fgetpos.o \
stdio_fgets.o \
stdio_filliobreadbuffer.o \
stdio_findvacantfdentry.o \
stdio_findvacantiobentry.o \
stdio_flockfile.o \
stdio_flush.o \
stdio_flushiobwritebuffer.o \
stdio_fopen.o \
stdio_fprintf.o \
@ -310,39 +311,27 @@ STDIO_OBJ = \
stdio_fseek.o \
stdio_fsetpos.o \
stdio_ftell.o \
stdio_ftrylockfile.o \
stdio_funlockfile.o \
stdio_fwrite.o \
stdio_getc.o \
stdio_getc_unlocked.o \
stdio_getchar.o \
stdio_getchar_unlocked.o \
stdio_gets.o \
stdio_get_file_descriptor.o \
stdio_gets.o \
stdio_growfdtable.o \
stdio_growiobtable.o \
stdio_grow_file.o \
stdio_initializefd.o \
stdio_initializeiob.o \
stdio_file_init.o \
stdio_init_exit.o \
stdio_iobhookentry.o \
stdio_lock.o \
stdio_locksemaphorename.o \
stdio_nostdio.o \
stdio_openiob.o \
stdio_parent_of_fh.o \
stdio_perror.o \
stdio_popen.o \
stdio_printf.o \
stdio_putc.o \
stdio_putc_unlocked.o \
stdio_putchar.o \
stdio_putchar_unlocked.o \
stdio_puts.o \
stdio_record_locking.o \
stdio_remove.o \
stdio_remove_fd_alias.o \
stdio_rename.o \
stdio_rewind.o \
stdio_scanf.o \
@ -356,7 +345,6 @@ STDIO_OBJ = \
stdio_tmpnam.o \
stdio_translateioerror.o \
stdio_ungetc.o \
stdio_unlockfile.o \
stdio_vasprintf.o \
stdio_vasprintf_hook_entry.o \
stdio_vfprintf.o \
@ -376,12 +364,13 @@ STDLIB_OBJ = \
stdlib_atof.o \
stdlib_atoi.o \
stdlib_atol.o \
stdlib_atoll.o \
stdlib_bsearch.o \
stdlib_calloc.o \
stdlib_checkdetach.o \
stdlib_constructor_begin.o \
stdlib_constructor.o \
stdlib_constructor_end.o \
stdlib_data.o \
stdlib_default_pool_size.o \
stdlib_default_puddle_size.o \
stdlib_destructor.o \
@ -389,7 +378,6 @@ STDLIB_OBJ = \
stdlib_dosbase.o \
stdlib_get_errno.o \
stdlib_set_errno.o \
stdlib_semaphore.o \
stdlib_sysbase.o \
stdlib_termination_message.o \
stdlib_threshold.o \
@ -418,7 +406,6 @@ STDLIB_OBJ = \
stdlib_putenv.o \
stdlib_qsort.o \
stdlib_rand.o \
stdlib_rand_r.o \
stdlib_realloc.o \
stdlib_red_black.o \
stdlib_setenv.o \
@ -433,7 +420,7 @@ STDLIB_OBJ = \
stdlib_stacksafezone.o \
stdlib_stacksize.o \
stdlib_stack_usage.o \
stdlib_arg.o \
stdlib_startup.o \
stdlib_strtod.o \
stdlib_strtol.o \
stdlib_strtoul.o \
@ -479,7 +466,6 @@ STRING_OBJ = \
string_strxfrm.o
STRINGS_OBJ = \
strings_ffs.o \
strings_strcasecmp.o \
strings_strncasecmp.o
@ -507,8 +493,6 @@ TIME_OBJ = \
time_weekday.o
UNISTD_OBJ = \
ftw_ftw.o \
ftw_nftw.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
@ -536,7 +520,6 @@ UNISTD_OBJ = \
unistd_sleep.o \
unistd_strip_double_slash.o \
unistd_symlink.o \
unistd_sync_fd.o \
unistd_time_delay.o \
unistd_timer.o \
unistd_translatea2u.o \
@ -545,8 +528,7 @@ UNISTD_OBJ = \
unistd_truncate.o \
unistd_unix_path_semantics.o \
unistd_unlink.o \
unistd_usleep.o \
utsname_uname.o
unistd_usleep.o
# \
# unistd_wildcard_expand.o
@ -651,6 +633,8 @@ stdlib_swapstack.o : stdlib_swapstack.asm
stdio_fdhookentry.o : stdio_fdhookentry.c stdlib_mem_debug.h
stdlib_data.o : stdlib_data.c stdlib_mem_debug.h
stdio_openiob.o : stdio_openiob.c stdlib_mem_debug.h
stdlib_alloca.o : stdlib_alloca.c stdlib_mem_debug.h
@ -693,7 +677,7 @@ stdlib_atexit.o : stdlib_atexit.c stdlib_mem_debug.h
stdlib_setenv.o : stdlib_setenv.c stdlib_mem_debug.h
stdlib_arg.o : stdlib_arg.c stdlib_mem_debug.h
stdlib_startup.o : stdlib_startup.c stdlib_mem_debug.h
stdlib_system.o : stdlib_system.c stdlib_mem_debug.h

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_accept.c,v 1.10 2005-03-09 12:06:10 obarthel Exp $
* $Id: socket_accept.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -50,8 +50,7 @@
int
accept(int sockfd,struct sockaddr *cliaddr,int *addrlen)
{
struct SignalSemaphore * lock = NULL;
struct fd * fd = NULL;
struct fd * fd;
struct fd * new_fd;
int new_fd_slot_number;
int result = -1;
@ -66,8 +65,6 @@ accept(int sockfd,struct sockaddr *cliaddr,int *addrlen)
assert( cliaddr != NULL && addrlen != NULL );
assert(__SocketBase != NULL);
__stdio_lock();
#if defined(CHECK_FOR_NULL_POINTERS)
{
if(cliaddr == NULL || addrlen == NULL)
@ -85,16 +82,14 @@ accept(int sockfd,struct sockaddr *cliaddr,int *addrlen)
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IN_USE) );
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IS_SOCKET) );
fd = __get_file_descriptor_socket(sockfd);
fd = __get_socket_descriptor(sockfd);
if(fd == NULL)
goto out;
__fd_lock(fd);
new_fd_slot_number = __find_vacant_fd_entry();
if(new_fd_slot_number < 0)
{
if(__grow_fd_table(0) < 0)
if(__grow_fd_table() < 0)
{
SHOWMSG("couldn't find a vacant fd slot and no memory to create one");
goto out;
@ -104,17 +99,6 @@ accept(int sockfd,struct sockaddr *cliaddr,int *addrlen)
assert( new_fd_slot_number >= 0 );
}
#if defined(__THREAD_SAFE)
{
lock = __create_semaphore();
if(lock == NULL)
{
__set_errno(ENOMEM);
goto out;
}
}
#endif /* __THREAD_SAFE */
PROFILE_OFF();
new_socket_fd = __accept((LONG)fd->fd_DefaultFile,cliaddr,(LONG *)addrlen);
PROFILE_ON();
@ -127,24 +111,12 @@ accept(int sockfd,struct sockaddr *cliaddr,int *addrlen)
new_fd = __fd[new_fd_slot_number];
__initialize_fd(new_fd,__socket_hook_entry,(BPTR)new_socket_fd,FDF_IN_USE | FDF_IS_SOCKET | FDF_READ | FDF_WRITE,lock);
lock = NULL;
__initialize_fd(new_fd,(HOOKFUNC)__socket_hook_entry,(BPTR)new_socket_fd,FDF_IN_USE | FDF_IS_SOCKET | FDF_READ | FDF_WRITE);
result = new_fd_slot_number;
out:
__fd_unlock(fd);
__stdio_unlock();
#if defined(__THREAD_SAFE)
{
__delete_semaphore(lock);
}
#endif /* __THREAD_SAFE */
if(__check_abort_enabled)
__check_abort();

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_bind.c,v 1.4 2005-02-18 18:53:16 obarthel Exp $
* $Id: socket_bind.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -79,7 +79,7 @@ bind(int sockfd,struct sockaddr *name,int namelen)
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IN_USE) );
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IS_SOCKET) );
fd = __get_file_descriptor_socket(sockfd);
fd = __get_socket_descriptor(sockfd);
if(fd == NULL)
goto out;

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_connect.c,v 1.4 2005-02-18 18:53:16 obarthel Exp $
* $Id: socket_connect.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -79,7 +79,7 @@ connect(int sockfd,struct sockaddr *name,int namelen)
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IN_USE) );
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IS_SOCKET) );
fd = __get_file_descriptor_socket(sockfd);
fd = __get_socket_descriptor(sockfd);
if(fd == NULL)
goto out;

View File

@ -1,5 +1,5 @@
/*
* $Id: fcntl_lock.c,v 1.1 2005-02-28 13:22:53 obarthel Exp $
* $Id: socket_data.c,v 1.4 2005-01-02 09:07:08 obarthel Exp $
*
* :ts=4
*
@ -31,32 +31,28 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _STDIO_HEADERS_H
#include "stdio_headers.h"
#endif /* _STDIO_HEADERS_H */
#if defined(SOCKET_SUPPORT)
/****************************************************************************/
#if defined(__THREAD_SAFE)
#ifndef _SOCKET_HEADERS_H
#include "socket_headers.h"
#endif /* _SOCKET_HEADERS_H */
/****************************************************************************/
void
__fd_lock(struct fd * fd)
{
if(fd != NULL && fd->fd_Lock != NULL)
ObtainSemaphore(fd->fd_Lock);
}
struct Library * __SocketBase;
/****************************************************************************/
void
__fd_unlock(struct fd * fd)
{
if(fd != NULL && fd->fd_Lock != NULL)
ReleaseSemaphore(fd->fd_Lock);
}
#if defined(__amigaos4__)
struct SocketIFace *__ISocket;
#endif /* __amigaos4__ */
/****************************************************************************/
#endif /* __THREAD_SAFE */
int h_errno;
/****************************************************************************/
#endif /* SOCKET_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_get_descriptor.c,v 1.4 2005-02-18 18:53:16 obarthel Exp $
* $Id: socket_get_descriptor.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -42,7 +42,7 @@
/****************************************************************************/
struct fd *
__get_file_descriptor_socket(int socket_descriptor)
__get_socket_descriptor(int socket_descriptor)
{
struct fd * result = NULL;
struct fd * fd;

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_getpeername.c,v 1.4 2005-02-18 18:53:16 obarthel Exp $
* $Id: socket_getpeername.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -79,7 +79,7 @@ getpeername(int sockfd,struct sockaddr *name,int *namelen)
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IN_USE) );
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IS_SOCKET) );
fd = __get_file_descriptor_socket(sockfd);
fd = __get_socket_descriptor(sockfd);
if(fd == NULL)
goto out;

View File

@ -1,5 +1,5 @@
/*
* $Id: socket_getsockname.c,v 1.4 2005-02-18 18:53:16 obarthel Exp $
* $Id: socket_getsockname.c,v 1.3 2005-02-03 16:56:15 obarthel Exp $
*
* :ts=4
*
@ -79,7 +79,7 @@ getsockname(int sockfd,struct sockaddr *name,int *namelen)
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IN_USE) );
assert( FLAG_IS_SET(__fd[sockfd]->fd_Flags,FDF_IS_SOCKET) );
fd = __get_file_descriptor_socket(sockfd);
fd = __get_socket_descriptor(sockfd);
if(fd == NULL)
goto out;

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