mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a5063ff71 | ||
|
|
95f0617964 | ||
|
|
4b3dbd3546 | ||
|
|
b8663a4240 | ||
|
|
aa3ccda8de | ||
|
|
8062f49f1c | ||
|
|
1310865c33 | ||
|
|
2ed76311fd | ||
|
|
3f19d52557 | ||
|
|
7038751f6b | ||
|
|
5d9e4c07a6 | ||
|
|
f49a45f6a8 | ||
|
|
fef99a0181 | ||
|
|
17a0e794c5 | ||
|
|
64f39b51ae | ||
|
|
a7e0bc8e16 | ||
|
|
14595cc0a8 | ||
|
|
8555296691 | ||
|
|
53bb602493 | ||
|
|
a048eadf09 | ||
|
|
51e20cee1d | ||
|
|
618af18519 | ||
|
|
0cbc101798 | ||
|
|
5d508c6e6d | ||
|
|
a4b138e406 | ||
|
|
7d21a272cc | ||
|
|
7ae8399e43 | ||
|
|
0d101fd928 | ||
|
|
6a2db55fc2 | ||
|
|
6214bc2067 | ||
|
|
4a4c8b2ef9 | ||
|
|
f3c4ee68cd | ||
|
|
0848048029 | ||
|
|
dfd3dc3170 | ||
|
|
5d705f3c30 | ||
|
|
51f1dacdfa | ||
|
|
56e788a268 | ||
|
|
916dfa3c6a | ||
|
|
de24377581 | ||
|
|
51c2ad8cfd | ||
|
|
a9b217d3f8 | ||
|
|
a0c638e3d6 | ||
|
|
16407d5389 | ||
|
|
c18e21ee36 | ||
|
|
3f284b7fb8 | ||
|
|
0a3962a105 | ||
|
|
1ebd864f60 | ||
|
|
115497faec | ||
|
|
f6c5e12f63 | ||
|
|
04d2b93463 | ||
|
|
bdaf52ea0e | ||
|
|
f3435ba057 | ||
|
|
5d1a8ec197 | ||
|
|
1b4d0215d7 | ||
|
|
93619a81a3 | ||
|
|
8e5ebc5400 | ||
|
|
39860a86f8 | ||
|
|
e899a25944 |
@@ -1,235 +0,0 @@
|
|||||||
An ISO 'C' (1994) compliant runtime library for the Amiga
|
|
||||||
=========================================================
|
|
||||||
|
|
||||||
1. What is this?
|
|
||||||
|
|
||||||
This is my attempt to get Samba 2.2.x ported to the Amiga. My first Amiga
|
|
||||||
port required SAS/C and a number of strange tricks had to be pulled to get
|
|
||||||
it to support the kind of environment Samba needed. But with the
|
|
||||||
introduction of Samba 2.2.x many of those tricks did not work any more,
|
|
||||||
which is why I decided to attack the problem at the root, namely the
|
|
||||||
runtime library.
|
|
||||||
|
|
||||||
Because it was no longer possible to build Samba with SAS/C on the new
|
|
||||||
Amiga platform, the idea came up to move development to the GNU 'C'
|
|
||||||
compiler. This turned out to be a challenge due to its somewhat
|
|
||||||
underdeveloped runtime library and header files. Eventually, I decided to
|
|
||||||
rewrite that library from scratch.
|
|
||||||
|
|
||||||
|
|
||||||
2. What does it do?
|
|
||||||
|
|
||||||
Using "'C' - A reference manual" as a reference I wrote a set of header
|
|
||||||
files, then proceeded to implement each single function referenced in them.
|
|
||||||
With few exceptions in the area of wide character support, the result
|
|
||||||
should be a feature complete implementation of the ISO 'C' (1994) runtime
|
|
||||||
library.
|
|
||||||
|
|
||||||
Because Samba needs a few POSIX-like routines to be supported, the library
|
|
||||||
functionality is complemented by a set of routines described in "Advanced
|
|
||||||
programming in the Unix environent". This set is not complete, however. It
|
|
||||||
will have to grow even further to accomodate for Samba's needs, but this is
|
|
||||||
a good start. I specifically added hooks for integrating socket I/O at a
|
|
||||||
later point of time.
|
|
||||||
|
|
||||||
This is not a portable implementation of the library in the sense that you
|
|
||||||
could move it from one 'C' compiler on one operating system to another.
|
|
||||||
This is an Amiga specific implementation.
|
|
||||||
|
|
||||||
The library supports floating point math, which is limited to IEEE single
|
|
||||||
and double precision or M68881 inline math. There is no support for the
|
|
||||||
fast floating point (FFP) format or exclusive IEEE single precision. You
|
|
||||||
either get double precision (IEEE math) or extended precision (M68881
|
|
||||||
inline math). What it is that you get is determined at compile time. Use
|
|
||||||
the IEEE_FLOATING_POINT_SUPPORT preprocessor symbol to activate IEEE math
|
|
||||||
code and the M68881_FLOATING_POINT_SUPPORT symbol for M68881 inline math.
|
|
||||||
|
|
||||||
Not unlike SAS/C, you can configure a minimum stack size the program is to
|
|
||||||
use when it starts up. This is controlled via the '__stack_size' variable
|
|
||||||
(see "stdlib_main.c").
|
|
||||||
|
|
||||||
I added some amiga.lib and debug.lib functionality to the library, but
|
|
||||||
don't count on it to be complete.
|
|
||||||
|
|
||||||
|
|
||||||
3. What does it not do?
|
|
||||||
|
|
||||||
This library is a departure from the typical 'C' runtime environments of
|
|
||||||
the past which had to run on all AmigaOS releases, down to Kickstart 1.1.
|
|
||||||
This very library was designed to take advantage of the routines available
|
|
||||||
since Kickstart 2.04 was introduced and virtually nobody ever put to use.
|
|
||||||
This helps to cut the code size, and it also helps to keep bugs out of the
|
|
||||||
library by falling back onto well-tested implementations. However, the
|
|
||||||
catch is that the code won't run under Kickstart 1.3 and below. But then
|
|
||||||
these operating system releases have been obsolete for more than a decade,
|
|
||||||
and you can always go back to a compiler environment which supports them.
|
|
||||||
|
|
||||||
Practically all library routines are implemented in a sort of naïve
|
|
||||||
fashion. That is, they contain virtually no optimizations whatsoever. This
|
|
||||||
is particularly apparent in workhorses such as memset() or memmove(). But
|
|
||||||
then, the issue is easy testability and Amiga platform portability.
|
|
||||||
|
|
||||||
There is very little support for amiga.lib functionality. There is
|
|
||||||
NewList(), HookEntry(), CallHook(), CallHookA(), the DoMethod() family, the
|
|
||||||
RexxVars family, but that's all. If you need more, you would have to
|
|
||||||
implement it yourself. Put another way, if you absolutely need
|
|
||||||
functionality that is only found in amiga.lib, you really shouldn't need in
|
|
||||||
in the first place.
|
|
||||||
|
|
||||||
|
|
||||||
4. Where does the source code come from?
|
|
||||||
|
|
||||||
I originally thought that it might be helpful to piece this library
|
|
||||||
together from various sources, such as the BSD libc. Turned out that this
|
|
||||||
code was so 'portable' that it became much more complex than it ought to
|
|
||||||
be. Also, some side-effects were present which considerably changed the
|
|
||||||
behaviour of the library. For example, the BSD libc uses bcopy() as an
|
|
||||||
alias for memcpy(), and unlike memcpy() is documented to, bcopy() supports
|
|
||||||
overlapping copies.
|
|
||||||
|
|
||||||
Eventually, I wrote virtually all the code myself, borrowing algorithmic
|
|
||||||
ideas from the BSD libc and the Manx Aztec 'C' runtime library. Because I
|
|
||||||
don't know much about the environment GCC expects, I borrowed code snippets
|
|
||||||
from libnix, which was written by Matthias Fleischer and Gunther Nikl. This
|
|
||||||
in particular concerns the integer and floating point math support, the
|
|
||||||
setjmp/longjmp routines and the startup code. The M68881 inline math code
|
|
||||||
comes from the <math-68881.h> file written by Matthew Self
|
|
||||||
(self@bayes.arc.nasa.gov).
|
|
||||||
|
|
||||||
|
|
||||||
5. Limitations and caveats
|
|
||||||
|
|
||||||
There is hardly any documentation on the code I wrote. In part this is due
|
|
||||||
to the fact that the code itself is very simple in design. It should speak
|
|
||||||
for itself. However, to make a usable runtime library you have to have a
|
|
||||||
user documentation as in man pages or autodocs. We will eventually have to
|
|
||||||
have autodocs for this library.
|
|
||||||
|
|
||||||
The code is currently plastered with assertions and debug code. It is
|
|
||||||
therefore much larger than it ought to be and runs much slower than it
|
|
||||||
ought to be. For example, the malloc() routine will set the contents of the
|
|
||||||
memory allocated to a 'dirty' bit pattern which is likely to break software
|
|
||||||
which makes assumptions about its contents. Likewise, the free() routine
|
|
||||||
will trash the memory to deallocate with a different 'dirty' bit pattern to
|
|
||||||
turn up reuse of memory after deallocation. All these debugging features
|
|
||||||
can be disabled by defining the NDEBUG preprocessor symbol at compile time
|
|
||||||
(see <assert.h>).
|
|
||||||
|
|
||||||
The exception handling in the math code is not particularly effective. For
|
|
||||||
one part this is due to the fact that there is no exception handler
|
|
||||||
installed by the runtime library when it starts up which could catch and
|
|
||||||
process the error conditions the CPU or FPU generates. The idea was to
|
|
||||||
provide for a portable runtime library with little to no assembly language
|
|
||||||
involved. To make the exception handling complete, such code would be
|
|
||||||
necessary.
|
|
||||||
|
|
||||||
The library currently builds under SAS/C, but because the 'normal' program
|
|
||||||
startup code is not utilized, the base relative (A4) addressing does not
|
|
||||||
work. If you are going to test it, use the data=faronly option to compile
|
|
||||||
the library and the programs.
|
|
||||||
|
|
||||||
If you are going to rebuild the library with SAS/C you will need to
|
|
||||||
reassign INCLUDE: to point to the local 'include' directory or things won't
|
|
||||||
work.
|
|
||||||
|
|
||||||
|
|
||||||
6. Conventions and design issues
|
|
||||||
|
|
||||||
You will have noticed the 330+ files in this directory. This is not the
|
|
||||||
best way to organize a runtime library, but at least all the bits and
|
|
||||||
pieces are in plain sight. Each file stands for the one or two routines it
|
|
||||||
contains. The name indicates what routine(s) that might be. Each file name
|
|
||||||
is prefixed by the name of the header file in which the corresponding
|
|
||||||
routine is defined. So, for example, you will find that "unistd_lchown.c"
|
|
||||||
contains the definition of the lchown() routine, which has its prototype
|
|
||||||
defined in the <unistd.h> header file.
|
|
||||||
|
|
||||||
Internal function and variable names are prefixed with two underscores, as
|
|
||||||
in '__stdio_init()'.
|
|
||||||
|
|
||||||
All routines attempt to do error checking on their parameters. They will
|
|
||||||
either drop into an assert() or set an errno value and refuse to go any
|
|
||||||
further. This cuts performance but should help to catch the simple bugs
|
|
||||||
quite easily (NULL pointers).
|
|
||||||
|
|
||||||
Just like any halfway sane Amiga 'C' runtime library, this one performs its
|
|
||||||
^C checking in the I/O routines. Typically once upon entry and in every
|
|
||||||
iteration of the loop there might be it will quickly poll the ^C signal and
|
|
||||||
drop into raise(SIGINT) in case the signal is set. This is just about the
|
|
||||||
safest method to solve the problem and should be much more robust than the
|
|
||||||
ixemul approach of 'interrupt anywhere - crash anywhere' using the task
|
|
||||||
switch/launch hooks to test for signals.
|
|
||||||
|
|
||||||
By default all library routines follow the ISO 'C' conventions in that
|
|
||||||
where implementation defined behaviour is permitted, the AmigaOS rules are
|
|
||||||
followed. For example, unlink() will by default operate like DeleteFile()
|
|
||||||
and rename() will return with an error code set if the name of the
|
|
||||||
file/directory to be renamed would collide with an existing directory
|
|
||||||
entry. However, your program can set a global variable '__unix_semantics'
|
|
||||||
which will cause some routines to perform like their Unix counterparts.
|
|
||||||
This is necessary for Samba to work but not a generally desirable feature.
|
|
||||||
You have some Unix-like behaviour, but the environment itself is not
|
|
||||||
completely Unix- or POSIX-compliant. And it shouldn't be. Don't make the
|
|
||||||
mistake of trying to mold the environment into a POSIX emulation. It
|
|
||||||
doesn't work; AmigaOS is not Unix.
|
|
||||||
|
|
||||||
|
|
||||||
7. The startup code
|
|
||||||
|
|
||||||
There are three program startup files provided. The most simplistic is in
|
|
||||||
'startup.c' which I use for SAS/C. It just invokes the setup routine which
|
|
||||||
eventually calls main() and drops straight into exit().
|
|
||||||
|
|
||||||
The ncrt0.S file was adapted from the libnix startup code which sets up the
|
|
||||||
base relative data area, if necessary (the SMALL_DATA preprocessor symbol
|
|
||||||
must be defined).
|
|
||||||
|
|
||||||
The nrcrt0.S file was adapted from libnix startup code, too, and sets up
|
|
||||||
the base relative data area for programs to be made resident. Note that the
|
|
||||||
geta4() stub is missing here; it wouldn't work in a resident program
|
|
||||||
anyway.
|
|
||||||
|
|
||||||
The ncrt0.S and nrcrt0.S files are considerably smaller and less complex
|
|
||||||
than the libnix code they are based on. This is because in this library
|
|
||||||
design all the more complex tasks are performed in the stdlib_main.c file
|
|
||||||
rather than in assembly language.
|
|
||||||
|
|
||||||
|
|
||||||
8. Documentation
|
|
||||||
|
|
||||||
Well, you're reading it. There isn't anything much yet. You can consult the book
|
|
||||||
"'C' - A reference manual" and you could look at the Open Group's Single Unix
|
|
||||||
Specification at <http://www.opengroup.org/onlinepubs/007904975>.
|
|
||||||
|
|
||||||
|
|
||||||
9. Legal status
|
|
||||||
|
|
||||||
Because this library is in part based upon free software it would be uncourteous
|
|
||||||
not to make it free software itself. The BSD license would probably be
|
|
||||||
appropriate here.
|
|
||||||
|
|
||||||
The PowerPC math library is based in part on work by Sun Microsystems:
|
|
||||||
|
|
||||||
====================================================
|
|
||||||
Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
|
||||||
|
|
||||||
Developed at SunPro, a Sun Microsystems, Inc. business.
|
|
||||||
Permission to use, copy, modify, and distribute this
|
|
||||||
software is freely granted, provided that this notice
|
|
||||||
is preserved.
|
|
||||||
====================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
10. Contacting the author
|
|
||||||
|
|
||||||
The basic work was done by Olaf Barthel during two weeks in July 2002. You
|
|
||||||
can reach me at:
|
|
||||||
|
|
||||||
Olaf Barthel
|
|
||||||
Gneisenaustr. 43
|
|
||||||
D-31275 Lehrte
|
|
||||||
|
|
||||||
Or via e-mail:
|
|
||||||
|
|
||||||
olsen@sourcery.han.de
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: GNUmakefile.68k,v 1.1.1.1 2004-07-26 16:30:14 obarthel Exp $
|
# $Id: GNUmakefile.68k,v 1.11 2004-10-07 09:20:44 obarthel Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -40,7 +40,7 @@ endif
|
|||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -c $(CFLAGS) -DIEEE_FLOATING_POINT_SUPPORT $<
|
@$(CC) -c $(CFLAGS) $<
|
||||||
|
|
||||||
$(LIBC_OBJS)/%.o : %.c
|
$(LIBC_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):c]"
|
@echo "Compiling $< [$(TYPE):c]"
|
||||||
@@ -144,9 +144,9 @@ C_LIB = \
|
|||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o \
|
fcntl_write.o \
|
||||||
|
fcntl_get_default_file.o \
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o \
|
libgen_dirname.o \
|
||||||
locale_data.o \
|
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o \
|
locale_setlocale.o \
|
||||||
@@ -306,6 +306,8 @@ C_LIB = \
|
|||||||
stdlib_startup.o \
|
stdlib_startup.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
|
stdlib_strtoll.o \
|
||||||
|
stdlib_strtoull.o \
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_sysbase.o \
|
stdlib_sysbase.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
@@ -315,7 +317,6 @@ C_LIB = \
|
|||||||
stdlib_udivsi4.o \
|
stdlib_udivsi4.o \
|
||||||
stdlib_umodsi3.o \
|
stdlib_umodsi3.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
stdlib_usergroup.o \
|
|
||||||
stdlib_wildcard_expand.o \
|
stdlib_wildcard_expand.o \
|
||||||
strings_strcasecmp.o \
|
strings_strcasecmp.o \
|
||||||
strings_strncasecmp.o \
|
strings_strncasecmp.o \
|
||||||
@@ -361,9 +362,9 @@ C_LIB = \
|
|||||||
time_time.o \
|
time_time.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
|
unistd_chdir_exit.o \
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
unistd_data.o \
|
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -381,8 +382,11 @@ C_LIB = \
|
|||||||
unistd_realpath.o \
|
unistd_realpath.o \
|
||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
|
unistd_timer.o \
|
||||||
|
unistd_time_delay.o \
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unlink.o \
|
unistd_unlink.o \
|
||||||
|
unistd_usleep.o \
|
||||||
utime_utime.o
|
utime_utime.o
|
||||||
|
|
||||||
UNIX_LIB = \
|
UNIX_LIB = \
|
||||||
@@ -395,6 +399,7 @@ UNIX_LIB = \
|
|||||||
fcntl_creat.o \
|
fcntl_creat.o \
|
||||||
fcntl_fcntl.o \
|
fcntl_fcntl.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
|
fcntl_get_default_file.o \
|
||||||
mount_convertinfo.o \
|
mount_convertinfo.o \
|
||||||
mount_statfs.o \
|
mount_statfs.o \
|
||||||
stat_chmod.o \
|
stat_chmod.o \
|
||||||
@@ -420,6 +425,7 @@ UNIX_LIB = \
|
|||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
|
unistd_chdir_exit.o \
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_getcwd.o \
|
unistd_getcwd.o \
|
||||||
unistd_lchown.o \
|
unistd_lchown.o \
|
||||||
@@ -452,12 +458,18 @@ MATH_LIB = \
|
|||||||
math_floor.o \
|
math_floor.o \
|
||||||
math_fmod.o \
|
math_fmod.o \
|
||||||
math_frexp.o \
|
math_frexp.o \
|
||||||
|
math_hypot.o \
|
||||||
math_init_exit.o \
|
math_init_exit.o \
|
||||||
|
math_isinf.o \
|
||||||
|
math_isnan.o \
|
||||||
math_ldexp.o \
|
math_ldexp.o \
|
||||||
math_log.o \
|
math_log.o \
|
||||||
math_log10.o \
|
math_log10.o \
|
||||||
|
math_logb.o \
|
||||||
math_modf.o \
|
math_modf.o \
|
||||||
math_pow.o \
|
math_pow.o \
|
||||||
|
math_rint.o \
|
||||||
|
math_rintf.o \
|
||||||
math_sin.o \
|
math_sin.o \
|
||||||
math_sinh.o \
|
math_sinh.o \
|
||||||
math_sqrt.o \
|
math_sqrt.o \
|
||||||
@@ -467,8 +479,6 @@ MATH_LIB = \
|
|||||||
stdio_flush.o \
|
stdio_flush.o \
|
||||||
stdio_fprintf.o \
|
stdio_fprintf.o \
|
||||||
stdio_fscanf.o \
|
stdio_fscanf.o \
|
||||||
stdio_isinfinity.o \
|
|
||||||
stdio_isnotanumber.o \
|
|
||||||
stdio_printf.o \
|
stdio_printf.o \
|
||||||
stdio_scanf.o \
|
stdio_scanf.o \
|
||||||
stdio_snprintf.o \
|
stdio_snprintf.o \
|
||||||
@@ -574,6 +584,7 @@ NET_LIB = \
|
|||||||
socket_shutdown.o \
|
socket_shutdown.o \
|
||||||
socket_socket.o \
|
socket_socket.o \
|
||||||
socket_hook_entry.o \
|
socket_hook_entry.o \
|
||||||
|
socket_hstrerror.o \
|
||||||
stat_umask.o \
|
stat_umask.o \
|
||||||
usergroup_crypt.o \
|
usergroup_crypt.o \
|
||||||
usergroup_data.o \
|
usergroup_data.o \
|
||||||
@@ -695,11 +706,6 @@ STARTUPS := nrcrt0.o nbcrt0.o nr32crt0.o nb32crt0.o ncrt0.o mainnb.o mainb.o mai
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
all: \
|
all: \
|
||||||
lib/libm020/libm.a \
|
|
||||||
lib/libm.a \
|
|
||||||
lib/libb/libm020/libm.a \
|
|
||||||
lib/libb/libm.a \
|
|
||||||
lib/libb32/libm020/libm.a \
|
|
||||||
lib/nrcrt0.o \
|
lib/nrcrt0.o \
|
||||||
lib/nbcrt0.o \
|
lib/nbcrt0.o \
|
||||||
lib/ncrt0.o \
|
lib/ncrt0.o \
|
||||||
@@ -707,7 +713,12 @@ all: \
|
|||||||
lib/n32rcrt0.o \
|
lib/n32rcrt0.o \
|
||||||
lib/mainnb.o \
|
lib/mainnb.o \
|
||||||
lib/mainb.o \
|
lib/mainb.o \
|
||||||
lib/mainb32.o
|
lib/mainb32.o \
|
||||||
|
lib/libm.a \
|
||||||
|
lib/libm020/libm.a \
|
||||||
|
lib/libb/libm.a \
|
||||||
|
lib/libb/libm020/libm.a \
|
||||||
|
lib/libb32/libm020/libm.a
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: GNUmakefile.os4,v 1.1.1.1 2004-07-26 16:30:15 obarthel Exp $
|
# $Id: GNUmakefile.os4,v 1.12 2004-10-07 11:03:46 tfrieden Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -53,7 +53,7 @@ endif
|
|||||||
|
|
||||||
%.o : %.c
|
%.o : %.c
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
|
@$(CC) -c $(CFLAGS) $<
|
||||||
|
|
||||||
$(LIBC_OBJS)/%.o : %.c
|
$(LIBC_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):c]"
|
@echo "Compiling $< [$(TYPE):c]"
|
||||||
@@ -65,7 +65,7 @@ $(LIBUNIX_OBJS)/%.o : %.c
|
|||||||
|
|
||||||
$(LIBM_OBJS)/%.o : %.c
|
$(LIBM_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):m]"
|
@echo "Compiling $< [$(TYPE):m]"
|
||||||
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -DPPC_FLOATING_POINT_SUPPORT $<
|
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) $(FLOAT_TYPE) $<
|
||||||
|
|
||||||
$(LIBSTACK_OBJS)/%.o : %.c
|
$(LIBSTACK_OBJS)/%.o : %.c
|
||||||
@echo "Compiling $< [$(TYPE):stack]"
|
@echo "Compiling $< [$(TYPE):stack]"
|
||||||
@@ -87,10 +87,17 @@ $(LIBAMIGA_OBJS)/%.o : %.c
|
|||||||
|
|
||||||
ifeq (small_data,$(TYPE))
|
ifeq (small_data,$(TYPE))
|
||||||
CODE_TYPE := -msdata=sysv -DSMALL_DATA
|
CODE_TYPE := -msdata=sysv -DSMALL_DATA
|
||||||
|
FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (large_data,$(TYPE))
|
ifeq (large_data,$(TYPE))
|
||||||
CODE_TYPE := -msdata=data
|
CODE_TYPE := -msdata=data
|
||||||
|
FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (large_data_softfloat, $(TYPE))
|
||||||
|
CODE_TYPE := -msdata=data -msoft-float
|
||||||
|
FLOAT_TYPE :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@@ -101,7 +108,7 @@ WARNINGS = \
|
|||||||
|
|
||||||
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
|
INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE)
|
||||||
OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -fno-builtin -D__USE_INLINE__ -Wa,-mregnames
|
OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -fno-builtin -D__USE_INLINE__ -Wa,-mregnames
|
||||||
OPTIMIZE = -O3 -fomit-frame-pointer -funroll-loops
|
OPTIMIZE = -O -fomit-frame-pointer -funroll-loops
|
||||||
#DEBUG = -g
|
#DEBUG = -g
|
||||||
|
|
||||||
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
|
CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES)
|
||||||
@@ -138,9 +145,9 @@ C_LIB = \
|
|||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o \
|
fcntl_write.o \
|
||||||
|
fcntl_get_default_file.o \
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o \
|
libgen_dirname.o \
|
||||||
locale_data.o \
|
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o \
|
locale_setlocale.o \
|
||||||
@@ -301,12 +308,13 @@ C_LIB = \
|
|||||||
stdlib_startup.o \
|
stdlib_startup.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
|
stdlib_strtoll.o \
|
||||||
|
stdlib_strtoull.o \
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
stdlib_termination_message.o \
|
stdlib_termination_message.o \
|
||||||
stdlib_threshold.o \
|
stdlib_threshold.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
stdlib_usergroup.o \
|
|
||||||
stdlib_wildcard_expand.o \
|
stdlib_wildcard_expand.o \
|
||||||
strings_strcasecmp.o \
|
strings_strcasecmp.o \
|
||||||
strings_strncasecmp.o \
|
strings_strncasecmp.o \
|
||||||
@@ -352,9 +360,9 @@ C_LIB = \
|
|||||||
time_time.o \
|
time_time.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
|
unistd_chdir_exit.o \
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
unistd_data.o \
|
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -372,8 +380,11 @@ C_LIB = \
|
|||||||
unistd_realpath.o \
|
unistd_realpath.o \
|
||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
|
unistd_time_delay.o \
|
||||||
|
unistd_timer.o \
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unlink.o \
|
unistd_unlink.o \
|
||||||
|
unistd_usleep.o \
|
||||||
utime_utime.o
|
utime_utime.o
|
||||||
|
|
||||||
|
|
||||||
@@ -387,6 +398,7 @@ UNIX_LIB = \
|
|||||||
fcntl_creat.o \
|
fcntl_creat.o \
|
||||||
fcntl_fcntl.o \
|
fcntl_fcntl.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
|
fcntl_get_default_file.o \
|
||||||
mount_convertinfo.o \
|
mount_convertinfo.o \
|
||||||
mount_statfs.o \
|
mount_statfs.o \
|
||||||
stat_chmod.o \
|
stat_chmod.o \
|
||||||
@@ -412,6 +424,7 @@ UNIX_LIB = \
|
|||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
|
unistd_chdir_exit.o \
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_getcwd.o \
|
unistd_getcwd.o \
|
||||||
unistd_lchown.o \
|
unistd_lchown.o \
|
||||||
@@ -444,12 +457,18 @@ MATH_LIB = \
|
|||||||
math_floor.o \
|
math_floor.o \
|
||||||
math_fmod.o \
|
math_fmod.o \
|
||||||
math_frexp.o \
|
math_frexp.o \
|
||||||
|
math_hypot.o \
|
||||||
math_init_exit.o \
|
math_init_exit.o \
|
||||||
|
math_isnan.o \
|
||||||
|
math_isinf.o \
|
||||||
math_ldexp.o \
|
math_ldexp.o \
|
||||||
math_log.o \
|
math_log.o \
|
||||||
math_log10.o \
|
math_log10.o \
|
||||||
|
math_logb.o \
|
||||||
math_modf.o \
|
math_modf.o \
|
||||||
math_pow.o \
|
math_pow.o \
|
||||||
|
math_rint.o \
|
||||||
|
math_rintf.o \
|
||||||
math_sin.o \
|
math_sin.o \
|
||||||
math_sinh.o \
|
math_sinh.o \
|
||||||
math_sqrt.o \
|
math_sqrt.o \
|
||||||
@@ -465,8 +484,6 @@ MATH_LIB = \
|
|||||||
stdio_flush.o \
|
stdio_flush.o \
|
||||||
stdio_fprintf.o \
|
stdio_fprintf.o \
|
||||||
stdio_fscanf.o \
|
stdio_fscanf.o \
|
||||||
stdio_isinfinity.o \
|
|
||||||
stdio_isnotanumber.o \
|
|
||||||
stdio_printf.o \
|
stdio_printf.o \
|
||||||
stdio_scanf.o \
|
stdio_scanf.o \
|
||||||
stdio_snprintf.o \
|
stdio_snprintf.o \
|
||||||
@@ -568,6 +585,7 @@ NET_LIB = \
|
|||||||
socket_shutdown.o \
|
socket_shutdown.o \
|
||||||
socket_socket.o \
|
socket_socket.o \
|
||||||
socket_hook_entry.o \
|
socket_hook_entry.o \
|
||||||
|
socket_hstrerror.o \
|
||||||
usergroup_crypt.o \
|
usergroup_crypt.o \
|
||||||
usergroup_data.o \
|
usergroup_data.o \
|
||||||
usergroup_endgrent.o \
|
usergroup_endgrent.o \
|
||||||
@@ -675,7 +693,12 @@ all: \
|
|||||||
lib/crtbegin.o \
|
lib/crtbegin.o \
|
||||||
lib/crtend.o \
|
lib/crtend.o \
|
||||||
lib/mainnb.o \
|
lib/mainnb.o \
|
||||||
lib/libm.a
|
lib/libm.a \
|
||||||
|
lib/small-data/libm.a \
|
||||||
|
lib/bcrt0.o \
|
||||||
|
lib/bcrtbegin.o \
|
||||||
|
lib/bcrtend.o \
|
||||||
|
lib/soft-float/libc.a
|
||||||
|
|
||||||
copy:
|
copy:
|
||||||
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
||||||
@@ -688,7 +711,7 @@ clean:
|
|||||||
|
|
||||||
realclean:
|
realclean:
|
||||||
$(MAKE) clean
|
$(MAKE) clean
|
||||||
-$(DELETE) lib small_data large_data
|
-$(DELETE) lib small_data large_data large_data_softfloat
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
@@ -730,6 +753,12 @@ endif
|
|||||||
lib:
|
lib:
|
||||||
-$(MAKEDIR) $@
|
-$(MAKEDIR) $@
|
||||||
|
|
||||||
|
lib/small-data:
|
||||||
|
-$(MAKEDIR) $@
|
||||||
|
|
||||||
|
lib/soft-float:
|
||||||
|
-$(MAKEDIR) $@
|
||||||
|
|
||||||
lib/libm.a: lib
|
lib/libm.a: lib
|
||||||
$(MAKE) TYPE=large_data kitchen_sink
|
$(MAKE) TYPE=large_data kitchen_sink
|
||||||
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
$(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib
|
||||||
@@ -738,6 +767,10 @@ lib/small-data/libm.a: lib lib/small-data
|
|||||||
$(MAKE) TYPE=small_data kitchen_sink
|
$(MAKE) TYPE=small_data kitchen_sink
|
||||||
$(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data
|
$(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data
|
||||||
|
|
||||||
|
lib/soft-float/libc.a: lib lib/soft-float
|
||||||
|
$(MAKE) TYPE=large_data_softfloat kitchen_sink
|
||||||
|
$(COPY) $(foreach file,$(LIBS),large_data_softfloat/$(file)) lib/soft-float
|
||||||
|
|
||||||
lib/crt0.o : lib crt0.o
|
lib/crt0.o : lib crt0.o
|
||||||
$(COPY) crt0.o lib
|
$(COPY) crt0.o lib
|
||||||
|
|
||||||
@@ -753,6 +786,15 @@ lib/mainnb.o : lib mainnb.o
|
|||||||
lib/mainb.o : lib mainb.o
|
lib/mainb.o : lib mainb.o
|
||||||
$(COPY) mainb.o lib
|
$(COPY) mainb.o lib
|
||||||
|
|
||||||
|
lib/bcrt0.o : lib bcrt0.o
|
||||||
|
$(COPY) bcrt0.o lib
|
||||||
|
|
||||||
|
lib/bcrtbegin.o : lib bcrtbegin.o
|
||||||
|
$(COPY) bcrtbegin.o lib
|
||||||
|
|
||||||
|
lib/bcrtend.o : lib bcrtend.o
|
||||||
|
$(COPY) bcrtend.o lib
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
$(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c
|
$(LIBAMIGA_OBJS)/amiga_hookentry.o : amiga_hookentry.c
|
||||||
@@ -873,6 +915,13 @@ mainb.o : stdlib_main.c
|
|||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c
|
@$(CC) -o mainb.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA stdlib_main.c
|
||||||
|
|
||||||
|
bcrtbegin.o : crtbegin.c
|
||||||
|
$(CC) -o bcrtbegin.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtbegin.c
|
||||||
|
|
||||||
|
bcrtend.o : crtend.c
|
||||||
|
$(CC) -o bcrtend.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtend.c
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
mkid:
|
mkid:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "amiga.lib 1.165"
|
#define VERS "amiga.lib 1.179"
|
||||||
#define VSTRING "amiga.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "amiga.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: amiga.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: amiga.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "c.lib 1.165"
|
#define VERS "c.lib 1.179"
|
||||||
#define VSTRING "c.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "c.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: c.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: c.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
3214
library/changes
Normal file
3214
library/changes
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: crtbegin.c,v 1.1.1.1 2004-07-26 16:30:22 obarthel Exp $
|
* $Id: crtbegin.c,v 1.3 2004-09-29 16:54:54 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "debug.lib 1.165"
|
#define VERS "debug.lib 1.179"
|
||||||
#define VSTRING "debug.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "debug.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: debug.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: debug.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent_closedir.c,v 1.1.1.1 2004-07-26 16:30:30 obarthel Exp $
|
* $Id: dirent_closedir.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent_data.c,v 1.1.1.1 2004-07-26 16:30:30 obarthel Exp $
|
* $Id: dirent_data.c,v 1.3 2004-08-07 10:24:04 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,10 +37,6 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/* Directories being scanned whose locks need to be freed when shutting down. */
|
/* Directories being scanned whose locks need to be freed when shutting down. */
|
||||||
struct MinList __directory_list;
|
struct MinList __directory_list;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent_opendir.c,v 1.1.1.1 2004-07-26 16:30:31 obarthel Exp $
|
* $Id: dirent_opendir.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent_readdir.c,v 1.1.1.1 2004-07-26 16:30:31 obarthel Exp $
|
* $Id: dirent_readdir.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent_rewinddir.c,v 1.1.1.1 2004-07-26 16:30:31 obarthel Exp $
|
* $Id: dirent_rewinddir.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_close.c,v 1.1.1.1 2004-07-26 16:30:32 obarthel Exp $
|
* $Id: fcntl_close.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_creat.c,v 1.1.1.1 2004-07-26 16:30:32 obarthel Exp $
|
* $Id: fcntl_creat.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_fcntl.c,v 1.1.1.1 2004-07-26 16:30:33 obarthel Exp $
|
* $Id: fcntl_fcntl.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: locale_data.c,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
|
* $Id: fcntl_get_default_file.c,v 1.1 2004-08-25 15:27:27 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -31,15 +31,39 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LOCALE_HEADERS_H
|
#ifndef _FCNTL_HEADERS_H
|
||||||
#include "locale_headers.h"
|
#include "fcntl_headers.h"
|
||||||
#endif /* _LOCALE_HEADERS_H */
|
#endif /* _FCNTL_HEADERS_H */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
struct Locale * __default_locale;
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
struct Locale * __locale_table[NUM_LOCALES];
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
char __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
|
int
|
||||||
|
__get_default_file(int file_descriptor,long * file_ptr)
|
||||||
|
{
|
||||||
|
struct fd * fd;
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
assert( file_descriptor >= 0 && file_descriptor < __num_fd );
|
||||||
|
assert( __fd[file_descriptor] != NULL );
|
||||||
|
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
|
||||||
|
assert( file_ptr != NULL );
|
||||||
|
|
||||||
|
fd = __get_file_descriptor(file_descriptor);
|
||||||
|
if(fd == NULL)
|
||||||
|
{
|
||||||
|
errno = EBADF;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*file_ptr) = (long)fd->fd_DefaultFile;
|
||||||
|
|
||||||
|
result = 0;
|
||||||
|
|
||||||
|
out:
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_lseek.c,v 1.1.1.1 2004-07-26 16:30:33 obarthel Exp $
|
* $Id: fcntl_lseek.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_open.c,v 1.1.1.1 2004-07-26 16:30:34 obarthel Exp $
|
* $Id: fcntl_open.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_read.c,v 1.1.1.1 2004-07-26 16:30:34 obarthel Exp $
|
* $Id: fcntl_read.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl_write.c,v 1.1.1.1 2004-07-26 16:30:34 obarthel Exp $
|
* $Id: fcntl_write.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: assert.h,v 1.1.1.1 2004-07-26 16:32:49 obarthel Exp $
|
* $Id: assert.h,v 1.2 2004-08-25 15:27:28 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,6 +36,12 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifndef assert
|
#ifndef assert
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
@@ -67,4 +73,10 @@ extern void __assertion_failure(const char *file_name,int line_number,const char
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* _ASSERT_H */
|
#endif /* _ASSERT_H */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: ctype.h,v 1.1.1.1 2004-07-26 16:32:50 obarthel Exp $
|
* $Id: ctype.h,v 1.3 2004-08-07 10:42:04 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -63,12 +63,6 @@ extern int toupper(int c);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
|
||||||
|
|
||||||
#define isascii(c) ((unsigned)(c) <= 127)
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If requested, reimplement the character classification functions as macros;
|
* If requested, reimplement the character classification functions as macros;
|
||||||
* note that the macro variants ignore the current locale and default to the
|
* note that the macro variants ignore the current locale and default to the
|
||||||
@@ -113,6 +107,12 @@ extern const unsigned char * const __ctype_table;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
#define isascii(c) ((unsigned)(c) <= 127)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dirent.h,v 1.1.1.1 2004-07-26 16:32:50 obarthel Exp $
|
* $Id: dirent.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: dos.h,v 1.1.1.1 2004-07-26 16:32:50 obarthel Exp $
|
* $Id: dos.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -112,6 +112,18 @@ extern void __set_a4(unsigned long value);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Obtain the low level 'file' handle or socket ID bound to a file
|
||||||
|
* descriptor. This function returns 0 for success and non-zero
|
||||||
|
* otherwise (if, for example, the file descriptor value you
|
||||||
|
* provided is not valid; errno will be set to the appropriate
|
||||||
|
* error code, too). Put a pointer to the file handle variable you
|
||||||
|
* want to be filled in into the second parameter to this function.
|
||||||
|
*/
|
||||||
|
extern int __get_default_file(int file_descriptor,long * file_ptr);
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This will be set to TRUE if the current program was launched from
|
* This will be set to TRUE if the current program was launched from
|
||||||
* the internet superserver ('inetd') or an equivalent facility.
|
* the internet superserver ('inetd') or an equivalent facility.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fcntl.h,v 1.1.1.1 2004-07-26 16:32:51 obarthel Exp $
|
* $Id: fcntl.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: grp.h,v 1.1.1.1 2004-07-26 16:32:52 obarthel Exp $
|
* $Id: grp.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: libgen.h,v 1.1.1.1 2004-07-26 16:32:52 obarthel Exp $
|
* $Id: libgen.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: limits.h,v 1.1.1.1 2004-07-26 16:32:52 obarthel Exp $
|
* $Id: limits.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -54,7 +54,13 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#define LLONG_MIN (-0x7fffffffffffffffLL-1)
|
||||||
|
#define LLONG_MAX 0x7fffffffffffffffLL
|
||||||
|
#define ULLONG_MAX 0xffffffffffffffffULL
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
|
* $Id: math.h,v 1.4 2004-08-16 09:33:13 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -81,6 +81,19 @@ extern double tanh(double x);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern double rint(double x);
|
||||||
|
extern float rintf(float x);
|
||||||
|
extern int isinf(double x);
|
||||||
|
extern int isnan(double x);
|
||||||
|
extern double logb(double x);
|
||||||
|
extern double hypot(double x,double y);
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: pwd.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
|
* $Id: pwd.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
|
* $Id: signal.h,v 1.3 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -62,7 +62,7 @@ extern int raise(int sig);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -72,6 +72,10 @@ extern int raise(int sig);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
typedef void (*sig_t)(int);
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
typedef int sig_atomic_t;
|
typedef int sig_atomic_t;
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdarg.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
|
* $Id: stdarg.h,v 1.2 2004-09-09 08:25:30 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -57,12 +57,25 @@ typedef char * va_list;
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#if defined(__GNUC__)
|
|
||||||
#undef _STDARG_H
|
/****************************************************************************/
|
||||||
#include_next "stdarg.h"
|
|
||||||
#else
|
#if defined(__GNUC__)
|
||||||
#error "Unknown compiler"
|
|
||||||
#endif /* __GNUC__ */
|
/* Use the compiler supplied, machine specific <stdarg.h> file. */
|
||||||
|
#undef _STDARG_H
|
||||||
|
#include_next "stdarg.h"
|
||||||
|
|
||||||
|
#include <sys/amigaos-va.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Unknown compiler"
|
||||||
|
|
||||||
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdio.h,v 1.1.1.1 2004-07-26 16:32:54 obarthel Exp $
|
* $Id: stdio.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -62,7 +62,7 @@ extern "C" {
|
|||||||
* correspond to a real limitation for this 'C' runtime library and is
|
* correspond to a real limitation for this 'C' runtime library and is
|
||||||
* included solely for ISO 'C' (1994) compliance.
|
* included solely for ISO 'C' (1994) compliance.
|
||||||
*/
|
*/
|
||||||
#define FOPEN_MAX 8
|
#define FOPEN_MAX 64
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -308,7 +308,7 @@ extern int __flush(FILE *stream);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdlib.h,v 1.1.1.1 2004-07-26 16:32:55 obarthel Exp $
|
* $Id: stdlib.h,v 1.3 2004-09-20 17:16:07 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -147,7 +147,12 @@ extern long atol(const char *str);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern long long strtoll(const char *str, char **ptr, int base);
|
||||||
|
extern unsigned long long strtoull(const char *str, char **ptr, int base);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: string.h,v 1.1.1.1 2004-07-26 16:32:55 obarthel Exp $
|
* $Id: string.h,v 1.3 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -71,15 +71,25 @@ extern size_t strxfrm(char *dest, const char *src, size_t len);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern void *memmove(void *dest, const void * src, size_t len);
|
||||||
extern void *memchr(const void * ptr, int val, size_t len);
|
extern void *memchr(const void * ptr, int val, size_t len);
|
||||||
|
|
||||||
|
/* This is ugly: GCC 2.95.x assumes that 'unsigned long' is used in the built-in
|
||||||
|
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
|
||||||
|
where none are necessary. */
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ < 3)
|
||||||
|
extern int memcmp(const void *ptr1, const void *ptr2, unsigned long len);
|
||||||
|
extern void *memcpy(void *dest, const void *src, unsigned long len);
|
||||||
|
extern void *memset(void *ptr, int val, unsigned long len);
|
||||||
|
#else
|
||||||
extern int memcmp(const void *ptr1, const void *ptr2, size_t len);
|
extern int memcmp(const void *ptr1, const void *ptr2, size_t len);
|
||||||
extern void *memcpy(void *dest, const void *src, size_t len);
|
extern void *memcpy(void *dest, const void *src, size_t len);
|
||||||
extern void *memmove(void *dest, const void * src, size_t len);
|
|
||||||
extern void *memset(void *ptr, int val, size_t len);
|
extern void *memset(void *ptr, int val, size_t len);
|
||||||
|
#endif /* __GNUC__ && __GNUC__ < 3 */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: strings.h,v 1.1.1.1 2004-07-26 16:32:55 obarthel Exp $
|
* $Id: strings.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: amigaos-va.h,v 1.1.1.1 2004-07-26 16:32:57 obarthel Exp $
|
* $Id: amigaos-va.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: mount.h,v 1.1.1.1 2004-07-26 16:32:58 obarthel Exp $
|
* $Id: mount.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stat.h,v 1.1.1.1 2004-07-26 16:32:58 obarthel Exp $
|
* $Id: stat.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: time.h,v 1.1.1.1 2004-07-26 16:32:58 obarthel Exp $
|
* $Id: time.h,v 1.7 2004-09-29 10:15:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ extern "C" {
|
|||||||
structure and try to get by with this definition. Sometimes it works,
|
structure and try to get by with this definition. Sometimes it works,
|
||||||
sometimes it doesn't. Not sure if there really is a good solution for
|
sometimes it doesn't. Not sure if there really is a good solution for
|
||||||
this problem... */
|
this problem... */
|
||||||
#ifndef DEVICES_TIMER_H
|
#if !defined(__TIMEVAL_ALREADY_DEFINED) && !defined(__USE_CLIB2_TIMEVAL)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -73,11 +73,26 @@ extern "C" {
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* This will define the 'struct timeval' */
|
/* This will define the 'struct timeval' */
|
||||||
|
#ifndef DEVICES_TIMER_H
|
||||||
#include <devices/timer.h>
|
#include <devices/timer.h>
|
||||||
|
#endif /* DEVICES_TIMER_H */
|
||||||
|
|
||||||
|
/* Assume that the 'struct timeval' definition is now in place. */
|
||||||
|
#define __TIMEVAL_ALREADY_DEFINED
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#else
|
#endif /* INCLUDE_VERSION */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* !__TIMEVAL_ALREADY_DEFINED && !__USE_CLIB2_TIMEVAL */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* If the timeval is still undefined or should be defined locally,
|
||||||
|
define our own now... */
|
||||||
|
#if !defined(__TIMEVAL_ALREADY_DEFINED)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -94,11 +109,7 @@ struct timeval
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* INCLUDE_VERSION */
|
#endif /* !__TIMEVAL_ALREADY_DEFINED */
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#endif /* DEVICES_TIMER_H */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: types.h,v 1.1.1.1 2004-07-26 16:32:59 obarthel Exp $
|
* $Id: types.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: unistd.h,v 1.1.1.1 2004-07-26 16:32:56 obarthel Exp $
|
* $Id: unistd.h,v 1.6 2004-09-29 14:17:46 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -52,6 +52,13 @@ extern "C" {
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* Endianness: we assume a big endian memory layout (for 68k and PowerPC). */
|
||||||
|
#define LITTLE_ENDIAN 1234
|
||||||
|
#define BIG_ENDIAN 4321
|
||||||
|
#define BYTE_ORDER BIG_ENDIAN
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#define STDIN_FILENO 0
|
#define STDIN_FILENO 0
|
||||||
#define STDOUT_FILENO 1
|
#define STDOUT_FILENO 1
|
||||||
#define STDERR_FILENO 2
|
#define STDERR_FILENO 2
|
||||||
@@ -87,6 +94,7 @@ extern int symlink(const char * actual_path, const char * symbolic_path);
|
|||||||
extern int readlink(const char * path_name, char * buffer, int buffer_size);
|
extern int readlink(const char * path_name, char * buffer, int buffer_size);
|
||||||
extern int chdir(const char * path_name);
|
extern int chdir(const char * path_name);
|
||||||
extern unsigned int sleep(unsigned int seconds);
|
extern unsigned int sleep(unsigned int seconds);
|
||||||
|
extern void usleep(unsigned long microseconds);
|
||||||
extern int getopt(int argc, char * argv[], char *opts);
|
extern int getopt(int argc, char * argv[], char *opts);
|
||||||
extern pid_t getpid(void);
|
extern pid_t getpid(void);
|
||||||
extern char *realpath(const char *file_name, char *resolved_name);
|
extern char *realpath(const char *file_name, char *resolved_name);
|
||||||
@@ -143,7 +151,7 @@ extern char * __getcwd(char * buffer,size_t buffer_size,const char *file,int lin
|
|||||||
#define FD_SETSIZE 256
|
#define FD_SETSIZE 256
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct fd_set
|
||||||
{
|
{
|
||||||
unsigned long bits[(FD_SETSIZE + 31) / 32];
|
unsigned long bits[(FD_SETSIZE + 31) / 32];
|
||||||
} fd_set;
|
} fd_set;
|
||||||
@@ -195,28 +203,37 @@ struct in_addr
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern int accept(int sockfd,struct sockaddr *cliaddr,int *addrlen);
|
/* Error codes set by the name<->address resolution functions. */
|
||||||
|
extern int h_errno;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
typedef int socklen_t;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen);
|
||||||
extern int bind(int sockfd,struct sockaddr *name,int namelen);
|
extern int bind(int sockfd,struct sockaddr *name,int namelen);
|
||||||
extern int connect(int sockfd,struct sockaddr *name,int namelen);
|
extern int connect(int sockfd,struct sockaddr *name,socklen_t namelen);
|
||||||
extern struct hostent * gethostbyaddr(const char *addr, int len, int type);
|
extern struct hostent * gethostbyaddr(const char *addr, socklen_t len, int type);
|
||||||
extern struct hostent * gethostbyname(const char *name);
|
extern struct hostent * gethostbyname(const char *name);
|
||||||
extern int gethostname(const char *name, int namelen);
|
extern int gethostname(const char *name, int namelen);
|
||||||
extern struct netent * getnetbyname(const char *name);
|
extern struct netent * getnetbyname(const char *name);
|
||||||
extern int getpeername(int sockfd,struct sockaddr *name,int *namelen);
|
extern int getpeername(int sockfd,struct sockaddr *name,socklen_t *namelen);
|
||||||
extern int getsockname(int sockfd,struct sockaddr *name,int *namelen);
|
extern int getsockname(int sockfd,struct sockaddr *name,socklen_t *namelen);
|
||||||
extern int getsockopt(int sockfd,int level,int optname,void *optval,int *optlen);
|
extern int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen);
|
||||||
extern unsigned long inet_addr(const char *addr);
|
extern unsigned long inet_addr(const char *addr);
|
||||||
extern char * inet_ntoa(struct in_addr in);
|
extern char * inet_ntoa(struct in_addr in);
|
||||||
extern int ioctl(int fd,unsigned long request, ... /* char *arg */);
|
extern int ioctl(int fd,unsigned long request, ... /* char *arg */);
|
||||||
extern int listen(int sockfd,int backlog);
|
extern int listen(int sockfd,int backlog);
|
||||||
extern int recv(int fd,void *buff,size_t nbytes,int flags);
|
extern int recv(int fd,void *buff,size_t nbytes,int flags);
|
||||||
extern int recvfrom(int sockfd,void *buff,int len,int flags,struct sockaddr *from,int *fromlen);
|
extern int recvfrom(int sockfd,void *buff,int len,int flags,struct sockaddr *from,socklen_t *fromlen);
|
||||||
extern int recvmsg(int socket,struct msghdr *msg,int flags);
|
extern int recvmsg(int socket,struct msghdr *msg,int flags);
|
||||||
extern int select(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout);
|
extern int select(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout);
|
||||||
extern int send(int fd,void *buff,size_t nbytes,int flags);
|
extern int send(int fd,const void *buff,size_t nbytes,int flags);
|
||||||
extern int sendmsg(int socket,struct msghdr *msg,int flags);
|
extern int sendmsg(int socket,struct msghdr *msg,int flags);
|
||||||
extern int sendto(int sockfd,void *buff,int len,int flags,struct sockaddr *to,int tolen);
|
extern int sendto(int sockfd,const void *buff,int len,int flags,struct sockaddr *to,socklen_t tolen);
|
||||||
extern int setsockopt(int sockfd,int level,int optname,void *optval,int optlen);
|
extern int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t optlen);
|
||||||
extern int shutdown(int socket, int how);
|
extern int shutdown(int socket, int how);
|
||||||
extern int socket(int domain,int type,int protocol);
|
extern int socket(int domain,int type,int protocol);
|
||||||
extern long gethostid(void);
|
extern long gethostid(void);
|
||||||
@@ -230,6 +247,7 @@ extern unsigned long inet_lnaof(struct in_addr in);
|
|||||||
extern struct in_addr inet_makeaddr(int net,int host);
|
extern struct in_addr inet_makeaddr(int net,int host);
|
||||||
extern unsigned long inet_netof(struct in_addr in);
|
extern unsigned long inet_netof(struct in_addr in);
|
||||||
extern unsigned long inet_network(const char *cp);
|
extern unsigned long inet_network(const char *cp);
|
||||||
|
extern const char * hstrerror(int error_number);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: utime.h,v 1.1.1.1 2004-07-26 16:32:56 obarthel Exp $
|
* $Id: utime.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: libgen_basename.c,v 1.1.1.1 2004-07-26 16:30:34 obarthel Exp $
|
* $Id: libgen_basename.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: libgen_dirname.c,v 1.1.1.1 2004-07-26 16:30:34 obarthel Exp $
|
* $Id: libgen_dirname.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: locale_headers.h,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
|
* $Id: locale_headers.h,v 1.2 2004-09-29 19:57:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -69,12 +69,12 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern struct Locale * __default_locale;
|
extern struct Locale * NOCOMMON __default_locale;
|
||||||
extern struct Locale * __locale_table[NUM_LOCALES];
|
extern struct Locale * NOCOMMON __locale_table[NUM_LOCALES];
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern char __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
|
extern char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: locale_init_exit.c,v 1.1.1.1 2004-07-26 16:30:35 obarthel Exp $
|
* $Id: locale_init_exit.c,v 1.3 2004-09-29 19:57:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -41,6 +41,25 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
struct Library * NOCOMMON __LocaleBase;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__amigaos4__)
|
||||||
|
struct LocaleIFace * NOCOMMON __ILocale;
|
||||||
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
struct Locale * NOCOMMON __default_locale;
|
||||||
|
struct Locale * NOCOMMON __locale_table[NUM_LOCALES];
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
char NOCOMMON __locale_name_table[NUM_LOCALES][MAX_LOCALE_NAME_LEN];
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
__close_all_locales(void)
|
__close_all_locales(void)
|
||||||
{
|
{
|
||||||
@@ -71,8 +90,7 @@ __close_all_locales(void)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
CLIB_DESTRUCTOR(__locale_exit)
|
||||||
__locale_exit(void)
|
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
@@ -107,8 +125,7 @@ __locale_exit(void)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
CLIB_CONSTRUCTOR(__locale_init)
|
||||||
__locale_init(void)
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -145,5 +162,6 @@ __locale_init(void)
|
|||||||
PROFILE_ON();
|
PROFILE_ON();
|
||||||
|
|
||||||
RETURN(OK);
|
RETURN(OK);
|
||||||
return(OK);
|
|
||||||
|
CONSTRUCTOR_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "m.lib 1.165"
|
#define VERS "m.lib 1.179"
|
||||||
#define VSTRING "m.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "m.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: m.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: m.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "m881.lib 1.165"
|
#define VERS "m881.lib 1.179"
|
||||||
#define VSTRING "m881.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "m881.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: m881.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: m881.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: macros.h,v 1.1.1.1 2004-07-26 16:30:36 obarthel Exp $
|
* $Id: macros.h,v 1.2 2004-09-29 19:57:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -148,8 +148,10 @@
|
|||||||
#ifndef UNUSED
|
#ifndef UNUSED
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED __attribute__((unused))
|
||||||
|
#define NOCOMMON __attribute__((nocommon))
|
||||||
#else
|
#else
|
||||||
#define UNUSED /* UNUSED */
|
#define UNUSED /* UNUSED */
|
||||||
|
#define NOCOMMON /* NOCOMMON */
|
||||||
#endif
|
#endif
|
||||||
#endif /* UNUSED */
|
#endif /* UNUSED */
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_acos.c,v 1.1.1.1 2004-07-26 16:30:37 obarthel Exp $
|
* $Id: math_acos.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -226,7 +226,7 @@ acos(double x)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = 0;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_asin.c,v 1.1.1.1 2004-07-26 16:30:38 obarthel Exp $
|
* $Id: math_asin.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -237,7 +237,7 @@ asin(double x)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = 0;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_atan2.c,v 1.1.1.1 2004-07-26 16:30:39 obarthel Exp $
|
* $Id: math_atan2.c,v 1.3 2004-08-27 11:40:49 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -63,7 +63,7 @@ extern double __atan(double x);
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double x,double y)
|
__atan2(double y,double x)
|
||||||
{
|
{
|
||||||
const double pi = 3.14159265358979323846;
|
const double pi = 3.14159265358979323846;
|
||||||
const double pi_over_2 = pi / 2.0;
|
const double pi_over_2 = pi / 2.0;
|
||||||
@@ -107,7 +107,7 @@ __atan2(double x,double y)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = 0;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ __atan(double x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double x,double y)
|
__atan2(double y,double x)
|
||||||
{
|
{
|
||||||
double pi,pi_over_2;
|
double pi,pi_over_2;
|
||||||
double result;
|
double result;
|
||||||
@@ -186,7 +186,7 @@ __atan2(double x,double y)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = 0;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -201,9 +201,6 @@ __atan2(double x,double y)
|
|||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const double
|
static const double
|
||||||
tiny = 1.0e-300,
|
tiny = 1.0e-300,
|
||||||
zero = 0.0,
|
zero = 0.0,
|
||||||
@@ -213,7 +210,7 @@ pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
|
|||||||
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__atan2(double x,double y)
|
__atan2(double y,double x)
|
||||||
{
|
{
|
||||||
double z;
|
double z;
|
||||||
int k,m,hx,hy,ix,iy;
|
int k,m,hx,hy,ix,iy;
|
||||||
@@ -322,19 +319,11 @@ __atan2(double x,double y)
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
double
|
double
|
||||||
atan2(double x,double y)
|
atan2(double y,double x)
|
||||||
{
|
{
|
||||||
double result;
|
double result;
|
||||||
|
|
||||||
if(x != 0.0 && y != 0.0)
|
result = __atan2(y,x);
|
||||||
{
|
|
||||||
result = __atan2(x,y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = HUGE_VAL;
|
|
||||||
errno = EDOM;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_data.c,v 1.1.1.1 2004-07-26 16:30:40 obarthel Exp $
|
* $Id: math_data.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,3 +48,5 @@ struct Library * MathIeeeDoubTransBase;
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
double __huge_val;
|
double __huge_val;
|
||||||
|
double __not_a_number;
|
||||||
|
double __infinity;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_exp.c,v 1.1.1.1 2004-07-26 16:30:41 obarthel Exp $
|
* $Id: math_exp.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -194,7 +194,7 @@ __exp(double x)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
k = invln2*x+halF[xsb];
|
k = (int)(invln2*x+halF[xsb]);
|
||||||
t = k;
|
t = k;
|
||||||
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
|
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
|
||||||
lo = t*ln2LO[0];
|
lo = t*ln2LO[0];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_fabs.c,v 1.1.1.1 2004-07-26 16:30:42 obarthel Exp $
|
* $Id: math_fabs.c,v 1.4 2004-09-29 14:30:03 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -126,8 +126,14 @@ __fabs(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__PPC__)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__fabs(double x)
|
__fabs(double x)
|
||||||
{
|
{
|
||||||
@@ -141,10 +147,35 @@ __fabs(double x)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
INLINE static const double
|
||||||
|
__fabs(double x)
|
||||||
|
{
|
||||||
|
double res;
|
||||||
|
|
||||||
|
if(x < 0)
|
||||||
|
res = (-x);
|
||||||
|
else
|
||||||
|
res = x;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* __PPC__ */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
double
|
double
|
||||||
fabs(double x)
|
fabs(double x)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_fmod.c,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
|
* $Id: math_fmod.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -284,7 +284,7 @@ fmod(double x,double y)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = x;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_fp_support.h,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
|
* $Id: math_fp_support.h,v 1.2 2004-08-08 10:55:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -36,9 +36,47 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* If any of the three supported floating point support flavours is
|
||||||
|
enabled, make sure that the generic 'FLOATING_POINT_SUPPORT' symbol
|
||||||
|
is defined, too.*/
|
||||||
#if (defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT) || defined(PPC_FLOATING_POINT_SUPPORT))
|
#if (defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT) || defined(PPC_FLOATING_POINT_SUPPORT))
|
||||||
#define FLOATING_POINT_SUPPORT
|
#define FLOATING_POINT_SUPPORT
|
||||||
#endif
|
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT || PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* This selects whether or not the 'long double' type should be used. So far,
|
||||||
|
only 'double' can be supported, and 'long double' defaults to 'double'. */
|
||||||
|
/*#define USE_LONG_DOUBLE*/
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(USE_LONG_DOUBLE)
|
||||||
|
typedef long double __long_double_t;
|
||||||
|
#else
|
||||||
|
typedef double __long_double_t;
|
||||||
|
#endif /* USE_LONG_DOUBLE */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* 'Portable' raw representations of three IEEE floating point formats. */
|
||||||
|
union ieee_long_double
|
||||||
|
{
|
||||||
|
long double value;
|
||||||
|
unsigned long raw[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
union ieee_double
|
||||||
|
{
|
||||||
|
double value;
|
||||||
|
unsigned long raw[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
union ieee_single
|
||||||
|
{
|
||||||
|
float value;
|
||||||
|
unsigned long raw[1];
|
||||||
|
};
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_headers.h,v 1.1.1.1 2004-07-26 16:30:45 obarthel Exp $
|
* $Id: math_headers.h,v 1.4 2004-08-27 13:49:17 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <float.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
@@ -147,6 +148,33 @@ do { \
|
|||||||
(d) = sl_u.value; \
|
(d) = sl_u.value; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
/* A union which permits us to convert between a float and a 32 bit
|
||||||
|
int. */
|
||||||
|
|
||||||
|
typedef union
|
||||||
|
{
|
||||||
|
float value;
|
||||||
|
unsigned int word;
|
||||||
|
} ieee_float_shape_type;
|
||||||
|
|
||||||
|
/* Get a 32 bit int from a float. */
|
||||||
|
|
||||||
|
#define GET_FLOAT_WORD(i,d) \
|
||||||
|
do { \
|
||||||
|
ieee_float_shape_type gf_u; \
|
||||||
|
gf_u.value = (d); \
|
||||||
|
(i) = gf_u.word; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* Set a float from a 32 bit int. */
|
||||||
|
|
||||||
|
#define SET_FLOAT_WORD(d,i) \
|
||||||
|
do { \
|
||||||
|
ieee_float_shape_type sf_u; \
|
||||||
|
sf_u.word = (i); \
|
||||||
|
(d) = sf_u.value; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
extern double __kernel_cos(double x, double y);
|
extern double __kernel_cos(double x, double y);
|
||||||
extern double __kernel_sin(double x, double y, int iy);
|
extern double __kernel_sin(double x, double y, int iy);
|
||||||
extern int __rem_pio2(double x, double *y);
|
extern int __rem_pio2(double x, double *y);
|
||||||
@@ -164,4 +192,9 @@ extern double __scalbn(double x, int n);
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern double __not_a_number;
|
||||||
|
extern double __infinity;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* _MATH_HEADERS_H */
|
#endif /* _MATH_HEADERS_H */
|
||||||
|
|||||||
171
library/math_hypot.c
Normal file
171
library/math_hypot.c
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
/*
|
||||||
|
* $Id: math_hypot.c,v 1.1 2004-08-16 09:33:11 obarthel Exp $
|
||||||
|
*
|
||||||
|
* :ts=4
|
||||||
|
*
|
||||||
|
* Portable ISO 'C' (1994) runtime library for the Amiga computer
|
||||||
|
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Neither the name of Olaf Barthel nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* PowerPC math library based in part on work by Sun Microsystems
|
||||||
|
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
|
* Permission to use, copy, modify, and distribute this
|
||||||
|
* software is freely granted, provided that this notice
|
||||||
|
* is preserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MATH_HEADERS_H
|
||||||
|
#include "math_headers.h"
|
||||||
|
#endif /* _MATH_HEADERS_H */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
INLINE static const double
|
||||||
|
__hypot(double x,double y)
|
||||||
|
{
|
||||||
|
double yx;
|
||||||
|
|
||||||
|
x = fabs(x);
|
||||||
|
y = fabs(y);
|
||||||
|
if ( x < y )
|
||||||
|
{
|
||||||
|
double temp = x;
|
||||||
|
x = y;
|
||||||
|
y = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x == 0.)
|
||||||
|
{
|
||||||
|
return 0.;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yx = y/x;
|
||||||
|
return x*sqrt(1. + yx*yx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
static const double one = 1.0;
|
||||||
|
|
||||||
|
INLINE static const double
|
||||||
|
__hypot(double x,double y)
|
||||||
|
{
|
||||||
|
int n0;
|
||||||
|
double a=x,b=y,t1,t2,y1,y2,w;
|
||||||
|
int j,k,ha,hb;
|
||||||
|
|
||||||
|
n0 = ((*(int*)&one)>>29)^1; /* high word index */
|
||||||
|
ha = *(n0+(int*)&x)&0x7fffffff; /* high word of x */
|
||||||
|
hb = *(n0+(int*)&y)&0x7fffffff; /* high word of y */
|
||||||
|
if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
|
||||||
|
*(n0+(int*)&a) = ha; /* a <- |a| */
|
||||||
|
*(n0+(int*)&b) = hb; /* b <- |b| */
|
||||||
|
if((ha-hb)>0x3c00000) {return a+b;} /* x/y > 2**60 */
|
||||||
|
k=0;
|
||||||
|
if(ha > 0x5f300000) { /* a>2**500 */
|
||||||
|
if(ha >= 0x7ff00000) { /* Inf or NaN */
|
||||||
|
w = a+b; /* for sNaN */
|
||||||
|
if(((ha&0xfffff)|*(1-n0+(int*)&a))==0) w = a;
|
||||||
|
if(((hb^0x7ff00000)|*(1-n0+(int*)&b))==0) w = b;
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
/* scale a and b by 2**-600 */
|
||||||
|
ha -= 0x25800000; hb -= 0x25800000; k += 600;
|
||||||
|
*(n0+(int*)&a) = ha;
|
||||||
|
*(n0+(int*)&b) = hb;
|
||||||
|
}
|
||||||
|
if(hb < 0x20b00000) { /* b < 2**-500 */
|
||||||
|
if(hb <= 0x000fffff) { /* subnormal b or 0 */
|
||||||
|
if((hb|(*(1-n0+(int*)&b)))==0) return a;
|
||||||
|
t1=0;
|
||||||
|
*(n0+(int*)&t1) = 0x7fd00000; /* t1=2^1022 */
|
||||||
|
b *= t1;
|
||||||
|
a *= t1;
|
||||||
|
k -= 1022;
|
||||||
|
} else { /* scale a and b by 2^600 */
|
||||||
|
ha += 0x25800000; /* a *= 2^600 */
|
||||||
|
hb += 0x25800000; /* b *= 2^600 */
|
||||||
|
k -= 600;
|
||||||
|
*(n0+(int*)&a) = ha;
|
||||||
|
*(n0+(int*)&b) = hb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* medium size a and b */
|
||||||
|
w = a-b;
|
||||||
|
if (w>b) {
|
||||||
|
t1 = 0;
|
||||||
|
*(n0+(int*)&t1) = ha;
|
||||||
|
t2 = a-t1;
|
||||||
|
w = sqrt(t1*t1-(b*(-b)-t2*(a+t1)));
|
||||||
|
} else {
|
||||||
|
a = a+a;
|
||||||
|
y1 = 0;
|
||||||
|
*(n0+(int*)&y1) = hb;
|
||||||
|
y2 = b - y1;
|
||||||
|
t1 = 0;
|
||||||
|
*(n0+(int*)&t1) = ha+0x00100000;
|
||||||
|
t2 = a - t1;
|
||||||
|
w = sqrt(t1*y1-(w*(-w)-(t1*y2+t2*b)));
|
||||||
|
}
|
||||||
|
if(k!=0) {
|
||||||
|
t1 = 1.0;
|
||||||
|
*(n0+(int*)&t1) += (k<<20);
|
||||||
|
return t1*w;
|
||||||
|
} else return w;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
double
|
||||||
|
hypot(double x,double y)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
|
||||||
|
result = __hypot(x,y);
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_init_exit.c,v 1.1.1.1 2004-07-26 16:30:46 obarthel Exp $
|
* $Id: math_init_exit.c,v 1.5 2004-09-29 19:57:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -53,9 +53,10 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
CLIB_DESTRUCTOR(__math_exit)
|
||||||
__math_exit(void)
|
|
||||||
{
|
{
|
||||||
|
ENTER();
|
||||||
|
|
||||||
#if defined(IEEE_FLOATING_POINT_SUPPORT)
|
#if defined(IEEE_FLOATING_POINT_SUPPORT)
|
||||||
{
|
{
|
||||||
if(MathIeeeSingBasBase != NULL)
|
if(MathIeeeSingBasBase != NULL)
|
||||||
@@ -77,6 +78,8 @@ __math_exit(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
LEAVE();
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
@@ -121,41 +124,87 @@ __math_init(void)
|
|||||||
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
#endif /* IEEE_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
/* Now fill in the HUGE_VAL constant, which is set to
|
/* Now fill in the HUGE_VAL constant, which is set to
|
||||||
* +Infinity.
|
the largest representable floating point value. */
|
||||||
*/
|
|
||||||
if(sizeof(__huge_val) == 4) /* single precision */
|
if(sizeof(__huge_val) == 4) /* single precision */
|
||||||
{
|
{
|
||||||
static const unsigned long infinity[] =
|
static const unsigned long largest_fp_value[1] =
|
||||||
{
|
{
|
||||||
0x7F800000
|
/* Exponent = +126, Mantissa = 8,388,607 */
|
||||||
|
0x7f7fffff
|
||||||
};
|
};
|
||||||
|
|
||||||
assert( sizeof(infinity) == sizeof(__huge_val) );
|
static const unsigned long not_a_number[1] =
|
||||||
|
{
|
||||||
|
/* Exponent = 255 and fraction != 0.0 */
|
||||||
|
0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
memmove((void *)&__huge_val,infinity,sizeof(infinity));
|
static const unsigned long infinity[1] =
|
||||||
|
{
|
||||||
|
/* Exponent = 255 and fraction = 0.0 */
|
||||||
|
0x7f800000
|
||||||
|
};
|
||||||
|
|
||||||
|
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
|
||||||
|
|
||||||
|
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
|
||||||
|
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
|
||||||
|
memmove((void *)&__infinity,infinity,sizeof(infinity));
|
||||||
}
|
}
|
||||||
else if (sizeof(__huge_val) == 8) /* double precision */
|
else if (sizeof(__huge_val) == 8) /* double precision */
|
||||||
{
|
{
|
||||||
static const unsigned long infinity[] =
|
static const unsigned long largest_fp_value[2] =
|
||||||
{
|
{
|
||||||
0x7FF00000,0x00000000
|
/* Exponent = +1022, Mantissa = 4,503,599,627,370,495 */
|
||||||
|
0x7fefffff,0xffffffff
|
||||||
};
|
};
|
||||||
|
|
||||||
assert( sizeof(infinity) == sizeof(__huge_val) );
|
static const unsigned long not_a_number[2] =
|
||||||
|
{
|
||||||
|
/* Exponent = 2047 and fraction != 0.0 */
|
||||||
|
0x7fffffff,0xffffffff
|
||||||
|
};
|
||||||
|
|
||||||
memmove((void *)&__huge_val,infinity,sizeof(infinity));
|
static const unsigned long infinity[2] =
|
||||||
|
{
|
||||||
|
/* Exponent = 2047 and fraction = 0.0 */
|
||||||
|
0x7ff00000,0x00000000
|
||||||
|
};
|
||||||
|
|
||||||
|
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
|
||||||
|
|
||||||
|
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
|
||||||
|
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
|
||||||
|
memmove((void *)&__infinity,infinity,sizeof(infinity));
|
||||||
}
|
}
|
||||||
|
#if defined(USE_LONG_DOUBLE)
|
||||||
else if (sizeof(__huge_val) == 12) /* extended precision */
|
else if (sizeof(__huge_val) == 12) /* extended precision */
|
||||||
{
|
{
|
||||||
static const unsigned long infinity[] =
|
static const unsigned long largest_fp_value[3] =
|
||||||
{
|
{
|
||||||
0x7FFF0000,0x00000000,0x00000000
|
/* Exponent = +32766, Mantissa = 18,446,744,073,709,551,615 */
|
||||||
|
0x7ffe0000,0xffffffff,0xffffffff
|
||||||
};
|
};
|
||||||
|
|
||||||
assert( sizeof(infinity) == sizeof(__huge_val) );
|
static const unsigned long not_a_number[3] =
|
||||||
|
{
|
||||||
|
/* Exponent = 32767 and fraction != 0.0 */
|
||||||
|
0x7fff0000,0xffffffff,0xffffffff
|
||||||
|
};
|
||||||
|
|
||||||
memmove((void *)&__huge_val,infinity,sizeof(infinity));
|
static const unsigned long infinity[3] =
|
||||||
|
{
|
||||||
|
/* Exponent = 32767 and fraction = 0.0 */
|
||||||
|
0x7fff0000,0x00000000,0x00000000
|
||||||
|
};
|
||||||
|
|
||||||
|
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
|
||||||
|
|
||||||
|
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
|
||||||
|
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
|
||||||
|
memmove((void *)&__infinity,infinity,sizeof(infinity));
|
||||||
}
|
}
|
||||||
|
#endif /* USE_LONG_DOUBLE */
|
||||||
|
|
||||||
result = OK;
|
result = OK;
|
||||||
|
|
||||||
|
|||||||
64
library/stdio_isinfinity.c → library/math_isinf.c
Normal file → Executable file
64
library/stdio_isinfinity.c → library/math_isinf.c
Normal file → Executable file
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdio_isinfinity.c,v 1.1.1.1 2004-07-26 16:31:37 obarthel Exp $
|
* $Id: math_isinf.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -39,43 +39,73 @@
|
|||||||
|
|
||||||
#if defined (FLOATING_POINT_SUPPORT)
|
#if defined (FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
__is_infinity(long double number)
|
isinf(double number)
|
||||||
{
|
{
|
||||||
const unsigned long * const raw = (const unsigned long * const)&number;
|
int is_infinity;
|
||||||
int result = 0;
|
int result;
|
||||||
|
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
/* This assumes that a) 'number' is stored in big endian format
|
/* This assumes that a) 'number' is stored in big endian format
|
||||||
* and b) it is stored in IEEE 754 format.
|
and b) it is stored in IEEE 754 format. */
|
||||||
*/
|
if (sizeof(number) == 4) /* single precision */
|
||||||
if(sizeof(number) == 4) /* single precision */
|
|
||||||
{
|
{
|
||||||
|
union ieee_single x;
|
||||||
|
|
||||||
|
x.value = number;
|
||||||
|
|
||||||
/* Exponent = 255 and fraction = 0.0 */
|
/* Exponent = 255 and fraction = 0.0 */
|
||||||
if((raw[0] & 0x7FFFFFFF) == 0x7F800000)
|
is_infinity = ((x.raw[0] & 0x7FFFFFFF) == 0x7F800000);
|
||||||
result = 1;
|
|
||||||
}
|
}
|
||||||
else if (sizeof(number) == 8) /* double precision */
|
else if (sizeof(number) == 8) /* double precision */
|
||||||
{
|
{
|
||||||
|
union ieee_double x;
|
||||||
|
|
||||||
|
x.value = number;
|
||||||
|
|
||||||
/* Exponent = 2047 and fraction = 0.0 */
|
/* Exponent = 2047 and fraction = 0.0 */
|
||||||
if(((raw[0] & 0x7FFFFFFF) == 0x7FF00000) && (raw[1] == 0))
|
is_infinity = (((x.raw[0] & 0x7FFFFFFF) == 0x7FF00000) && (x.raw[1] == 0));
|
||||||
{
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
#if defined(USE_LONG_DOUBLE)
|
||||||
else if (sizeof(number) == 12) /* extended precision */
|
else if (sizeof(number) == 12) /* extended precision */
|
||||||
{
|
{
|
||||||
|
union ieee_long_double x;
|
||||||
|
|
||||||
|
x.value = number;
|
||||||
|
|
||||||
/* Exponent = 32767 and fraction = 0.0 */
|
/* Exponent = 32767 and fraction = 0.0 */
|
||||||
if(((raw[0] & 0x7FFF0000) == 0x7FFF0000) &&
|
is_infinity = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && (x.raw[1] & 0x7FFFFFFF) == 0 && (x.raw[2] == 0));
|
||||||
(raw[1] & 0x7FFFFFFF) == 0 && (raw[2] == 0))
|
}
|
||||||
{
|
#endif /* USE_LONG_DOUBLE */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Can't happen */
|
||||||
|
is_infinity = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_infinity)
|
||||||
|
{
|
||||||
|
if(number < 0)
|
||||||
|
result = -1;
|
||||||
|
else
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN(result);
|
RETURN(result);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* FLOATING_POINT_SUPPORT */
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
59
library/stdio_isnotanumber.c → library/math_isnan.c
Normal file → Executable file
59
library/stdio_isnotanumber.c → library/math_isnan.c
Normal file → Executable file
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdio_isnotanumber.c,v 1.1.1.1 2004-07-26 16:31:37 obarthel Exp $
|
* $Id: math_isnan.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -39,47 +39,60 @@
|
|||||||
|
|
||||||
#if defined (FLOATING_POINT_SUPPORT)
|
#if defined (FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
__is_not_a_number(long double number)
|
isnan(double number)
|
||||||
{
|
{
|
||||||
const unsigned long * const raw = (const unsigned long * const)&number;
|
int result;
|
||||||
int result = 0;
|
|
||||||
|
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
/* This assumes that a) 'number' is stored in big endian format
|
/* This assumes that a) 'number' is stored in big endian format
|
||||||
* and b) it is stored in IEEE 754 format.
|
and b) it is stored in IEEE 754 format. */
|
||||||
*/
|
if (sizeof(number) == 4) /* single precision */
|
||||||
if(sizeof(number) == 4) /* single precision */
|
|
||||||
{
|
{
|
||||||
|
union ieee_single x;
|
||||||
|
|
||||||
|
x.value = number;
|
||||||
|
|
||||||
/* Exponent = 255 and fraction != 0.0 */
|
/* Exponent = 255 and fraction != 0.0 */
|
||||||
if((raw[0] & 0x7F800000) == 0x7F800000 &&
|
result = ((x.raw[0] & 0x7F800000) == 0x7F800000 && (x.raw[0] & 0x007FFFFF) != 0);
|
||||||
(raw[0] & 0x007FFFFF) != 0)
|
|
||||||
{
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (sizeof(number) == 8) /* double precision */
|
else if (sizeof(number) == 8) /* double precision */
|
||||||
{
|
{
|
||||||
|
union ieee_double x;
|
||||||
|
|
||||||
|
x.value = number;
|
||||||
|
|
||||||
/* Exponent = 2047 and fraction != 0.0 */
|
/* Exponent = 2047 and fraction != 0.0 */
|
||||||
if(((raw[0] & 0x7FF00000) == 0x7FF00000) &&
|
result = (((x.raw[0] & 0x7FF00000) == 0x7FF00000) && ((x.raw[0] & 0x000FFFFF) != 0 || (x.raw[1] != 0)));
|
||||||
((raw[0] & 0x000FFFFF) != 0 || (raw[1] != 0)))
|
|
||||||
{
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
#if defined(USE_LONG_DOUBLE)
|
||||||
else if (sizeof(number) == 12) /* extended precision */
|
else if (sizeof(number) == 12) /* extended precision */
|
||||||
{
|
{
|
||||||
/* Exponent = 32767 and fraction != 0.0 */
|
union ieee_long_double x;
|
||||||
if(((raw[0] & 0x7FFF0000) == 0x7FFF0000) &&
|
|
||||||
((raw[1] & 0x7FFFFFFF) != 0 || raw[2] != 0))
|
x.value = number;
|
||||||
{
|
|
||||||
result = 1;
|
/* Exponent = 32766 and fraction != 0.0 */
|
||||||
}
|
result = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && ((x.raw[1] & 0x7FFFFFFF) != 0 || x.raw[2] != 0));
|
||||||
|
}
|
||||||
|
#endif /* USE_LONG_DOUBLE */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Can't happen */
|
||||||
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN(result);
|
RETURN(result);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* FLOATING_POINT_SUPPORT */
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_kernel_tan.c,v 1.1.1.1 2004-07-26 16:30:48 obarthel Exp $
|
* $Id: math_kernel_tan.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -82,7 +82,21 @@ double __kernel_tan(double x, double y, int iy)
|
|||||||
unsigned int low;
|
unsigned int low;
|
||||||
GET_LOW_WORD(low,x);
|
GET_LOW_WORD(low,x);
|
||||||
if(((ix|low)|(iy+1))==0) return one/fabs(x);
|
if(((ix|low)|(iy+1))==0) return one/fabs(x);
|
||||||
else return (iy==1)? x: -one/x;
|
else {
|
||||||
|
if (iy == 1)
|
||||||
|
return x;
|
||||||
|
else { /* compute -1 / (x+y) carefully */
|
||||||
|
double a, t;
|
||||||
|
|
||||||
|
z = w = x + y;
|
||||||
|
SET_LOW_WORD(z,0);
|
||||||
|
v = y - (z - x);
|
||||||
|
t = a = -one / w;
|
||||||
|
SET_LOW_WORD(t,0);
|
||||||
|
s = one + t * z;
|
||||||
|
return t + a * (s + t * v);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ix>=0x3FE59428) { /* |x|>=0.6744 */
|
if(ix>=0x3FE59428) { /* |x|>=0.6744 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_log.c,v 1.1.1.1 2004-07-26 16:30:49 obarthel Exp $
|
* $Id: math_log.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -135,7 +135,7 @@ __log(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(__PPC__)
|
||||||
|
|
||||||
static const double
|
static const double
|
||||||
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
|
ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
|
||||||
|
|||||||
136
library/math_logb.c
Normal file
136
library/math_logb.c
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* $Id: math_logb.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
|
||||||
|
*
|
||||||
|
* :ts=4
|
||||||
|
*
|
||||||
|
* Portable ISO 'C' (1994) runtime library for the Amiga computer
|
||||||
|
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Neither the name of Olaf Barthel nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* PowerPC math library based in part on work by Sun Microsystems
|
||||||
|
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
|
* Permission to use, copy, modify, and distribute this
|
||||||
|
* software is freely granted, provided that this notice
|
||||||
|
* is preserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MATH_HEADERS_H
|
||||||
|
#include "math_headers.h"
|
||||||
|
#endif /* _MATH_HEADERS_H */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
INLINE static const double
|
||||||
|
__logb(double x)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
|
||||||
|
result = log(x) / log((double)FLT_RADIX);
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
INLINE static const double
|
||||||
|
__logb(double x)
|
||||||
|
{
|
||||||
|
unsigned int lx,ix;
|
||||||
|
|
||||||
|
EXTRACT_WORDS(ix,lx,x);
|
||||||
|
|
||||||
|
ix &= 0x7fffffff; /* high |x| */
|
||||||
|
if((ix|lx)==0)
|
||||||
|
return -1.0/fabs(x);
|
||||||
|
|
||||||
|
if(ix>=0x7ff00000)
|
||||||
|
return x*x;
|
||||||
|
|
||||||
|
if((ix>>=20)==0) /* IEEE 754 logb */
|
||||||
|
return -1022.0;
|
||||||
|
else
|
||||||
|
return (double) (ix-1023);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
double
|
||||||
|
logb(double x)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
|
||||||
|
int sign;
|
||||||
|
|
||||||
|
if(x == 0.0)
|
||||||
|
{
|
||||||
|
result = -HUGE_VAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isnan(x))
|
||||||
|
{
|
||||||
|
result = x;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
sign = isinf(x);
|
||||||
|
if(sign != 0)
|
||||||
|
{
|
||||||
|
if(sign < 0)
|
||||||
|
result = (-x);
|
||||||
|
else
|
||||||
|
result = x;
|
||||||
|
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = __logb(x);
|
||||||
|
|
||||||
|
out:
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_modf.c,v 1.1.1.1 2004-07-26 16:30:50 obarthel Exp $
|
* $Id: math_modf.c,v 1.2 2004-09-27 15:06:19 tfrieden Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -109,7 +109,7 @@ __modf(double x,double *nptr)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(__PPC__)
|
||||||
|
|
||||||
INLINE static const double
|
INLINE static const double
|
||||||
__modf(double x,double *nptr)
|
__modf(double x,double *nptr)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_pow.c,v 1.1.1.1 2004-07-26 16:30:52 obarthel Exp $
|
* $Id: math_pow.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -171,7 +171,7 @@ __pow(double x,double y)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#if defined(__PPC__)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -286,11 +286,12 @@ __pow(double x,double y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (x<0)**(non-int) is NaN */
|
/* (x<0)**(non-int) is NaN */
|
||||||
/* REDHAT LOCAL: This used to be
|
n = ((unsigned int)hx>>31)+1;
|
||||||
if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
|
if((n|yisint)==0) return (x-x)/(x-x);
|
||||||
but ANSI C says a right shift of a signed negative quantity is
|
|
||||||
implementation defined. */
|
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
|
||||||
if(((((unsigned int)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
|
if((n|(yisint-1))==0)
|
||||||
|
s = -one;/* (-ve)**(odd int) */
|
||||||
|
|
||||||
/* |y| is huge */
|
/* |y| is huge */
|
||||||
if(iy>0x41e00000) { /* if |y| > 2**31 */
|
if(iy>0x41e00000) { /* if |y| > 2**31 */
|
||||||
@@ -299,11 +300,11 @@ __pow(double x,double y)
|
|||||||
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
||||||
}
|
}
|
||||||
/* over/underflow if x is not close to one */
|
/* over/underflow if x is not close to one */
|
||||||
if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
|
if(ix<0x3fefffff) return (hy<0)? s*huge*huge:s*tiny*tiny;
|
||||||
if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
|
if(ix>0x3ff00000) return (hy>0)? s*huge*huge:s*tiny*tiny;
|
||||||
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
||||||
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
||||||
t = ax-1; /* t has 20 trailing zeros */
|
t = ax-one; /* t has 20 trailing zeros */
|
||||||
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
|
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
|
||||||
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
|
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
|
||||||
v = t*ivln2_l-w*ivln2;
|
v = t*ivln2_l-w*ivln2;
|
||||||
@@ -311,7 +312,7 @@ __pow(double x,double y)
|
|||||||
SET_LOW_WORD(t1,0);
|
SET_LOW_WORD(t1,0);
|
||||||
t2 = v-(t1-u);
|
t2 = v-(t1-u);
|
||||||
} else {
|
} else {
|
||||||
double s2,s_h,s_l,t_h,t_l;
|
double ss,s2,s_h,s_l,t_h,t_l;
|
||||||
n = 0;
|
n = 0;
|
||||||
/* take care subnormal number */
|
/* take care subnormal number */
|
||||||
if(ix<0x00100000)
|
if(ix<0x00100000)
|
||||||
@@ -325,11 +326,11 @@ __pow(double x,double y)
|
|||||||
else {k=0;n+=1;ix -= 0x00100000;}
|
else {k=0;n+=1;ix -= 0x00100000;}
|
||||||
SET_HIGH_WORD(ax,ix);
|
SET_HIGH_WORD(ax,ix);
|
||||||
|
|
||||||
/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
/* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
||||||
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
||||||
v = one/(ax+bp[k]);
|
v = one/(ax+bp[k]);
|
||||||
s = u*v;
|
ss = u*v;
|
||||||
s_h = s;
|
s_h = ss;
|
||||||
SET_LOW_WORD(s_h,0);
|
SET_LOW_WORD(s_h,0);
|
||||||
/* t_h=ax+bp[k] High */
|
/* t_h=ax+bp[k] High */
|
||||||
t_h = zero;
|
t_h = zero;
|
||||||
@@ -337,33 +338,29 @@ __pow(double x,double y)
|
|||||||
t_l = ax - (t_h-bp[k]);
|
t_l = ax - (t_h-bp[k]);
|
||||||
s_l = v*((u-s_h*t_h)-s_h*t_l);
|
s_l = v*((u-s_h*t_h)-s_h*t_l);
|
||||||
/* compute log(ax) */
|
/* compute log(ax) */
|
||||||
s2 = s*s;
|
s2 = ss*ss;
|
||||||
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
||||||
r += s_l*(s_h+s);
|
r += s_l*(s_h+ss);
|
||||||
s2 = s_h*s_h;
|
s2 = s_h*s_h;
|
||||||
t_h = 3.0+s2+r;
|
t_h = 3.0+s2+r;
|
||||||
SET_LOW_WORD(t_h,0);
|
SET_LOW_WORD(t_h,0);
|
||||||
t_l = r-((t_h-3.0)-s2);
|
t_l = r-((t_h-3.0)-s2);
|
||||||
/* u+v = s*(1+...) */
|
/* u+v = ss*(1+...) */
|
||||||
u = s_h*t_h;
|
u = s_h*t_h;
|
||||||
v = s_l*t_h+t_l*s;
|
v = s_l*t_h+t_l*ss;
|
||||||
/* 2/(3log2)*(s+...) */
|
/* 2/(3log2)*(ss+...) */
|
||||||
p_h = u+v;
|
p_h = u+v;
|
||||||
SET_LOW_WORD(p_h,0);
|
SET_LOW_WORD(p_h,0);
|
||||||
p_l = v-(p_h-u);
|
p_l = v-(p_h-u);
|
||||||
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||||
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
||||||
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||||
t = (double)n;
|
t = (double)n;
|
||||||
t1 = (((z_h+z_l)+dp_h[k])+t);
|
t1 = (((z_h+z_l)+dp_h[k])+t);
|
||||||
SET_LOW_WORD(t1,0);
|
SET_LOW_WORD(t1,0);
|
||||||
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
|
|
||||||
if(((((unsigned int)hx>>31)-1)|(yisint-1))==0)
|
|
||||||
s = -one;/* (-ve)**(odd int) */
|
|
||||||
|
|
||||||
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
|
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
|
||||||
y1 = y;
|
y1 = y;
|
||||||
SET_LOW_WORD(y1,0);
|
SET_LOW_WORD(y1,0);
|
||||||
|
|||||||
136
library/math_rint.c
Executable file
136
library/math_rint.c
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* $Id: math_rint.c,v 1.3 2004-08-27 13:49:17 obarthel Exp $
|
||||||
|
*
|
||||||
|
* :ts=4
|
||||||
|
*
|
||||||
|
* Portable ISO 'C' (1994) runtime library for the Amiga computer
|
||||||
|
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Neither the name of Olaf Barthel nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* PowerPC math library based in part on work by Sun Microsystems
|
||||||
|
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
|
* Permission to use, copy, modify, and distribute this
|
||||||
|
* software is freely granted, provided that this notice
|
||||||
|
* is preserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MATH_HEADERS_H
|
||||||
|
#include "math_headers.h"
|
||||||
|
#endif /* _MATH_HEADERS_H */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
double
|
||||||
|
rint(double x)
|
||||||
|
{
|
||||||
|
return floor ( x+0.5 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
static const double
|
||||||
|
TWO52[2]={
|
||||||
|
4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
|
||||||
|
-4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
|
||||||
|
};
|
||||||
|
|
||||||
|
double
|
||||||
|
rint(double x)
|
||||||
|
{
|
||||||
|
int i0,j0,sx;
|
||||||
|
unsigned i,i1;
|
||||||
|
double w,t;
|
||||||
|
GET_HIGH_WORD(i0,x);
|
||||||
|
sx = (i0>>31)&1;
|
||||||
|
GET_LOW_WORD(i1,x);
|
||||||
|
j0 = ((i0>>20)&0x7ff)-0x3ff;
|
||||||
|
if(j0<20) {
|
||||||
|
if(j0<0) {
|
||||||
|
if(((i0&0x7fffffff)|i1)==0) return x;
|
||||||
|
i1 |= (i0&0x0fffff);
|
||||||
|
i0 &= 0xfffe0000;
|
||||||
|
i0 |= ((i1|-i1)>>12)&0x80000;
|
||||||
|
SET_HIGH_WORD(x,i0);
|
||||||
|
w = TWO52[sx]+x;
|
||||||
|
t = w-TWO52[sx];
|
||||||
|
GET_HIGH_WORD(i0,t);
|
||||||
|
SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
||||||
|
return t;
|
||||||
|
} else {
|
||||||
|
i = (0x000fffff)>>j0;
|
||||||
|
if(((i0&i)|i1)==0) return x; /* x is integral */
|
||||||
|
i>>=1;
|
||||||
|
if(((i0&i)|i1)!=0) {
|
||||||
|
if(j0==19) i1 = 0x40000000; else
|
||||||
|
i0 = (i0&(~i))|((0x20000)>>j0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (j0>51) {
|
||||||
|
if(j0==0x400) return x+x; /* inf or NaN */
|
||||||
|
else return x; /* x is integral */
|
||||||
|
} else {
|
||||||
|
i = ((unsigned)(0xffffffff))>>(j0-20);
|
||||||
|
if((i1&i)==0) return x; /* x is integral */
|
||||||
|
i>>=1;
|
||||||
|
if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
|
||||||
|
}
|
||||||
|
|
||||||
|
SET_HIGH_WORD(x,i0);
|
||||||
|
SET_LOW_WORD(x,i1);
|
||||||
|
w = TWO52[sx]+x;
|
||||||
|
return w-TWO52[sx];
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
129
library/math_rintf.c
Executable file
129
library/math_rintf.c
Executable file
@@ -0,0 +1,129 @@
|
|||||||
|
/*
|
||||||
|
* $Id: math_rintf.c,v 1.2 2004-08-27 13:49:17 obarthel Exp $
|
||||||
|
*
|
||||||
|
* :ts=4
|
||||||
|
*
|
||||||
|
* Portable ISO 'C' (1994) runtime library for the Amiga computer
|
||||||
|
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Neither the name of Olaf Barthel nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* PowerPC math library based in part on work by Sun Microsystems
|
||||||
|
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
|
* Permission to use, copy, modify, and distribute this
|
||||||
|
* software is freely granted, provided that this notice
|
||||||
|
* is preserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MATH_HEADERS_H
|
||||||
|
#include "math_headers.h"
|
||||||
|
#endif /* _MATH_HEADERS_H */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* The following is not part of the ISO 'C' (1994) (1994) standard. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
float
|
||||||
|
rintf(float x)
|
||||||
|
{
|
||||||
|
return (float) floor ( x + 0.5f );
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
static const float
|
||||||
|
TWO23[2]={
|
||||||
|
8.3886080000e+06, /* 0x4b000000 */
|
||||||
|
-8.3886080000e+06, /* 0xcb000000 */
|
||||||
|
};
|
||||||
|
|
||||||
|
float
|
||||||
|
rintf(float x)
|
||||||
|
{
|
||||||
|
int i0,j0,sx;
|
||||||
|
unsigned int i,i1;
|
||||||
|
float w,t;
|
||||||
|
GET_FLOAT_WORD(i0,x);
|
||||||
|
sx = (i0>>31)&1;
|
||||||
|
j0 = ((i0>>23)&0xff)-0x7f;
|
||||||
|
if(j0<23) {
|
||||||
|
if(j0<0) {
|
||||||
|
if((i0&0x7fffffff)==0) return x;
|
||||||
|
i1 = (i0&0x07fffff);
|
||||||
|
i0 &= 0xfff00000;
|
||||||
|
i0 |= ((i1|-i1)>>9)&0x400000;
|
||||||
|
SET_FLOAT_WORD(x,i0);
|
||||||
|
w = TWO23[sx]+x;
|
||||||
|
t = w-TWO23[sx];
|
||||||
|
GET_FLOAT_WORD(i0,t);
|
||||||
|
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
||||||
|
return t;
|
||||||
|
} else {
|
||||||
|
i = (0x007fffff)>>j0;
|
||||||
|
if((i0&i)==0) return x; /* x is integral */
|
||||||
|
i>>=1;
|
||||||
|
if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(j0==0x80) return x+x; /* inf or NaN */
|
||||||
|
else return x; /* x is integral */
|
||||||
|
}
|
||||||
|
SET_FLOAT_WORD(x,i0);
|
||||||
|
w = TWO23[sx]+x;
|
||||||
|
return w-TWO23[sx];
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* FLOATING_POINT_SUPPORT */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: math_sqrt.c,v 1.1.1.1 2004-07-26 16:30:53 obarthel Exp $
|
* $Id: math_sqrt.c,v 1.3 2004-09-27 15:06:19 tfrieden Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -135,7 +135,7 @@ __sqrt(double x)
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#if defined(PPC_FLOATING_POINT_SUPPORT)
|
#ifdef __PPC__
|
||||||
|
|
||||||
static const double one = 1.0, tiny=1.0e-300;
|
static const double one = 1.0, tiny=1.0e-300;
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ __sqrt(double x)
|
|||||||
return z;
|
return z;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* PPC_FLOATING_POINT_SUPPORT */
|
#endif
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ sqrt(double x)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = HUGE_VAL;
|
result = 0;
|
||||||
errno = EDOM;
|
errno = EDOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: mount_fstatfs.c,v 1.1.1.1 2004-07-26 16:30:54 obarthel Exp $
|
* $Id: mount_fstatfs.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: mount_statfs.c,v 1.1.1.1 2004-07-26 16:30:55 obarthel Exp $
|
* $Id: mount_statfs.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "net.lib 1.165"
|
#define VERS "net.lib 1.179"
|
||||||
#define VSTRING "net.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "net.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: net.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: net.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
3039
library/releasenotes
3039
library/releasenotes
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_kill.c,v 1.1.1.1 2004-07-26 16:31:05 obarthel Exp $
|
* $Id: signal_kill.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigaddset.c,v 1.1.1.1 2004-07-26 16:31:05 obarthel Exp $
|
* $Id: signal_sigaddset.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigblock.c,v 1.1.1.1 2004-07-26 16:31:05 obarthel Exp $
|
* $Id: signal_sigblock.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigemptyset.c,v 1.1.1.1 2004-07-26 16:31:06 obarthel Exp $
|
* $Id: signal_sigemptyset.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigmask.c,v 1.1.1.1 2004-07-26 16:31:06 obarthel Exp $
|
* $Id: signal_sigmask.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigprocmask.c,v 1.1.1.1 2004-07-26 16:31:06 obarthel Exp $
|
* $Id: signal_sigprocmask.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: signal_sigsetmask.c,v 1.1.1.1 2004-07-26 16:31:06 obarthel Exp $
|
* $Id: signal_sigsetmask.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: smakefile,v 1.1.1.1 2004-07-26 16:31:07 obarthel Exp $
|
# $Id: smakefile,v 1.10 2004-09-29 14:17:44 obarthel Exp $
|
||||||
#
|
#
|
||||||
# :ts=8
|
# :ts=8
|
||||||
#
|
#
|
||||||
@@ -14,6 +14,14 @@
|
|||||||
@echo "Assembling $<"
|
@echo "Assembling $<"
|
||||||
@asm $(AFLAGS) $<
|
@asm $(AFLAGS) $<
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# You might want to change this to the directory where your operating system
|
||||||
|
# header files are stored. On my system, that's "V:include", but you might
|
||||||
|
# get lucky with "sc:include" instead, which is the default for SAS/C.
|
||||||
|
INCLUDE_DIR = V:include
|
||||||
|
#INCLUDE_DIR = sc:include
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
OPTIMIZE = optimize opttime optschedule optinline
|
OPTIMIZE = optimize opttime optschedule optinline
|
||||||
@@ -33,7 +41,15 @@ SUPPORT = define=UNIX_PATH_SEMANTICS define=SOCKET_SUPPORT define=USERGROUP_SUP
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
CFLAGS = \
|
CFLAGS = \
|
||||||
idlen=64 idir=include idir=netinclude commentnest \
|
resopt \
|
||||||
|
nover \
|
||||||
|
memorysize=huge \
|
||||||
|
idir=netinclude \
|
||||||
|
idlen=64 \
|
||||||
|
commentnest \
|
||||||
|
nostackcheck \
|
||||||
|
stringmerge \
|
||||||
|
errorrexx \
|
||||||
$(PROFILE) $(OPTIMIZE) $(CODE) $(DATA) $(CPU) $(MATH) \
|
$(PROFILE) $(OPTIMIZE) $(CODE) $(DATA) $(CPU) $(MATH) \
|
||||||
$(SUPPORT) $(DEBUG)
|
$(SUPPORT) $(DEBUG)
|
||||||
|
|
||||||
@@ -147,14 +163,14 @@ FCNTL_OBJ = \
|
|||||||
fcntl_lseek.o \
|
fcntl_lseek.o \
|
||||||
fcntl_open.o \
|
fcntl_open.o \
|
||||||
fcntl_read.o \
|
fcntl_read.o \
|
||||||
fcntl_write.o
|
fcntl_write.o \
|
||||||
|
fcntl_get_default_file.o
|
||||||
|
|
||||||
LIBGEN_OBJ = \
|
LIBGEN_OBJ = \
|
||||||
libgen_basename.o \
|
libgen_basename.o \
|
||||||
libgen_dirname.o
|
libgen_dirname.o
|
||||||
|
|
||||||
LOCALE_OBJ = \
|
LOCALE_OBJ = \
|
||||||
locale_data.o \
|
|
||||||
locale_init_exit.o \
|
locale_init_exit.o \
|
||||||
locale_localeconv.o \
|
locale_localeconv.o \
|
||||||
locale_setlocale.o
|
locale_setlocale.o
|
||||||
@@ -173,12 +189,18 @@ MATH_OBJ = \
|
|||||||
math_floor.o \
|
math_floor.o \
|
||||||
math_fmod.o \
|
math_fmod.o \
|
||||||
math_frexp.o \
|
math_frexp.o \
|
||||||
|
math_hypot.o \
|
||||||
math_init_exit.o \
|
math_init_exit.o \
|
||||||
|
math_isinf.o \
|
||||||
|
math_isnan.o \
|
||||||
math_ldexp.o \
|
math_ldexp.o \
|
||||||
math_log.o \
|
math_log.o \
|
||||||
math_log10.o \
|
math_log10.o \
|
||||||
|
math_logb.o \
|
||||||
math_modf.o \
|
math_modf.o \
|
||||||
math_pow.o \
|
math_pow.o \
|
||||||
|
math_rint.o \
|
||||||
|
math_rintf.o \
|
||||||
math_sin.o \
|
math_sin.o \
|
||||||
math_sinh.o \
|
math_sinh.o \
|
||||||
math_sqrt.o \
|
math_sqrt.o \
|
||||||
@@ -243,7 +265,8 @@ SOCKET_OBJ = \
|
|||||||
socket_setsockopt.o \
|
socket_setsockopt.o \
|
||||||
socket_shutdown.o \
|
socket_shutdown.o \
|
||||||
socket_socket.o \
|
socket_socket.o \
|
||||||
socket_hook_entry.o
|
socket_hook_entry.o \
|
||||||
|
socket_hstrerror.o
|
||||||
|
|
||||||
STAT_OBJ = \
|
STAT_OBJ = \
|
||||||
stat_chmod.o \
|
stat_chmod.o \
|
||||||
@@ -297,8 +320,6 @@ STDIO_OBJ = \
|
|||||||
stdio_initializeiob.o \
|
stdio_initializeiob.o \
|
||||||
stdio_init_exit.o \
|
stdio_init_exit.o \
|
||||||
stdio_iobhookentry.o \
|
stdio_iobhookentry.o \
|
||||||
stdio_isinfinity.o \
|
|
||||||
stdio_isnotanumber.o \
|
|
||||||
stdio_locksemaphorename.o \
|
stdio_locksemaphorename.o \
|
||||||
stdio_nostdio.o \
|
stdio_nostdio.o \
|
||||||
stdio_openiob.o \
|
stdio_openiob.o \
|
||||||
@@ -393,6 +414,8 @@ STDLIB_OBJ = \
|
|||||||
stdlib_strtod.o \
|
stdlib_strtod.o \
|
||||||
stdlib_strtol.o \
|
stdlib_strtol.o \
|
||||||
stdlib_strtoul.o \
|
stdlib_strtoul.o \
|
||||||
|
stdlib_strtoll.o \
|
||||||
|
stdlib_strtoull.o \
|
||||||
stdlib_swapstack.o \
|
stdlib_swapstack.o \
|
||||||
stdlib_system.o \
|
stdlib_system.o \
|
||||||
stdlib_unsetenv.o \
|
stdlib_unsetenv.o \
|
||||||
@@ -450,9 +473,9 @@ TIME_OBJ = \
|
|||||||
UNISTD_OBJ = \
|
UNISTD_OBJ = \
|
||||||
unistd_access.o \
|
unistd_access.o \
|
||||||
unistd_chdir.o \
|
unistd_chdir.o \
|
||||||
|
unistd_chdir_exit.o \
|
||||||
unistd_chown.o \
|
unistd_chown.o \
|
||||||
unistd_currentpathname.o \
|
unistd_currentpathname.o \
|
||||||
unistd_data.o \
|
|
||||||
unistd_dup.o \
|
unistd_dup.o \
|
||||||
unistd_dup2.o \
|
unistd_dup2.o \
|
||||||
unistd_fchown.o \
|
unistd_fchown.o \
|
||||||
@@ -473,12 +496,15 @@ UNISTD_OBJ = \
|
|||||||
unistd_sleep.o \
|
unistd_sleep.o \
|
||||||
unistd_strip_double_slash.o \
|
unistd_strip_double_slash.o \
|
||||||
unistd_symlink.o \
|
unistd_symlink.o \
|
||||||
|
unistd_time_delay.o \
|
||||||
|
unistd_timer.o \
|
||||||
unistd_translatea2u.o \
|
unistd_translatea2u.o \
|
||||||
unistd_translaterel.o \
|
unistd_translaterel.o \
|
||||||
unistd_translateu2a.o \
|
unistd_translateu2a.o \
|
||||||
unistd_truncate.o \
|
unistd_truncate.o \
|
||||||
unistd_unix_path_semantics.o \
|
unistd_unix_path_semantics.o \
|
||||||
unistd_unlink.o
|
unistd_unlink.o \
|
||||||
|
unistd_usleep.o
|
||||||
# \
|
# \
|
||||||
# unistd_wildcard_expand.o
|
# unistd_wildcard_expand.o
|
||||||
|
|
||||||
@@ -518,16 +544,16 @@ UTIME_OBJ = \
|
|||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
all: setup c.lib startup.o test fgets_test iotest sscanf_test printf_test stack_size_test translate_test cleanup
|
all: setup c.lib startup.o cleanup
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-delete \#?.o \#?.lib \#?.map test fgets_test iotest sscanf_test printf_test stack_size_test translate_test
|
-delete \#?.o \#?.lib \#?.map
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
setup:
|
setup:
|
||||||
@echo "Setting up include: assignment"
|
@echo "Setting up include: assignment"
|
||||||
@assign include: include V:include
|
@assign include: include $(INCLUDE_DIR)
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@echo "Cleaning up include: assignment"
|
@echo "Cleaning up include: assignment"
|
||||||
@@ -559,43 +585,6 @@ cvs-tag:
|
|||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
test: test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
fgets_test: fgets_test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o fgets_test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
iotest: iotest.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o iotest.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
sscanf_test: sscanf_test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o sscanf_test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
printf_test: printf_test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o printf_test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
stack_size_test: stack_size_test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o stack_size_test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
translate_test: translate_test.o startup.o c.lib
|
|
||||||
@echo "Linking $@"
|
|
||||||
@slink startup.o translate_test.o to $@ lib c.lib addsym \
|
|
||||||
map $@.map,fhx fwidth 32 pwidth 32 swidth 32
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
c.lib_rev.o : c.lib_rev.c c.lib_rev.h
|
c.lib_rev.o : c.lib_rev.c c.lib_rev.h
|
||||||
|
|
||||||
amiga_hookentry.o : amiga_hookentry.asm
|
amiga_hookentry.o : amiga_hookentry.asm
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_data.c,v 1.1.1.1 2004-07-26 16:31:08 obarthel Exp $
|
* $Id: socket_data.c,v 1.2 2004-07-28 15:50:45 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -53,4 +53,8 @@ struct SocketIFace *__ISocket;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
int h_errno;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#endif /* SOCKET_SUPPORT */
|
#endif /* SOCKET_SUPPORT */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_headers.h,v 1.1.1.1 2004-07-26 16:31:14 obarthel Exp $
|
* $Id: socket_headers.h,v 1.2 2004-07-28 15:50:45 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -60,6 +60,10 @@ extern struct SocketIFace *__ISocket;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
extern int h_errno;
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
extern struct fd * __get_socket_descriptor(int socket_descriptor);
|
extern struct fd * __get_socket_descriptor(int socket_descriptor);
|
||||||
extern void __socket_hook_entry(struct Hook * hook,struct fd * fd,struct file_hook_message * message);
|
extern void __socket_hook_entry(struct Hook * hook,struct fd * fd,struct file_hook_message * message);
|
||||||
|
|
||||||
|
|||||||
137
library/socket_hstrerror.c
Normal file
137
library/socket_hstrerror.c
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
* $Id: socket_hstrerror.c,v 1.2 2004-07-29 08:35:15 obarthel Exp $
|
||||||
|
*
|
||||||
|
* :ts=4
|
||||||
|
*
|
||||||
|
* Portable ISO 'C' (1994) runtime library for the Amiga computer
|
||||||
|
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Neither the name of Olaf Barthel nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(SOCKET_SUPPORT)
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _SOCKET_HEADERS_H
|
||||||
|
#include "socket_headers.h"
|
||||||
|
#endif /* _SOCKET_HEADERS_H */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
const char *
|
||||||
|
hstrerror(int error_number)
|
||||||
|
{
|
||||||
|
const char * result;
|
||||||
|
|
||||||
|
if(error_number < 1 || error_number > 4)
|
||||||
|
{
|
||||||
|
static char error_buffer[80];
|
||||||
|
char number[30];
|
||||||
|
char *s = number;
|
||||||
|
int is_negative = 0;
|
||||||
|
unsigned int n;
|
||||||
|
int i,len,c;
|
||||||
|
|
||||||
|
/* We convert the error number into in an unsigned
|
||||||
|
integer, so that numbers such as 0x80000000
|
||||||
|
can come out of the conversion. */
|
||||||
|
if(error_number < 0)
|
||||||
|
{
|
||||||
|
is_negative = 1;
|
||||||
|
|
||||||
|
n = (-error_number);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = error_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert the error number into a string of digits. */
|
||||||
|
len = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
(*s++) = '0' + (n % 10);
|
||||||
|
n /= 10;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
while(n > 0 && len < (int)sizeof(number)-1);
|
||||||
|
|
||||||
|
/* Add the sign, if necessary. */
|
||||||
|
if(is_negative && len < (int)sizeof(number)-1)
|
||||||
|
{
|
||||||
|
(*s++) = '-';
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*s) = '\0';
|
||||||
|
|
||||||
|
/* Reverse the string in place. */
|
||||||
|
for(i = 0 ; i < len / 2 ; i++)
|
||||||
|
{
|
||||||
|
c = number[len-1-i];
|
||||||
|
number[len-1-i] = number[i];
|
||||||
|
number[i] = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(error_buffer,"Unknown resolver error ");
|
||||||
|
strcat(error_buffer,number);
|
||||||
|
|
||||||
|
result = error_buffer;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch(error_number)
|
||||||
|
{
|
||||||
|
case 1: /* HOST_NOT_FOUND */
|
||||||
|
|
||||||
|
result = "Unknown host";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* TRY_AGAIN */
|
||||||
|
|
||||||
|
result = "Host name lookup failure; try again";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: /* NO_RECOVERY */
|
||||||
|
|
||||||
|
result = "Unknown server error_number";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case 4: /* NO_ADDRESS */
|
||||||
|
|
||||||
|
result = "No address associated with name";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#endif /* SOCKET_SUPPORT */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_init_exit.c,v 1.1.1.1 2004-07-26 16:31:16 obarthel Exp $
|
* $Id: socket_init_exit.c,v 1.4 2004-09-29 17:03:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -61,6 +61,7 @@ extern BOOL __detach;
|
|||||||
#define SBTC_BREAKMASK 1 /* Interrupt signal mask */
|
#define SBTC_BREAKMASK 1 /* Interrupt signal mask */
|
||||||
#define SBTC_LOGTAGPTR 11 /* Under which name log entries are filed */
|
#define SBTC_LOGTAGPTR 11 /* Under which name log entries are filed */
|
||||||
#define SBTC_ERRNOLONGPTR 24 /* Pointer to errno, length == sizeof(errno) */
|
#define SBTC_ERRNOLONGPTR 24 /* Pointer to errno, length == sizeof(errno) */
|
||||||
|
#define SBTC_HERRNOLONGPTR 25 /* 'h_errno' pointer (with sizeof(h_errno) == sizeof(long)) */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
@@ -83,16 +84,11 @@ extern BOOL __is_daemon;
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
extern void __show_error(const char * message);
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
extern void __socket_hook_entry(struct Hook * hook,struct fd * fd,struct file_hook_message * message);
|
extern void __socket_hook_entry(struct Hook * hook,struct fd * fd,struct file_hook_message * message);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void
|
CLIB_DESTRUCTOR(__socket_exit)
|
||||||
__socket_exit(void)
|
|
||||||
{
|
{
|
||||||
ENTER();
|
ENTER();
|
||||||
|
|
||||||
@@ -115,16 +111,7 @@ __socket_exit(void)
|
|||||||
* does not happen, the stdio cleanup function will
|
* does not happen, the stdio cleanup function will
|
||||||
* crash (with bells on).
|
* crash (with bells on).
|
||||||
*/
|
*/
|
||||||
if(__fd != NULL)
|
__close_all_files();
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i = 0 ; i < __num_fd ; i++)
|
|
||||||
{
|
|
||||||
if(FLAG_IS_SET(__fd[i]->fd_Flags,FDF_IS_SOCKET) && FLAG_IS_SET(__fd[i]->fd_Flags,FDF_IN_USE))
|
|
||||||
close(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(__amigaos4__)
|
#if defined(__amigaos4__)
|
||||||
{
|
{
|
||||||
@@ -151,7 +138,7 @@ int
|
|||||||
__socket_init(void)
|
__socket_init(void)
|
||||||
{
|
{
|
||||||
struct Process * this_process;
|
struct Process * this_process;
|
||||||
struct TagItem tags[4];
|
struct TagItem tags[5];
|
||||||
int result = ERROR;
|
int result = ERROR;
|
||||||
LONG status;
|
LONG status;
|
||||||
|
|
||||||
@@ -203,7 +190,11 @@ __socket_init(void)
|
|||||||
tags[2].ti_Tag = SBTM_SETVAL(SBTC_LOGTAGPTR);
|
tags[2].ti_Tag = SBTM_SETVAL(SBTC_LOGTAGPTR);
|
||||||
tags[2].ti_Data = (ULONG)__program_name;
|
tags[2].ti_Data = (ULONG)__program_name;
|
||||||
|
|
||||||
tags[3].ti_Tag = TAG_END;
|
/* Wire the library's h_errno variable to our local h_errno. */
|
||||||
|
tags[3].ti_Tag = SBTM_SETVAL(SBTC_HERRNOLONGPTR);
|
||||||
|
tags[3].ti_Data = (ULONG)&errno;
|
||||||
|
|
||||||
|
tags[4].ti_Tag = TAG_END;
|
||||||
|
|
||||||
PROFILE_OFF();
|
PROFILE_OFF();
|
||||||
status = __SocketBaseTagList(tags);
|
status = __SocketBaseTagList(tags);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_send.c,v 1.1.1.1 2004-07-26 16:31:19 obarthel Exp $
|
* $Id: socket_send.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
send(int sockfd,void *buff,size_t nbytes,int flags)
|
send(int sockfd,const void *buff,size_t nbytes,int flags)
|
||||||
{
|
{
|
||||||
struct fd * fd;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_sendto.c,v 1.1.1.1 2004-07-26 16:31:20 obarthel Exp $
|
* $Id: socket_sendto.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
sendto(int sockfd,void *buff,int len,int flags,struct sockaddr *to,int tolen)
|
sendto(int sockfd,const void *buff,int len,int flags,struct sockaddr *to,int tolen)
|
||||||
{
|
{
|
||||||
struct fd * fd;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: socket_setsockopt.c,v 1.1.1.1 2004-07-26 16:31:20 obarthel Exp $
|
* $Id: socket_setsockopt.c,v 1.2 2004-09-29 14:31:57 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
setsockopt(int sockfd,int level,int optname,void *optval,int optlen)
|
setsockopt(int sockfd,int level,int optname,const void *optval,int optlen)
|
||||||
{
|
{
|
||||||
struct fd * fd;
|
struct fd * fd;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#define VERSION 1
|
#define VERSION 1
|
||||||
#define REVISION 165
|
#define REVISION 179
|
||||||
#define DATE "26.7.2004"
|
#define DATE "22.10.2004"
|
||||||
#define VERS "stack.lib 1.165"
|
#define VERS "stack.lib 1.179"
|
||||||
#define VSTRING "stack.lib 1.165 (26.7.2004)\r\n"
|
#define VSTRING "stack.lib 1.179 (22.10.2004)\r\n"
|
||||||
#define VERSTAG "\0$VER: stack.lib 1.165 (26.7.2004)"
|
#define VERSTAG "\0$VER: stack.lib 1.179 (22.10.2004)"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
165
|
179
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stat_chmod.c,v 1.1.1.1 2004-07-26 16:31:21 obarthel Exp $
|
* $Id: stat_chmod.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user