mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93fe7d42e6 |
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id: GNUmakefile.68k,v 1.73 2005-10-20 07:19:15 obarthel Exp $
|
||||
# $Id: GNUmakefile.68k,v 1.23 2005-01-29 18:05:13 obarthel Exp $
|
||||
#
|
||||
# :ts=8
|
||||
#
|
||||
@@ -12,7 +12,7 @@ RANLIB = ranlib
|
||||
COPY = copy clone buf=0
|
||||
DELETE = delete all quiet
|
||||
MAKEDIR = makedir
|
||||
MAKE = $(MAKE_COMMAND) -f GNUmakefile.68k
|
||||
MAKE = make -f GNUmakefile.68k
|
||||
|
||||
##############################################################################
|
||||
|
||||
@@ -77,50 +77,42 @@ $(LIBAMIGA_OBJS)/%.o : %.c
|
||||
##############################################################################
|
||||
|
||||
ifeq (small_data_020,$(TYPE))
|
||||
CODE_TYPE := -m68020-60
|
||||
CODE_FLAGS := -fbaserel -DSMALL_DATA -DM68020 -DUSE_64_BIT_INTS
|
||||
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 -DUSE_64_BIT_INTS
|
||||
CODE_TYPE := -fbaserel32 -DSMALL_DATA32 -m68020-60 -DM68020
|
||||
endif
|
||||
|
||||
ifeq (large_data_020,$(TYPE))
|
||||
CODE_TYPE := -m68020-60
|
||||
CODE_FLAGS := -DM68020 -DUSE_64_BIT_INTS
|
||||
CODE_TYPE := -m68020-60 -DM68020
|
||||
endif
|
||||
|
||||
ifeq (large_data,$(TYPE))
|
||||
CODE_TYPE := -m68000
|
||||
CODE_FLAGS :=
|
||||
CODE_TYPE := -m68000
|
||||
endif
|
||||
|
||||
##############################################################################
|
||||
|
||||
WARNINGS = \
|
||||
-Wall -W -Wpointer-arith -Wsign-compare -Wmissing-prototypes \
|
||||
-Wundef -Wbad-function-cast -Wmissing-declarations -Wunused
|
||||
-Wundef -Wbad-function-cast -Wmissing-declarations
|
||||
|
||||
# -Wconversion -Wshadow
|
||||
|
||||
INCLUDES = -Iinclude -I. -Inetinclude
|
||||
#OPTIONS = -fno-builtin -fno-common -DDEBUG
|
||||
OPTIONS = -fno-builtin -fno-common -DNDEBUG
|
||||
#OPTIONS = -fno-builtin -fno-common -D__MEM_DEBUG
|
||||
#OPTIONS = -fno-builtin -fno-common -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG
|
||||
OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions
|
||||
OPTIONS = -DNDEBUG -fno-builtin
|
||||
#OPTIONS = -D__MEM_DEBUG -fno-builtin
|
||||
#OPTIONS = -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG -fno-builtin
|
||||
#OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions
|
||||
#OPTIMIZE = -O2 -fomit-frame-pointer
|
||||
#DEBUG = -g
|
||||
#DEBUG = -g2
|
||||
|
||||
CFLAGS = \
|
||||
$(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) \
|
||||
$(CODE_FLAGS) $(CODE_TYPE) $(INCLUDES)
|
||||
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
|
||||
|
||||
##############################################################################
|
||||
|
||||
@@ -129,7 +121,6 @@ C_LIB = \
|
||||
ctype_isalnum.o \
|
||||
ctype_isalpha.o \
|
||||
ctype_isascii.o \
|
||||
ctype_isblank.o \
|
||||
ctype_iscntrl.o \
|
||||
ctype_isdigit.o \
|
||||
ctype_isgraph.o \
|
||||
@@ -139,34 +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 \
|
||||
inttypes_imaxdiv.o \
|
||||
inttypes_imaxabs.o \
|
||||
inttypes_strtoimax.o \
|
||||
inttypes_strtoumax.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 \
|
||||
@@ -184,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 \
|
||||
@@ -193,23 +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_flush_all_files.o \
|
||||
stdio_flushiobwritebuffer.o \
|
||||
stdio_fopen.o \
|
||||
stdio_fprintf.o \
|
||||
@@ -219,42 +202,29 @@ C_LIB = \
|
||||
stdio_freopen.o \
|
||||
stdio_fscanf.o \
|
||||
stdio_fseek.o \
|
||||
stdio_fseeko.o \
|
||||
stdio_fsetpos.o \
|
||||
stdio_ftell.o \
|
||||
stdio_ftello.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 \
|
||||
@@ -268,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 \
|
||||
@@ -278,8 +247,6 @@ C_LIB = \
|
||||
stdio_vsnprintf_hook_entry.o \
|
||||
stdio_vsprintf.o \
|
||||
stdio_vsprintf_hook_entry.o \
|
||||
stdio_vsscanf.o \
|
||||
stdio_vscanf.o \
|
||||
stdlib_abort.o \
|
||||
stdlib_abs.o \
|
||||
stdlib_alloca.o \
|
||||
@@ -287,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 \
|
||||
@@ -307,16 +275,11 @@ C_LIB = \
|
||||
stdlib_getdefstacksize.o \
|
||||
stdlib_getenv.o \
|
||||
stdlib_getsp.o \
|
||||
stdlib_get_errno.o \
|
||||
stdlib_init_exit.o \
|
||||
stdlib_isresident.o \
|
||||
stdlib_labs.o \
|
||||
stdlib_llabs.o \
|
||||
stdlib_ldiv.o \
|
||||
stdlib_lldiv.o \
|
||||
stdlib_lib_main.o \
|
||||
stdlib_lib_startup.o \
|
||||
stdlib_machine_test.o \
|
||||
stdlib_main.o \
|
||||
stdlib_malloc.o \
|
||||
stdlib_math.o \
|
||||
stdlib_mkdtemp.o \
|
||||
@@ -329,20 +292,17 @@ C_LIB = \
|
||||
stdlib_oslibversion.o \
|
||||
stdlib_priority.o \
|
||||
stdlib_process_name.o \
|
||||
stdlib_program_name.o \
|
||||
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_set_process_window.o \
|
||||
stdlib_shell_escape.o \
|
||||
stdlib_showerror.o \
|
||||
stdlib_socket.o \
|
||||
stdlib_srand.o \
|
||||
stdlib_stackargbytes.o \
|
||||
stdlib_stackcheck.o \
|
||||
@@ -350,23 +310,22 @@ 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 \
|
||||
stdlib_system.o \
|
||||
stdlib_termination_message.o \
|
||||
stdlib_threshold.o \
|
||||
stdlib_utilitybase.o \
|
||||
stdlib_udivsi3.o \
|
||||
stdlib_udivsi4.o \
|
||||
stdlib_umodsi3.o \
|
||||
stdlib_unsetenv.o \
|
||||
strings_ffs.o \
|
||||
stdlib_wildcard_expand.o \
|
||||
stdlib_stdio_window_spec.o \
|
||||
strings_strcasecmp.o \
|
||||
strings_strncasecmp.o \
|
||||
string_bcmp.o \
|
||||
@@ -420,8 +379,6 @@ C_LIB = \
|
||||
time_strftime.o \
|
||||
time_time.o \
|
||||
time_weekday.o \
|
||||
uio_readv.o \
|
||||
uio_writev.o \
|
||||
unistd_access.o \
|
||||
unistd_chdir.o \
|
||||
unistd_chdir_exit.o \
|
||||
@@ -430,10 +387,8 @@ C_LIB = \
|
||||
unistd_dup.o \
|
||||
unistd_dup2.o \
|
||||
unistd_fchown.o \
|
||||
unistd_fdatasync.o \
|
||||
unistd_fdopen.o \
|
||||
unistd_fileno.o \
|
||||
unistd_fsync.o \
|
||||
unistd_ftruncate.o \
|
||||
unistd_getcwd.o \
|
||||
unistd_getopt.o \
|
||||
@@ -446,18 +401,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 \
|
||||
@@ -465,7 +419,6 @@ UNIX_LIB = \
|
||||
fcntl_fcntl.o \
|
||||
fcntl_open.o \
|
||||
fcntl_get_default_file.o \
|
||||
getopt_getopt_long.o \
|
||||
mount_convertinfo.o \
|
||||
mount_statfs.o \
|
||||
stat_chmod.o \
|
||||
@@ -474,38 +427,19 @@ UNIX_LIB = \
|
||||
stat_mkdir.o \
|
||||
stat_rmdir.o \
|
||||
stat_stat.o \
|
||||
stdio_ctermid.o \
|
||||
stdio_fdhookentry.o \
|
||||
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_arg.o \
|
||||
stdlib_main.o \
|
||||
stdlib_mkdtemp.o \
|
||||
stdlib_mkstemp.o \
|
||||
stdlib_mktemp.o \
|
||||
stdlib_system.o \
|
||||
termios_cfgetispeed.o \
|
||||
termios_cfgetospeed.o \
|
||||
termios_cfmakeraw.o \
|
||||
termios_cfsetispeed.o \
|
||||
termios_cfsetospeed.o \
|
||||
termios_console_fdhookentry.o \
|
||||
termios_tcdrain.o \
|
||||
termios_tcflow.o \
|
||||
termios_tcflush.o \
|
||||
termios_tcgetattr.o \
|
||||
termios_tcsendbreak.o \
|
||||
termios_tcsetattr.o \
|
||||
uio_readv.o \
|
||||
uio_writev.o \
|
||||
unistd_access.o \
|
||||
unistd_chdir.o \
|
||||
unistd_chdir_exit.o \
|
||||
@@ -522,142 +456,44 @@ UNIX_LIB = \
|
||||
unistd_translaterel.o \
|
||||
unistd_translateu2a.o \
|
||||
unistd_truncate.o \
|
||||
unistd_ttyname.o \
|
||||
unistd_ttyname_r.o \
|
||||
unistd_unix_path_semantics.o \
|
||||
unistd_unlink.o \
|
||||
unistd_wildcard_expand.o \
|
||||
utime_utime.o
|
||||
|
||||
MATH_LIB = \
|
||||
complex_carg.o \
|
||||
complex_cargf.o \
|
||||
complex_cargl.o \
|
||||
complex_cimag.o \
|
||||
complex_cimagf.o \
|
||||
complex_cimagl.o \
|
||||
complex_conj.o \
|
||||
complex_conjf.o \
|
||||
complex_conjl.o \
|
||||
complex_creal.o \
|
||||
complex_crealf.o \
|
||||
complex_creall.o \
|
||||
math_acos.o \
|
||||
math_acosf.o \
|
||||
math_acosh.o \
|
||||
math_acoshf.o \
|
||||
math_asin.o \
|
||||
math_asinf.o \
|
||||
math_asinh.o \
|
||||
math_asinhf.o \
|
||||
math_atan.o \
|
||||
math_atan2.o \
|
||||
math_atan2f.o \
|
||||
math_atanf.o \
|
||||
math_atanh.o \
|
||||
math_atanhf.o \
|
||||
math_cbrt.o \
|
||||
math_cbrtf.o \
|
||||
math_ceil.o \
|
||||
math_ceilf.o \
|
||||
math_copysign.o \
|
||||
math_copysignf.o \
|
||||
math_cos.o \
|
||||
math_cosf.o \
|
||||
math_cosh.o \
|
||||
math_coshf.o \
|
||||
math_erf.o \
|
||||
math_erfc.o \
|
||||
math_erfcf.o \
|
||||
math_erff.o \
|
||||
math_data.o \
|
||||
math_exp.o \
|
||||
math_exp2.o \
|
||||
math_exp2f.o \
|
||||
math_expf.o \
|
||||
math_expm1.o \
|
||||
math_expm1f.o \
|
||||
math_fabs.o \
|
||||
math_fabsf.o \
|
||||
math_floor.o \
|
||||
math_floorf.o \
|
||||
math_fma.o \
|
||||
math_fmaf.o \
|
||||
math_fmod.o \
|
||||
math_fmodf.o \
|
||||
math_fpclassify.o \
|
||||
math_frexp.o \
|
||||
math_frexpf.o \
|
||||
math_huge_val.o \
|
||||
math_huge_valf.o \
|
||||
math_hypot.o \
|
||||
math_hypotf.o \
|
||||
math_ilogb.o \
|
||||
math_ilogbf.o \
|
||||
math_inf.o \
|
||||
math_inff.o \
|
||||
math_init_exit.o \
|
||||
math_isfinite.o \
|
||||
math_isunordered.o \
|
||||
math_kernel_cosf.o \
|
||||
math_kernel_sinf.o \
|
||||
math_kernel_tanf.o \
|
||||
math_isinf.o \
|
||||
math_isnan.o \
|
||||
math_ldexp.o \
|
||||
math_ldexpf.o \
|
||||
math_lgamma.o \
|
||||
math_lgammaf.o \
|
||||
math_log.o \
|
||||
math_log10.o \
|
||||
math_log10f.o \
|
||||
math_log1p.o \
|
||||
math_log1pf.o \
|
||||
math_log2.o \
|
||||
math_log2f.o \
|
||||
math_logb.o \
|
||||
math_logbf.o \
|
||||
math_logf.o \
|
||||
math_lrint.o \
|
||||
math_lrintf.o \
|
||||
math_lround.o \
|
||||
math_lroundf.o \
|
||||
math_modf.o \
|
||||
math_modff.o \
|
||||
math_nan.o \
|
||||
math_nanf.o \
|
||||
math_nearbyint.o \
|
||||
math_nearbyintf.o \
|
||||
math_nextafter.o \
|
||||
math_nextafterf.o \
|
||||
math_pow.o \
|
||||
math_powf.o \
|
||||
math_remainder.o \
|
||||
math_remainderf.o \
|
||||
math_remquo.o \
|
||||
math_remquof.o \
|
||||
math_rem_pio2f.o \
|
||||
math_rint.o \
|
||||
math_rintf.o \
|
||||
math_round.o \
|
||||
math_roundf.o \
|
||||
math_scalbn.o \
|
||||
math_scalbnf.o \
|
||||
math_signbit.o \
|
||||
math_sin.o \
|
||||
math_sinf.o \
|
||||
math_sinh.o \
|
||||
math_sinhf.o \
|
||||
math_sqrt.o \
|
||||
math_sqrtf.o \
|
||||
math_tan.o \
|
||||
math_tanf.o \
|
||||
math_tanh.o \
|
||||
math_tanhf.o \
|
||||
math_tgamma.o \
|
||||
math_tgammaf.o \
|
||||
math_trunc.o \
|
||||
math_truncf.o \
|
||||
stdio_asprintf.o \
|
||||
stdio_flush.o \
|
||||
stdio_flush_all_files.o \
|
||||
stdio_fprintf.o \
|
||||
stdio_fscanf.o \
|
||||
stdio_printf.o \
|
||||
@@ -668,14 +504,12 @@ MATH_LIB = \
|
||||
stdio_vasprintf.o \
|
||||
stdio_vfprintf.o \
|
||||
stdio_vfscanf.o \
|
||||
stdio_vsscanf.o \
|
||||
stdio_vscanf.o \
|
||||
stdio_vprintf.o \
|
||||
stdio_vsnprintf.o \
|
||||
stdio_vsprintf.o \
|
||||
stdlib_atof.o \
|
||||
stdlib_machine_test.o \
|
||||
stdlib_strtod.o \
|
||||
stdlib_strtof.o \
|
||||
time_difftime.o
|
||||
|
||||
MATH_LIB_881 = \
|
||||
@@ -728,8 +562,8 @@ NET_LIB = \
|
||||
net.lib_rev.o \
|
||||
socket_accept.o \
|
||||
socket_bind.o \
|
||||
socket_check_daemon.o \
|
||||
socket_connect.o \
|
||||
socket_data.o \
|
||||
socket_gethostbyaddr.o \
|
||||
socket_gethostbyname.o \
|
||||
socket_gethostid.o \
|
||||
@@ -755,7 +589,6 @@ NET_LIB = \
|
||||
socket_ioctl.o \
|
||||
socket_isdaemon.o \
|
||||
socket_listen.o \
|
||||
socket_obtain_daemon.o \
|
||||
socket_recv.o \
|
||||
socket_recvfrom.o \
|
||||
socket_recvmsg.o \
|
||||
@@ -768,8 +601,6 @@ NET_LIB = \
|
||||
socket_socket.o \
|
||||
socket_hook_entry.o \
|
||||
socket_hstrerror.o \
|
||||
socket_get_h_errno.o \
|
||||
socket_set_h_errno.o \
|
||||
stat_umask.o \
|
||||
usergroup_crypt.o \
|
||||
usergroup_data.o \
|
||||
@@ -799,8 +630,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 \
|
||||
@@ -890,7 +720,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)
|
||||
@@ -898,7 +728,7 @@ endif
|
||||
|
||||
##############################################################################
|
||||
|
||||
STARTUPS := nrcrt0.o nbcrt0.o nr32crt0.o nb32crt0.o ncrt0.o
|
||||
STARTUPS := nrcrt0.o nbcrt0.o nr32crt0.o nb32crt0.o ncrt0.o mainnb.o mainb.o mainb32.o
|
||||
|
||||
##############################################################################
|
||||
|
||||
@@ -908,6 +738,9 @@ all: \
|
||||
lib/ncrt0.o \
|
||||
lib/n32bcrt0.o \
|
||||
lib/n32rcrt0.o \
|
||||
lib/mainnb.o \
|
||||
lib/mainb.o \
|
||||
lib/mainb32.o \
|
||||
lib/libm020/libm.a \
|
||||
lib/libm.a \
|
||||
lib/libb/libm.a \
|
||||
@@ -984,38 +817,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
|
||||
|
||||
lib/mainb.o : lib mainb.o
|
||||
$(COPY) mainb.o lib
|
||||
|
||||
lib/mainb32.o : lib mainb32.o
|
||||
$(COPY) mainb32.o lib
|
||||
|
||||
##############################################################################
|
||||
|
||||
@@ -1051,46 +893,21 @@ $(LIBAMIGA_OBJS)/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_stacksize.o : stdlib_stacksize.c stdlib_gcc_help.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_getdefstacksize.o : stdlib_getdefstacksize.c stdlib_gcc_help.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_shell_escape.o : stdlib_shell_escape.c stdlib_gcc_help.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_alloca.o : stdlib_alloca.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_alloca.o : stdlib_alloca.c stdlib_mem_debug.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_calloc.o : stdlib_calloc.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_calloc.o : stdlib_calloc.c stdlib_mem_debug.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_free.o : stdlib_free.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_free.o : stdlib_free.c stdlib_mem_debug.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_malloc.o : stdlib_malloc.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_init_exit.o : stdlib_init_exit.c stdlib_mem_debug.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_realloc.o : stdlib_realloc.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_malloc.o : stdlib_malloc.c stdlib_mem_debug.h
|
||||
|
||||
$(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_memory.h
|
||||
$(LIBC_OBJS)/stdlib_realloc.o : stdlib_realloc.c stdlib_mem_debug.h
|
||||
|
||||
##############################################################################
|
||||
|
||||
# The -fbaserel32 option requires the CPU type to be 68020, too.
|
||||
ifneq (,$(findstring fbaserel32,$(CODE_FLAGS)))
|
||||
LOCAL_CODE_FLAGS := $(CODE_FLAGS) $(CODE_TYPE)
|
||||
else
|
||||
LOCAL_CODE_FLAGS := $(CODE_FLAGS)
|
||||
endif
|
||||
|
||||
$(LIBM881_OBJS)/math_init_exit.o : math_init_exit.c
|
||||
@echo "Compiling $< [$(TYPE):m881]"
|
||||
@$(CC) -o $(LIBM881_OBJS)/math_init_exit.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(LOCAL_CODE_FLAGS) -DM68881_FLOATING_POINT_SUPPORT $(INCLUDES) $<
|
||||
|
||||
$(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) $<
|
||||
|
||||
$(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_main.o : stdlib_main.c
|
||||
@echo "Compiling $< [$(TYPE):c]"
|
||||
@$(CC) -o $(LIBC_OBJS)/stdlib_main.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(LOCAL_CODE_FLAGS) $(INCLUDES) stdlib_main.c
|
||||
$(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_mem_debug.h
|
||||
|
||||
##############################################################################
|
||||
|
||||
@@ -1221,49 +1038,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
|
||||
$(CC) -o mainb32.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel32 -DSMALL_DATA32 -m68020-60 -DM68020 stdlib_main.c
|
||||
|
||||
CONSTRUCTOR_FILES = \
|
||||
amiga_rexxvars.c \
|
||||
dirent_closedir.c \
|
||||
locale_init_exit.c \
|
||||
math_init_exit.c \
|
||||
sas_profile.c \
|
||||
socket_init_exit.c \
|
||||
stdio_file_init.c \
|
||||
stdio_init_exit.c \
|
||||
stdlib_alloca.c \
|
||||
stdlib_arg.c \
|
||||
stdlib_malloc.c \
|
||||
stdlib_program_name.c \
|
||||
stdlib_setenv.c \
|
||||
stdlib_stackcheck.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
|
||||
mainb.o : stdlib_main.c
|
||||
$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -fbaserel -DSMALL_DATA -m68000 stdlib_main.c
|
||||
|
||||
touch_constructor_files:
|
||||
touch $(CONSTRUCTOR_FILES)
|
||||
mainnb.o : stdlib_main.c
|
||||
$(CC) -o mainnb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -m68000 stdlib_main.c
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +0,0 @@
|
||||
C99 math functions:
|
||||
|
||||
fma() and fmaf() should be implemented as a true "fused" multiply
|
||||
and add function rather than the sequential operation implied in the
|
||||
current implementation.
|
||||
@@ -1,6 +1,6 @@
|
||||
#define VERSION 1
|
||||
#define REVISION 197
|
||||
#define DATE "4.11.2005"
|
||||
#define VERS "amiga.lib 1.197"
|
||||
#define VSTRING "amiga.lib 1.197 (4.11.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: amiga.lib 1.197 (4.11.2005)"
|
||||
#define REVISION 187
|
||||
#define DATE "29.1.2005"
|
||||
#define VERS "amiga.lib 1.187"
|
||||
#define VSTRING "amiga.lib 1.187 (29.1.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: amiga.lib 1.187 (29.1.2005)"
|
||||
|
||||
@@ -1 +1 @@
|
||||
197
|
||||
187
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amiga_acrypt.c,v 1.3 2005-05-30 14:01:20 obarthel Exp $
|
||||
* $Id: amiga_acrypt.c,v 1.2 2005-01-02 09:07:06 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -31,14 +31,10 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#define ACrypt __ACrypt
|
||||
|
||||
#include <exec/types.h>
|
||||
#include <string.h>
|
||||
#include <clib/alib_protos.h>
|
||||
|
||||
#undef ACrypt
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amiga_argarrayinit.c,v 1.3 2005-10-27 08:58:41 obarthel Exp $
|
||||
* $Id: amiga_argarrayinit.c,v 1.2 2005-01-02 09:07:06 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -61,11 +61,11 @@ struct DiskObject * CXLIB_disko;
|
||||
STRPTR *
|
||||
ArgArrayInit(LONG argc, CONST_STRPTR * argv)
|
||||
{
|
||||
STRPTR * result = NULL;
|
||||
unsigned char ** result = NULL;
|
||||
|
||||
if(argc != 0) /* run from CLI */
|
||||
{
|
||||
LONG i;
|
||||
int i;
|
||||
|
||||
if(argc == 1)
|
||||
goto out; /* skip command name */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amiga_createtask.c,v 1.4 2005-03-18 12:38:21 obarthel Exp $
|
||||
* $Id: amiga_createtask.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -46,12 +46,6 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_PROFILE_H
|
||||
#include "stdlib_profile.h"
|
||||
#endif /* _STDLIB_PROFILE_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include "macros.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amiga_dotimer.c,v 1.6 2005-09-03 14:45:14 obarthel Exp $
|
||||
* $Id: amiga_dotimer.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -44,12 +44,6 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_PROFILE_H
|
||||
#include "stdlib_profile.h"
|
||||
#endif /* _STDLIB_PROFILE_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include "macros.h"
|
||||
#include "debug.h"
|
||||
|
||||
@@ -64,38 +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_AllocSig, FALSE,
|
||||
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)
|
||||
@@ -114,7 +88,7 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
|
||||
|
||||
PROFILE_OFF();
|
||||
|
||||
SetSignal(0,(1UL << mp->mp_SigBit));
|
||||
SetSignal(0,SIGF_SINGLE);
|
||||
|
||||
error = DoIO((struct IORequest *)tr);
|
||||
|
||||
@@ -133,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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amiga_rexxvars.c,v 1.6 2005-03-18 12:38:21 obarthel Exp $
|
||||
* $Id: amiga_rexxvars.c,v 1.3 2005-01-09 10:10:40 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -34,20 +34,12 @@
|
||||
/* We don't want to pull in <clib/alib_protos.h> */
|
||||
#define CLIB_ALIB_PROTOS_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_HEADERS_H
|
||||
#include "stdlib_headers.h"
|
||||
#endif /* _STDLIB_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_CONSTRUCTOR_H
|
||||
#include "stdlib_constructor.h"
|
||||
#endif /* _STDLIB_CONSTRUCTOR_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <rexx/rxslib.h>
|
||||
#include <rexx/errors.h>
|
||||
|
||||
@@ -68,7 +60,7 @@ static struct RexxSysIFace * IRexxSys;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
CLIB_CONSTRUCTOR(rexxvars_init)
|
||||
CLIB_CONSTRUCTOR(__rexxvars_init)
|
||||
{
|
||||
ENTER();
|
||||
|
||||
@@ -88,14 +80,12 @@ CLIB_CONSTRUCTOR(rexxvars_init)
|
||||
}
|
||||
#endif /* __amigaos4__ */
|
||||
|
||||
LEAVE();
|
||||
|
||||
CONSTRUCTOR_SUCCEED();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
CLIB_DESTRUCTOR(rexxvars_exit)
|
||||
CLIB_DESTRUCTOR(__rexxvars_exit)
|
||||
{
|
||||
ENTER();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
; Simple release archive build script for Amiga systems.
|
||||
|
||||
; Set the name of the archive and the directory the
|
||||
; files go into
|
||||
set dir_name clib2-1.`type c.lib_rev.rev`
|
||||
|
||||
; Start with a clean slate
|
||||
delete all quiet ram:$dir_name
|
||||
|
||||
; Create the directory, copy all the libraries, header files
|
||||
; and release note files inside.
|
||||
makedir ram:$dir_name
|
||||
copy lib ram:${dir_name}/lib all clone quiet
|
||||
copy include ram:${dir_name}/include all clone quiet
|
||||
copy changes ram:$dir_name clone
|
||||
|
||||
; Delete the CVS data from the include directory
|
||||
delete ram:${dir_name}/include/CVS ram:${dir_name}/include/sys/CVS ram:${dir_name}/include/arpa/CVS ram:${dir_name}/include/netinet/CVS all quiet
|
||||
|
||||
; Finally, create an lha archive in RAM:
|
||||
pushcd ram:
|
||||
lha -r -x -a a ${dir_name}-gcc-68k.lha ${dir_name}
|
||||
popcd
|
||||
|
||||
; Move the archive back to this directory
|
||||
copy ram:${dir_name}-gcc-68k.lha "" clone
|
||||
|
||||
; Clean up...
|
||||
delete ram:$dir_name all quiet
|
||||
unset dir_name
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Simple release archive build script for Unix systems.
|
||||
# I typically build the library with a cross compiler.
|
||||
|
||||
# Set the name of the archive and the directory the
|
||||
# files go into
|
||||
export dir_name=clib2-1.`cat c.lib_rev.rev`
|
||||
|
||||
# Start with a clean slate
|
||||
rm -rf $dir_name
|
||||
|
||||
# Create the directory, copy all the libraries, header files
|
||||
# and release note files inside.
|
||||
mkdir $dir_name
|
||||
cp -a lib $dir_name
|
||||
cp -a lib.threadsafe $dir_name
|
||||
cp -a include $dir_name
|
||||
cp changes $dir_name
|
||||
|
||||
# Delete the CVS data from the include directory
|
||||
rm -rf ${dir_name}/include/CVS ${dir_name}/include/sys/CVS ${dir_name}/include/arpa/CVS ${dir_name}/include/netinet/CVS
|
||||
|
||||
# Finally, create an lha type 5 archive; the Amiga LhA port
|
||||
# can unpack it.
|
||||
lha ao5q ${dir_name}-gcc-os4.lha ${dir_name}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#define VERSION 1
|
||||
#define REVISION 197
|
||||
#define DATE "4.11.2005"
|
||||
#define VERS "c.lib 1.197"
|
||||
#define VSTRING "c.lib 1.197 (4.11.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: c.lib 1.197 (4.11.2005)"
|
||||
#define REVISION 187
|
||||
#define DATE "29.1.2005"
|
||||
#define VERS "c.lib 1.187"
|
||||
#define VSTRING "c.lib 1.187 (29.1.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: c.lib 1.187 (29.1.2005)"
|
||||
|
||||
@@ -1 +1 @@
|
||||
197
|
||||
187
|
||||
|
||||
781
library/changes
781
library/changes
@@ -1,784 +1,3 @@
|
||||
c.lib 1.197 (4.11.2005)
|
||||
|
||||
- Updated math_hypot.c to a newer (e_hypot.c 1.3 95/01/18) version from
|
||||
fdlibm which uses macros for manipulating the high and low words of a
|
||||
double, like the rest of fdlibm functions in clib2. The previous version
|
||||
would give bogus results when compiled with -O3 in clib2 which lead to
|
||||
"interesting" results (and lots of fun while searching for the problem)
|
||||
in Ghostscript. Wish I managed to track this down yesterday for 1.196
|
||||
release... <aantonijevic>
|
||||
|
||||
- Implemented atanh() and atanhf() which were not listed in the TODO
|
||||
file but were still unimplemented up until now.
|
||||
|
||||
- Replaced ldexp() and modf().
|
||||
|
||||
- Added __set_h_errno() and __get_h_errno() functions.
|
||||
|
||||
- The thread-safe library now tries to enable bsdsocket.library base
|
||||
sharing and attempts to make the TCP/IP stack call the local
|
||||
__set_errno() and __set_h_errno(), so that any Process calling
|
||||
the library functions will get a chance to see proper error
|
||||
codes. Whether any of these features could be enabled can be tested
|
||||
through two global variables __can_share_socket_library_base and
|
||||
__thread_safe_errno_h_errno which are defined in <dos.h>. Note that
|
||||
for both features to work you will need the Roadshow bsdsocket.library
|
||||
version 4.275 or higher.
|
||||
|
||||
- In <stdbool.h> the preprocessor definition should read
|
||||
"__bool_true_false_are_defined" rather than "__bool_true_and_false_are_defined".
|
||||
Thanks go to Peter Bengtsson for finding and fixing it.
|
||||
|
||||
- The network startup code no longer checks for the presence of a possible
|
||||
daemon startup message by default. You now have to enable this feature
|
||||
by declaring a global variable called "__check_daemon_startup" which is
|
||||
described in <dos.h>.
|
||||
|
||||
- Moved the code which rebinds the standard I/O streams to the server
|
||||
socket into a separate function which can be overridden by user code.
|
||||
|
||||
- Updated the new __obtain_daemon_message() function to call a
|
||||
bsdsocket.library API function to determine if what appears to be
|
||||
a valid daemon startup message is sound.
|
||||
|
||||
- Replaced the OS4 specific build makefile with an updated version
|
||||
prepared by Steven Solie. Thank you very much!
|
||||
|
||||
|
||||
c.lib 1.196 (11.10.2005)
|
||||
|
||||
- Removed the various workarounds associated with <unistd.h>, required
|
||||
for building code that references the networking API. It is now possible,
|
||||
provided you build your code with an existing TCP/IP API header file
|
||||
set (such as from the "Roadshow" SDK) without running into data type
|
||||
or function prototype declaration conflicts. I have added local versions
|
||||
of <arpa/inet.h>, <netinet/in.h>, <netdb.h>, <sys/filio.h>, <sys/ioccom.h>,
|
||||
<sys/ioctl.h>, <sys/select.h> and <sys/socket.h> and updated <unistd.h>,
|
||||
<pwd.h> and <grp.h> accordingly. Note that some of the function prototypes
|
||||
will conflict with the bsdsocket.library/usergroup.library API, which is
|
||||
why you can disable the declarations through the __NO_NET_API preprocessor
|
||||
symbol: if defined, none of the function prototypes will be defined.
|
||||
|
||||
- Implemented lrintf(), lrint(), lroundf(), lround(), nearbyintf(),
|
||||
nearbyint(), remquof(), remquo(), roundf(), round(), tgammaf(),
|
||||
tgamma(), truncf(), trunc(). Sort of implemented fmaf() and fma(),
|
||||
which really ought to be done in "SIMD" fashion.
|
||||
|
||||
This completes the "real" floating point math library (ignoring
|
||||
for a moment that the floating point environment code is still
|
||||
not implemented).
|
||||
|
||||
- accept() now calls the bsdsocket.library accept() function first
|
||||
and then hooks up the socket with the clib2 data structures. This
|
||||
makes it possible to have several Processes calling the accept()
|
||||
stub at the same time.
|
||||
|
||||
- When the main() function returns directly or indirectly by way of
|
||||
calling exit(), the IoErr() value set at this time will now be
|
||||
preserved until the program really returns control to the shell.
|
||||
This turned out to be easier to implement than I had originally
|
||||
thought, thanks to the fact that the atexit() functions are all
|
||||
invoked straight after the exit() call.
|
||||
|
||||
- strtoimax(), strtoumax(), strtod(), strtof(), strtol(), strtoll(),
|
||||
strtoul() and strtoull() now count how many digits were converted.
|
||||
If that number is zero, then the conversion is considered to have
|
||||
failed: 0 is returned and the 'ptr' parameter reference is initialized
|
||||
with a pointer to the string to be converted. This has two consequences:
|
||||
|
||||
1) A floating point number that has no digits in the significand
|
||||
is no longer converted to zero. For example ".e10" can no longer
|
||||
result in a successful conversion.
|
||||
|
||||
2) You can detect if a conversion is successful by comparing pointers
|
||||
after the conversion function has returned:
|
||||
|
||||
char * str;
|
||||
char * ptr;
|
||||
long n;
|
||||
|
||||
n = strtol(str,&ptr,10);
|
||||
if(n == 0 && str == ptr)
|
||||
printf("conversion has failed");
|
||||
|
||||
- Following detection of a stack overflow, the startup code eventually
|
||||
called _exit(). It should have called exit() instead.
|
||||
|
||||
- tmpnam() wrote more than L_tmpnam bytes to the name buffer. Also, the
|
||||
TMP_MAX value was off by one.
|
||||
|
||||
|
||||
c.lib 1.195 (3.9.2005)
|
||||
|
||||
- In __time_delay() the CheckIO() test was wrong and should have
|
||||
tested for a request still in progress. Fixed.
|
||||
|
||||
- Modified select() to support plain files, too. The new code now
|
||||
compares the current file position against the current file size,
|
||||
if that file is on a file system, or simply checks if there is
|
||||
any data in the file (which works for the default PIPE: device).
|
||||
|
||||
- The raw file descriptor structure member fd_Position is now
|
||||
always updated, regardless of whether the file supports random
|
||||
access or not.
|
||||
|
||||
- The wildcard escape character used in __wildcard_expand_init() was
|
||||
wrong. It should have been "'" but it was "`". Fixed.
|
||||
|
||||
- The startup code now references the linker symbol generated for
|
||||
the user-supplied main() function.
|
||||
|
||||
- log(+/-0), logb(+/-0), log10(+/-0) now return -infinity.
|
||||
|
||||
- getcwd() now considers a buffer size of 0 an error, and it sets
|
||||
the errno code to ERANGE if the buffer is too small.
|
||||
|
||||
- With Unix path semantics enabled, rename() now fails if either
|
||||
the old or the new name are empty strings. Same thing for
|
||||
opendir(), utime(), unlink(), chown(), link(), readlink(),
|
||||
realpath(), chdir(), access(), stat(), rmdir(), lstat(),
|
||||
chmod(), statfs() and open()/fopen().
|
||||
|
||||
- Fixed several issues with the formatted output of strftime()
|
||||
for the "C" locale: "%p" could return " PM", "%c" is now
|
||||
equivalent to "%a %b %e %T %Y", "%x" is equivalent to "%m/%d/%y"
|
||||
and "%X" is now equivalent to "%T".
|
||||
|
||||
- The 68020/030/040/060 versions of the library now include the
|
||||
64 bit integer conversion code. The plain 68000 version does not.
|
||||
|
||||
- The 64 bit integer conversion code used in by the scanf() family
|
||||
was broken due to a misplaced overflow check, which had the cruel
|
||||
effect of triggering for 32 bit integers as well. Fixed.
|
||||
|
||||
- DoTimer() did not allocate the local MsgPort correctly. Fixed.
|
||||
|
||||
|
||||
c.lib 1.194 (15.7.2005)
|
||||
|
||||
- Added getopt_long to libunix.a <tfrieden>
|
||||
|
||||
- Added new libprofile.a which implements gprof gmon.out output <tfrieden>
|
||||
|
||||
- Added the function profil() to libc.a <tfrieden>
|
||||
|
||||
- Added ftello() and fseeko() which both merely call the equivalent (at
|
||||
least for clib2) ftell() and fseek() functions, respectively.
|
||||
|
||||
- statfs() never stated that a disk was mounted for read-only access
|
||||
because the wrong InfoData structure member was tested. Fixed.
|
||||
|
||||
- lstat would overwrite the name parameter via ReadLink(..., name, ...)
|
||||
instead of ReadLink(..., new_name, ...) <tfrieden>
|
||||
|
||||
- Implemented exp2()/exp2f() and log2()/log2f() as suggested by
|
||||
Henning Nielsen Lund. Thank you very much!
|
||||
|
||||
- The pattern matching code which expands command line arguments, as part
|
||||
of libunix.a, now translates the "*" wildcard into "#?" unless you prefix
|
||||
it with a backtick ("'"), which is the wildcard pattern escape character
|
||||
used on AmigaOS.
|
||||
|
||||
- Repaired the pattern matching code which expands command line arguments:
|
||||
it no longer requires that any parameters are quoted and it is automatically
|
||||
enabled if you link against libunix.a, without libc.a standing a chance to
|
||||
accidentally override it.
|
||||
|
||||
- Fixed a bug in vfprintf that would surface when the buffer was enlarged
|
||||
if the pattern was too large to fit the static internal buffer <tfrieden>
|
||||
|
||||
- Added file system names to statfs <tfrieden>
|
||||
|
||||
- Moved all the constructor code out of "stdlib_init_exit.c" and into the
|
||||
files which initialize global data, such as the new "stdlib_program_name.c"
|
||||
and "stdlib_malloc.c".
|
||||
|
||||
- Until I can find a way to invoke it from within the library, the
|
||||
__machine_test() function is no longer invoked.
|
||||
|
||||
- Tagged global data with NOCOMMON attributes.
|
||||
|
||||
- Added the __lib_init() and __lib_exit() functions, which are part of the
|
||||
thread-safe library and which can be used to hook up clib2 with standard
|
||||
Amiga shared library/device code. Some documentation on how to use them
|
||||
can be found in the <dos.h> header file.
|
||||
|
||||
- Added a complete shared library skeleton example to demonstrate how the
|
||||
clib2 shared library initialization/cleanup functions should be used.
|
||||
This is a dual-build library which will both work with the plain 68k
|
||||
AmigaOS and the PowerPC native AmigaOS4. The example source code can be
|
||||
found in the "skeleton_library" subdirectory.
|
||||
|
||||
- The thread-safe version of isatty() should now work for stdio
|
||||
file descriptors, too.
|
||||
|
||||
- Retrofitted thread-safety into the termios code.
|
||||
|
||||
- The socket/usergroup API function and data type definitions that used to
|
||||
be defined in <unistd.h> have been moved into a separate header file
|
||||
<sys/clib2_net.h> which, for backwards compatibility, can be include
|
||||
from within <unistd.h> if the preprocessor symbol __USE_CLIB2_NETLIB
|
||||
is defined early on. Eventually, <sys/clib2_net.h> should be removed
|
||||
from the general header files and become a local library build header
|
||||
file altogether. Note that in this case you would have to build your
|
||||
own software using common TCP/IP SDK header files.
|
||||
|
||||
- <sys/types.h> now also includes <time.h> and <stddef.h>.
|
||||
|
||||
|
||||
c.lib 1.193 (4.6.2005)
|
||||
|
||||
- fpclassify() now returns FP_ZERO both for 0 and -0.
|
||||
|
||||
- nan() and nanf() now return quiet NaNs.
|
||||
|
||||
- Added internal __inf() and __inff() functions.
|
||||
|
||||
- strtof() now calls nanf() and __inff(), respectively, to produce
|
||||
the special floating point values for nan/inf/infinity.
|
||||
|
||||
- strtod() now calls nan() and __inf(), respectively, to produce
|
||||
the special floating point values for nan/inf/infinity.
|
||||
|
||||
- The scanf() family now calls nan() and __inf(), respectively, to
|
||||
produce the special floating point values for nan/inf/infinity.
|
||||
|
||||
- Added %D, %e, %F, %g, %G and %h for strftime(); repaired %I.
|
||||
|
||||
- Documented __strip_double_slash() and plugged in a memmove()
|
||||
in place of the copying loop.
|
||||
|
||||
- Modified __translate_unix_to_amiga_path_name() and
|
||||
__translate_amiga_to_unix_path_name() to not to call strlen()
|
||||
on the results of __strip_double_slash().
|
||||
|
||||
- For %C strtime() should return the century number, not the
|
||||
year number mod 100.
|
||||
|
||||
- The record locking code in fcntl() is no longer part of the
|
||||
regular libc.a, but only of libunix.a.
|
||||
|
||||
- Changed the definition of the D_S() macro to cast the pointer
|
||||
address to an unsigned 32 bit integer.
|
||||
|
||||
- Modified the locale-aware isalnum(), isalpha(), iscntrl(),
|
||||
isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(),
|
||||
isupper(), isxdigit(), tolower() and toupper() functions
|
||||
to clamp the input parameter to the "unsigned char" range before
|
||||
it is submitted to the respective locale.library function. This
|
||||
should be in sync with what the specs demand, which state that
|
||||
if the input parameter is neither EOF nor in the range of an
|
||||
"unsigned char" variable, then the results are undefined.
|
||||
|
||||
- ungetc() now returns the input character, clamped to an unsigned
|
||||
char value, upon success. Previously, if the input parameter was
|
||||
negative and not EOF, the result was identical to the input, which
|
||||
could have had negative side-effects.
|
||||
|
||||
- Added NAN, INFINITY, FLT_EVAL_METHOD, float_t and double_t to
|
||||
<math.h> (C99).
|
||||
|
||||
- Added skeleton code for acosf(), acosh(), acoshf(), asinf(), asinh(),
|
||||
asinhf(), atan2f(), atanf(), atanh(), atanhf(), cbrt(), cbrtf(),
|
||||
ceilf(), cosf(), coshf(), erf(), erfc(), erfcf(), erff(),
|
||||
exp2(), exp2f(), expf(), expm1(), expm1f(), fdim(), fdimf(),
|
||||
floorf(), fma(), fmaf(), fmax(), fmaxf(), fmin(), fminf(),
|
||||
fmodf(), frexpf(), hypotf(), ilogb(), ilogbf(), ldexpf(), lgamma(),
|
||||
lgammaf(), log10f(), log1p(), log1pf(), log2(), log2f(), logbf(),
|
||||
logf(), lrint(), lrintf(), lround(), lroundf(), modff(), nearbyint(),
|
||||
nearbyintf(), powf(), remainder(), remainderf(), remquo(), remquof(), round(),
|
||||
roundf(), scalbn(), scalbnf(), sinf(), sinhf(), sqrtf(), tanf(),
|
||||
tanhf(), tgamma(), tgammaf(), trunc() and truncf(), to be filled in
|
||||
later...
|
||||
|
||||
- Implemented fmin()/fminf(), fmax()/fmaxf(), fdim()/fdimf() for C99.
|
||||
|
||||
- Ported acosf(), asinf(), atan2f(), atanf(), ceilf(), expf(), floorf(),
|
||||
fmodf(), frexpf(), ldexpf(), log10f(), logbf(), logf(), modff(), powf(), sqrtf(),
|
||||
scalbn() and scalbnf() for C99.
|
||||
|
||||
- Ported cbrt(), cbrtf(), erf(), erff(), erfc(), erfcf(), expm1(),
|
||||
expm1f(), ilogb(), ilogbf(), log1p() and log1pf() for C99.
|
||||
|
||||
- Ported cosf(), coshf(), sinf(), sinhf(), tanf(), tanhf()
|
||||
and hypotf() for C99.
|
||||
|
||||
- Ported acosh(), acoshf(), asinh(), asinhf(), lgamma(), lgammaf(),
|
||||
remainder() and remainderf() for C99.
|
||||
|
||||
- The scanf() family now supports character ranges for the %[
|
||||
conversion. Note that this is a non-standard feature!
|
||||
|
||||
- Integrated Peter Bengtsson's termios code. Thank you very much! I chose
|
||||
to add it to libunix.a rather than keeping it in a separate libtermios.a
|
||||
library.
|
||||
|
||||
|
||||
c.lib 1.192 (12.5.2005)
|
||||
|
||||
- Changed how errors are detected, as returned by Write(), Read() and
|
||||
Seek(). Seek() is particularly challenging because the value it
|
||||
returns might be a valid file position and not an error.
|
||||
|
||||
- Replaced numeric function return codes of 0 and -1 with macros OK,
|
||||
SEEK_ERROR/ERROR to clarify the respective purposes.
|
||||
|
||||
- Changed how ftell() and fseek() are used, double-checking the return
|
||||
value and the errno code.
|
||||
|
||||
- The record locking semaphore could wind up getting added to the public
|
||||
list twice. Fixed.
|
||||
|
||||
- Fixed two linker errors which were caused by duplicate symbol definitions.
|
||||
|
||||
- Added code to the startup routine which allows you to monitor where a command
|
||||
was started from and which parameters it was invoked with.
|
||||
|
||||
- If fread()/fwrite() fail to read/write any data because either the number
|
||||
of records or the size of each record is zero, both now call clearerr() to
|
||||
avoid giving the caller the wrong impression that an EOF or error occured.
|
||||
|
||||
- The libunix.a flavour of system() no longer attempts to translate the name
|
||||
of a command unless it contains path separator characters.
|
||||
|
||||
- Added strtof(), llabs(), lldiv(), vsscanf() and vscanf() for C99.
|
||||
|
||||
- strftime() now supports %C, %n, %r, %R, %t, %T, %u, %V, and %z for C99.
|
||||
And it ignores the E and O modifiers.
|
||||
|
||||
- The printf() family now supports the %hh, %j, %t and %z modifiers and the
|
||||
%a/%A conversions for C99. The %j is treated like %ll; %t and %z are treated
|
||||
like %l. Also, the "infinity"/"not a number" signals now come out as the
|
||||
strings "inf" and "nan".
|
||||
|
||||
- Added HUGE_VALF to <math.h>.
|
||||
|
||||
- For the printf() "%a" conversion the exponent now comes out as a binary
|
||||
number rather than a decimal one. Now how odd is that?
|
||||
|
||||
- strtod() and strtof() now support "inf"/"infinity"/"nan"/"nan(..)" and
|
||||
hexadecimal floating point numbers, for C99.
|
||||
|
||||
- Added the fpclassify(), isfinite(), isnormal() and signbit() macros for C99.
|
||||
|
||||
- Reimplemented isnan() and isinf() as macros for C99. The corresponding
|
||||
functions will be dropped from the library. Note that the isinf() macro
|
||||
does not return -1, 0 or 1 like the old function did, but only 0 or 1
|
||||
depending upon whether the parameter represents +/- infinity or not.
|
||||
|
||||
- Added fabsf() for C99.
|
||||
|
||||
- The scanf() family now supports the %hh, %j, %t and %z modifiers and the
|
||||
%a/%A conversions for C99. The %j is treated like %ll; %t and %z are treated
|
||||
like %l. Also, the "inf"/"infinity"/"nan"/"nan()" keywords are processed.
|
||||
|
||||
- The strftime() %z conversion now prints the time zone difference as a
|
||||
"decimal" number. That is, if the difference is 5 hours and 30 minutes,
|
||||
then %z will now print "530" rather than "330".
|
||||
|
||||
- mktime() now handles one leap second gracefully.
|
||||
|
||||
- Added isblank().
|
||||
|
||||
- Added isunordered(), isgreater(), isgreaterequal(), isless(),
|
||||
islessequal() and islessgreater() to <math.h> for C99.
|
||||
|
||||
- The wchar_t type is now an 'unsigned short' integer (16 bits wide).
|
||||
|
||||
- Added PTRDIFF_MIN/PTRDIFF_MAX, WCHAR_MIN/WCHAR_MAX and
|
||||
WINT_MIN/WINT_MAX to <stdint.h> for C99.
|
||||
|
||||
- Added imaxdiv() and imaxabs() for C99.
|
||||
|
||||
- Added strtoimax() and strtoumax() for C99.
|
||||
|
||||
- Added nextafter() and nextafterf() for C99.
|
||||
|
||||
- Added copysign() and copysignf() for C99.
|
||||
|
||||
- Unless I missed something, clib2 should now be functionally complete
|
||||
with regard to C99, except for the floating point operations covered.
|
||||
These are a major challenge all by themselves, and I wonder both
|
||||
whether they are worth the effort and how one could implement them
|
||||
correctly.
|
||||
|
||||
- fflush() now consistently supports a NULL parameter, causing all
|
||||
streams to be flushed for which this behaviour is defined.
|
||||
|
||||
- The printf() family can now produce output for floating point
|
||||
numbers with more than about 77 characters, provided sufficient
|
||||
memory is available. C99 calls for a minimum of 4095 characters,
|
||||
but we're trying to allocate the space required dynamically.
|
||||
|
||||
|
||||
c.lib 1.191 (9.4.2005)
|
||||
|
||||
- The name of the public record locking semaphore has to be preallocated
|
||||
for OS4 if the AllocSysObject() function is used to create it.
|
||||
|
||||
- Moved the signal block mask and the signal function table out of
|
||||
signal_data.c and into signal_raise.c where they are actually used.
|
||||
This makes it possible to override the default definition of the
|
||||
__check_abort_enabled variable in your own programs.
|
||||
|
||||
- raise() no longer resets the signal handler before it invokes the one
|
||||
currently configured. It merely blocks the delivery of the respective
|
||||
signal to prevent recursion.
|
||||
|
||||
- raise() now drops into abort() if a signal handler is set to
|
||||
SIG_DFL. The exception is in SIGINT delivery, which has the
|
||||
effect of printing a different termination message but otherwise
|
||||
program flow takes the same path as abort().
|
||||
|
||||
- Moved the __UtilityBase/__IUtility variable declarations into
|
||||
a separate file.
|
||||
|
||||
- Simplified the library/open close code in "stdlib_main.c".
|
||||
|
||||
- File descriptors produced by dup() or dup2() now work exactly like
|
||||
the original file descriptors they are duplicates of. I modified the
|
||||
function which maps file descriptor numbers to file descriptor
|
||||
table entries to return the table entries of the original files.
|
||||
|
||||
- In the thread-safe library, duplicated stdin/stdout/stderr
|
||||
descriptors now work like the "real" ones. This is true even if
|
||||
the "real" ones were closed and only their former aliases remain.
|
||||
|
||||
- Invoking fstat() on what maps to a con-handler stream now produces
|
||||
information identifying it as a character special file.
|
||||
|
||||
- Added more code and changes contributed by Peter Bengtsson, thank you
|
||||
very much! This includes the following:
|
||||
|
||||
- Added SSIZE_MAX to <limits.h>.
|
||||
|
||||
- Added <sys/uio.h>, readv() and writev().
|
||||
|
||||
- Cut back the soft link resolution code in lstat().
|
||||
|
||||
- In <fcntl.h> O_NDELAY is now an alias for O_NONBLOCK.
|
||||
|
||||
- Added <complex.h>, carg(), cargf(), cargl(), cimag(), cimagf(),
|
||||
cimagl(), conj(), conjf(), conjl(), creal(), crealf() and creall().
|
||||
|
||||
Note that the C99 support for the complex floating point data
|
||||
types is limited to GCC 3.x for now.
|
||||
|
||||
- Added va_copy() to <stdarg.h>.
|
||||
|
||||
- Added _Exit() to <stdlib.h>.
|
||||
|
||||
- Added <stdbool.h>.
|
||||
|
||||
- Added vfscanf() to <stdio.h>.
|
||||
|
||||
- The stdio locking in fcntl() wasn't working correctly. Fixed.
|
||||
|
||||
- Made the clearerr(), feof() and ferror() macros thread-safe.
|
||||
|
||||
|
||||
c.lib 1.190 (25.3.2005)
|
||||
|
||||
- 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.
|
||||
|
||||
- Switched over the startup code and the library itself to use
|
||||
constructor/destructor functions for initialization and cleanup
|
||||
purposes.
|
||||
|
||||
- The destructor function invocation code no longer calls
|
||||
setjmp(). This is now done within stdlib_main.c prior to
|
||||
calling the destructor function invocation code.
|
||||
|
||||
- Fixed the SAS/C destructor function prototypes and verified
|
||||
that the constructors/destructors are called in the proper
|
||||
order, too.
|
||||
|
||||
- Aliases of file descriptors are now using the signal semaphore
|
||||
of the original file descriptor.
|
||||
|
||||
- close() did not return 0 if the file descriptor in question
|
||||
was really just an alias. Fixed.
|
||||
|
||||
- Added a feature which makes it possible to have several clients
|
||||
use the standard I/O streams (stdin/stdout/stderr) and have these
|
||||
referring to their process' Input()/Output()/ErrorOutput()
|
||||
streams. This is intended to support the upcoming shared
|
||||
library feature.
|
||||
|
||||
- Turns out that the 68k GCC port does not sort constructor and
|
||||
destructor functions in any way at all. I reimplemented the
|
||||
entire library constructor/destructor functionality to use the
|
||||
same approach as libnix.
|
||||
|
||||
- ftruncate() ended up changing the current file position, contrary
|
||||
to what it is supposed to do. Fixed.
|
||||
|
||||
- fcntl() did not work for sockets. Fixed.
|
||||
|
||||
- Reorganized the local header files, removing redundancies.
|
||||
|
||||
- Dropped unused stub code which is now redundant because of
|
||||
the constructor/destructor mechanism.
|
||||
|
||||
- Moved the call chain printing out of stdlib_main.c and into
|
||||
separate files.
|
||||
|
||||
- Removed some more redundant data from stdlib_main.c.
|
||||
|
||||
- Added the first "real" C99 function: _Exit() ;-)
|
||||
|
||||
- assertion failures early on during program initialization
|
||||
should no longer spell big trouble on account of the stdio
|
||||
data structures possibly not being in a well-defined and
|
||||
initialized state.
|
||||
|
||||
- Turns out that the constructor/destructor calling sequence
|
||||
was still wrongish for the OS4 library. So I had to change
|
||||
it *again*. Which probably means that the 68k library will
|
||||
need further changes...
|
||||
|
||||
- Moved stdlib_main.o into the regular libc.a, at least for
|
||||
the 68k build. The PowerPC build may follow later, provided
|
||||
I manage to get the specs file fixed. Actually, stdlib_main.o
|
||||
is in the libc.a library already. Now about that specs file...
|
||||
|
||||
- Moved the check for the presence of an FPU into the
|
||||
math_init.c code. I am far from certain whether this will
|
||||
have the desired effect, though. Due to how the GNU ld linker
|
||||
works, libraries are scanned once only. And the FPU check will
|
||||
be pulled in only if something references the HUGE_VAL
|
||||
constant.
|
||||
|
||||
- Activated the dormant thread-safe standard input/output/error
|
||||
handling code.
|
||||
|
||||
- Small fixes to fcntl() and select() to cover the thread-safe
|
||||
fd->fd_DefaultFile == ZERO case.
|
||||
|
||||
|
||||
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' 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.
|
||||
|
||||
- Simplified the code in "time_asctime_r.c" which builds the time
|
||||
string. It gracefully handles buffer sizes which are too short
|
||||
by returning an empty string.
|
||||
|
||||
- Moved the "tm->tm_wday" initialization out of the hook function
|
||||
in "time_strftime.c" since it was to be called only once anyway.
|
||||
|
||||
- Lost a few compiler warnings in "unistd_time_delay.c" and
|
||||
"time_gettimeofday.c".
|
||||
|
||||
- Folded duplicate code in "time_mktime.c"; also, errno is no longer
|
||||
modified unless the library is built with the "CHECK_FOR_NULL_POINTERS"
|
||||
option.
|
||||
|
||||
- We now allocate the AnchorPath used in the unistd_wildcard_expand.c
|
||||
code. Also, the contents of the AnchorPath structure are no longer
|
||||
modified between calls. MatchEnd() has to be sufficient.
|
||||
|
||||
- Moved redundant code out of the readdir()/opendir()/closedir()
|
||||
functions which is not required unless the code is built for
|
||||
Unix compatibility mode.
|
||||
|
||||
- Lost the __not_a_number and __infinity variables, including the
|
||||
code which initialized them.
|
||||
|
||||
- Reading/changing the errno variable is no longer done directly, but
|
||||
involves accessor functions.
|
||||
|
||||
- References to the HUGE_VAL quantity now involve an accessor function, too.
|
||||
|
||||
- Changed the manner in which the __huge_val constant is initialized by
|
||||
the __math_init() function. The new approach should be more portable.
|
||||
|
||||
- The library no longer sends ACTION_DISK_INFO packets to the console
|
||||
handler. The side-effects were too varied and irritating after all.
|
||||
|
||||
- Added the fsync() and fdatasync() functions and the <stdint.h> and
|
||||
<inttypes.h> header files contributed by Peter Bengtsson. Thank
|
||||
you very much!
|
||||
|
||||
- Tweaked the build makefiles to produce fewer meaningless warnings.
|
||||
|
||||
|
||||
c.lib 1.187 (29.1.2005)
|
||||
|
||||
- The default console output window opened when a program is launched
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_carg.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double
|
||||
carg(double complex z)
|
||||
{
|
||||
return(atan2(IMAG(z),REAL(z)));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_cargf.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
float
|
||||
cargf(float complex z)
|
||||
{
|
||||
return(atan2(IMAG(z),REAL(z))); /* ZZZ this really needs to call ata2f(). */
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_cargl.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
long double
|
||||
cargl(long double complex z)
|
||||
{
|
||||
return(atan2(IMAG(z),REAL(z))); /* ZZZ this really needs to call atan2l(). */
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_cimag.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double
|
||||
cimag(double complex z)
|
||||
{
|
||||
return(IMAG(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_cimagf.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
float
|
||||
cimagf(float complex z)
|
||||
{
|
||||
return(IMAG(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_conj.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double complex
|
||||
conj(double complex z)
|
||||
{
|
||||
return(CONJ(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_conjf.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
float complex
|
||||
conjf(float complex z)
|
||||
{
|
||||
return(CONJ(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_conjl.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
long double complex
|
||||
conjl(long double complex z)
|
||||
{
|
||||
return(CONJ(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_creal.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double
|
||||
creal(double complex z)
|
||||
{
|
||||
return(REAL(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_crealf.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
float
|
||||
crealf(float complex z)
|
||||
{
|
||||
return(REAL(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_creall.c,v 1.1 2005-04-03 10:22:47 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 _COMPLEX_HEADERS_H
|
||||
#include "complex_headers.h"
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(COMPLEX_SUPPORT)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
long double
|
||||
creall(long double complex z)
|
||||
{
|
||||
return(REAL(z));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* COMPLEX_SUPPORT */
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* $Id: complex_headers.h,v 1.3 2005-05-12 14:50:06 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 _COMPLEX_HEADERS_H
|
||||
#define _COMPLEX_HEADERS_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _MATH_FP_SUPPORT_H
|
||||
#include "math_fp_support.h"
|
||||
#endif /* _MATH_FP_SUPPORT_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(FLOATING_POINT_SUPPORT) && defined(__GNUC__) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define COMPLEX_SUPPORT
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define REAL(z) (__real__ (z))
|
||||
#define IMAG(z) (__imag__ (z))
|
||||
#define CONJ(z) (~(z))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* FLOATING_POINT_SUPPORT && __GNUC__ && __STDC_VERSION__ */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _COMPLEX_HEADERS_H */
|
||||
@@ -1,12 +1,11 @@
|
||||
//
|
||||
// $Id: crt0.S,v 1.6 2005-10-11 09:28:29 obarthel Exp $
|
||||
// $Id: crt0.S,v 1.2 2004-11-28 12:31:27 tfrieden Exp $
|
||||
//
|
||||
// :ts=4
|
||||
//
|
||||
|
||||
.text
|
||||
|
||||
.globl main /* This enforces linkage against the main() function */
|
||||
.globl _main
|
||||
.globl _start
|
||||
|
||||
@@ -26,3 +25,16 @@ _start:
|
||||
#endif
|
||||
|
||||
b _main
|
||||
|
||||
#if defined(BASEREL_DATA)
|
||||
.section .rodata
|
||||
|
||||
.globl __data_segment_descriptor
|
||||
__data_segment_descriptor:
|
||||
.long __data_start
|
||||
.long __data_end
|
||||
.long _DATA_BASE_
|
||||
|
||||
.section .dend, "wa", @nobits
|
||||
.space 4
|
||||
#endif
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
* $Id: crtbegin.c,v 1.10 2005-03-18 12:38:22 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>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef EXEC_TYPES_H
|
||||
#include <exec/types.h>
|
||||
#endif /* EXEC_TYPES_H */
|
||||
#include <stdlib.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -22,22 +25,108 @@
|
||||
* 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();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
@@ -45,16 +134,5 @@ _init(void)
|
||||
void
|
||||
_fini(void)
|
||||
{
|
||||
int num_dtors,i;
|
||||
static int j;
|
||||
|
||||
for(i = 1, num_dtors = 0 ; __DTOR_LIST__[i] != NULL ; i++)
|
||||
num_dtors++;
|
||||
|
||||
while(j++ < num_dtors)
|
||||
__DTOR_LIST__[j]();
|
||||
_do_dtors();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /*__amigaos4__ */
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_headers.h,v 1.5 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_headers.h,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -42,25 +42,18 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_LOCALEBASE_H
|
||||
#include "stdlib_localebase.h"
|
||||
#endif /* _STDLIB_LOCALEBASE_H */
|
||||
|
||||
#ifndef _STDLIB_UTILITYBASE_H
|
||||
#include "stdlib_utilitybase.h"
|
||||
#endif /* _STDLIB_UTILITYBASE_H */
|
||||
#ifndef _STDLIB_LOCALE_UTILITY_H
|
||||
#include "stdlib_locale_utility.h"
|
||||
#endif /* _STDLIB_LOCALE_UTILITY_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _MACROS_H
|
||||
#include "macros.h"
|
||||
#endif /* _MACROS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <locale.h>
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isalnum.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isalnum.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -49,26 +49,16 @@ isalnum(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsAlNum(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsAlNum(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = isalpha(c) || isdigit(c);
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isalpha.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isalpha.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,19 +47,11 @@ isalpha(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsAlpha(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsAlpha(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -67,7 +59,5 @@ isalpha(int c)
|
||||
('A' <= c && c <= 'Z'));
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id: ctype_isblank.c,v 1.2 2005-05-29 08:19:36 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 _CTYPE_HEADERS_H
|
||||
#include "ctype_headers.h"
|
||||
#endif /* _CTYPE_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#undef isblank
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int
|
||||
isblank(int c)
|
||||
{
|
||||
int result;
|
||||
|
||||
result = (c == '\t' || c == ' ');
|
||||
|
||||
return(result);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_iscntrl.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_iscntrl.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ iscntrl(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsCntrl(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsCntrl(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (('\0' <= c && c < ' ') || (c == 127));
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isdigit.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isdigit.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ isdigit(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsDigit(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsDigit(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ('0' <= c && c <= '9');
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isgraph.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isgraph.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ isgraph(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsGraph(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsGraph(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (' ' < c && c < 127);
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_islower.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_islower.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ islower(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsLower(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsLower(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ('a' <= c && c <= 'z');
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isprint.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isprint.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ isprint(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsPrint(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsPrint(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (' ' <= c && c <= '~');
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_ispunct.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_ispunct.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,19 +47,11 @@ ispunct(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsPunct(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsPunct(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -69,7 +61,5 @@ ispunct(int c)
|
||||
('{' <= c && c <= '~'));
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isspace.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isspace.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,19 +47,11 @@ isspace(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsSpace(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsSpace(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -71,7 +63,5 @@ isspace(int c)
|
||||
c == ' ');
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isupper.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isupper.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,26 +47,16 @@ isupper(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsUpper(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsUpper(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ('A' <= c && c <= 'Z');
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_isxdigit.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_isxdigit.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -47,19 +47,11 @@ isxdigit(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = IsXDigit(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = FALSE;
|
||||
result = IsXDigit(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -68,7 +60,5 @@ isxdigit(int c)
|
||||
('A' <= c && c <= 'F'));
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_tolower.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_tolower.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -43,26 +43,16 @@ tolower(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = ConvToLower(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = c;
|
||||
result = ConvToLower(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ('A' <= c && c <= 'Z') ? (c + ('a' - 'A')) : c;
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype_toupper.c,v 1.4 2005-05-29 09:56:09 obarthel Exp $
|
||||
* $Id: ctype_toupper.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -43,26 +43,16 @@ toupper(int c)
|
||||
DECLARE_LOCALEBASE();
|
||||
int result;
|
||||
|
||||
__locale_lock();
|
||||
|
||||
if(__locale_table[LC_CTYPE] != NULL)
|
||||
{
|
||||
assert( LocaleBase != NULL );
|
||||
|
||||
/* The parameter must be either EOF or in the range of an
|
||||
'unsigned char'. If it's not, then the behaviour is
|
||||
undefined. */
|
||||
if(c != EOF && ((0 <= c && c <= UCHAR_MAX) || ((c + 256) <= UCHAR_MAX)))
|
||||
result = ConvToUpper(__locale_table[LC_CTYPE],(ULONG)(c & 255));
|
||||
else
|
||||
result = c;
|
||||
result = ConvToUpper(__locale_table[LC_CTYPE],(ULONG)c);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ('a' <= c && c <= 'z') ? (c - ('a' - 'A')) : c;
|
||||
}
|
||||
|
||||
__locale_unlock();
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#define VERSION 1
|
||||
#define REVISION 197
|
||||
#define DATE "4.11.2005"
|
||||
#define VERS "debug.lib 1.197"
|
||||
#define VSTRING "debug.lib 1.197 (4.11.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: debug.lib 1.197 (4.11.2005)"
|
||||
#define REVISION 187
|
||||
#define DATE "29.1.2005"
|
||||
#define VERS "debug.lib 1.187"
|
||||
#define VSTRING "debug.lib 1.187 (29.1.2005)\r\n"
|
||||
#define VERSTAG "\0$VER: debug.lib 1.187 (29.1.2005)"
|
||||
|
||||
@@ -1 +1 @@
|
||||
197
|
||||
187
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: debug_headers.h,v 1.3 2005-03-18 12:38:22 obarthel Exp $
|
||||
* $Id: debug_headers.h,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -36,15 +36,14 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef EXEC_LIBRARIES_H
|
||||
#include <exec/libraries.h>
|
||||
#endif /* EXEC_LIBRARIES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__SASC)
|
||||
|
||||
#include <clib/exec_protos.h>
|
||||
/*#include <pragmas/exec_sysbase_pragmas.h>*/
|
||||
#include <pragmas/exec_pragmas.h>
|
||||
|
||||
LONG RawMayGetChar(VOID);
|
||||
@@ -58,11 +57,7 @@ VOID RawPutChar(UBYTE c);
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
|
||||
#ifndef EXEC_EMULATION_H
|
||||
#include <exec/emulation.h>
|
||||
#endif /* EXEC_EMULATION_H */
|
||||
|
||||
#endif /* __amigaos4__ */
|
||||
|
||||
/****************************************************************************/
|
||||
@@ -111,13 +106,11 @@ VOID RawPutChar(UBYTE c);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _MACROS_H
|
||||
#include "macros.h"
|
||||
#endif /* _MACROS_H */
|
||||
|
||||
#ifndef _DEBUG_H
|
||||
#include "debug.h"
|
||||
#endif /* _DEBUG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent_closedir.c,v 1.14 2005-07-03 10:36:46 obarthel Exp $
|
||||
* $Id: dirent_closedir.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -31,121 +31,28 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _STDLIB_MEM_DEBUG_H
|
||||
#include "stdlib_mem_debug.h"
|
||||
#endif /* _STDLIB_MEM_DEBUG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _DIRENT_HEADERS_H
|
||||
#include "dirent_headers.h"
|
||||
#endif /* _DIRENT_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_MEMORY_H
|
||||
#include "stdlib_memory.h"
|
||||
#endif /* _STDLIB_MEMORY_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_CONSTRUCTOR_H
|
||||
#include "stdlib_constructor.h"
|
||||
#endif /* _STDLIB_CONSTRUCTOR_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* 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:
|
||||
|
||||
SHOWVALUE(success);
|
||||
LEAVE();
|
||||
|
||||
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;
|
||||
int result = ERROR;
|
||||
struct Node * node;
|
||||
int result = -1;
|
||||
|
||||
ENTER();
|
||||
|
||||
@@ -154,11 +61,9 @@ closedir(DIR * directory_pointer)
|
||||
if(__check_abort_enabled)
|
||||
__check_abort();
|
||||
|
||||
__dirent_lock();
|
||||
|
||||
if(directory_pointer == NULL)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
errno = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -179,7 +84,7 @@ closedir(DIR * directory_pointer)
|
||||
|
||||
if(NOT directory_pointer_is_valid)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
errno = EBADF;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -189,14 +94,8 @@ closedir(DIR * directory_pointer)
|
||||
|
||||
Remove((struct Node *)dh);
|
||||
|
||||
#if defined(UNIX_PATH_SEMANTICS)
|
||||
{
|
||||
struct Node * node;
|
||||
|
||||
while((node = RemHead((struct List *)&dh->dh_VolumeList)) != NULL)
|
||||
free(node);
|
||||
}
|
||||
#endif /* UNIX_PATH_SEMANTICS */
|
||||
while((node = RemHead(&dh->dh_VolumeList)) != NULL)
|
||||
free(node);
|
||||
|
||||
PROFILE_OFF();
|
||||
UnLock(dh->dh_DirLock);
|
||||
@@ -204,12 +103,10 @@ closedir(DIR * directory_pointer)
|
||||
|
||||
free(dh);
|
||||
|
||||
result = OK;
|
||||
result = 0;
|
||||
|
||||
out:
|
||||
|
||||
__dirent_unlock();
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stdio_putchar_unlocked.c,v 1.2 2005-04-24 08:46:37 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 = EOF;
|
||||
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();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent_headers.h,v 1.8 2005-03-18 12:38:22 obarthel Exp $
|
||||
* $Id: dirent_headers.h,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -42,18 +42,6 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_HEADERS_H
|
||||
#include "stdlib_headers.h"
|
||||
#endif /* _STDLIB_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_PROFILE_H
|
||||
#include "stdlib_profile.h"
|
||||
#endif /* _STDLIB_PROFILE_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _MACROS_H
|
||||
#include "macros.h"
|
||||
#endif /* _MACROS_H */
|
||||
@@ -66,10 +54,9 @@ struct DirectoryHandle
|
||||
BPTR dh_DirLock;
|
||||
struct FileInfoBlock dh_FileInfo;
|
||||
struct dirent dh_DirectoryEntry;
|
||||
|
||||
int dh_Position;
|
||||
struct Node * dh_VolumeNode;
|
||||
struct MinList dh_VolumeList;
|
||||
struct List dh_VolumeList;
|
||||
BOOL dh_ScanVolumeList;
|
||||
};
|
||||
|
||||
@@ -79,26 +66,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 */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent_opendir.c,v 1.10 2005-08-26 12:39:33 obarthel Exp $
|
||||
* $Id: dirent_opendir.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -37,15 +37,15 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _DIRENT_HEADERS_H
|
||||
#include "dirent_headers.h"
|
||||
#endif /* _DIRENT_HEADERS_H */
|
||||
#ifndef _STDLIB_MEM_DEBUG_H
|
||||
#include "stdlib_mem_debug.h"
|
||||
#endif /* _STDLIB_MEM_DEBUG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_MEMORY_H
|
||||
#include "stdlib_memory.h"
|
||||
#endif /* _STDLIB_MEMORY_H */
|
||||
#ifndef _DIRENT_HEADERS_H
|
||||
#include "dirent_headers.h"
|
||||
#endif /* _DIRENT_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -105,7 +106,7 @@ opendir(const char * path_name)
|
||||
{
|
||||
SHOWMSG("invalid parameter");
|
||||
|
||||
__set_errno(EFAULT);
|
||||
errno = EFAULT;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -120,22 +121,12 @@ opendir(const char * path_name)
|
||||
|
||||
memset(dh,0,sizeof(*dh));
|
||||
|
||||
NewList(&dh->dh_VolumeList);
|
||||
|
||||
#if defined(UNIX_PATH_SEMANTICS)
|
||||
{
|
||||
struct Node * node;
|
||||
|
||||
NewList((struct List *)&dh->dh_VolumeList);
|
||||
|
||||
if(__unix_path_semantics)
|
||||
{
|
||||
if(path_name[0] == '\0')
|
||||
{
|
||||
SHOWMSG("no name given");
|
||||
|
||||
__set_errno(ENOENT);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if(__translate_unix_to_amiga_path_name(&path_name,&path_name_nti) != 0)
|
||||
goto out;
|
||||
|
||||
@@ -168,7 +159,7 @@ opendir(const char * path_name)
|
||||
{
|
||||
UnLockDosList(LDF_VOLUMES|LDF_READ);
|
||||
|
||||
__set_errno(ENOMEM);
|
||||
errno = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -181,7 +172,7 @@ opendir(const char * path_name)
|
||||
/* Check if the name is already on the list. Mind you,
|
||||
this is not the most sophisticated algorithm but then
|
||||
the number of volumes should be small. */
|
||||
if(find_by_name((struct List *)&dh->dh_VolumeList,node->ln_Name) != NULL)
|
||||
if(find_by_name(&dh->dh_VolumeList,node->ln_Name) != NULL)
|
||||
{
|
||||
free(node);
|
||||
continue;
|
||||
@@ -189,16 +180,16 @@ opendir(const char * path_name)
|
||||
|
||||
D(("adding '%s'",node->ln_Name));
|
||||
|
||||
AddTail((struct List *)&dh->dh_VolumeList,node);
|
||||
AddTail(&dh->dh_VolumeList,node);
|
||||
}
|
||||
}
|
||||
|
||||
UnLockDosList(LDF_VOLUMES|LDF_READ);
|
||||
|
||||
/* Bail out if we cannot present anything. */
|
||||
if(IsListEmpty((struct List *)&dh->dh_VolumeList))
|
||||
if(IsListEmpty(&dh->dh_VolumeList))
|
||||
{
|
||||
__set_errno(ENOMEM);
|
||||
errno = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -221,7 +212,7 @@ opendir(const char * path_name)
|
||||
{
|
||||
SHOWMSG("couldn't get a lock on it");
|
||||
|
||||
__set_errno(__translate_access_io_error_to_errno(IoErr()));
|
||||
__translate_access_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -235,7 +226,7 @@ opendir(const char * path_name)
|
||||
{
|
||||
SHOWMSG("couldn't examine it");
|
||||
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -243,7 +234,7 @@ opendir(const char * path_name)
|
||||
{
|
||||
SHOWMSG("this isn't a directory");
|
||||
|
||||
__set_errno(ENOTDIR);
|
||||
errno = ENOTDIR;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -252,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;
|
||||
|
||||
@@ -267,14 +254,8 @@ opendir(const char * path_name)
|
||||
{
|
||||
SHOWMSG("ouch. cleaning up");
|
||||
|
||||
#if defined(UNIX_PATH_SEMANTICS)
|
||||
{
|
||||
struct Node * node;
|
||||
|
||||
while((node = RemHead((struct List *)&dh->dh_VolumeList)) != NULL)
|
||||
free(node);
|
||||
}
|
||||
#endif /* UNIX_PATH_SEMANTICS */
|
||||
while((node = RemHead(&dh->dh_VolumeList)) != NULL)
|
||||
free(node);
|
||||
|
||||
PROFILE_OFF();
|
||||
UnLock(dh->dh_DirLock);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent_readdir.c,v 1.8 2005-10-27 08:58:41 obarthel Exp $
|
||||
* $Id: dirent_readdir.c,v 1.5 2005-01-09 15:58:02 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -61,7 +61,7 @@ readdir(DIR * directory_pointer)
|
||||
{
|
||||
SHOWMSG("ouch. invalid parameter");
|
||||
|
||||
__set_errno(EBADF);
|
||||
errno = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -93,10 +93,10 @@ readdir(DIR * directory_pointer)
|
||||
|
||||
assert( (((ULONG)name) & 3) == 0 );
|
||||
|
||||
if(dh->dh_VolumeNode == NULL && NOT IsListEmpty((struct List *)&dh->dh_VolumeList))
|
||||
dh->dh_VolumeNode = (struct Node *)dh->dh_VolumeList.mlh_Head;
|
||||
if(dh->dh_VolumeNode == NULL && NOT IsListEmpty(&dh->dh_VolumeList))
|
||||
dh->dh_VolumeNode = dh->dh_VolumeList.lh_Head;
|
||||
|
||||
strcpy((char *)name,"\1:"); /* BSTR for ":" */
|
||||
strcpy(name,"\1:"); /* BSTR for ":" */
|
||||
|
||||
while(result == NULL && dh->dh_VolumeNode != NULL && dh->dh_VolumeNode->ln_Succ != NULL)
|
||||
{
|
||||
@@ -164,7 +164,7 @@ readdir(DIR * directory_pointer)
|
||||
{
|
||||
if(CANNOT Examine(parent_directory,fib))
|
||||
{
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ readdir(DIR * directory_pointer)
|
||||
{
|
||||
SHOWMSG("error scanning directory");
|
||||
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent_rewinddir.c,v 1.4 2005-02-03 16:56:15 obarthel Exp $
|
||||
* $Id: dirent_rewinddir.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -76,7 +76,7 @@ rewinddir(DIR * directory_pointer)
|
||||
if(CANNOT Examine(dh->dh_DirLock,&dh->dh_FileInfo))
|
||||
{
|
||||
SHOWMSG("ouch. that didn't work");
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_close.c,v 1.12 2005-04-24 08:46:37 obarthel Exp $
|
||||
* $Id: fcntl_close.c,v 1.6 2005-01-14 08:36:54 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 = ERROR;
|
||||
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) );
|
||||
@@ -59,29 +66,123 @@ close(int file_descriptor)
|
||||
if(__check_abort_enabled)
|
||||
__check_abort();
|
||||
|
||||
/* We want to affect this very file descriptor and not the
|
||||
original one associated with an alias of it. */
|
||||
fd = __get_file_descriptor_dont_resolve(file_descriptor);
|
||||
fd = __get_file_descriptor(file_descriptor);
|
||||
if(fd == NULL)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
(*error_ptr) = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
fam.fam_Action = file_action_close;
|
||||
result = 0;
|
||||
|
||||
assert( fd->fd_Action != NULL );
|
||||
SHOWMSG("last customer; cleaning up");
|
||||
|
||||
if((*fd->fd_Action)(fd,&fam) < 0)
|
||||
if(fd->fd_Original != NULL) /* this is an alias */
|
||||
{
|
||||
__set_errno(fam.fam_Error);
|
||||
goto out;
|
||||
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;
|
||||
}
|
||||
|
||||
result = OK;
|
||||
/* 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) && FLAG_IS_CLEAR(fd->fd_Flags,FDF_DEFAULT_NON_BLOCKING)) ||
|
||||
(FLAG_IS_CLEAR(fd->fd_Flags,FDF_NON_BLOCKING) && FLAG_IS_SET(fd->fd_Flags,FDF_DEFAULT_NON_BLOCKING)))
|
||||
{
|
||||
SHOWMSG("resetting non-blocking access mode");
|
||||
|
||||
message.action = file_hook_action_set_blocking;
|
||||
message.arg = FLAG_IS_SET(fd->fd_Flags,FDF_NON_BLOCKING);
|
||||
|
||||
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;
|
||||
|
||||
ENTER();
|
||||
|
||||
result = __close(file_descriptor,&errno);
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_creat.c,v 1.5 2005-04-24 08:46:37 obarthel Exp $
|
||||
* $Id: fcntl_creat.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -50,7 +50,7 @@
|
||||
int
|
||||
creat(const char * path_name, mode_t mode)
|
||||
{
|
||||
int result = ERROR;
|
||||
int result = -1;
|
||||
|
||||
ENTER();
|
||||
|
||||
@@ -66,7 +66,7 @@ creat(const char * path_name, mode_t mode)
|
||||
{
|
||||
if(path_name == NULL)
|
||||
{
|
||||
__set_errno(EFAULT);
|
||||
errno = EFAULT;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_fcntl.c,v 1.18 2005-05-27 13:19:30 obarthel Exp $
|
||||
* $Id: fcntl_fcntl.c,v 1.5 2005-01-02 09:07:07 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 = ERROR;
|
||||
struct fd * fd = NULL;
|
||||
int result = -1;
|
||||
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) );
|
||||
@@ -67,116 +68,100 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
|
||||
if(__check_abort_enabled)
|
||||
__check_abort();
|
||||
|
||||
/* F_DUPFD will need to modify the file descriptor table, which is why
|
||||
the stdio lock needs to be obtained here, before the individual
|
||||
file descriptor lock is held. */
|
||||
if(cmd == F_DUPFD)
|
||||
__stdio_lock();
|
||||
|
||||
fd = __get_file_descriptor(file_descriptor);
|
||||
if(fd == NULL)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
errno = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
__fd_lock(fd);
|
||||
|
||||
switch(cmd)
|
||||
{
|
||||
#if defined(UNIX_PATH_SEMANTICS)
|
||||
case F_GETLK:
|
||||
case F_SETLK:
|
||||
case F_SETLKW:
|
||||
|
||||
SHOWMSG("cmd=F_GETLK/F_SETLK/F_SETLKW");
|
||||
|
||||
if(FLAG_IS_SET(fd->fd_Flags,FDF_IS_SOCKET))
|
||||
{
|
||||
__set_errno(EINVAL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if(fd->fd_DefaultFile == ZERO)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
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);
|
||||
errno = EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
if(l->l_whence < SEEK_SET || l->l_whence > SEEK_END)
|
||||
{
|
||||
SHOWMSG("invalid flock offset");
|
||||
va_end(arg);
|
||||
|
||||
__set_errno(EINVAL);
|
||||
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 = OK;
|
||||
assert( fd->fd_Hook != NULL );
|
||||
|
||||
CallHookPkt(fd->fd_Hook,fd,&message);
|
||||
|
||||
result = message.result;
|
||||
errno = message.error;
|
||||
|
||||
va_end(arg);
|
||||
|
||||
break;
|
||||
#endif /* UNIX_PATH_SEMANTICS */
|
||||
|
||||
case F_GETFL:
|
||||
|
||||
SHOWMSG("cmd=F_GETFL");
|
||||
|
||||
result = 0;
|
||||
|
||||
if(FLAG_IS_SET(fd->fd_Flags,FDF_NON_BLOCKING))
|
||||
SET_FLAG(result,O_NONBLOCK);
|
||||
|
||||
if(FLAG_IS_SET(fd->fd_Flags,FDF_ASYNC_IO))
|
||||
SET_FLAG(result,O_ASYNC);
|
||||
|
||||
result = OK;
|
||||
|
||||
break;
|
||||
|
||||
case F_SETFL:
|
||||
|
||||
SHOWMSG("cmd=F_SETFL");
|
||||
|
||||
/* If this is a file, make sure that we don't hit a zero file handle. */
|
||||
if(FLAG_IS_CLEAR(fd->fd_Flags,FDF_IS_SOCKET) && fd->fd_DefaultFile == ZERO)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
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);
|
||||
errno = message.error;
|
||||
|
||||
va_end(arg);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -189,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);
|
||||
errno = message.error;
|
||||
|
||||
va_end(arg);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -207,7 +196,7 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
|
||||
CLEAR_FLAG(fd->fd_Flags,FDF_ASYNC_IO);
|
||||
}
|
||||
|
||||
result = OK;
|
||||
va_end(arg);
|
||||
|
||||
break;
|
||||
|
||||
@@ -221,64 +210,66 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
|
||||
|
||||
if(fdbase < 0)
|
||||
{
|
||||
__set_errno(EINVAL);
|
||||
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;
|
||||
|
||||
errno = EMFILE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
SHOWMSG("something else");
|
||||
|
||||
__set_errno(ENOSYS);
|
||||
errno = ENOSYS;
|
||||
break;
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
__fd_unlock(fd);
|
||||
|
||||
if(cmd == F_DUPFD)
|
||||
__stdio_unlock();
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_get_default_file.c,v 1.4 2005-04-24 08:46:37 obarthel Exp $
|
||||
* $Id: fcntl_get_default_file.c,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -45,7 +45,7 @@ int
|
||||
__get_default_file(int file_descriptor,long * file_ptr)
|
||||
{
|
||||
struct fd * fd;
|
||||
int result = ERROR;
|
||||
int result = -1;
|
||||
|
||||
assert( file_descriptor >= 0 && file_descriptor < __num_fd );
|
||||
assert( __fd[file_descriptor] != NULL );
|
||||
@@ -55,7 +55,7 @@ __get_default_file(int file_descriptor,long * file_ptr)
|
||||
fd = __get_file_descriptor(file_descriptor);
|
||||
if(fd == NULL)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
errno = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_headers.h,v 1.4 2005-03-18 12:38:22 obarthel Exp $
|
||||
* $Id: fcntl_headers.h,v 1.2 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -42,16 +42,4 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_HEADERS_H
|
||||
#include "stdlib_headers.h"
|
||||
#endif /* _STDLIB_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_PROFILE_H
|
||||
#include "stdlib_profile.h"
|
||||
#endif /* _STDLIB_PROFILE_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _FCNTL_HEADERS_H */
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* $Id: fcntl_lock.c,v 1.3 2005-04-01 18:46:37 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 _STDIO_HEADERS_H
|
||||
#include "stdio_headers.h"
|
||||
#endif /* _STDIO_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__THREAD_SAFE)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void
|
||||
__fd_lock(struct fd * fd)
|
||||
{
|
||||
if(fd != NULL && fd->fd_Lock != NULL)
|
||||
ObtainSemaphore(fd->fd_Lock);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void
|
||||
__fd_unlock(struct fd * fd)
|
||||
{
|
||||
if(fd != NULL && fd->fd_Lock != NULL)
|
||||
ReleaseSemaphore(fd->fd_Lock);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* __THREAD_SAFE */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_lseek.c,v 1.10 2005-07-06 18:48:53 obarthel Exp $
|
||||
* $Id: fcntl_lseek.c,v 1.3 2005-01-02 09:07:07 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -42,12 +42,12 @@
|
||||
/****************************************************************************/
|
||||
|
||||
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;
|
||||
off_t result = SEEK_ERROR;
|
||||
struct fd * fd = NULL;
|
||||
off_t position;
|
||||
DECLARE_UTILITYBASE();
|
||||
struct file_hook_message message;
|
||||
off_t result = -1;
|
||||
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) );
|
||||
@@ -62,56 +65,61 @@ lseek(int file_descriptor, off_t offset, int mode)
|
||||
if(__check_abort_enabled)
|
||||
__check_abort();
|
||||
|
||||
__stdio_lock();
|
||||
|
||||
fd = __get_file_descriptor(file_descriptor);
|
||||
if(fd == NULL)
|
||||
{
|
||||
__set_errno(EBADF);
|
||||
(*error_ptr) = EBADF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
__fd_lock(fd);
|
||||
|
||||
if(mode < SEEK_SET || mode > SEEK_END)
|
||||
{
|
||||
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 );
|
||||
|
||||
/* Note that a return value of -1 (= SEEK_ERROR) may be a
|
||||
valid file position in files larger than 2 GBytes. Just
|
||||
to be sure, we therefore also check the secondary error
|
||||
to verify that what could be a file position is really
|
||||
an error indication. */
|
||||
position = (*fd->fd_Action)(fd,&fam);
|
||||
if(position == SEEK_ERROR && fam.fam_Error != OK)
|
||||
#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 */
|
||||
|
||||
/* If this is a valid file position, clear 'errno' so that
|
||||
it cannot be mistaken for an error. */
|
||||
if(position < 0)
|
||||
__set_errno(OK);
|
||||
message.position = offset;
|
||||
message.mode = mode;
|
||||
|
||||
result = position;
|
||||
assert( fd->fd_Hook != NULL );
|
||||
|
||||
CallHookPkt(fd->fd_Hook,fd,&message);
|
||||
|
||||
(*error_ptr) = message.error;
|
||||
|
||||
result = message.result;
|
||||
|
||||
out:
|
||||
|
||||
__fd_unlock(fd);
|
||||
|
||||
__stdio_unlock();
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
off_t
|
||||
lseek(int file_descriptor, off_t offset, int mode)
|
||||
{
|
||||
off_t result;
|
||||
|
||||
ENTER();
|
||||
|
||||
result = __lseek(file_descriptor,offset,mode,&errno);
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_open.c,v 1.17 2005-08-26 12:39:33 obarthel Exp $
|
||||
* $Id: fcntl_open.c,v 1.7 2005-01-09 16:07:27 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -37,15 +37,15 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _FCNTL_HEADERS_H
|
||||
#include "fcntl_headers.h"
|
||||
#endif /* _FCNTL_HEADERS_H */
|
||||
#ifndef _STDLIB_MEM_DEBUG_H
|
||||
#include "stdlib_mem_debug.h"
|
||||
#endif /* _STDLIB_MEM_DEBUG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_MEMORY_H
|
||||
#include "stdlib_memory.h"
|
||||
#endif /* _STDLIB_MEMORY_H */
|
||||
#ifndef _FCNTL_HEADERS_H
|
||||
#include "fcntl_headers.h"
|
||||
#endif /* _FCNTL_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -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;
|
||||
@@ -104,7 +103,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
int fd_slot_number;
|
||||
struct fd * fd;
|
||||
int access_mode;
|
||||
int result = ERROR;
|
||||
int result = -1;
|
||||
int i;
|
||||
|
||||
ENTER();
|
||||
@@ -118,15 +117,13 @@ 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)
|
||||
{
|
||||
SHOWMSG("path name is invalid");
|
||||
|
||||
__set_errno(EFAULT);
|
||||
errno = EFAULT;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -137,14 +134,14 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("access mode is invalid");
|
||||
|
||||
__set_errno(EINVAL);
|
||||
errno = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
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;
|
||||
@@ -158,20 +155,12 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
if(__unix_path_semantics)
|
||||
{
|
||||
if(path_name[0] == '\0')
|
||||
{
|
||||
SHOWMSG("no name given");
|
||||
|
||||
__set_errno(ENOENT);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if(__translate_unix_to_amiga_path_name(&path_name,&path_name_nti) != 0)
|
||||
goto out;
|
||||
|
||||
if(path_name_nti.is_root)
|
||||
{
|
||||
__set_errno(EACCES);
|
||||
errno = EACCES;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -198,7 +187,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("the file already exists");
|
||||
|
||||
__set_errno(EEXIST);
|
||||
errno = EEXIST;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -208,14 +197,14 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("there's something not a directory on the path");
|
||||
|
||||
__set_errno(ENOTDIR);
|
||||
errno = ENOTDIR;
|
||||
goto out;
|
||||
}
|
||||
else if (error != ERROR_OBJECT_NOT_FOUND && error != ERROR_ACTION_NOT_KNOWN)
|
||||
{
|
||||
SHOWMSG("error accessing the object");
|
||||
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -244,7 +233,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("could not examine the object");
|
||||
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -253,7 +242,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("can't open a directory");
|
||||
|
||||
__set_errno(EISDIR);
|
||||
errno = EISDIR;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -262,7 +251,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("this object is not write enabled");
|
||||
|
||||
__set_errno(EACCES);
|
||||
errno = EACCES;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -285,14 +274,14 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
{
|
||||
SHOWMSG("there's something not a directory on the path");
|
||||
|
||||
__set_errno(ENOTDIR);
|
||||
errno = ENOTDIR;
|
||||
goto out;
|
||||
}
|
||||
else if (error != ERROR_OBJECT_NOT_FOUND && error != ERROR_ACTION_NOT_KNOWN)
|
||||
{
|
||||
SHOWMSG("error accessing the object");
|
||||
|
||||
__set_errno(__translate_io_error_to_errno(IoErr()));
|
||||
__translate_io_error_to_errno(IoErr(),&errno);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -316,7 +305,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
LONG io_err = IoErr();
|
||||
|
||||
D(("the file '%s' didn't open in mode %ld",path_name,open_mode));
|
||||
__set_errno(__translate_access_io_error_to_errno(io_err));
|
||||
__translate_access_io_error_to_errno(IoErr(),&errno);
|
||||
|
||||
/* Check if ended up trying to open a directory as if
|
||||
it were a plain file. */
|
||||
@@ -328,7 +317,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
if(lock != ZERO)
|
||||
{
|
||||
if(Examine(lock,fib) && fib->fib_DirEntryType >= 0)
|
||||
__set_errno(EISDIR);
|
||||
errno = EISDIR;
|
||||
}
|
||||
|
||||
PROFILE_ON();
|
||||
@@ -337,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();
|
||||
@@ -369,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);
|
||||
}
|
||||
}
|
||||
@@ -464,7 +438,7 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
|
||||
handle = ZERO;
|
||||
|
||||
assert( result != ERROR );
|
||||
assert( result != -1 );
|
||||
|
||||
out:
|
||||
|
||||
@@ -475,8 +449,6 @@ open(const char *path_name, int open_flag, ... /* mode_t mode */ )
|
||||
|
||||
UnLock(lock);
|
||||
|
||||
__stdio_unlock();
|
||||
|
||||
PROFILE_ON();
|
||||
|
||||
RETURN(result);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_read.c,v 1.9 2005-07-06 18:48:53 obarthel Exp $
|
||||
* $Id: fcntl_read.c,v 1.3 2005-01-02 09:07:07 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;
|
||||
struct fd * fd = NULL;
|
||||
ssize_t result = EOF;
|
||||
DECLARE_UTILITYBASE();
|
||||
struct fd * fd;
|
||||
off_t result = -1;
|
||||
|
||||
ENTER();
|
||||
|
||||
@@ -60,13 +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();
|
||||
|
||||
__stdio_lock();
|
||||
assert( UtilityBase != NULL );
|
||||
|
||||
#if defined(CHECK_FOR_NULL_POINTERS)
|
||||
{
|
||||
@@ -74,7 +71,7 @@ read(int file_descriptor, void * buffer, size_t num_bytes)
|
||||
{
|
||||
SHOWMSG("invalid buffer");
|
||||
|
||||
__set_errno(EFAULT);
|
||||
(*error_ptr) = EFAULT;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -84,55 +81,66 @@ 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;
|
||||
}
|
||||
|
||||
__fd_lock(fd);
|
||||
|
||||
if(FLAG_IS_CLEAR(fd->fd_Flags,FDF_READ))
|
||||
{
|
||||
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 == EOF)
|
||||
{
|
||||
__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 = 0;
|
||||
}
|
||||
|
||||
result = num_bytes_read;
|
||||
|
||||
out:
|
||||
|
||||
__fd_unlock(fd);
|
||||
|
||||
__stdio_unlock();
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
ssize_t
|
||||
read(int file_descriptor, void * buffer, size_t num_bytes)
|
||||
{
|
||||
ssize_t result;
|
||||
|
||||
ENTER();
|
||||
|
||||
result = __read(file_descriptor,buffer,num_bytes,&errno);
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl_write.c,v 1.9 2005-07-06 18:48:53 obarthel Exp $
|
||||
* $Id: fcntl_write.c,v 1.3 2005-01-02 09:07:07 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;
|
||||
struct fd * fd = NULL;
|
||||
ssize_t result = EOF;
|
||||
DECLARE_UTILITYBASE();
|
||||
struct fd * fd;
|
||||
off_t result = -1;
|
||||
|
||||
ENTER();
|
||||
|
||||
@@ -60,13 +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();
|
||||
|
||||
__stdio_lock();
|
||||
assert( UtilityBase != NULL );
|
||||
|
||||
#if defined(CHECK_FOR_NULL_POINTERS)
|
||||
{
|
||||
@@ -74,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;
|
||||
}
|
||||
}
|
||||
@@ -84,55 +81,66 @@ 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;
|
||||
}
|
||||
|
||||
__fd_lock(fd);
|
||||
|
||||
if(FLAG_IS_CLEAR(fd->fd_Flags,FDF_WRITE))
|
||||
{
|
||||
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 == EOF)
|
||||
{
|
||||
__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 = 0;
|
||||
}
|
||||
|
||||
result = num_bytes_written;
|
||||
|
||||
out:
|
||||
|
||||
__fd_unlock(fd);
|
||||
|
||||
__stdio_unlock();
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
ssize_t
|
||||
write(int file_descriptor, const void * buffer, size_t num_bytes)
|
||||
{
|
||||
ssize_t result;
|
||||
|
||||
ENTER();
|
||||
|
||||
result = __write(file_descriptor,buffer,num_bytes,&errno);
|
||||
|
||||
RETURN(result);
|
||||
return(result);
|
||||
}
|
||||
|
||||
@@ -1,222 +0,0 @@
|
||||
/*
|
||||
* $Id: ftw_ftw.c,v 1.4 2005-04-24 08:46:37 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.
|
||||
*/
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _FTW_HEADERS_H
|
||||
#include "ftw_headers.h"
|
||||
#endif /* _FTW_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
static int
|
||||
walk(const char *path,int (*func)(const char *,const struct stat *,int),int depth,int level)
|
||||
{
|
||||
int result = OK;
|
||||
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 = ERROR; /* 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 = ERROR;
|
||||
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 = ERROR;
|
||||
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);
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* $Id: ftw_headers.h,v 1.2 2005-03-18 12:38:22 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_HEADERS_H
|
||||
#define _FTW_HEADERS_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDLIB_HEADERS_H
|
||||
#include "stdlib_headers.h"
|
||||
#endif /* _STDLIB_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
#include <ftw.h>
|
||||
#include <errno.h>
|
||||
#include <dos.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _MACROS_H
|
||||
#include "macros.h"
|
||||
#endif /* _MACROS_H */
|
||||
|
||||
#ifndef _DEBUG_H
|
||||
#include "debug.h"
|
||||
#endif /* _DEBUG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _FTW_HEADERS_H */
|
||||
@@ -1,317 +0,0 @@
|
||||
/*
|
||||
* $Id: ftw_nftw.c,v 1.4 2005-04-24 08:46:37 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.
|
||||
*/
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _FTW_HEADERS_H
|
||||
#include "ftw_headers.h"
|
||||
#endif /* _FTW_HEADERS_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 = OK;
|
||||
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 = ERROR;
|
||||
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 = ERROR;
|
||||
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 = ERROR;
|
||||
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 = OK;
|
||||
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 = ERROR;
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -1,408 +0,0 @@
|
||||
/*
|
||||
* $Id: getopt_getopt_long.c,v 1.3 2005-06-26 12:01:50 tfrieden 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 _STDLIB_NULL_POINTER_CHECK_H
|
||||
#include "stdlib_null_pointer_check.h"
|
||||
#endif /* _STDLIB_NULL_POINTER_CHECK_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _UNISTD_HEADERS_H
|
||||
#include "unistd_headers.h"
|
||||
#endif /* _UNISTD_HEADERS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <getopt.h>
|
||||
|
||||
extern int opterr;
|
||||
extern int optind;
|
||||
extern int optopt;
|
||||
extern char * optarg;
|
||||
int optreset = 0;
|
||||
|
||||
#define GETOPTF_LONG_ONLY (1L << 0) /* Operate in getopt_long_only more */
|
||||
#define GETOPTF_GNUEXT (1L << 1) /* Allow -W extension */
|
||||
#define GETOPTF_POSIX (1L << 2) /* Will disallow permutation */
|
||||
#define GETOPTF_ONE_ARG (1L << 3) /* Non-option argv will be handled as -\1 */
|
||||
|
||||
static int getopt_long_internal(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex, int flags);
|
||||
|
||||
|
||||
int getopt_long(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex)
|
||||
{
|
||||
return getopt_long_internal(argc, argv, optstring, longopts, longindex, 0);
|
||||
}
|
||||
|
||||
#if 0
|
||||
int getopt_long_only(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex)
|
||||
{
|
||||
return getopt_long_internal(argc, argv, optstring, longopts, longindex,
|
||||
GETOPTF_LONG_ONLY);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static int parse_long_option(int argc, char **argv, const struct option *longopts,
|
||||
int *longindex, int flags)
|
||||
{
|
||||
char *current = argv[optind] + 2; /* Skip the '--' */
|
||||
char *argument;
|
||||
int keylen = 0;
|
||||
int i;
|
||||
int idx = -1;
|
||||
int result = '?';
|
||||
|
||||
(void)flags;
|
||||
|
||||
optind ++;
|
||||
|
||||
/* If there's an equals sign in the option, the actual word to check is
|
||||
* between the -- and = characters. Otherwise, it's the length of the
|
||||
* remainder (without --)
|
||||
*/
|
||||
argument = strchr(current, '=');
|
||||
if (argument)
|
||||
{
|
||||
keylen = (int)(argument - current);
|
||||
/* Skip the '=' sign */
|
||||
argument++;
|
||||
}
|
||||
else
|
||||
keylen = strlen(current);
|
||||
|
||||
for (i = 0; longopts[i].name; i++)
|
||||
{
|
||||
if (strncmp(longopts[i].name, current, keylen))
|
||||
continue;
|
||||
|
||||
if (strlen(longopts[i].name) == (size_t)keylen)
|
||||
{
|
||||
/* Exact match */
|
||||
idx = i;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Partial match. Check if we already found another partial match, in
|
||||
* which case the match is ambigous.
|
||||
*/
|
||||
if (idx == -1)
|
||||
{
|
||||
idx = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
*longindex = -1;
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
|
||||
*longindex = idx;
|
||||
|
||||
if (idx != -1)
|
||||
{
|
||||
/* Found a match. Check if it needs an argument */
|
||||
if (longopts[idx].has_arg == optional_argument)
|
||||
{
|
||||
/* Optional arguments must be given as --foo=bar, it will not
|
||||
* advance to the next argv element
|
||||
*/
|
||||
if (argument)
|
||||
optarg = argument;
|
||||
else
|
||||
optarg = 0;
|
||||
}
|
||||
else if (longopts[idx].has_arg == required_argument)
|
||||
{
|
||||
/* Either argument was given as --foo=bar, or the next argv element
|
||||
* (if present) will be returned
|
||||
*/
|
||||
if (argument)
|
||||
optarg = argument;
|
||||
else
|
||||
{
|
||||
if (optind < argc)
|
||||
{
|
||||
optarg = argv[optind];
|
||||
optind++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (opterr)
|
||||
fprintf(stderr, "%s: option requires an argument -- %s\n",
|
||||
argv[0], longopts[idx].name);
|
||||
|
||||
optarg = 0;
|
||||
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* No argument */
|
||||
optarg = 0;
|
||||
|
||||
if (argument)
|
||||
{
|
||||
if (opterr)
|
||||
fprintf(stderr, "%s: option does not take an argument -- %s\n",
|
||||
argv[0], longopts[idx].name);
|
||||
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
|
||||
if (longopts[idx].flag)
|
||||
{
|
||||
*longopts[idx].flag = longopts[idx].val;
|
||||
optopt = 0;
|
||||
result = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = optopt = longopts[idx].val;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
optopt = 0;
|
||||
|
||||
return '?';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Note: This implementation currently does not permute argv vectors, and will
|
||||
* stop parsing input on the first non-option argument
|
||||
*/
|
||||
|
||||
static int getopt_long_internal(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex, int flags)
|
||||
{
|
||||
static char *nextchar = 0;
|
||||
int result = EOF;
|
||||
int c;
|
||||
char *optp;
|
||||
int longidx_subst;
|
||||
|
||||
ENTER();
|
||||
SHOWVALUE(argc);
|
||||
SHOWPOINTER(argv);
|
||||
SHOWSTRING(optstring);
|
||||
SHOWPOINTER(longopts);
|
||||
SHOWPOINTER(longindex);
|
||||
SHOWVALUE(flags);
|
||||
|
||||
if(__check_abort_enabled)
|
||||
__check_abort();
|
||||
|
||||
if (NULL == optstring)
|
||||
goto out;
|
||||
|
||||
if (!longindex)
|
||||
longindex = &longidx_subst;
|
||||
|
||||
/* Check options */
|
||||
/* FIXME: Should probably also check environment variable */
|
||||
if (*optstring == '+')
|
||||
{
|
||||
flags |= GETOPTF_POSIX;
|
||||
optstring++;
|
||||
}
|
||||
|
||||
if (*optstring == '-')
|
||||
{
|
||||
flags |= GETOPTF_ONE_ARG;
|
||||
optstring++;
|
||||
}
|
||||
|
||||
/* Check for reset */
|
||||
if (optreset || optind == 0)
|
||||
{
|
||||
optind = 1;
|
||||
optreset = 0;
|
||||
nextchar = 0;
|
||||
}
|
||||
|
||||
if (optind >= argc)
|
||||
goto out;
|
||||
|
||||
/* Begin or continue scanning
|
||||
* First off, check for a short option and set nextchar, if present.
|
||||
* if nextchar is not 0, there's a compound option waiting or just begun.
|
||||
*/
|
||||
if (!nextchar
|
||||
&& argv[optind][0] == '-'
|
||||
&& argv[optind][1] != '\0'
|
||||
&& argv[optind][1] != '-')
|
||||
{
|
||||
/* It's a short option. */
|
||||
nextchar = (char *)&argv[optind][1];
|
||||
}
|
||||
|
||||
if (nextchar)
|
||||
{
|
||||
c = *nextchar ++;
|
||||
|
||||
/* Advancing nextchar. If it points to a 0 character now, it's reached
|
||||
* the end of the current argv string, so set it to 0 and advance optind
|
||||
* to the next argv element.
|
||||
*/
|
||||
if (0 == *nextchar)
|
||||
{
|
||||
nextchar = 0;
|
||||
optind ++;
|
||||
}
|
||||
|
||||
optp = strchr(optstring, c);
|
||||
|
||||
/* We never find a long option in a compound option */
|
||||
*longindex = 0;
|
||||
|
||||
/* Check if it's legal */
|
||||
if (c == ':' || (optp == NULL))
|
||||
{
|
||||
/* Illegal option */
|
||||
if (opterr)
|
||||
fprintf(stderr, "%s: illegal option -- %c\n", argv[0], c);
|
||||
|
||||
result = '?';
|
||||
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* It is legal. Three possibilities here:
|
||||
* 1. It doesn't have arguments. Return the character.
|
||||
* 2. It has an argument. Return the character, and point optarg
|
||||
* to the rest of the argv entry.
|
||||
* 3. It has an optional argument. If there are non-0 characters
|
||||
* following, point optarg there, otherwise, clear optarg.
|
||||
*/
|
||||
if (optp[1] != ':')
|
||||
{
|
||||
/* Case 1 (no argument). */
|
||||
result = c;
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Argument may follow */
|
||||
if (optp[2] == ':')
|
||||
{
|
||||
/* Optional argument. nextchar is 0 if there's no further
|
||||
* stuff following, which means the option is without
|
||||
* argument
|
||||
*/
|
||||
if (nextchar)
|
||||
{
|
||||
optarg = nextchar;
|
||||
nextchar = 0;
|
||||
optind++;
|
||||
}
|
||||
else
|
||||
optarg = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Mandatory argument. Either nextchar points to the rest
|
||||
* of this argv element, or we use the next argv element
|
||||
*/
|
||||
if (nextchar)
|
||||
{
|
||||
optarg = nextchar;
|
||||
nextchar = 0;
|
||||
optind++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (optind >= argc)
|
||||
{
|
||||
if (opterr)
|
||||
fprintf(stderr, "%s: option requires an argument -- %c\n",
|
||||
argv[0], c);
|
||||
|
||||
result = '?';
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
optarg = (char *)argv[optind++];
|
||||
}
|
||||
}
|
||||
|
||||
result = c;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
} /* if (nextchar) */
|
||||
|
||||
/* Start checking an argv element for an option.
|
||||
* There are different possibilities here:
|
||||
* 1. We ran out of argv elements
|
||||
* 2. We have an argv element that's just "-" or not an option
|
||||
* 3. We have an argv element that's just "--"
|
||||
* 4. we habe a long option (--xxx pr -W xxx)
|
||||
*/
|
||||
|
||||
/* Check case 3 and 1*/
|
||||
if ((strcmp(argv[optind], "--") == 0) || optind >= argc)
|
||||
{
|
||||
result = EOF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Check case 4 */
|
||||
if (argv[optind][0] == '-' && argv[optind][1] == '-' && longopts)
|
||||
{
|
||||
/* It is a long option */
|
||||
result = parse_long_option(argc, (char **)argv, longopts, longindex, flags);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Case 2 */
|
||||
|
||||
|
||||
out:
|
||||
RETURN(result);
|
||||
return result;
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
/*
|
||||
* $Id: inet.h,v 1.1 2005-10-09 12:32:18 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 _ARPA_INET_H
|
||||
#define _ARPA_INET_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif /* _NETINET_IN_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The following prototypes may clash with the bsdsocket.library or
|
||||
* usergroup.library API definitions.
|
||||
*/
|
||||
|
||||
#ifndef __NO_NET_API
|
||||
|
||||
extern in_addr_t inet_addr(const char *cp);
|
||||
extern int inet_aton(const char *cp, struct in_addr *pin);
|
||||
extern in_addr_t inet_lnaof(struct in_addr in);
|
||||
extern struct in_addr inet_makeaddr(in_addr_t net, in_addr_t lna);
|
||||
extern in_addr_t inet_netof(struct in_addr in);
|
||||
extern in_addr_t inet_network(const char *cp);
|
||||
extern char *inet_ntoa(struct in_addr in);
|
||||
|
||||
#endif /* __NO_NET_API */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _ARPA_INET_H */
|
||||
@@ -1,185 +0,0 @@
|
||||
/*
|
||||
* $Id: complex.h,v 1.3 2005-05-12 13:21:47 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 _COMPLEX_H
|
||||
#define _COMPLEX_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef __GNUC__
|
||||
#error Unsupported compiler.
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#warning C99 header file used in C++.
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if !defined(__STDC_VERSION__) || (__GNUC__ < 3 && __STDC_VERSION__ < 199901L)
|
||||
#error Complex numbers are not supported by/for this compiler.
|
||||
#endif /* __GNUC__ && __STDC_VERSION__ */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Basic types; imaginary is assumed not to be implemented yet. */
|
||||
#define complex _Complex
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Constants */
|
||||
#define _Complex_I (__extension__ 0.0+1.0fi)
|
||||
#define I _Complex_I
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern double creal(double complex z);
|
||||
extern float crealf(float complex z);
|
||||
extern long double creall(long double complex z);
|
||||
|
||||
extern double cimag(double complex z);
|
||||
extern float cimagf(float complex z);
|
||||
extern long double cimagl(long double complex z);
|
||||
|
||||
extern double complex conj(double complex z);
|
||||
extern float complex conjf(float complex z);
|
||||
extern long double complex conjl(long double complex z);
|
||||
|
||||
extern double carg(double complex z);
|
||||
extern float cargf(float complex z);
|
||||
extern long double cargl(long double complex z);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Unimplemented functions (so far)... */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if 0
|
||||
|
||||
extern double complex cacos(double complex z);
|
||||
extern float complex cacosf(float complex z);
|
||||
extern long double complex cacosl(long double complex z);
|
||||
|
||||
extern double complex casin(double complex z);
|
||||
extern float complex casinf(float complex z);
|
||||
extern long double complex casinl(long double complex z);
|
||||
|
||||
extern double complex catan(double complex z);
|
||||
extern float complex catanf(float complex z);
|
||||
extern long double complex catanl(long double complex z);
|
||||
|
||||
extern double complex ccos(double complex z);
|
||||
extern float complex ccosf(float complex z);
|
||||
extern long double complex ccosl(long double complex z);
|
||||
|
||||
extern double complex csin(double complex z);
|
||||
extern float complex csinf(float complex z);
|
||||
extern long double complex csinl(long double complex z);
|
||||
|
||||
extern double complex ctan(double complex z);
|
||||
extern float complex ctanf(float complex z);
|
||||
extern long double complex ctanl(long double complex z);
|
||||
|
||||
extern double complex cacosh(double complex z);
|
||||
extern float complex cacoshf(float complex z);
|
||||
extern long double complex cacoshl(long double complex z);
|
||||
|
||||
extern double complex casinh(double complex z);
|
||||
extern float complex casinhf(float complex z);
|
||||
extern long double complex casinhl(long double complex z);
|
||||
|
||||
extern double complex catanh(double complex z);
|
||||
extern float complex catanhf(float complex z);
|
||||
extern long double complex catanhl(long double complex z);
|
||||
|
||||
extern double complex ccosh(double complex z);
|
||||
extern float complex ccoshf(float complex z);
|
||||
extern long double complex ccoshl(long double complex z);
|
||||
|
||||
extern double complex csinh(double complex z);
|
||||
extern float complex csinhf(float complex z);
|
||||
extern long double complex csinhl(long double complex z);
|
||||
|
||||
extern double complex ctanh(double complex z);
|
||||
extern float complex ctanhf(float complex z);
|
||||
extern long double complex ctanhl(long double complex z);
|
||||
|
||||
extern double complex cexp(double complex z);
|
||||
extern float complex cexpf(float complex z);
|
||||
extern long double complex cexpl(long double complex z);
|
||||
|
||||
extern double complex clog(double complex z);
|
||||
extern float complex clogf(float complex z);
|
||||
extern long double complex clogl(long double complex z);
|
||||
|
||||
extern double cabs(double complex z);
|
||||
extern float cabsf(float complex z);
|
||||
extern long double cabsl(long double complex z);
|
||||
|
||||
extern double complex cpow(double complex z);
|
||||
extern float complex cpowf(float complex z);
|
||||
extern long double complex cpowl(long double complex z);
|
||||
|
||||
extern double complex csqrt(double complex z);
|
||||
extern float complex csqrtf(float complex z);
|
||||
extern long double complex csqrtl(long double complex z);
|
||||
|
||||
extern double complex cproj(double complex z);
|
||||
extern float complex cprojf(float complex z);
|
||||
extern long double complex cprojl(long double complex z);
|
||||
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _COMPLEX_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ctype.h,v 1.7 2005-10-16 08:34:52 obarthel Exp $
|
||||
* $Id: ctype.h,v 1.5 2005-01-09 15:20:33 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -31,8 +31,8 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CTYPE_H
|
||||
#define _CTYPE_H
|
||||
#ifndef _CYTPE_H
|
||||
#define _CYTPE_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -57,7 +57,6 @@ extern int islower(int c);
|
||||
extern int isupper(int c);
|
||||
|
||||
extern int isspace(int c);
|
||||
extern int isblank(int c);
|
||||
|
||||
extern int tolower(int c);
|
||||
extern int toupper(int c);
|
||||
@@ -100,7 +99,6 @@ extern const unsigned char __ctype_table[];
|
||||
#define islower(c) ((__ctype_table[(c) & 255] & __CTYPE_LOWER_CASE) != 0)
|
||||
#define isupper(c) ((__ctype_table[(c) & 255] & __CTYPE_UPPER_CASE) != 0)
|
||||
#define isspace(c) ((__ctype_table[(c) & 255] & __CTYPE_WHITE_SPACE) != 0)
|
||||
#define isblank(c) ((c) == ' ' || (c) == '\t')
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -120,4 +118,4 @@ extern const unsigned char __ctype_table[];
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _CTYPE_H */
|
||||
#endif /* _CYTPE_H */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dirent.h,v 1.4 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: dirent.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,6 +40,12 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
@@ -50,12 +56,6 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define NAME_MAX FILENAME_MAX
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: dos.h,v 1.13 2005-10-20 06:50:32 obarthel Exp $
|
||||
* $Id: dos.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,28 +40,24 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDIO_H
|
||||
#include <stdio.h>
|
||||
#endif /* _STDIO_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef EXEC_LIBRARIES_H
|
||||
#include <exec/libraries.h>
|
||||
#endif /* EXEC_LIBRARIES_H */
|
||||
|
||||
#ifndef WORKBENCH_STARTUP_H
|
||||
#include <workbench/startup.h>
|
||||
#endif /* WORKBENCH_STARTUP_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The Workbench startup message passed to this program; this may be NULL
|
||||
* if the program was started from shell instead.
|
||||
@@ -70,26 +66,6 @@ extern "C" {
|
||||
* ISO 'C' standard context. It is redefined to WBenchMsg to make it
|
||||
* compatible with the original Amiga program startup code which would
|
||||
* refer to the variable under that name.
|
||||
*
|
||||
* It is recommended to access the Workbench startup message as part of your
|
||||
* program's main() function, like this:
|
||||
*
|
||||
* int
|
||||
* main(int argc,char ** argv)
|
||||
* {
|
||||
* struct WBStartup * wb_startup_message;
|
||||
*
|
||||
* if(argc == 0)
|
||||
* wb_startup_message = (struct WBStartup *)argv;
|
||||
* else
|
||||
* wb_startup_message = NULL;
|
||||
*
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* This approach has the advantage that your program does not rely upon a
|
||||
* global variable initialized by the startup code, whose name you might
|
||||
* not even know exactly.
|
||||
*/
|
||||
extern struct WBStartup * __WBenchMsg;
|
||||
#define WBenchMsg __WBenchMsg
|
||||
@@ -148,24 +124,9 @@ extern int __get_default_file(int file_descriptor,long * file_ptr);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* If your program is intended to be launched by the Internet superserver
|
||||
* (inetd) to run as a daemon, receiving and sending data through a network
|
||||
* connection set up for it, declare the following variable in your program
|
||||
* and set it to TRUE. This will make the program's network startup code
|
||||
* link the stdin/stdout/stderr streams with the daemon socket passed to it.
|
||||
* Whether or not your program is running as a daemon can be tested by
|
||||
* checking the global __is_daemon variable described below.
|
||||
*/
|
||||
extern BOOL __check_daemon_startup;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* This will be set to TRUE if the current program was launched from
|
||||
* the internet superserver ('inetd') or an equivalent facility. Note
|
||||
* that you need to have set __check_daemon_startup to TRUE before
|
||||
* you can rely upon __is_daemon to be initialized correctly.
|
||||
* the internet superserver ('inetd') or an equivalent facility.
|
||||
*/
|
||||
extern BOOL __is_daemon;
|
||||
|
||||
@@ -291,32 +252,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
|
||||
@@ -343,65 +278,7 @@ extern int __translate_relative_path_name(char const ** name_ptr,char *replace,s
|
||||
extern void __restore_path_name(char const ** name_ptr,struct name_translation_info * nti);
|
||||
extern int __translate_amiga_to_unix_path_name(char const ** name_ptr,struct name_translation_info * nti);
|
||||
extern int __translate_unix_to_amiga_path_name(char const ** name_ptr,struct name_translation_info * nti);
|
||||
extern int __translate_io_error_to_errno(LONG io_error);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Routines for use with shared libraries: invoke __lib_init() in your own
|
||||
* shared library initialization function and __lib_exit() in your shared
|
||||
* library cleanup function.
|
||||
*
|
||||
* __lib_init() will initialize the global SysBase/DOSBase variables
|
||||
* (and the IExec/IDOS variables for OS4) and invoke the constructor
|
||||
* functions required by your library code. It returns FALSE upon
|
||||
* failure and TRUE otherwise. Make this the very first function you
|
||||
* call in your shared library initialization function. The __lib_init()
|
||||
* function expects to be called with a pointer to the exec.library
|
||||
* base, which is normally passed to your shared library as part of the
|
||||
* library startup code initialization performed by the operating
|
||||
* system.
|
||||
*
|
||||
* __lib_exit() will undo all the initializations performed by the
|
||||
* __lib_init() function, but leave the global SysBase variable
|
||||
* (and the IExec variable for OS4) intact. Make this the very last
|
||||
* function you call in your shared library cleanup function.
|
||||
*
|
||||
* Note that neither __lib_init() nor __lib_exit() are reentrant. You must
|
||||
* make sure that while you are calling them no other library user can
|
||||
* call them by accident.
|
||||
*
|
||||
* Both functions are only available as part of the thread-safe clib2
|
||||
* linker library.
|
||||
*/
|
||||
extern VOID __lib_exit(VOID);
|
||||
extern BOOL __lib_init(struct Library * SysBase);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The following variables are part of libnet.a, which provides for
|
||||
* a BSD-Unix-like socket networking API. Traditionally, only one process
|
||||
* at a time may use the underlying bsdsocket.library base, but with a
|
||||
* multithreaded application you may want all of them to share the same
|
||||
* library base. As of this writing there is one single TCP/IP stack which
|
||||
* supports this feature (Roadshow) and it must be enabled early on. If
|
||||
* this worked out well you can test through the following variable which
|
||||
* will be set to TRUE:
|
||||
*/
|
||||
extern BOOL __can_share_socket_library_base;
|
||||
|
||||
/*
|
||||
* The next global variable is also part of the thread-safe libnet.a and
|
||||
* indicates that the TCP/IP stack will call the functions __set_errno()
|
||||
* and __set_h_errno() when it modifies the global errno and h_errno
|
||||
* variables, respectively. If you want to save the error codes for each
|
||||
* of the Processes in your multithreaded application then you should
|
||||
* override these functions with your. The following variable will be
|
||||
* set to TRUE if the __set_errno() and __set_h_errno() functions will
|
||||
* be used to change the corresponding variables:
|
||||
*/
|
||||
extern BOOL __thread_safe_errno_h_errno;
|
||||
extern void __translate_io_error_to_errno(LONG io_error,int * errno_ptr);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fcntl.h,v 1.6 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: fcntl.h,v 1.4 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,6 +40,12 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
@@ -50,12 +56,6 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define O_RDONLY 0
|
||||
#define O_WRONLY 1
|
||||
#define O_RDWR 2
|
||||
@@ -65,7 +65,6 @@ extern "C" {
|
||||
#define O_EXCL (1<<4)
|
||||
#define O_TRUNC (1<<5)
|
||||
#define O_NONBLOCK (1<<6)
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
#define O_SYNC (0)
|
||||
#define O_NOCTTY (0)
|
||||
#define O_ASYNC (1<<7)
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
/*
|
||||
* $Id: ftw.h,v 1.2 2005-10-09 12:32:18 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
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* 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 */
|
||||
@@ -1,83 +0,0 @@
|
||||
/*
|
||||
* $Id: getopt.h,v 1.2 2005-06-26 09:06:12 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 _GETOPT_H
|
||||
#define _GETOPT_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define no_argument 0
|
||||
#define required_argument 1
|
||||
#define optional_argument 2
|
||||
|
||||
struct option
|
||||
{
|
||||
const char * name;
|
||||
int has_arg;
|
||||
int * flag;
|
||||
int val;
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int getopt_long(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex);
|
||||
|
||||
/*extern int getopt_long_only(int argc, const char **argv, const char *optstring,
|
||||
const struct option *longopts, int *longindex);
|
||||
*/
|
||||
extern int optreset;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _GETOPT_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: grp.h,v 1.4 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: grp.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,25 +40,15 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma amiga-align
|
||||
#endif
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -72,33 +62,6 @@ struct group
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The following prototypes may clash with the bsdsocket.library or
|
||||
* usergroup.library API definitions.
|
||||
*/
|
||||
|
||||
#ifndef __NO_NET_API
|
||||
|
||||
extern void endgrent(void);
|
||||
extern struct group *getgrent(void);
|
||||
extern struct group *getgrgid(gid_t gid);
|
||||
extern struct group *getgrnam(const char *name);
|
||||
extern void setgrent(void);
|
||||
|
||||
#endif /* __NO_NET_API */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack()
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma default-align
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -1,330 +0,0 @@
|
||||
/*
|
||||
* $Id: inttypes.h,v 1.3 2005-10-09 12:32:18 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 _INTTYPES_H
|
||||
#define _INTTYPES_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Integral types with specified size; contributed by Peter Bengtsson */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif /* _STDINT_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* printf() format specifications for different types. */
|
||||
|
||||
/* "Decimal" */
|
||||
#define PRId8 "d"
|
||||
#define PRId16 "d"
|
||||
#define PRId32 "d"
|
||||
#define PRId64 "lld"
|
||||
|
||||
#define PRIdLEAST8 "d"
|
||||
#define PRIdLEAST16 "d"
|
||||
#define PRIdLEAST32 "d"
|
||||
#define PRIdLEAST64 "lld"
|
||||
|
||||
#define PRIdFAST8 "d"
|
||||
#define PRIdFAST16 "d"
|
||||
#define PRIdFAST32 "d"
|
||||
#define PRIdFAST64 "lld"
|
||||
|
||||
#define PRIdPTR "ld"
|
||||
|
||||
/* "Integer" */
|
||||
#define PRIi8 "i"
|
||||
#define PRIi16 "i"
|
||||
#define PRIi32 "i"
|
||||
#define PRIi64 "lli"
|
||||
|
||||
#define PRIiLEAST8 "i"
|
||||
#define PRIiLEAST16 "i"
|
||||
#define PRIiLEAST32 "i"
|
||||
#define PRIiLEAST64 "lli"
|
||||
|
||||
#define PRIiFAST8 "i"
|
||||
#define PRIiFAST16 "i"
|
||||
#define PRIiFAST32 "i"
|
||||
#define PRIiFAST64 "lli"
|
||||
|
||||
#define PRIiPTR "li"
|
||||
|
||||
/* "Unsigned" */
|
||||
#define PRIu8 "u"
|
||||
#define PRIu16 "u"
|
||||
#define PRIu32 "u"
|
||||
#define PRIu64 "llu"
|
||||
|
||||
#define PRIuLEAST8 "u"
|
||||
#define PRIuLEAST16 "u"
|
||||
#define PRIuLEAST32 "u"
|
||||
#define PRIuLEAST64 "llu"
|
||||
|
||||
#define PRIuFAST8 "u"
|
||||
#define PRIuFAST16 "u"
|
||||
#define PRIuFAST32 "u"
|
||||
#define PRIuFAST64 "llu"
|
||||
|
||||
#define PRIuPTR "lu"
|
||||
|
||||
/* "Hexadecimal - lowercase " */
|
||||
#define PRIx8 "x"
|
||||
#define PRIx16 "x"
|
||||
#define PRIx32 "x"
|
||||
#define PRIx64 "llx"
|
||||
|
||||
#define PRIxLEAST8 "x"
|
||||
#define PRIxLEAST16 "x"
|
||||
#define PRIxLEAST32 "x"
|
||||
#define PRIxLEAST64 "llx"
|
||||
|
||||
#define PRIxFAST8 "x"
|
||||
#define PRIxFAST16 "x"
|
||||
#define PRIxFAST32 "x"
|
||||
#define PRIxFAST64 "llx"
|
||||
|
||||
#define PRIxPTR "lx"
|
||||
|
||||
/* "Hexadecimal - Uppercase" */
|
||||
#define PRIX8 "X"
|
||||
#define PRIX16 "X"
|
||||
#define PRIX32 "X"
|
||||
#define PRIX64 "llX"
|
||||
|
||||
#define PRIXLEAST8 "X"
|
||||
#define PRIXLEAST16 "X"
|
||||
#define PRIXLEAST32 "X"
|
||||
#define PRIXLEAST64 "llX"
|
||||
|
||||
#define PRIXFAST8 "X"
|
||||
#define PRIXFAST16 "X"
|
||||
#define PRIXFAST32 "X"
|
||||
#define PRIXFAST64 "llX"
|
||||
|
||||
#define PRIXPTR "lX"
|
||||
|
||||
/* "Octal" */
|
||||
#define PRIo8 "o"
|
||||
#define PRIo16 "o"
|
||||
#define PRIo32 "o"
|
||||
#define PRIo64 "llo"
|
||||
|
||||
#define PRIoLEAST8 "o"
|
||||
#define PRIoLEAST16 "o"
|
||||
#define PRIoLEAST32 "o"
|
||||
#define PRIoLEAST64 "llo"
|
||||
|
||||
#define PRIoFAST8 "o"
|
||||
#define PRIoFAST16 "o"
|
||||
#define PRIoFAST32 "o"
|
||||
#define PRIoFAST64 "llo"
|
||||
|
||||
#define PRIoPTR "lo"
|
||||
|
||||
/* intmax_t is 32 bits for SAS/C, 64-bits for GCC or if using a conforming C99 compiler. */
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define PRIdMAX "lld"
|
||||
#define PRIiMAX "lli"
|
||||
#define PRIuMAX "llu"
|
||||
#define PRIxMAX "llx"
|
||||
#define PRIXMAX "llX"
|
||||
#define PRIoMAX "llo"
|
||||
#else
|
||||
#define PRIdMAX "ld"
|
||||
#define PRIiMAX "li"
|
||||
#define PRIuMAX "lu"
|
||||
#define PRIxMAX "lx"
|
||||
#define PRIXMAX "lX"
|
||||
#define PRIoMAX "lo"
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
/* scanf() format specifiers. */
|
||||
|
||||
/* "Decimal" */
|
||||
#define SCNd8 "hhd"
|
||||
#define SCNd16 "hd"
|
||||
#define SCNd32 "d"
|
||||
#define SCNd64 "lld"
|
||||
|
||||
#define SCNdLEAST8 "hhd"
|
||||
#define SCNdLEAST16 "hd"
|
||||
#define SCNdLEAST32 "d"
|
||||
#define SCNdLEAST64 "lld"
|
||||
|
||||
#define SCNdFAST8 "hhd"
|
||||
#define SCNdFAST16 "d"
|
||||
#define SCNdFAST32 "d"
|
||||
#define SCNdFAST64 "lld"
|
||||
|
||||
#define SCNdPTR "d"
|
||||
|
||||
/* "Integer" */
|
||||
#define SCNi8 "hhi"
|
||||
#define SCNi16 "hi"
|
||||
#define SCNi32 "i"
|
||||
#define SCNi64 "lli"
|
||||
|
||||
#define SCNiLEAST8 "hhi"
|
||||
#define SCNiLEAST16 "hi"
|
||||
#define SCNiLEAST32 "i"
|
||||
#define SCNiLEAST64 "lli"
|
||||
|
||||
#define SCNiFAST8 "hhi"
|
||||
#define SCNiFAST16 "i"
|
||||
#define SCNiFAST32 "i"
|
||||
#define SCNiFAST64 "lli"
|
||||
|
||||
#define SCNiPTR "i"
|
||||
|
||||
/* "Unsigned" */
|
||||
#define SCNu8 "hhu"
|
||||
#define SCNu16 "hu"
|
||||
#define SCNu32 "u"
|
||||
#define SCNu64 "llu"
|
||||
|
||||
#define SCNuLEAST8 "hhu"
|
||||
#define SCNuLEAST16 "hu"
|
||||
#define SCNuLEAST32 "u"
|
||||
#define SCNuLEAST64 "llu"
|
||||
|
||||
#define SCNuFAST8 "hhu"
|
||||
#define SCNuFAST16 "u"
|
||||
#define SCNuFAST32 "u"
|
||||
#define SCNuFAST64 "llu"
|
||||
|
||||
#define SCNuPTR "u"
|
||||
|
||||
/* "Hexadecimal" */
|
||||
#define SCNx8 "hhx"
|
||||
#define SCNx16 "hx"
|
||||
#define SCNx32 "x"
|
||||
#define SCNx64 "llx"
|
||||
|
||||
#define SCNxLEAST8 "hhx"
|
||||
#define SCNxLEAST16 "hx"
|
||||
#define SCNxLEAST32 "x"
|
||||
#define SCNxLEAST64 "llx"
|
||||
|
||||
#define SCNxFAST8 "hhx"
|
||||
#define SCNxFAST16 "x"
|
||||
#define SCNxFAST32 "x"
|
||||
#define SCNxFAST64 "llx"
|
||||
|
||||
#define SCNxPTR "x"
|
||||
|
||||
/* "Octal" */
|
||||
#define SCNo8 "hho"
|
||||
#define SCNo16 "ho"
|
||||
#define SCNo32 "o"
|
||||
#define SCNo64 "llo"
|
||||
|
||||
#define SCNoLEAST8 "hho"
|
||||
#define SCNoLEAST16 "ho"
|
||||
#define SCNoLEAST32 "o"
|
||||
#define SCNoLEAST64 "llo"
|
||||
|
||||
#define SCNoFAST8 "hho"
|
||||
#define SCNoFAST16 "o"
|
||||
#define SCNoFAST32 "o"
|
||||
#define SCNoFAST64 "llo"
|
||||
|
||||
#define SCNoPTR "o"
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define SCNdMAX "lld"
|
||||
#define SCNiMAX "lli"
|
||||
#define SCNuMAX "llu"
|
||||
#define SCNxMAX "llx"
|
||||
#define SCNoMAX "llo"
|
||||
#else
|
||||
#define SCNdMAX "ld"
|
||||
#define SCNiMAX "li"
|
||||
#define SCNuMAX "lu"
|
||||
#define SCNxMAX "lx"
|
||||
#define SCNoMAX "lo"
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
typedef struct { long long quot; long long rem; } imaxdiv_t;
|
||||
#else
|
||||
typedef struct { long quot; long rem; } imaxdiv_t;
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern intmax_t imaxabs(intmax_t x);
|
||||
extern imaxdiv_t imaxdiv(intmax_t n,intmax_t d);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern intmax_t strtoimax(const char *str, char **ptr, int base);
|
||||
extern uintmax_t strtoumax(const char *str, char **ptr, int base);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern intmax_t wcstoimax(const wchar_t *str, char **ptr, int base);
|
||||
extern uintmax_t wcstoumax(const wchar_t *str, char **ptr, int base);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _INTTYPES_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: limits.h,v 1.8 2005-06-04 10:46:23 obarthel Exp $
|
||||
* $Id: limits.h,v 1.5 2005-01-09 09:40:33 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -83,26 +83,13 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
|
||||
#define LLONG_MAX 0x7fffffffffffffffLL
|
||||
#define ULLONG_MAX 0xffffffffffffffffULL
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define MB_LEN_MAX 1
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define SSIZE_MAX 2147483647L
|
||||
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
|
||||
#define LLONG_MAX 0x7fffffffffffffffLL
|
||||
#define ULLONG_MAX 0xffffffffffffffffULL
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -110,63 +97,4 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define WORD_BIT 32
|
||||
#define LONG_BIT 32 /* For now, at least. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* POSIX, POSIX... These are minimum maximum values. I.e. the maximum must be
|
||||
* at least this large. I am not sure all of these make much sense on the Amiga
|
||||
* (yet), but here they are anyway.
|
||||
*
|
||||
* Actually, these symbols should be defined only if the preprocessor symbol
|
||||
* _POSIX_SOURCE is defined. Other symbols which should be defined, too, are
|
||||
* ARG_MAX, CHILD_MAX, LINK_MAX, MAX_CANON, MAX_INPUT, NAME_MAX, NGROUPS_MAX,
|
||||
* OPEN_MAX, PATH_MAX, PIPE_BUF, SSIZE_MAX, STREAM_MAX and TZNAME_MAX.
|
||||
*/
|
||||
|
||||
#define _POSIX_AIO_LISTIO_MAX 2
|
||||
#define _POSIX_AIO_MAX 1
|
||||
#define _POSIX_ARG_MAX 4096
|
||||
#define _POSIX_CHILD_MAX 6
|
||||
#define _POSIX_DELAYTIMER_MAX 32
|
||||
#define _POSIX_LINK_MAX 8
|
||||
#define _POSIX_LOGIN_NAME_MAX 9
|
||||
#define _POSIX_MAX_CANON 255
|
||||
#define _POSIX_MAX_INPUT 255
|
||||
#define _POSIX_MQ_OPEN_MAX 8
|
||||
#define _POSIX_MQ_PRIO_MAX 32
|
||||
#define _POSIX_NAME_MAX 14
|
||||
#define _POSIX_NGROUPS_MAX 0
|
||||
#define _POSIX_OPEN_MAX 16
|
||||
#define _POSIX_PATH_MAX 255
|
||||
#define _POSIX_PIPE_BUF 512
|
||||
#define _POSIX_RTSIG_MAX 8
|
||||
#define _POSIX_SEM_NSEMS_MAX 256
|
||||
#define _POSIX_SEM_VALUE_MAX 32767
|
||||
#define _POSIX_SIGQUEUE_MAX 32
|
||||
#define _POSIX_SSIZE_MAX 32767
|
||||
#define _POSIX_STREAM_MAX 8
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
#define _POSIX_THREADS_MAX 64
|
||||
#define _POSIX_TIMER_MAX 32
|
||||
#define _POSIX_TTY_NAME_MAX 9
|
||||
#define _POSIX_TZNAME_MAX 3
|
||||
#define _POSIX2_BC_BASE_MAX 99
|
||||
#define _POSIX2_BC_DIM_MAX 2048
|
||||
#define _POSIX2_BC_SCALE_MAX 99
|
||||
#define _POSIX2_BC_STRING_MAX 1000
|
||||
#define _POSIX2_COLL_WEIGHTS_MAX 2
|
||||
#define _POSIX2_EXPR_NEST_MAX 32
|
||||
#define _POSIX2_LINE_MAX 2048
|
||||
#define _POSIX2_RE_DUP_MAX 255
|
||||
#define _XOPEN_IOV_MAX 16
|
||||
|
||||
/* And a maximum minimum value. */
|
||||
#define _POSIX_CLOCKRES_MIN 20000000 /* Nanoseconds */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _LIMITS_H */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: math.h,v 1.18 2005-10-16 09:05:03 obarthel Exp $
|
||||
* $Id: math.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -85,241 +85,12 @@ 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
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Note that the comparison operations performed on the floating point
|
||||
data types ought to include float, double and long double. However,
|
||||
because the current (2005-06-12) compiler technology available on the
|
||||
Amiga does not support the long double type yet, this library is
|
||||
restricted to operations on float and double. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float __huge_val_float;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define HUGE_VALF ((const float)__huge_val_float)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float __infinity;
|
||||
extern float __nan;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define INFINITY ((const float)__infinity)
|
||||
#define NAN ((const float)__nan)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define FP_INFINITE 0 /* -/+ infinity */
|
||||
#define FP_NAN 1 /* not a number */
|
||||
#define FP_NORMAL 2 /* normalized floating point number */
|
||||
#define FP_SUBNORMAL 3 /* very small floating point number; special
|
||||
case of IEEE 754 */
|
||||
#define FP_ZERO 4 /* exponent/fraction are zero */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int __fpclassify_float(float x);
|
||||
extern int __fpclassify_double(double x);
|
||||
extern int __isfinite_float(float x);
|
||||
extern int __isfinite_double(double x);
|
||||
extern int __signbit_float(float x);
|
||||
extern int __signbit_double(double x);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define fpclassify(x) \
|
||||
(sizeof(x) == sizeof(float) ? \
|
||||
__fpclassify_float(x) : \
|
||||
__fpclassify_double(x))
|
||||
|
||||
#define isfinite(x) \
|
||||
(sizeof(x) == sizeof(float) ? \
|
||||
__isfinite_float(x) : \
|
||||
__isfinite_double(x))
|
||||
|
||||
#define isinf(x) \
|
||||
((sizeof(x) == sizeof(float) ? \
|
||||
__fpclassify_float(x) : \
|
||||
__fpclassify_double(x)) \
|
||||
== FP_INFINITE)
|
||||
|
||||
#define isnan(x) \
|
||||
((sizeof(x) == sizeof(float) ? \
|
||||
__fpclassify_float(x) : \
|
||||
__fpclassify_double(x)) \
|
||||
== FP_NAN)
|
||||
|
||||
#define isnormal(x) \
|
||||
((sizeof(x) == sizeof(float) ? \
|
||||
__fpclassify_float(x) : \
|
||||
__fpclassify_double(x)) \
|
||||
== FP_NORMAL)
|
||||
|
||||
#define signbit(x) \
|
||||
(sizeof(x) == sizeof(float) ? \
|
||||
__signbit_float(x) : \
|
||||
__signbit_double(x))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int __isunordered_float(float x,float y);
|
||||
extern int __isunordered_float_double(float x,double y);
|
||||
extern int __isunordered_double(double x,double y);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define isunordered(x,y) \
|
||||
(sizeof(x) == sizeof(float) ? \
|
||||
(sizeof(y) == sizeof(float) ? \
|
||||
__isunordered_float((x),y) : \
|
||||
__isunordered_float_double((x),(y))) : \
|
||||
(sizeof(y) == sizeof(float) ? \
|
||||
__isunordered_float_double((y),(x)) : \
|
||||
__isunordered_double((x),(y))))
|
||||
|
||||
#define isgreater(x,y) \
|
||||
(isunordered(x,y) ? 0 : (x) > (y))
|
||||
|
||||
#define isgreaterequal(x,y) \
|
||||
(isunordered(x,y) ? 0 : (x) >= (y))
|
||||
|
||||
#define isless(x,y) \
|
||||
(isunordered(x,y) ? 0 : (x) < (y))
|
||||
|
||||
#define islessequal(x,y) \
|
||||
(isunordered(x,y) ? 0 : (x) <= (y))
|
||||
|
||||
#define islessgreater(x,y) \
|
||||
(isunordered(x,y) ? 0 : (x) < (y) || (x) > (y)) /* ZZZ don't evaluate twice! */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float acosf(float x);
|
||||
extern float asinf(float x);
|
||||
extern float atanf(float x);
|
||||
extern float atan2f(float y, float x);
|
||||
extern float ceilf(float x);
|
||||
extern float cosf(float x);
|
||||
extern float coshf(float x);
|
||||
extern float expf(float x);
|
||||
extern float fabsf(float x);
|
||||
extern float floorf(float x);
|
||||
extern float fmodf(float x, float y);
|
||||
extern float frexpf(float x, int *eptr);
|
||||
extern float ldexpf(float x,int exp);
|
||||
extern float logf(float x);
|
||||
extern float log10f(float x);
|
||||
extern float modff(float x, float *iptr);
|
||||
extern float powf(float x, float y);
|
||||
extern float sinf(float x);
|
||||
extern float sinhf(float x);
|
||||
extern float sqrtf(float x);
|
||||
extern float tanf(float x);
|
||||
extern float tanhf(float x);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float acoshf(float x);
|
||||
extern float asinhf(float x);
|
||||
extern float atanhf(float x);
|
||||
extern float cbrtf(float x);
|
||||
extern float copysignf(float x, float y);
|
||||
extern float erfcf(float x);
|
||||
extern float erff(float x);
|
||||
extern float expm1f(float x);
|
||||
extern float fdimf(float x,float y);
|
||||
extern float fmaf(float x,float y,float z);
|
||||
extern float fmaxf(float x,float y);
|
||||
extern float fminf(float x,float y);
|
||||
extern float hypotf(float x, float y);
|
||||
extern float lgammaf(float x);
|
||||
extern float log1pf(float x);
|
||||
extern float logbf(float x);
|
||||
extern long int lrintf(float x);
|
||||
extern long int lroundf(float x);
|
||||
extern float nanf(const char *tagp);
|
||||
extern float nearbyintf(float x);
|
||||
extern float nextafterf(float x,float y);
|
||||
extern float remainderf(float x, float p);
|
||||
extern float remquof(float x,float y,int * quo);
|
||||
extern float rintf(float x);
|
||||
extern float roundf(float x);
|
||||
extern float scalbnf (float x, int n);
|
||||
extern float tgammaf(float x);
|
||||
extern float truncf(float x);
|
||||
extern int ilogbf(float x);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern double acosh(double x);
|
||||
extern double asinh(double x);
|
||||
extern double atanh(double x);
|
||||
extern double cbrt(double x);
|
||||
extern double copysign(double x, double y);
|
||||
extern double erf(double x);
|
||||
extern double erfc(double x);
|
||||
extern double expm1(double x);
|
||||
extern double fdim(double x,double y);
|
||||
extern double fma(double x,double y,double z);
|
||||
extern double fmax(double x,double y);
|
||||
extern double fmin(double x,double y);
|
||||
extern double hypot(double x,double y);
|
||||
extern double lgamma(double x);
|
||||
extern double log1p(double x);
|
||||
extern double logb(double x);
|
||||
extern long int lrint(double x);
|
||||
extern long int lround(double x);
|
||||
extern double nan(const char *tagp);
|
||||
extern double nearbyint(double x);
|
||||
extern double nextafter(double x,double y);
|
||||
extern double remainder(double x, double p);
|
||||
extern double remquo(double x,double y,int * quo);
|
||||
extern double rint(double x);
|
||||
extern double round(double x);
|
||||
extern double scalbn (double x, int n);
|
||||
extern double tgamma(double x);
|
||||
extern double trunc(double x);
|
||||
extern int ilogb(double x);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float exp2f(float x);
|
||||
extern double exp2(double x);
|
||||
|
||||
extern double log2(double x);
|
||||
extern float log2f(float x);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define FLT_EVAL_METHOD 0
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
extern float rintf(float x);
|
||||
extern int isinf(double x);
|
||||
extern int isnan(double x);
|
||||
extern double logb(double x);
|
||||
extern double hypot(double x,double y);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
* $Id: netdb.h,v 1.1 2005-10-09 12:32:18 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 _NETDB_H
|
||||
#define _NETDB_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif /* _SYS_SOCKET_H */
|
||||
|
||||
#ifndef _NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif /* _NETINET_IN_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma amiga-align
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define MAXHOSTNAMELEN 256 /* max hostname size */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Structures returned by network data base library. All addresses are
|
||||
* supplied in host order, and returned in network order (suitable for
|
||||
* use in system calls).
|
||||
*/
|
||||
struct hostent
|
||||
{
|
||||
char * h_name; /* official name of host */
|
||||
char ** h_aliases; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
char ** h_addr_list; /* list of addresses from name server */
|
||||
};
|
||||
|
||||
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
||||
|
||||
/*
|
||||
* Assumption here is that a network number
|
||||
* fits in an unsigned long -- probably a poor one.
|
||||
*/
|
||||
struct netent
|
||||
{
|
||||
char * n_name; /* official name of net */
|
||||
char ** n_aliases; /* alias list */
|
||||
int n_addrtype; /* net address type */
|
||||
in_addr_t n_net; /* network # */
|
||||
};
|
||||
|
||||
struct servent
|
||||
{
|
||||
char * s_name; /* official service name */
|
||||
char ** s_aliases; /* alias list */
|
||||
int s_port; /* port # */
|
||||
char * s_proto; /* protocol to use */
|
||||
};
|
||||
|
||||
struct protoent
|
||||
{
|
||||
char * p_name; /* official protocol name */
|
||||
char ** p_aliases; /* alias list */
|
||||
int p_proto; /* protocol # */
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Error return codes from gethostbyname() and gethostbyaddr()
|
||||
* (left in extern int h_errno).
|
||||
*/
|
||||
|
||||
#define NETDB_INTERNAL -1 /* see errno */
|
||||
#define NETDB_SUCCESS 0 /* no problem */
|
||||
#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
|
||||
#define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */
|
||||
#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
|
||||
#define NO_DATA 4 /* Valid name, no data record of requested type */
|
||||
#define NO_ADDRESS NO_DATA /* no address, look for MX record */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int h_errno;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The following prototypes may clash with the bsdsocket.library or
|
||||
* usergroup.library API definitions.
|
||||
*/
|
||||
|
||||
#ifndef __NO_NET_API
|
||||
|
||||
extern struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
|
||||
extern struct hostent *gethostbyname(const char *name);
|
||||
extern struct netent *getnetbyaddr(in_addr_t net, int type);
|
||||
extern struct netent *getnetbyname(const char *name);
|
||||
extern struct protoent *getprotobyname(const char *name);
|
||||
extern struct protoent *getprotobynumber(int proto);
|
||||
extern struct servent *getservbyname(const char *name, const char *proto);
|
||||
extern struct servent *getservbyport(int port, const char *proto);
|
||||
extern const char *hstrerror(int err);
|
||||
|
||||
#endif /* __NO_NET_API */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack()
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma default-align
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _NETDB_H */
|
||||
@@ -1,260 +0,0 @@
|
||||
/*
|
||||
* $Id: in.h,v 1.1 2005-10-09 12:32:18 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 _NETINET_IN_H
|
||||
#define _NETINET_IN_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma amiga-align
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Constants and structures defined by the internet system,
|
||||
* Per RFC 790, September 1981, and numerous additions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Data types.
|
||||
*/
|
||||
typedef unsigned long in_addr_t;
|
||||
typedef unsigned short in_port_t;
|
||||
|
||||
/*
|
||||
* Protocols
|
||||
*/
|
||||
#define IPPROTO_IP 0 /* dummy for IP */
|
||||
#define IPPROTO_ICMP 1 /* control message protocol */
|
||||
#define IPPROTO_IGMP 2 /* group mgmt protocol */
|
||||
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
|
||||
#define IPPROTO_TCP 6 /* tcp */
|
||||
#define IPPROTO_EGP 8 /* exterior gateway protocol */
|
||||
#define IPPROTO_PUP 12 /* pup */
|
||||
#define IPPROTO_UDP 17 /* user datagram protocol */
|
||||
#define IPPROTO_IDP 22 /* xns idp */
|
||||
#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */
|
||||
#define IPPROTO_EON 80 /* ISO cnlp */
|
||||
#define IPPROTO_ENCAP 98 /* encapsulation header */
|
||||
|
||||
#define IPPROTO_RAW 255 /* raw IP packet */
|
||||
#define IPPROTO_MAX 256
|
||||
|
||||
|
||||
/*
|
||||
* Local port number conventions:
|
||||
* Ports < IPPORT_RESERVED are reserved for
|
||||
* privileged processes (e.g. root).
|
||||
* Ports > IPPORT_USERRESERVED are reserved
|
||||
* for servers, not necessarily privileged.
|
||||
*/
|
||||
#define IPPORT_RESERVED 1024
|
||||
#define IPPORT_USERRESERVED 5000
|
||||
|
||||
/*
|
||||
* Internet address (a structure for historical reasons)
|
||||
*/
|
||||
struct in_addr
|
||||
{
|
||||
unsigned long s_addr;
|
||||
};
|
||||
|
||||
/*
|
||||
* Definitions of bits in internet address integers.
|
||||
* On subnets, the decomposition of addresses to host and net parts
|
||||
* is done according to subnet mask, not the masks here.
|
||||
*/
|
||||
#define IN_CLASSA(i) (((unsigned long)(i) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST 0x00ffffff
|
||||
#define IN_CLASSA_MAX 128
|
||||
|
||||
#define IN_CLASSB(i) (((unsigned long)(i) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST 0x0000ffff
|
||||
#define IN_CLASSB_MAX 65536
|
||||
|
||||
#define IN_CLASSC(i) (((unsigned long)(i) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST 0x000000ff
|
||||
|
||||
#define IN_CLASSD(i) (((unsigned long)(i) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
|
||||
#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
|
||||
#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
|
||||
#define IN_MULTICAST(i) IN_CLASSD(i)
|
||||
|
||||
#define IN_EXPERIMENTAL(i) (((unsigned long)(i) & 0xf0000000) == 0xf0000000)
|
||||
#define IN_BADCLASS(i) (((unsigned long)(i) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
#define INADDR_ANY 0x00000000UL
|
||||
#define INADDR_BROADCAST 0xffffffffUL /* must be masked */
|
||||
#define INADDR_NONE 0xffffffff /* -1 return */
|
||||
|
||||
#define INADDR_UNSPEC_GROUP 0xe0000000UL /* 224.0.0.0 */
|
||||
#define INADDR_ALLHOSTS_GROUP 0xe0000001UL /* 224.0.0.1 */
|
||||
#define INADDR_MAX_LOCAL_GROUP 0xe00000ffUL /* 224.0.0.255 */
|
||||
|
||||
#define IN_LOOPBACKNET 127 /* official! */
|
||||
|
||||
/*
|
||||
* Socket address, internet style.
|
||||
*/
|
||||
struct sockaddr_in
|
||||
{
|
||||
unsigned char sin_len;
|
||||
unsigned char sin_family;
|
||||
unsigned short sin_port;
|
||||
struct in_addr sin_addr;
|
||||
unsigned char sin_zero[8];
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used to describe IP options.
|
||||
* Used to store options internally, to pass them to a process,
|
||||
* or to restore options retrieved earlier.
|
||||
* The ip_dst is used for the first-hop gateway when using a source route
|
||||
* (this gets put into the header proper).
|
||||
*/
|
||||
struct ip_opts
|
||||
{
|
||||
struct in_addr ip_dst; /* first hop, 0 w/o src rt */
|
||||
unsigned char ip_options[40]; /* actually variable in size */
|
||||
};
|
||||
|
||||
/*
|
||||
* Options for use with [gs]etsockopt at the IP level.
|
||||
* First word of comment is data type; bool is stored in int.
|
||||
*/
|
||||
#define IP_OPTIONS 1 /* buf/ip_opts; set/get IP options */
|
||||
#define IP_HDRINCL 2 /* int; header is included with data */
|
||||
#define IP_TOS 3 /* int; IP type of service and preced. */
|
||||
#define IP_TTL 4 /* int; IP time to live */
|
||||
#define IP_RECVOPTS 5 /* bool; receive all IP opts w/dgram */
|
||||
#define IP_RECVRETOPTS 6 /* bool; receive IP opts for response */
|
||||
#define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/dgram */
|
||||
#define IP_RETOPTS 8 /* ip_opts; set/get IP options */
|
||||
#define IP_MULTICAST_IF 9 /* unsigned char; set/get IP multicast i/f */
|
||||
#define IP_MULTICAST_TTL 10 /* unsigned char; set/get IP multicast ttl */
|
||||
#define IP_MULTICAST_LOOP 11 /* unsigned char; set/get IP multicast loopback */
|
||||
#define IP_ADD_MEMBERSHIP 12 /* ip_mreq; add an IP group membership */
|
||||
#define IP_DROP_MEMBERSHIP 13 /* ip_mreq; drop an IP group membership */
|
||||
|
||||
/*
|
||||
* Defaults and limits for options
|
||||
*/
|
||||
#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
|
||||
#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
|
||||
#define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf */
|
||||
|
||||
/*
|
||||
* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
|
||||
*/
|
||||
struct ip_mreq
|
||||
{
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_interface; /* local IP address of interface */
|
||||
};
|
||||
|
||||
/*
|
||||
* Definitions for inet sysctl operations.
|
||||
*
|
||||
* Third level is protocol number.
|
||||
* Fourth level is desired variable within that protocol.
|
||||
*/
|
||||
#define IPPROTO_MAXID (IPPROTO_IDP + 1) /* don't list to IPPROTO_MAX */
|
||||
|
||||
/*
|
||||
* Names for IP sysctl objects
|
||||
*/
|
||||
#define IPCTL_FORWARDING 1 /* act as router */
|
||||
#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
|
||||
#define IPCTL_DEFTTL 3 /* default TTL */
|
||||
#ifdef notyet
|
||||
#define IPCTL_DEFMTU 4 /* default MTU */
|
||||
#endif
|
||||
#define IPCTL_MAXID 5
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Macros for network/external number representation conversion.
|
||||
*/
|
||||
#define ntohl(x) (x)
|
||||
#define ntohs(x) (x)
|
||||
#define htonl(x) (x)
|
||||
#define htons(x) (x)
|
||||
|
||||
#define NTOHL(x) (x)
|
||||
#define NTOHS(x) (x)
|
||||
#define HTONL(x) (x)
|
||||
#define HTONS(x) (x)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack()
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#p #pragma default-al
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _NETINET_IN_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: pwd.h,v 1.4 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: pwd.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,25 +40,15 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma amiga-align
|
||||
#endif
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -75,33 +65,6 @@ struct passwd
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* The following prototypes may clash with the bsdsocket.library or
|
||||
* usergroup.library API definitions.
|
||||
*/
|
||||
|
||||
#ifndef __NO_NET_API
|
||||
|
||||
extern void endpwent(void);
|
||||
extern struct passwd *getpwent(void);
|
||||
extern struct passwd *getpwnam(const char *name);
|
||||
extern struct passwd *getpwuid(uid_t uid);
|
||||
extern void setpwent(void);
|
||||
|
||||
#endif /* __NO_NET_API */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifdef __PPC__
|
||||
#pragma pack()
|
||||
#endif
|
||||
#elif defined(__VBCC__)
|
||||
#pragma default-align
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: signal.h,v 1.5 2005-05-12 13:21:47 obarthel Exp $
|
||||
* $Id: signal.h,v 1.4 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -62,15 +62,6 @@ extern int raise(int sig);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef int sig_atomic_t;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
@@ -85,6 +76,10 @@ typedef void (*sig_t)(int);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef int sig_atomic_t;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef int sigset_t;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stdarg.h,v 1.4 2005-04-03 10:22:48 obarthel Exp $
|
||||
* $Id: stdarg.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -56,15 +56,6 @@ typedef char * va_list;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following macro is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define va_copy(dst,src) ((void)((dst) = (src)))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#else
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
/*
|
||||
* $Id: stdbool.h,v 1.3 2005-10-19 08:11:44 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 _STDBOOL_H
|
||||
#define _STDBOOL_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__cplusplus) && defined(__GNUC__)
|
||||
#warning C99 header used in C++.
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
|
||||
#warning C99 header file used by non-C99 compliant compiler.
|
||||
#endif /* !__STDC_VERSION__ || __STDC_VERSION__ < 199901L */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define bool _Bool
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define false 0
|
||||
#define true 1
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define __bool_true_false_are_defined 1
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _STDBOOL_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stddef.h,v 1.4 2005-05-12 13:21:47 obarthel Exp $
|
||||
* $Id: stddef.h,v 1.3 2005-01-08 10:21:28 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -54,7 +54,7 @@ extern "C" {
|
||||
|
||||
typedef int ptrdiff_t;
|
||||
typedef unsigned int size_t;
|
||||
typedef unsigned short wchar_t;
|
||||
typedef unsigned int wchar_t;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@@ -1,196 +0,0 @@
|
||||
/*
|
||||
* $Id: stdint.h,v 1.2 2005-05-12 13:21:47 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 _STDINT_H
|
||||
#define _STDINT_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* C99 integer type definitions; contributed by Peter Bengtsson */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _LIMITS_H
|
||||
#include <limits.h>
|
||||
#endif /* _LIMITS_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Common for all supported compilers. */
|
||||
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed int int32_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
|
||||
typedef signed char int_least8_t;
|
||||
typedef signed short int_least16_t;
|
||||
typedef signed int int_least32_t;
|
||||
typedef unsigned char uint_least8_t;
|
||||
typedef unsigned short uint_least16_t;
|
||||
typedef unsigned int uint_least32_t;
|
||||
|
||||
/* This is mostly guesswork. */
|
||||
typedef signed char int_fast8_t;
|
||||
typedef signed int int_fast16_t;
|
||||
typedef signed int int_fast32_t;
|
||||
typedef unsigned char uint_fast8_t;
|
||||
typedef unsigned int uint_fast16_t;
|
||||
typedef unsigned int uint_fast32_t;
|
||||
|
||||
typedef signed long intptr_t;
|
||||
typedef unsigned long uintptr_t;
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
typedef signed long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
typedef signed long long int_least64_t;
|
||||
typedef unsigned long long uint_least64_t;
|
||||
typedef signed long long int_fast64_t;
|
||||
typedef unsigned long long uint_fast64_t;
|
||||
typedef signed long long intmax_t;
|
||||
typedef unsigned long long uintmax_t;
|
||||
#else
|
||||
typedef signed long intmax_t;
|
||||
typedef unsigned long uintmax_t;
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#define INT8_MIN SCHAR_MIN
|
||||
#define INT8_MAX SCHAR_MAX
|
||||
#define UINT8_MAX UCHAR_MAX
|
||||
#define INT16_MIN SHRT_MIN
|
||||
#define INT16_MAX SHRT_MAX
|
||||
#define UINT16_MAX USHRT_MAX
|
||||
#define INT32_MIN INT_MIN
|
||||
#define INT32_MAX INT_MAX
|
||||
#define UINT32_MAX UINT_MAX
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define INT64_MIN LLONG_MIN
|
||||
#define INT64_MAX LLONG_MAX
|
||||
#define UINT64_MAX ULLONG_MAX
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#define INT_LEAST8_MIN SCHAR_MIN
|
||||
#define INT_LEAST8_MAX SCHAR_MAX
|
||||
#define UINT_LEAST8_MAX UCHAR_MAX
|
||||
#define INT_LEAST16_MIN SHRT_MIN
|
||||
#define INT_LEAST16_MAX SHRT_MAX
|
||||
#define UINT_LEAST16_MAX USHRT_MAX
|
||||
#define INT_LEAST32_MIN INT_MIN
|
||||
#define INT_LEAST32_MAX INT_MAX
|
||||
#define UINT_LEAST32_MAX UINT_MAX
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define INT_LEAST64_MIN LLONG_MIN
|
||||
#define INT_LEAST64_MAX LLONG_MAX
|
||||
#define UINT_LEAST64_MAX ULLONG_MAX
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#define INT_FAST8_MIN SCHAR_MIN
|
||||
#define INT_FAST8_MAX SCHAR_MAX
|
||||
#define UINT_FAST8_MAX UCHAR_MAX
|
||||
#define INT_FAST16_MIN INT_MIN
|
||||
#define INT_FAST16_MAX INT_MAX
|
||||
#define UINT_FAST16_MAX UINT_MAX
|
||||
#define INT_FAST32_MIN INT_MIN
|
||||
#define INT_FAST32_MAX INT_MAX
|
||||
#define UINT_FAST32_MAX UINT_MAX
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define INT_FAST64_MIN LLONG_MIN
|
||||
#define INT_FAST64_MAX LLONG_MAX
|
||||
#define UINT_FAST64_MAX ULLONG_MAX
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#define INTPTR_MIN LONG_MIN
|
||||
#define INTPTR_MAX LONG_MAX
|
||||
#define UINTPTR_MAX ULONG_MAX
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define INTMAX_MIN LLONG_MIN
|
||||
#define INTMAX_MAX LLONG_MAX
|
||||
#define UINTMAX_MAX ULLONG_MAX
|
||||
#else
|
||||
#define INTMAX_MIN LONG_MIN
|
||||
#define INTMAX_MAX LONG_MAX
|
||||
#define UINTMAX_MAX ULONG_MAX
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
|
||||
/* sigatomic_t is an int. */
|
||||
#define SIG_ATOMIC_MIN INT_MIN
|
||||
#define SIG_ATOMIC_MAX INT_MAX
|
||||
|
||||
/* Maximum value of size_t */
|
||||
#define SIZE_MAX UINT_MAX
|
||||
#endif /* not C++ or LIMIT_MACROS */
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
|
||||
#define INT8_C(x) x
|
||||
#define INT16_C(x) x
|
||||
#define INT32_C(x) x
|
||||
#define INT64_C(x) x ## LL
|
||||
|
||||
#define UINT8_C(x) x ## U
|
||||
#define UINT16_C(x) x ## U
|
||||
#define UINT32_C(x) x ## U
|
||||
#define UINT64_C(x) x ## ULL
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
#define INTMAX_C(x) x ## LL
|
||||
#define UINTMAX_C(x) x ## ULL
|
||||
#else
|
||||
#define INTMAX_C(x) x ## L
|
||||
#define UINTMAX_C(x) x ## UL
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#endif /* not C++ or CONSTANT_MACROS */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define PTRDIFF_MIN INT_MIN
|
||||
#define PTRDIFF_MAX INT_MAX
|
||||
|
||||
#define WCHAR_MIN 0
|
||||
#define WCHAR_MAX USHRT_MAX
|
||||
|
||||
#define WINT_MIN INT_MIN
|
||||
#define WINT_MAX INT_MAX
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _STDINT_H */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stdio.h,v 1.18 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: stdio.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -36,6 +36,12 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
@@ -44,16 +50,6 @@
|
||||
#include <stdarg.h>
|
||||
#endif /* _STDARG_H */
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* 'End of file' indicator returned by, for example, fgetc() */
|
||||
@@ -154,7 +150,7 @@ typedef struct
|
||||
#define L_tmpnam 10
|
||||
|
||||
/* Maximum number of unique file names tmpnam() can generate */
|
||||
#define TMP_MAX 0x40000
|
||||
#define TMP_MAX 0x3ffff
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -253,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) ? \
|
||||
@@ -270,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)) ? \
|
||||
@@ -283,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.
|
||||
*/
|
||||
@@ -310,30 +296,14 @@ extern char *tmpnam(char *buf);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__THREAD_SAFE)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define clearerr(file) ((void)(flockfile(file), (file)->flags &= ~(__FILE_EOF|__FILE_ERROR), funlockfile(file)))
|
||||
#define feof(file) (flockfile(file), __unlockfile((file),((file)->flags & __FILE_EOF) != 0))
|
||||
#define ferror(file) (flockfile(file), __unlockfile((file),((file)->flags & __FILE_ERROR) != 0))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#else
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#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)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* __THREAD_SAFE */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* __C_MACROS__ */
|
||||
|
||||
/****************************************************************************/
|
||||
@@ -346,78 +316,13 @@ extern char *tmpnam(char *buf);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define L_ctermid 32
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern char *ctermid(char *);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* 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, ...);
|
||||
extern int snprintf(char *s,size_t size,const char *format,...);
|
||||
extern int vsnprintf(char *s,size_t size,const char *format,va_list arg);
|
||||
extern int pclose(FILE *stream);
|
||||
extern FILE * popen(const char *command, const char *type);
|
||||
extern int fseeko(FILE *stream, off_t offset, int wherefrom);
|
||||
extern off_t ftello(FILE *stream);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#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 */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -431,18 +336,6 @@ extern int __vasprintf(const char *file,int line,char **ret,const char *format,v
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int vfscanf(FILE *stream, const char *format, va_list arg);
|
||||
extern int vsscanf(const char *s, const char *format, va_list arg);
|
||||
extern int vscanf(const char *format,va_list arg);
|
||||
extern int snprintf(char *s,size_t size,const char *format,...);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stdlib.h,v 1.12 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: stdlib.h,v 1.5 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -36,20 +36,20 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Maximum number of bytes in a multibyte character */
|
||||
#define MB_CUR_MAX 2
|
||||
#define MB_CUR_MAX 4
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -149,7 +149,8 @@ extern long atol(const char *str);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern int rand_r(unsigned int * seed);
|
||||
extern long long strtoll(const char *str, char **ptr, int base);
|
||||
extern unsigned long long strtoull(const char *str, char **ptr, int base);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@@ -177,42 +178,6 @@ extern char * mkdtemp(char *name_template);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard, but it should
|
||||
be part of ISO/IEC 9899:1999, also known as "C99". */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(__GNUC__) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
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);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct { long long quot; long long rem; } lldiv_t;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern long long llabs(long long x);
|
||||
extern lldiv_t lldiv(long long n,long long d);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* __GNUC__ || (__STDC_VERSION__ && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern float strtof(const char *str, char ** ptr);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern void _Exit(int status);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: string.h,v 1.8 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: string.h,v 1.7 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -36,18 +36,18 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
extern char *strerror(int error_number);
|
||||
extern char *strcat(char *dest, const char *src);
|
||||
extern char *strncat(char *dest, const char *src, size_t n);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: strings.h,v 1.5 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: strings.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,22 +40,21 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* These come from 4.4BSD. */
|
||||
#ifndef _STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif /* _STDDEF_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* 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);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: amigaos-va.h,v 1.4 2005-10-09 12:32:18 obarthel Exp $
|
||||
* $Id: amigaos-va.h,v 1.3 2005-01-02 09:07:21 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@@ -40,18 +40,18 @@
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDARG_H
|
||||
#include <stdarg.h>
|
||||
#endif /* _STDARG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _STDARG_H
|
||||
#include <stdarg.h>
|
||||
#endif /* _STDARG_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Define the AmigaOS specific varargs macros,
|
||||
if <stdarg.h> didn't already define them. */
|
||||
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* $Id: clib2_stdc.h,v 1.1 2005-05-12 13:21:47 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_CLIB2_STDC_H
|
||||
#define _SYS_CLIB2_STDC_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Make the "restrict" qualifier work well with 'C' compilers that do
|
||||
not support it. We do assume that __STDC__ is defined, though. */
|
||||
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
|
||||
#define restrict
|
||||
#endif /* !__STDC_VERSION__ || __STDC_VERSION__ < 199901L */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _SYS_CLIB2_STDC_H */
|
||||
@@ -1,72 +0,0 @@
|
||||
/*
|
||||
* $Id: filio.h,v 1.1 2005-10-09 12:32:18 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_FILIO_H
|
||||
#define _SYS_FILIO_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _SYS_IOCCOM_H
|
||||
#include <sys/ioccom.h>
|
||||
#endif /* _SYS_IOCCOM_H */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/* Generic file-descriptor ioctl's. */
|
||||
#define FIOCLEX _IO('f', 1) /* set close on exec on fd */
|
||||
#define FIONCLEX _IO('f', 2) /* remove close on exec */
|
||||
#define FIONREAD _IOR('f', 127, int) /* get # bytes to read */
|
||||
#define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */
|
||||
#define FIOASYNC _IOW('f', 125, int) /* set/clear async i/o */
|
||||
#define FIOSETOWN _IOW('f', 124, int) /* set owner */
|
||||
#define FIOGETOWN _IOR('f', 123, int) /* get owner */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif /* _SYS_FILIO_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user