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

108 Commits

Author SHA1 Message Date
Olaf Barthel
0cecdc99fb This commit was manufactured by cvs2svn to create tag 'V1_205'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_205@15209 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 11:39:11 +00:00
Olaf Barthel
6bc8108a39 - Version bump to 1.205
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15208 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 11:39:10 +00:00
Olaf Barthel
f600c5e37a - Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
  which will perform a path name conversion. Note that these functions
  will not work in the thread-safe variant of the library because it
  would be unwise to tinker with the currently running program's binary.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15207 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 11:37:03 +00:00
Olaf Barthel
1bdfc0d143 - Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
  which will perform a path name conversion.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15206 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 10:59:34 +00:00
Olaf Barthel
37a1fdee4f - The shared object initialization has to be performed before any local
constructors are invoked, and after all local destructors have been
  invoked.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15205 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 09:57:50 +00:00
Olaf Barthel
d10027ece7 - Preparations for clib2 1.205
- Added support for ELF shared objects and libraries. This is implemented through
  constructor/destructor functions, which means that you can use this
  functionality even in Amiga Exec style shared libraries, with the proper
  library initialization code to invoke the constructor/destructor functions
  for you.

- Updated uname() to recognize AmigaOS 4.1.

- The translation from Unix to Amiga path names did not properly process
  multiple occurences of "/./" in the path name. Thanks go to Steven Solie
  for finding the issue.

- The detection of "/./" and "/../" patterns in Unix path names to be
  translated into Amiga path names did not test if it was overrunning
  the end of the string.

- If strcmp(), strncmp() and memcmp() detect a pair of different
  characters, then the function result must be calculated as if the
  characters were of type "unsigned char". This is a requirement
  according to the ISO 'C' (1994) standard. Thanks go to Georg Steger
  for finding the issue.

- The definitions for INT_MIN, INT_MAX and UINT_MAX in <limits.h> no
  longer use long integer types, as prompted by Steven Solie.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15204 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-20 15:33:36 +00:00
Olaf Barthel
60fbee698e - Preparations for c.lib 1.204 release.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15203 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-11-11 12:58:39 +00:00
Olaf Barthel
933483d365 - Updated the build rules for use with GCC 4.2.x
- Added a workaround for the baserel build flavour, which requires a specific
  GCC version, e.g. 4.0.4 or earlier.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15202 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-11-06 14:44:07 +00:00
Olaf Barthel
4291a0564f - The memory allocated by malloc() and friends is now of type MEMF_PRIVATE
under OS4 and beyond. The AmigaOS 2.x/3.x compatible code will still
  use MEMF_ANY in the same situation, though. Other uses of MEMF_ANY have
  been replaced as well where MEMF_PRIVATE would have made better sense.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15201 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-09-30 14:09:00 +00:00
Olaf Barthel
8a1347e61d - I/O buffers allocated are now aligned according to the CPU cache line size,
if the operating system can supply that detailed information.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15200 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-09-04 12:07:58 +00:00
Olaf Barthel
b9ad1fda3f - Elaborated on the unidirectional/bidirectional PIPE: issues.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15199 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-05-07 09:33:55 +00:00
Olaf Barthel
f28dcf8ed1 - stdlib_unsetenv.c needs stdio_headers.h to compile properly.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15198 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 16:32:49 +00:00
Olaf Barthel
8eac1027a5 - It's iswpunct() and not iswpunc().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15197 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 14:41:28 +00:00
Olaf Barthel
0b19424148 - unsetenv() now returns a status value.
- Corrected the function prototype for wcspbrk().

- Added function prototypes for mbrtowc_l(), wcscoll_l(), wcscspn() and wcsrchr().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15196 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 14:34:03 +00:00
Olaf Barthel
f100199861 - Switched to BSD style options for the "cp" command, as used in the build
makefiles and the archive build script (that is: 'cp -a' becomes 'cp -p'
  and 'cp -pR', depending upon the specific context).


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15195 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-28 16:12:22 +00:00
Olaf Barthel
f727c0f4c4 *** empty log message ***
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15193 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-28 15:49:25 +00:00
Olaf Barthel
6a149abc57 - Final checkin prior to upcoming release.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15192 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-28 15:42:13 +00:00
Olaf Barthel
e3bde26409 - Added 68k stubs to amiga_rexxvars.c for the OS4 build to use. The new code now
works just about exactly like the amiga.lib RVI code used to do, which means
  that there is no artificial length limit for the number of characters a string
  retrieved may have, and the code is largely reentrant.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15191 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-18 10:11:59 +00:00
Olaf Barthel
bbc98790fe - The 68k stub for StrcpyN stored d1 as a result value, which was both
dangerous and unnecessary.

- Plugged in 68k stubs for the OS4 build.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15190 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-18 10:06:07 +00:00
Olaf Barthel
e7258bf939 - To work around a bug in the Roadshow TCP/IP stack (since fixed), the waitselect()
function now substitutes a 10 microsecond timeout for a zero length timeout.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15189 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-16 07:53:40 +00:00
Olaf Barthel
4444438e8f - isatty() now checks if the file descriptor refers to a real file before
it calls IsInteractive() on it.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15188 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-16 07:46:05 +00:00
Olaf Barthel
6c50657673 - Added disk type definitions to mount_convertinfo.c and unistd_common_pathconf.c,
prompted by Thore Boeckelmann.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15187 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-16 07:38:10 +00:00
Olaf Barthel
7dcc410d0c - Preparations for OS4 conversion.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15186 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-15 16:22:51 +00:00
Olaf Barthel
f0503cd915 - MakeString() did not clear the ns->ns_Ivalue field and did not NUL-terminate
the copied string either. Fixed.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15185 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-15 09:33:06 +00:00
Olaf Barthel
ca20eeab97 - Small indentation changes for the stub code.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15184 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-14 15:16:03 +00:00
Olaf Barthel
6148d06dca - Rewrote the GetRexxVar()/SetRexxVar() functions (mostly) in 'C', using available
code as a reference. The 68k stubs currently only work for the 68k version of
  the library, and a solution for the OS4 build still needs to be found. The code
  is currently untested, but it should be complete.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15183 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-14 15:07:37 +00:00
Olaf Barthel
6578b303f7 - Added local inline function definitions for the two rexxsyslib.library V45
API functions, rather than omitting support for them in the 68k build.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15182 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-11 13:26:18 +00:00
Jens Maus
6801a4fcf0 - reverted the soft-float subdirectory changes as the problem was solved by
olaf in a different way so that libm.a never contains any hard float
  opcodes and instead libm881 contains them. so the separate soft-float
  directory are not required.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15181 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-11 07:41:27 +00:00
Jens Maus
fa4223c544 [tboeckel]: when compiling amiga_rexxvars.c for m68k/OS3 the GetRexxVarFromMsg()
and SetRexxVarFromMsg() will not be used and therefore not cause linkage errors
with our libamiga.a stubs anymore.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15180 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-11 07:37:31 +00:00
Olaf Barthel
91ccaa5ba9 - Added "-msoft-float" to the non-FPU libm build rules, which ought to
resolve the issues with FPU code popping up in the mathieee#?.library
  software floating point code.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15179 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-10 16:31:56 +00:00
Olaf Barthel
234a17cc07 - The printf() family now ignores argument specifications, as in "%2$d %1$d",
which are used for localization on some platforms. This is a non-standard
  feature and the way clib2 treats it for now is just intended to avoid
  trouble while performing the conversion.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15178 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-10 15:28:11 +00:00
Olaf Barthel
a41212e575 - Temporarily deactivated the separate -msoft-float builds.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15177 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-10 14:59:54 +00:00
Jens Maus
2591e249d7 - [jlangner]: changed the GNUmakefile.68k to also build soft-float variants of all
our libraries. In addition the specs file now also respects the -msoft-float
  option at link time and sets the default link directory accordingly.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15176 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-03-04 16:25:35 +00:00
Jens Maus
5ea68e3265 - the log() and log10() functions always returned -inf() even if the arguments
was within the valid range for a log() function. Using DBL_EPSILON as the
  threshold was not correct as EPSILON is 2.2204460492503131E-16 whereas
  values like 1E-200 are still valid double values for a log().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15175 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2007-11-08 11:23:53 +00:00
Olaf Barthel
0f3791a9a4 c.lib 1.202 (16.1.2007)
- Added llrint() function contributed by Henning Nielsen Lund. Thank you
  very much!

- <unistd.h> now also include <stdio.h>, so that the SEEK_SET, etc. macros
  are defined for lseek() to use.

- Added a wrapper function which handles the thread-safe stdio stream
  resolution.

- In tcflush() a break signal can no longer cause the read flush loop
  to be quit with two semaphores still locked.

- In __obtain_daemon_message() the test to verify if the bsdsocket.library API
  would support the server API functionality checked the wrong feature. Fixed.

- Switched over the fd->fd_DefaultFile references to fd->fd_Socket where
  sockets are used rather than file handles.

- Added functions which modify the callback function and the userdata pointer
  stored in a low level unbuffered file/socket data structure. These function
  perform the proper locking and are thus safe to use in a thread-safe environment.

- The low level unbuffered file/socket now has a public equivalent, which
  is defined (along with the typedefs and flags) in <sys/clib2_io.h>. Functions
  for tinkering with it are still to come.

- The math kernel code no longer uses its own private scalbn() function.

- Added a function prototype for the _exit() function. Note that _exit() is
  not an ISO 'C' function.

- Corrected the getopt() function prototype, as prompted by Henning Nielsen Lund.

- The printf() family no longer adds a 0 or 0x prefix if the alternate
  conversion modifier is present for the %o and %x conversions and the
  value to be converted is 0 already. Put another way, printf("%#x %#o",0,0);
  now prints "0 0". This required another change so that %p always includes
  the 0x prefix even if the pointer involved is a NULL pointer.

- readlink() no longer sort-of-works for files and directories. It now only
  works for soft linked objects and returns an error for everything else.
  This is based upon a fix by Peter Bengtsson. Thank you very much!

- Moved the lstat() local Lock() function into its own separate file.

- uname() now returns correct and robust information for OS version
  numbers > 36. This integrates a fix by Peter Bengtsson. Thank you
  very much!

- Moved the crtbegin.o/crtend.o files out of the link libraries. Moving
  them in was intended to work as a fix for the shared library build, but
  now it seems that this has to be done at the link stage through the
  GCC specs file...

- Integrated a fix for __rem_pio2() which affects sin(), tan() and cos(),
  contributed by Steven Solie. Thank you very much!

- The internal 'struct fd' file descriptor table entry data structure
  now has a user data field entry.

- Rearranged the contents of the 'struct fd' file descriptor table entry
  data structure in preparation for making it public. Also added a version
  field so that user code can handle changes to it gracefully. The default
  file is no longer a BCPL pointer to a file handle by default, but
  both a BPTR and a socket identifier, wrapped into a union.

- Added experimental tilde expansion in Unix path names. This still needs
  some more work.

- __get_default_file() called __fd_unlock() without having called
  __fd_lock() first. Ouch.

- Removed an unnecessary pair of __fd_lock()..__fd_unlock() calls from
  ttyname_r().

- The libunix.a unlink() function is now reentrant, or at least thread-safe.

- You can now make unlink() stop after a failed deletion attempt which
  failed because the object to be deleted was reported as being "in use".
  The libunix.a variant defaults to report the deletion to have succeeded
  under these circumstances and later tries to delete the files marked
  for deletion. See <dos.h> for a brief documentation of how to change
  the behaviour.

- basename() and dirname() can no longer return NULL. They truncate the
  resulting path name instead. This is done so because some code that
  calls basename() or dirname() does not check if the function's return
  value is NULL.

- The SetOwner() fall-back code for Kickstart 2.04 was passing the wrong
  parameters to the file system. The first (dp_Arg1) should have been
  zero. Ouch.

- basename() is not supposed to modify the string it is passed and should
  return a pointer to a string which can be modified. Now it does. Same
  thing for dirname().

- asctime_r() now returns NULL if the buffer is too short to hold even a single
  byte of data.

- ttyname() now calls ttyname_r(). Also, the libunix.a version of ttyname_r()
  will produce "/CONSOLE" rather than "CONSOLE:".


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15173 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2007-01-16 08:52:30 +00:00
Olaf Barthel
e5a2a2b451 - Added llrint() function contributed by Henning Nielsen Lund. Thank you
very much!

- <unistd.h> now also include <stdio.h>, so that the SEEK_SET, etc. macros
  are defined for lseek() to use.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15172 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2007-01-06 10:09:49 +00:00
Olaf Barthel
ca1fc13792 - Removed the timeval/TimeVal change workaround and replaced it with something
cleaner.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15171 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-12-28 14:30:57 +00:00
Olaf Barthel
3a0324e4ff - Added a wrapper function which handles the thread-safe stdio stream
resolution.

- In tcflush() a break signal can no longer cause the read flush loop
  to be quit with two semaphores still locked.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15170 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-16 14:39:23 +00:00
Olaf Barthel
77279e3224 - In __obtain_daemon_message() the test to verify if the bsdsocket.library API
would support the server API functionality checked the wrong feature. Fixed.

- Switched over the fd->fd_DefaultFile references to fd->fd_Socket where
  sockets are used rather than file handles.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15169 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-16 10:41:15 +00:00
Olaf Barthel
75b0a762ef - Replaced rows of blank spaces by tabs.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15168 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-16 10:09:20 +00:00
Olaf Barthel
c635fb3ffe - Added a comment to clarify which version number is being used for the
'_fd' data structure definition.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15167 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-15 09:21:49 +00:00
Olaf Barthel
70d1e4b7a3 - Added functions which modify the callback function and the userdata pointer
stored in a low level unbuffered file/socket data structure. These function
  perform the proper locking and are thus safe to use in a thread-safe environment.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15166 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-15 09:17:04 +00:00
Olaf Barthel
e9659f46d6 - The low level unbuffered file/socket now has a public equivalent, which
is defined (along with the typedefs and flags) in <sys/clib2_io.h>. Functions
  for tinkering with it are still to come.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15165 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-15 08:51:07 +00:00
Olaf Barthel
acc795df55 - The math kernel code no longer uses its own private scalbn() function.
- Added a function prototype for the _exit() function. Note that _exit() is
  not an ISO 'C' function.

- Corrected the getopt() function prototype, as prompted by Henning Nielsen Lund.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15164 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-13 09:51:53 +00:00
Olaf Barthel
66303e9ba2 - Added a directory to hold contributed code which has not been integrated
with the library yet.

- The byteswap code was contributed by Peter Bengtsson. Thank you very much!


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15163 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-13 09:49:49 +00:00
Olaf Barthel
7e1d5d6f6a - The printf() family no longer adds a 0 or 0x prefix if the alternate
conversion modifier is present for the %o and %x conversions and the
  value to be converted is 0 already. Put another way, printf("%#x %#o",0,0);
  now prints "0 0". This required another change so that %p always includes
  the 0x prefix even if the pointer involved is a NULL pointer.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15162 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-13 09:32:28 +00:00
Olaf Barthel
e789564429 - readlink() no longer sort-of-works for files and directories. It now only
works for soft linked objects and returns an error for everything else.
  This is based upon a fix by Peter Bengtsson. Thank you very much!

- Moved the lstat() local Lock() function into its own separate file.

- uname() now returns correct and robust information for OS version
  numbers > 36. This integrates a fix by Peter Bengtsson. Thank you
  very much!

- Moved the crtbegin.o/crtend.o files out of the link libraries. Moving
  them in was intended to work as a fix for the shared library build, but
  now it seems that this has to be done at the link stage through the
  GCC specs file...

- Integrated a fix for __rem_pio2() which affects sin(), tan() and cos(),
  contributed by Steven Solie. Thank you very much!


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15161 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-11-13 09:25:28 +00:00
Olaf Barthel
350ffdb790 - The internal 'struct fd' file descriptor table entry data structure
now has a user data field entry.

- Rearranged the contents of the 'struct fd' file descriptor table entry
  data structure in preparation for making it public. Also added a version
  field so that user code can handle changes to it gracefully. The default
  file is no longer a BCPL pointer to a file handle by default, but
  both a BPTR and a socket identifier, wrapped into a union.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15160 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-10-10 13:39:26 +00:00
Olaf Barthel
6809a5dd5b - Added experimental tilde expansion in Unix path names. This still needs
some more work.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15159 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-10-03 16:36:47 +00:00
Olaf Barthel
591ee2250e - Removed an unnecessary (STRPTR) cast.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15158 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-10-02 07:16:06 +00:00
Olaf Barthel
2b9d624d1d - Added some documenting comments to the source code.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15157 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-10-02 07:15:37 +00:00
Olaf Barthel
bf4d3b763c - __get_default_file() called __fd_unlock() without having called
__fd_lock() first. Ouch.

- Removed an unnecessary pair of __fd_lock()..__fd_unlock() calls from
  ttyname_r().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15156 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-27 11:54:54 +00:00
Olaf Barthel
9984a37cb4 - Unlink is now reentrant, or at least thread-safe.
- You can now make unlink() stop after a failed deletion attempt which
  failed because the object to be deleted was reported as being "in use".
  The libunix.a variant defaults to report the deletion to have succeeded
  under these circumstances and later tries to delete the files marked
  for deletion. See <dos.h> for a brief documentation of how to change
  the behaviour.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15155 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-27 09:40:06 +00:00
Olaf Barthel
0b833b8680 - Added the base_dir_nametest test program.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15154 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 18:20:09 +00:00
Olaf Barthel
b8ba11b158 - basename() and dirname() can no longer return NULL. They truncate the
resulting path name instead. This is done so because some code that
  calls basename() or dirname() does not check if the function's return
  value is NULL.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15153 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 18:19:44 +00:00
Olaf Barthel
872b2b335b - Forgot to update chown() to use the same bug fix as fchown().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15152 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 15:41:50 +00:00
Olaf Barthel
b1f56b1bbe - The SetOwner() fall-back code for Kickstart 2.04 was passing the wrong
parameters to the file system. The first (dp_Arg1) should have been
  zero. Ouch.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15151 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 15:38:21 +00:00
Olaf Barthel
9ce2ba234f - Got rid of some more compiler warnings by introducing function prototypes
which were missing and by casting pointers to the expected types.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15150 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 15:12:47 +00:00
Olaf Barthel
d5bfee3917 - Corrected a couple more compiler warnings caused by mutable/constant
string pointer assignments.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15149 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 14:51:15 +00:00
Olaf Barthel
9f37f76b01 - Replaced "char *" pointers with "const char *" pointers.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15148 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 14:12:15 +00:00
Olaf Barthel
2f3de1dcd6 - ttyname() now calls ttyname_r(). Also, the libunix.a version of ttyname_r()
will produce "/CONSOLE" rather than "CONSOLE:".


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15147 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 14:05:31 +00:00
Olaf Barthel
74b2838663 - asctime_r() now returns NULL if the buffer is too short to hold even a single
byte of data.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15146 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 13:43:06 +00:00
Olaf Barthel
2c450a1e48 - basename() is not supposed to modify the string it is passed and should
return a pointer to a string which can be modified. Now it does. Same
  thing for dirname().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15145 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-25 13:29:47 +00:00
Olaf Barthel
828e36f2d7 - Fixed another compiler warning.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15143 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-22 09:19:07 +00:00
Olaf Barthel
502d1aaab7 - Removed some more compiler warnings.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15142 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-22 09:02:51 +00:00
Olaf Barthel
d6e18a9266 - If defined, the local environment variable "DISABLE_COMMANDLINE_WILDCARD_EXPANSION"
will disable expansion of wildcard patterns passed on the command line.
  Note that if the variable is not set then the global variable
  '__expand_wildcard_args' will provide the defaults for the switch that
  controls whether the wildcard expansion takes place. And after the
  environment variable has been checked, the '__expand_wildcard_args_check'
  function pointer can still be used to override the switch.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15141 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-22 07:54:25 +00:00
Olaf Barthel
3fe72eaa44 - Removed a couple more compiler warnings.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15140 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-21 09:24:20 +00:00
Olaf Barthel
3541b011a6 - Preparations for release...
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15139 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-21 08:48:19 +00:00
Olaf Barthel
7b903355a7 - fstat() now works with "NIL:" and "/dev/null", respectively. Not that
it returns much useful information, though.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15138 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-20 19:46:57 +00:00
Olaf Barthel
36c33073a5 - Added the fstat() test program.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15137 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-20 19:46:37 +00:00
Olaf Barthel
fba16b67fd - The _PC_MAX_INPUT query for file handles now returns the default
buffer size.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15136 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-17 17:53:15 +00:00
Olaf Barthel
5c29f84a0d - Integrated the new OS4 build makefile collection, as contributed by
Steven Solie. Thank you very much!


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15135 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-17 17:37:27 +00:00
Olaf Barthel
aa3240972a *** empty log message ***
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15134 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-17 17:36:42 +00:00
Olaf Barthel
8aeb5072ab - fpathconf() should work with the stdio streams, even in the thread-safe
library version, again.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15133 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-17 16:36:48 +00:00
Olaf Barthel
42dba39aef - Added a new callback function which can be used in programs which want
to avoid that the command line wildcard expansion takes place.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15132 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-15 06:58:17 +00:00
Jens Maus
927407de1b - updated m68k specs file in /documentation to contain an own __CLIB2__
define so that existing m68k compilers also have this define. In addition,
  the common "-noixemul" option can now also be specified but will do a NOP
  so that Makefiles sharing multiple runtime lib setups work without
  a warning.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15131 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-15 06:50:47 +00:00
Olaf Barthel
f3dcdfe1ce - __get_default_file() now dynamically fills in file handles for the
stdin/stdout/stderr streams if it's part of the thread-safe library.

- fpathconf() now checks if the file descriptor is really referring to a file.

- The termios hook entry code could file descriptor's embedded file handle
  rather than what the thread safe library had dynamically bound to the
  stdin/stdout/stderr streams.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15130 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-12 14:16:44 +00:00
Olaf Barthel
ead90dee0d - execve() now finds commands in the current directory again, even if you
omit the leading "./" path name.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15129 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-14 14:08:06 +00:00
Olaf Barthel
1721b10610 - Dropped an unused local variable.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15128 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-13 15:56:38 +00:00
Olaf Barthel
05ef0d30bc - It is unwise to strip the volume name portion from the path name
used in the GetDeviceProc() loop.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15127 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-13 15:35:40 +00:00
Olaf Barthel
3a7ac52248 - The execve() code that looks for the command/script file now begins by
checking if the file name includes path separators. If it does not,
  then the search for the command begins with the resident command list;
  otherwise the local directories are checked. The new code also properly
  cleans after itself (a FreeDeviceProc() was missing) and the "PROGDIR:"
  lock now always refers to the directory in which the command/script
  file is found.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15126 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-13 15:15:11 +00:00
Olaf Barthel
2c81be592c - Cleaned up and updated the .cvsignore file.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15125 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-07 08:41:53 +00:00
Olaf Barthel
e158a3fe18 - Changed the execvp() test program to reflect how the corrected
execvp() function works.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15124 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-07 08:39:56 +00:00
Olaf Barthel
40d64e1413 - Added the missing fdim() and fdimf() functions to the build
makefiles. The OS4 build makefile was missing lrint() and
  lrintf(). Ouch.

- execve() now checks if an abort signal arrives while it's trying
  to read the first line of a script, or looking for an executable
  on an assignment path.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15123 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-06 08:31:06 +00:00
Olaf Barthel
62d0c2dc81 - execve() no longer directly calls exit(), but a function which can be
replaced by the user. If that function __execve_exit() does not call
  exit but just returns to the caller without doing anything, execve()
  will return the caller with the return code of the RunCommand()
  function.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15122 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-06 08:15:42 +00:00
Olaf Barthel
940b8295c0 - Small corrections...
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15121 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 14:44:01 +00:00
Olaf Barthel
a91cb96b1b - That's setlocale and not setlocate.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15120 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 14:14:57 +00:00
Olaf Barthel
864a0e703e - Hid setlocale and execvp_test
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15119 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 14:14:30 +00:00
Olaf Barthel
5828c6cdab - execve() now actually works!
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15118 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 11:07:57 +00:00
Olaf Barthel
cdfe0dad6f - Added the "execvp_test" program.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15117 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 09:22:38 +00:00
Olaf Barthel
85122893ff - Added the POSIX exec() family functions, based upon code contributed
by Henning Nielsen Lund. Thank you very much!

- atoll() no longer sets 'errno' directly but now calls __set_errno()
  instead.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15116 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 08:00:30 +00:00
Olaf Barthel
9caa5b7ec4 - Fixed to compile correctly.
- Changed how multi-volume assignments are handled by execve().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15115 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-02 06:49:47 +00:00
Olaf Barthel
6cf4cc5b4a - The types of the __default_path_delimiter and __default_path variables
were wrong.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15114 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-01 19:06:48 +00:00
Olaf Barthel
42acda07f3 - Rewrote execve() from scratch and documented it.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15113 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-01 19:01:17 +00:00
Olaf Barthel
8633c3a77b - The default configuration options for execvp() are now configurable at
link time.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15112 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-01 17:01:14 +00:00
Olaf Barthel
5f42fb06f9 - Added the exec() family functions to the makefiles and the <unistd.h>
header file.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15111 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-01 16:41:02 +00:00
Olaf Barthel
4e1c4967e6 - Added preliminary versions of the exec() family functions.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15110 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-08-01 14:27:52 +00:00
Olaf Barthel
2d48db0ce0 - Added the missing string pointer.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15109 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-07-31 13:32:35 +00:00
Olaf Barthel
e2cadc9ea5 - Added pathconf() and fpathconf() as contributed by Peter Bengtsson. Thank you very much!
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15108 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-07-28 14:37:28 +00:00
Olaf Barthel
bde4d37a64 - Added sysinfo() as contributed by Peter Bengtsson. Thank you very much!
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15107 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-07-28 14:02:32 +00:00
Olaf Barthel
c3d55e94ec - Added ftime(), ulimit(), getrlimit() and setrlimit() as contributed by
Peter Bengtsson. Thank you very much!


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15106 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-07-28 13:36:17 +00:00
Olaf Barthel
a1dc5e8e6e - Added ftime(), as contributed by Peter Bengtsson. Thank you very much!
- Added the missing S_ISSOCKET() macro to <sys/stat.h>. Note that this
  is not actually a POSIX feature.

- Added fmin(), fminf(), fmax() and fmaxf() to the build makefiles.
  Somehow I must have forgotten about them :-(


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15105 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-07-28 13:19:12 +00:00
Olaf Barthel
75a85db1a7 - Added the constructor begin/end files to the OS4 build makefile for
the skeleton library.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15104 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-06-22 09:30:25 +00:00
Olaf Barthel
d4528b2862 - select() and waitselect() can now be called without any file descriptor
sets to work with, as some software does which uses select() in place
  of sleep().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15103 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-06-22 09:02:44 +00:00
Olaf Barthel
b043a1ac1f - The <sys/ioctl.h> header file now includes both <sys/select.h> and
<sys/filio.h> for better compatibility with the TCP/IP stack header
  files.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15102 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-06-21 15:53:55 +00:00
Olaf Barthel
83543472f1 - Added a couple more program names to the list.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15101 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-06-01 09:12:12 +00:00
Olaf Barthel
601caa5708 - Added the global variable __expand_wildcard_args which can be used
to disable wildcard pattern expansion of command line parameters when
  linked against "libunix.a". Note that this has no effect on the "regular"
  libc.a behaviour.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15100 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-05-04 08:01:47 +00:00
Olaf Barthel
2cf92a6395 - Added the rand() test program.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15099 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-18 08:29:46 +00:00
204 changed files with 9669 additions and 2982 deletions

View File

@@ -1,11 +1,19 @@
#
# $Id: GNUmakefile.68k,v 1.84 2006-04-05 08:39:45 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.106 2008-04-16 07:38:10 obarthel Exp $
#
# :ts=8
#
##############################################################################
############################################
# find out the HOST operating system
# on which this makefile is run (default to AmigaOS)
HOST ?= $(shell uname)
ifeq ($(HOST),)
HOST = AmigaOS
endif
CC = gcc
AR = ar -q
RANLIB = ranlib
@@ -14,6 +22,16 @@ DELETE = delete all quiet
MAKEDIR = makedir
MAKE = $(MAKE_COMMAND) -f GNUmakefile.68k
# override certain things for non-native builds
ifneq ($(HOST), AmigaOS)
CC = m68k-amigaos-gcc
AR = m68k-amigaos-ar -q
RANLIB = m68k-amigaos-ranlib
COPY = cp
DELETE = rm -rf
MAKEDIR = mkdir -p
endif
##############################################################################
ifeq (,$(TYPE))
@@ -50,11 +68,11 @@ $(LIBUNIX_OBJS)/%.o : %.c
$(LIBM_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):m]"
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -DIEEE_FLOATING_POINT_SUPPORT $<
@$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) -msoft-float -DIEEE_FLOATING_POINT_SUPPORT $<
$(LIBM881_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):m881]"
@$(CC) -o $(LIBM881_OBJS)/$*.o -c $(CFLAGS) -DM68881_FLOATING_POINT_SUPPORT -m68881 $<
@$(CC) -o $(LIBM881_OBJS)/$*.o -c $(CFLAGS) -m68881 -DM68881_FLOATING_POINT_SUPPORT $<
$(LIBNET_OBJS)/%.o : %.c
@echo "Compiling $< [$(TYPE):net]"
@@ -109,13 +127,14 @@ INCLUDES = -Iinclude -I. -Inetinclude
#OPTIONS = -fno-builtin -fno-common -DNDEBUG -D__THREAD_SAFE
#OPTIONS = -fno-builtin -fno-common -D__MEM_DEBUG
#OPTIONS = -fno-builtin -fno-common -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG
OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions
#OPTIMIZE = -O3 -fomit-frame-pointer -funroll-loops -finline-functions
OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions
#OPTIMIZE = -O2 -fomit-frame-pointer
#DEBUG = -g
CFLAGS = \
$(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) \
$(CODE_FLAGS) $(CODE_TYPE) $(INCLUDES)
$(CODE_FLAGS) $(INCLUDES) $(CODE_TYPE)
##############################################################################
@@ -183,11 +202,14 @@ C_LIB = \
stat_fchmod.o \
stat_fstat.o \
stat_lstat.o \
stat_lock.o \
stat_mkdir.o \
stat_rmdir.o \
stat_stat.o \
stat_umask.o \
stdio_asprintf.o \
stdio_change_fd_action.o \
stdio_change_fd_user_data.o \
stdio_clearerr.o \
stdio_dropiobreadbuffer.o \
stdio_duplicate_fd.o \
@@ -227,6 +249,7 @@ C_LIB = \
stdio_getchar.o \
stdio_getchar_unlocked.o \
stdio_gets.o \
stdio_get_fd.o \
stdio_get_file_descriptor.o \
stdio_growfdtable.o \
stdio_growiobtable.o \
@@ -252,6 +275,7 @@ C_LIB = \
stdio_remove.o \
stdio_remove_fd_alias.o \
stdio_rename.o \
stdio_resolve_fd_file.o \
stdio_rewind.o \
stdio_scanf.o \
stdio_setbuf.o \
@@ -388,6 +412,7 @@ C_LIB = \
string_strcspn.o \
string_strdup.o \
string_strerror.o \
string_strerror_r.o \
string_strlcat.o \
string_strlcpy.o \
string_strlen.o \
@@ -423,6 +448,7 @@ C_LIB = \
time_weekday.o \
uio_readv.o \
uio_writev.o \
ulimit_ulimit.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
@@ -453,6 +479,7 @@ C_LIB = \
unistd_time_delay.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_unlink_retries.o \
unistd_usleep.o \
utime_utime.o \
utsname_uname.o
@@ -470,9 +497,12 @@ UNIX_LIB = \
getopt_getopt_long.o \
mount_convertinfo.o \
mount_statfs.o \
resource_getrlimit.o \
resource_setrlimit.o \
stat_chmod.o \
stat_fstat.o \
stat_lstat.o \
stat_lock.o \
stat_mkdir.o \
stat_rmdir.o \
stat_stat.o \
@@ -492,6 +522,8 @@ UNIX_LIB = \
stdlib_alloca_cleanup.o \
stdlib_alloca_trap.o \
stdlib_arg.o \
stdlib_expand_wildcard.o \
stdlib_expand_wildcard_check.o \
stdlib_getmemstats.o \
stdlib_main.o \
stdlib_main_stub.o \
@@ -502,6 +534,7 @@ UNIX_LIB = \
stdlib_realloc.o \
stdlib_resetmemstats.o \
stdlib_system.o \
systeminfo_sysinfo.o \
termios_cfgetispeed.o \
termios_cfgetospeed.o \
termios_cfmakeraw.o \
@@ -514,16 +547,32 @@ UNIX_LIB = \
termios_tcgetattr.o \
termios_tcsendbreak.o \
termios_tcsetattr.o \
timeb_ftime.o \
uio_readv.o \
uio_writev.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_common_pathconf.o \
unistd_def_path.o \
unistd_def_path_delimiter.o \
unistd_environ.o \
unistd_execl.o \
unistd_execle.o \
unistd_execlp.o \
unistd_execv.o \
unistd_execve.o \
unistd_execve_env_exit.o \
unistd_execve_env_init.o \
unistd_execve_exit.o \
unistd_execvp.o \
unistd_fpathconf.o \
unistd_getcwd.o \
unistd_lchown.o \
unistd_link.o \
unistd_lockf.o \
unistd_pathconf.o \
unistd_readlink.o \
unistd_realpath.o \
unistd_restorepathname.o \
@@ -601,10 +650,16 @@ MATH_LIB = \
math_expm1f.o \
math_fabs.o \
math_fabsf.o \
math_fdim.o \
math_fdimf.o \
math_floor.o \
math_floorf.o \
math_fma.o \
math_fmaf.o \
math_fmax.o \
math_fmaxf.o \
math_fmin.o \
math_fminf.o \
math_fmod.o \
math_fmodf.o \
math_fpclassify.o \
@@ -628,6 +683,7 @@ MATH_LIB = \
math_ldexpf.o \
math_lgamma.o \
math_lgammaf.o \
math_llrint.o \
math_log.o \
math_log10.o \
math_log10f.o \
@@ -788,6 +844,7 @@ NET_LIB = \
socket_get_h_errno.o \
socket_set_h_errno.o \
stat_umask.o \
systeminfo_sysinfo.o \
usergroup_crypt.o \
usergroup_data.o \
usergroup_endgrent.o \

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "amiga.lib 1.200"
#define VSTRING "amiga.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "amiga.lib 1.205"
#define VSTRING "amiga.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_acrypt.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_acrypt.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -49,6 +49,10 @@
/****************************************************************************/
UBYTE * ACrypt(UBYTE * buffer, const UBYTE * password, const UBYTE * user);
/****************************************************************************/
UBYTE *
ACrypt(UBYTE * buffer, const UBYTE * password, const UBYTE * user)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_argarraydone.c,v 1.3 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_argarraydone.c,v 1.4 2006-09-25 14:05:31 obarthel Exp $
*
* :ts=4
*
@@ -48,7 +48,7 @@
/****************************************************************************/
extern char **CXLIB_argarray;
extern const unsigned char **CXLIB_argarray;
extern struct DiskObject * CXLIB_disko;

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_argarrayinit.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_argarrayinit.c,v 1.7 2008-09-30 14:09:00 obarthel Exp $
*
* :ts=4
*
@@ -52,6 +52,14 @@
/****************************************************************************/
#ifdef __amigaos4__
#define MEMORY_TYPE MEMF_PRIVATE
#else
#define MEMORY_TYPE MEMF_ANY
#endif /* __amigaos4__ */
/****************************************************************************/
const unsigned char ** CXLIB_argarray;
struct DiskObject * CXLIB_disko;
@@ -70,14 +78,14 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
if(argc == 1)
goto out; /* skip command name */
CXLIB_argarray = (const unsigned char **)AllocVec(sizeof(char *) * argc,MEMF_ANY|MEMF_CLEAR);
CXLIB_argarray = (const unsigned char **)AllocVec(sizeof(char *) * argc,MEMORY_TYPE|MEMF_CLEAR);
if(CXLIB_argarray == NULL)
goto out;
for(i = 1 ; i < argc ; i++)
CXLIB_argarray[i-1] = argv[i];
CXLIB_argarray[i-1] = (unsigned char *)argv[i];
result = (unsigned char **)CXLIB_argarray;
result = (STRPTR *)CXLIB_argarray;
}
else if (IconBase != NULL)
{
@@ -90,7 +98,7 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
if(CXLIB_disko == NULL)
goto out;
result = (unsigned char **)CXLIB_disko->do_ToolTypes;
result = (STRPTR *)CXLIB_disko->do_ToolTypes;
}
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_beginio.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_beginio.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -103,6 +103,10 @@ BeginIO(struct IORequest *ior)
/****************************************************************************/
VOID BeginIO(struct IORequest *ior);
/****************************************************************************/
VOID
BeginIO(struct IORequest *ior)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_createextio.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_createextio.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
struct IORequest * CreateExtIO(CONST struct MsgPort * port, LONG io_size);
/****************************************************************************/
struct IORequest *
CreateExtIO(CONST struct MsgPort * port, LONG io_size)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_createport.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_createport.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
struct MsgPort * CreatePort(CONST_STRPTR name, LONG pri);
/****************************************************************************/
struct MsgPort *
CreatePort(CONST_STRPTR name, LONG pri)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_createstdio.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_createstdio.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
struct IOStdReq * CreateStdIO(CONST struct MsgPort * port);
/****************************************************************************/
struct IOStdReq *
CreateStdIO(CONST struct MsgPort * port)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_createtask.c,v 1.5 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_createtask.c,v 1.6 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -209,6 +209,10 @@ CreateTask(CONST_STRPTR name,LONG pri,CONST APTR init_pc,ULONG stack_size)
/****************************************************************************/
struct Task * CreateTask(CONST_STRPTR name,LONG pri,CONST APTR init_pc,ULONG stack_size);
/****************************************************************************/
struct Task *
CreateTask(CONST_STRPTR name,LONG pri,CONST APTR init_pc,ULONG stack_size)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_deleteextio.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_deleteextio.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
VOID DeleteExtIO(struct IORequest * io);
/****************************************************************************/
VOID
DeleteExtIO(struct IORequest * io)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_deleteport.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_deleteport.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
VOID DeletePort(struct MsgPort * port);
/****************************************************************************/
VOID
DeletePort(struct MsgPort * port)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_deletestdio.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_deletestdio.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -50,6 +50,10 @@
/****************************************************************************/
VOID DeleteStdIO(struct IOStdReq * io);
/****************************************************************************/
VOID
DeleteStdIO(struct IOStdReq * io)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_deletetask.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_deletetask.c,v 1.5 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -63,6 +63,10 @@ DeleteTask(struct Task *tc)
/****************************************************************************/
VOID DeleteTask(struct Task *tc);
/****************************************************************************/
VOID
DeleteTask(struct Task *tc)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_newlist.c,v 1.3 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_newlist.c,v 1.4 2006-09-25 15:12:47 obarthel Exp $
*
* :ts=4
*
@@ -43,6 +43,10 @@
/****************************************************************************/
VOID NewList(struct List *lh);
/****************************************************************************/
VOID
NewList(struct List *lh)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_rexxvars.c,v 1.7 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_rexxvars.c,v 1.19 2008-04-18 10:11:59 obarthel Exp $
*
* :ts=4
*
@@ -53,6 +53,12 @@
/****************************************************************************/
/* This is used by the stub function prototypes. The ARexx header files
do not define it, though. */
struct Environment;
/****************************************************************************/
#define __NOLIBBASE__
#include <proto/rexxsyslib.h>
@@ -68,6 +74,12 @@ static struct RexxSysIFace * IRexxSys;
/****************************************************************************/
BOOL CheckRexxMsg(struct RexxMsg *message);
LONG GetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR *buffer_pointer);
LONG SetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR value,LONG length);
/****************************************************************************/
CLIB_CONSTRUCTOR(rexxvars_init)
{
ENTER();
@@ -148,56 +160,583 @@ CheckRexxMsg(struct RexxMsg *message)
/****************************************************************************/
/* The following function works in about like the original, except that it's
not reentrant, does not fill in a pointer to the variable itself and
requires rexxsyslib.library V45. */
LONG
GetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR *buffer_pointer)
#if defined(__amigaos4__)
/****************************************************************************/
#include <exec/emulation.h>
/****************************************************************************/
STATIC VOID
_FreeSpace(struct Environment * env,APTR mem,LONG size)
{
static UBYTE buffer[256];
STATIC CONST UWORD code[] = { 0x4EAE,0xFF88,0x4E75 }; /* jsr -120(a6) ; rts */
EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterA1,mem,
ET_RegisterD0,size,
ET_RegisterA6,RexxSysBase,
TAG_END);
}
STATIC APTR
_GetSpace(struct Environment * env,LONG size)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFF8E,0x4E75 }; /* jsr -114(a6) ; rts */
APTR result;
result = (APTR)EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterD0,size,
ET_RegisterA6,RexxSysBase,
TAG_END);
return(result);
}
STATIC LONG
_IsSymbol(STRPTR name,LONG * symbol_length_ptr)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFF9A,0x2481,0x4E75 }; /* jsr -102(a6) ; move.l d1,(a2) ; rts */
LONG result;
/* The following uses a function which was added to rexxsyslib.library V45.
We therefore have a minimum library version requirement. */
if(RexxSysBase == NULL || RexxSysBase->lib_Version < 45 || NOT IsRexxMsg(message))
{
result = ERR10_010; /* invalid message packet */
goto out;
}
result = (LONG)EmulateTags(code,
ET_RegisterA0,name,
ET_RegisterA2,symbol_length_ptr,
ET_RegisterA6,RexxSysBase,
TAG_END);
/* The 256 character limit isn't good. This should be done differently. */
result = GetRexxVarFromMsg(variable_name,buffer,message);
if(result != 0)
goto out;
return(result);
}
(*buffer_pointer) = buffer;
STATIC VOID
_CurrentEnv(struct RexxTask *task,struct Environment ** environment_ptr)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFF94,0x2488,0x4E75 }; /* jsr -108(a6) ; move.l a0,(a2) ; rts */
out:
EmulateTags(code,
ET_RegisterA0,task,
ET_RegisterA2,environment_ptr,
ET_RegisterA6,RexxSysBase,
TAG_END);
}
STATIC struct Node *
_FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound,struct Node *symbol_table_node,LONG * is_literal_ptr,struct NexxStr ** value_ptr)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFFB8,0x2488,0x2681,0x4E75 }; /* jsr -72(a6) ; move.l a0,(a2) ; move.l d1,(a3) ; rts */
struct Node * result;
result = (struct Node *)EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterA1,stem,
ET_RegisterD0,compound,
ET_RegisterD1,symbol_table_node,
ET_RegisterA2,is_literal_ptr,
ET_RegisterA3,value_ptr,
ET_RegisterA6,RexxSysBase,
TAG_END);
return(result);
}
STATIC struct Node *
_EnterSymbol(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFFBE,0x4E75 }; /* jsr -66(a6) ; rts */
struct Node * result;
result = (struct Node *)EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterA1,stem,
ET_RegisterD0,compound,
ET_RegisterA6,RexxSysBase,
TAG_END);
return(result);
}
STATIC VOID
_SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_table_node)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFFAC,0x4E75 }; /* jsr -84(a6) ; rts */
struct Node * result;
result = (struct Node *)EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterA1,value,
ET_RegisterD0,symbol_table_node,
ET_RegisterA6,RexxSysBase,
TAG_END);
}
STATIC ULONG
_StrcpyN(STRPTR destination,STRPTR source,LONG length)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFEF2,0x4E75 }; /* jsr -270(a6) ; rts */
ULONG result;
result = (ULONG)EmulateTags(code,
ET_RegisterA0,destination,
ET_RegisterA1,source,
ET_RegisterD0,length,
ET_RegisterA6,RexxSysBase,
TAG_END);
return(result);
}
/****************************************************************************/
/* The following function works in about like the original, except that it
ignores the length parameter (the value needs to be a NUL-terminated string)
and requires rexxsyslib.library V45. */
LONG
SetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR value,ULONG length)
#elif defined(__GNUC__) && !defined(__amigaos4__)
/****************************************************************************/
/* A selection of lovingly hand-crafted 68k stub functions which call
into rexxsyslib.library LVOs that still used to be documented back
in 1987. */
/****************************************************************************/
#if defined(SMALL_DATA)
#define A4(x) "a4@(" #x ":W)"
#elif defined(SMALL_DATA32)
#define A4(x) "a4@(" #x ":L)"
#else
#define A4(x) #x
#endif /* SMALL_DATA */
/****************************************************************************/
/* struct Environment * a0,APTR block a1,LONG d0 */
asm("
.text
.even
.globl __FreeSpace
__FreeSpace:
moveal sp@(4),a0
moveal sp@(8),a1
movel sp@(12),d0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-120)
moveal sp@+,a6
rts
");
/****************************************************************************/
/* struct Environment * a0,LONG d0 : APTR d0 */
asm("
.text
.even
.globl __GetSpace
__GetSpace:
moveal sp@(4),a0
movel sp@(8),d0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-114)
moveal sp@+,a6
rts
");
/****************************************************************************/
/* STRPTR a0 : LONG d0, LONG d1 */
asm("
.text
.even
.globl __IsSymbol
__IsSymbol:
moveal sp@(4),a0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-102)
moveal sp@+,a6
moveal sp@(8),a1
movel d1,a1@
rts
");
/****************************************************************************/
/* struct RexxTask * a0 : struct Environment * a0 */
asm("
.text
.even
.globl __CurrentEnv
__CurrentEnv:
moveal sp@(4),a0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-108)
moveal sp@+,a6
moveal sp@(8),a1
movel a0,a1@
rts
");
/****************************************************************************/
/* struct Environment * a0,struct NexxStr * a1,struct NexxStr * d0,struct Node * d1 : struct NexxStr * a0, LONG d1 */
asm("
.text
.even
.globl __FetchValue
__FetchValue:
moveal sp@(4),a0
moveal sp@(8),a1
movel sp@(12),d0
movel sp@(16),d1
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-72)
moveal sp@+,a6
moveal sp@(20),a1
movel a0,a1@
moveal sp@(24),a1
movel d1,a1@
rts
");
/****************************************************************************/
/* struct Environment a0, struct NexxStr *a1, struct NexxStr * d0 : struct Node * d0 */
asm("
.text
.even
.globl __EnterSymbol
__EnterSymbol:
moveal sp@(4),a0
moveal sp@(8),a1
movel sp@(12),d0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-66)
moveal sp@+,a6
rts
");
/****************************************************************************/
/* struct Environment *a0, struct NexxStr *a1, struct Node * d0 */
asm("
.text
.even
.globl __SetValue
__SetValue:
moveal sp@(4),a0
moveal sp@(8),a1
movel sp@(12),d0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-84)
moveal sp@+,a6
rts
");
/****************************************************************************/
/* STRPTR a0,STRPTR a1,LONG d0 : ULONG d0 */
asm("
.text
.even
.globl __StrcpyN
__StrcpyN:
moveal sp@(4),a0
moveal sp@(8),a1
movel sp@(12),d0
movel a6,sp@-
moveal "A4(_RexxSysBase)",a6
jsr a6@(-270)
moveal sp@+,a6
rts
");
/****************************************************************************/
/* Function prototypes for the 68k stubs. */
extern VOID _FreeSpace(struct Environment * env,APTR mem,LONG size);
extern APTR _GetSpace(struct Environment * env,LONG size);
extern LONG _IsSymbol(STRPTR name,LONG * symbol_length_ptr);
extern VOID _CurrentEnv(struct RexxTask *task,struct Environment ** environment_ptr);
extern struct Node * _FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound,struct Node *symbol_table_node,LONG * is_literal_ptr,struct NexxStr ** value_ptr);
extern struct Node * _EnterSymbol(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound);
extern VOID _SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_table_node);
extern ULONG _StrcpyN(STRPTR destination,STRPTR source,LONG length);
/****************************************************************************/
#endif /* __GNUC__ && !__amigaos4__ */
/****************************************************************************/
/* Releases a string structure, if it's not owned at the time. */
STATIC VOID
FreeString(struct Environment * environment,struct NexxStr * ns)
{
LONG result;
/* Not currently owned? */
if(!(ns->ns_Flags & NSF_KEEP))
_FreeSpace(environment,ns,sizeof(*ns) + ns->ns_Length + 1);
}
/* The following uses a function which was added to rexxsyslib.library V45.
We therefore have a minimum library version requirement. */
if(RexxSysBase == NULL || RexxSysBase->lib_Version < 45 || NOT IsRexxMsg(message))
{
result = ERR10_010; /* invalid message packet */
/****************************************************************************/
/* Allocates and initializes a string structure. */
STATIC struct NexxStr *
MakeString(struct Environment * environment,STRPTR value,LONG length)
{
struct NexxStr * result = NULL;
struct NexxStr * ns;
/* Allocate memory for the NexxStr and the NUL-terminated string itself. */
ns = _GetSpace(environment,sizeof(*ns) + length + 1);
if(ns == NULL)
goto out;
}
result = SetRexxVarFromMsg(variable_name,value,message);
/* Fill in the NexxStr structure, copy the string and remember the hash value for it. */
ns->ns_Ivalue = 0;
ns->ns_Length = length;
ns->ns_Flags = NSF_STRING;
ns->ns_Hash = _StrcpyN((STRPTR)ns->ns_Buff,value,length);
out:
/* Copying the string did not NUL-terminate it. */
ns->ns_Buff[length] = '\0';
result = ns;
out:
return(result);
}
/****************************************************************************/
/* Classifies a symbol and returns the stem and compound parts. */
STATIC LONG
TypeString(STRPTR variable_name,struct Environment * environment,struct NexxStr ** compound_ptr,struct NexxStr ** stem_ptr)
{
struct NexxStr * compound;
struct NexxStr * stem = NULL;
LONG error = ERR10_003; /* no memory available */
LONG stem_length;
LONG symbol_length;
STRPTR dot;
(*compound_ptr) = NULL;
(*stem_ptr) = NULL;
/* The 'compound' part is the entire variable name, including all dots and
what's in between them. */
compound = MakeString(environment,variable_name,strlen(variable_name));
if(compound == NULL)
goto out;
/* Find the first dot in the variable name. Everything in front of it
and including the dot constitutes the 'stem' part. If there is no dot
in the name, then the 'compound' and 'stem' parts are identical. */
dot = memchr(compound->ns_Buff,'.',compound->ns_Length);
if(dot != NULL)
stem_length = ((char *)dot - (char *)compound->ns_Buff) + 1;
else
stem_length = compound->ns_Length;
/* Make a copy of the 'stem' part. */
stem = MakeString(environment,variable_name,stem_length);
if(stem == NULL)
goto out;
/* Figure out if this is a symbol after all. */
_IsSymbol((STRPTR)stem->ns_Buff,&symbol_length);
/* The entire name must match the stem part. */
if(symbol_length != stem->ns_Length)
{
error = ERR10_040; /* invalid variable name */
goto out;
}
(*compound_ptr) = compound;
(*stem_ptr) = stem;
error = 0;
out:
if(error != 0)
{
if(compound != NULL)
FreeString(environment,compound);
if(stem != NULL)
FreeString(environment,stem);
}
return(error);
}
/****************************************************************************/
/* Retrieves the value of a variable from the current storage environment. */
LONG
GetRexxVar(struct RexxMsg *context,STRPTR variable_name,STRPTR * return_value)
{
struct Environment * environment;
struct NexxStr * ns;
struct NexxStr * compound_string;
struct NexxStr * stem_string;
LONG is_literal;
LONG error;
(*return_value) = NULL;
if(!CheckRexxMsg(context))
{
error = ERR10_010; /* invalid message packet */
goto out;
}
/* Find the current storage environment. */
_CurrentEnv(context->rm_TaskBlock,&environment);
/* Create the stem and component parts. */
error = TypeString(variable_name,environment,&compound_string,&stem_string);
if(error != 0)
goto out;
/* Look up the value. NOTE: _FetchValue() will free the two 'struct NexxStr *' provided. */
_FetchValue(environment,stem_string,compound_string,NULL,&is_literal,&ns);
/* If this is not a literal, return a pointer to the string. */
if(!is_literal)
(*return_value) = (STRPTR)ns->ns_Buff;
error = 0;
out:
return(error);
}
/****************************************************************************/
/* Assigns a value to a variable in the current storage environment. */
LONG
SetRexxVar(struct RexxMsg *context,STRPTR variable_name,STRPTR value,LONG length)
{
struct Environment * environment;
struct NexxStr * compound_string;
struct NexxStr * stem_string;
struct Node * symbol_table_node;
struct NexxStr *value_string;
LONG error;
/* Make sure the value string is not too long */
if(length > 65535)
{
error = ERR10_009; /* symbol or string too long */
goto out;
}
if(!CheckRexxMsg(context))
{
error = ERR10_010; /* invalid message packet */
goto out;
}
/* Find the current storage environment. */
_CurrentEnv(context->rm_TaskBlock,&environment);
/* Create the stem and compound parts */
error = TypeString(variable_name,environment,&compound_string,&stem_string);
if(error != 0)
goto out;
/* Locate or create the symbol node. NOTE: _EnterSymbol() will put the two 'struct NexxStr *' into
the symbol table. It is not nececessary to free them. */
symbol_table_node = _EnterSymbol(environment,stem_string,compound_string);
if(symbol_table_node == NULL)
{
error = ERR10_003; /* no memory available */
goto out;
}
/* Create the value string. */
value_string = MakeString(environment,value,length);
if(value_string == NULL)
{
error = ERR10_003; /* no memory available */
goto out;
}
/* Install the value string. */
_SetValue(environment,value_string,symbol_table_node);
error = 0;
out:
return(error);
}

View File

@@ -13,9 +13,9 @@ rm -rf $dir_name
# Create the directory, copy all the libraries, header files
# and release note files inside.
mkdir $dir_name
cp -a lib $dir_name
cp -a lib.threadsafe $dir_name
cp -a include $dir_name
cp -pR lib $dir_name
cp -pR lib.threadsafe $dir_name
cp -pR include $dir_name
cp changes $dir_name
# Delete the CVS data from the include directory

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "c.lib 1.200"
#define VSTRING "c.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: c.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "c.lib 1.205"
#define VSTRING "c.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: c.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,3 +1,278 @@
c.lib 1.205 (21.8.2010)
- Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
which will perform a path name conversion. Note that these functions
will not work in the thread-safe variant of the library because it
would be unwise to tinker with the currently running program's binary.
- Added support for ELF shared objects and libraries. This is implemented through
constructor/destructor functions, which means that you can use this
functionality even in Amiga Exec style shared libraries, with the proper
library initialization code to invoke the constructor/destructor functions
for you.
- Updated uname() to recognize AmigaOS 4.1.
- The translation from Unix to Amiga path names did not properly process
multiple occurences of "/./" in the path name. Thanks go to Steven Solie
for finding the issue.
- The detection of "/./" and "/../" patterns in Unix path names to be
translated into Amiga path names did not test if it was overrunning
the end of the string.
- If strcmp(), strncmp() and memcmp() detect a pair of different
characters, then the function result must be calculated as if the
characters were of type "unsigned char". This is a requirement
according to the ISO 'C' (1994) standard. Thanks go to Georg Steger
for finding the issue.
- The definitions for INT_MIN, INT_MAX and UINT_MAX in <limits.h> no
longer use long integer types, as prompted by Steven Solie.
c.lib 1.204 (11.11.2008)
- The memory allocated by malloc() and friends is now of type MEMF_PRIVATE
under OS4 and beyond. The AmigaOS 2.x/3.x compatible code will still
use MEMF_ANY in the same situation, though. Other uses of MEMF_ANY have
been replaced as well where MEMF_PRIVATE would have made better sense.
- I/O buffers allocated are now aligned according to the CPU cache line size,
if the operating system can supply such detailed information.
- unsetenv() now returns a status value.
- Corrected the function prototype for wcspbrk().
- Added function prototypes for mbrtowc_l(), wcscoll_l(), wcscspn() and wcsrchr().
c.lib 1.203 (28.4.2008)
- Added 68k stubs to amiga_rexxvars.c for the OS4 build to use. The new code now
works just about exactly like the amiga.lib RVI code used to do, which means
that there is no artificial length limit for the number of characters a string
retrieved may have, and the code is largely reentrant.
- To work around a bug in the Roadshow TCP/IP stack (since fixed), the waitselect()
function now substitutes a 10 microsecond timeout for a zero length timeout.
- isatty() no longer crashes if passed a socket rather than a file.
- Rewrote the GetRexxVar()/SetRexxVar() functions (mostly) in 'C', using available
code as a reference. The 68k stubs currently only work for the 68k version of
the library, and a solution for the OS4 build still needs to be found. The code
is currently untested, but it should be complete.
- The printf() family now ignores argument specifications, as in "%2$d %1$d",
which are used for localization on some platforms. This is a non-standard
feature and the way clib2 treats it for now is just intended to avoid
trouble while performing the conversion.
- [tboeckel]: when compiling amiga_rexxvars.c for m68k/OS3 the GetRexxVarFromMsg()
and SetRexxVarFromMsg() can no longer cause linkage errors if the header files
predate the SDK for OS 3.5.
- [jlangner]: the log() and log10() functions always returned -inf() even if the
arguments was within the valid range for a log() function. Using DBL_EPSILON as
the threshold was not correct as EPSILON is 2.2204460492503131E-16 whereas
values like 1E-200 are still valid double values for a log().
c.lib 1.202 (16.1.2007)
- Added llrint() function contributed by Henning Nielsen Lund. Thank you
very much!
- <unistd.h> now also include <stdio.h>, so that the SEEK_SET, etc. macros
are defined for lseek() to use.
- Added a wrapper function which handles the thread-safe stdio stream
resolution.
- In tcflush() a break signal can no longer cause the read flush loop
to be quit with two semaphores still locked.
- In __obtain_daemon_message() the test to verify if the bsdsocket.library API
would support the server API functionality checked the wrong feature. Fixed.
- Switched over the fd->fd_DefaultFile references to fd->fd_Socket where
sockets are used rather than file handles.
- Added functions which modify the callback function and the userdata pointer
stored in a low level unbuffered file/socket data structure. These function
perform the proper locking and are thus safe to use in a thread-safe environment.
- The low level unbuffered file/socket now has a public equivalent, which
is defined (along with the typedefs and flags) in <sys/clib2_io.h>. Functions
for tinkering with it are still to come.
- The math kernel code no longer uses its own private scalbn() function.
- Added a function prototype for the _exit() function. Note that _exit() is
not an ISO 'C' function.
- Corrected the getopt() function prototype, as prompted by Henning Nielsen Lund.
- The printf() family no longer adds a 0 or 0x prefix if the alternate
conversion modifier is present for the %o and %x conversions and the
value to be converted is 0 already. Put another way, printf("%#x %#o",0,0);
now prints "0 0". This required another change so that %p always includes
the 0x prefix even if the pointer involved is a NULL pointer.
- readlink() no longer sort-of-works for files and directories. It now only
works for soft linked objects and returns an error for everything else.
This is based upon a fix by Peter Bengtsson. Thank you very much!
- Moved the lstat() local Lock() function into its own separate file.
- uname() now returns correct and robust information for OS version
numbers > 36. This integrates a fix by Peter Bengtsson. Thank you
very much!
- Moved the crtbegin.o/crtend.o files out of the link libraries. Moving
them in was intended to work as a fix for the shared library build, but
now it seems that this has to be done at the link stage through the
GCC specs file...
- Integrated a fix for __rem_pio2() which affects sin(), tan() and cos(),
contributed by Steven Solie. Thank you very much!
- The internal 'struct fd' file descriptor table entry data structure
now has a user data field entry.
- Rearranged the contents of the 'struct fd' file descriptor table entry
data structure in preparation for making it public. Also added a version
field so that user code can handle changes to it gracefully. The default
file is no longer a BCPL pointer to a file handle by default, but
both a BPTR and a socket identifier, wrapped into a union.
- Added experimental tilde expansion in Unix path names. This still needs
some more work.
- __get_default_file() called __fd_unlock() without having called
__fd_lock() first. Ouch.
- Removed an unnecessary pair of __fd_lock()..__fd_unlock() calls from
ttyname_r().
- The libunix.a unlink() function is now reentrant, or at least thread-safe.
- You can now make unlink() stop after a failed deletion attempt which
failed because the object to be deleted was reported as being "in use".
The libunix.a variant defaults to report the deletion to have succeeded
under these circumstances and later tries to delete the files marked
for deletion. See <dos.h> for a brief documentation of how to change
the behaviour.
- basename() and dirname() can no longer return NULL. They truncate the
resulting path name instead. This is done so because some code that
calls basename() or dirname() does not check if the function's return
value is NULL.
- The SetOwner() fall-back code for Kickstart 2.04 was passing the wrong
parameters to the file system. The first (dp_Arg1) should have been
zero. Ouch.
- basename() is not supposed to modify the string it is passed and should
return a pointer to a string which can be modified. Now it does. Same
thing for dirname().
- asctime_r() now returns NULL if the buffer is too short to hold even a single
byte of data.
- ttyname() now calls ttyname_r(). Also, the libunix.a version of ttyname_r()
will produce "/CONSOLE" rather than "CONSOLE:".
c.lib 1.201 (21.9.2006)
- If defined, the local environment variable "DISABLE_COMMANDLINE_WILDCARD_EXPANSION"
will disable expansion of wildcard patterns passed on the command line.
Note that if the variable is not set then the global variable
'__expand_wildcard_args' will provide the defaults for the switch that
controls whether the wildcard expansion takes place. And after the
environment variable has been checked, the '__expand_wildcard_args_check'
function pointer can still be used to override the switch.
- fstat() now works with "NIL:" and "/dev/null", respectively. Not that
it returns much useful information, though.
- The _PC_MAX_INPUT query for file handles now returns the default
buffer size.
- Integrated the new OS4 build makefile collection, as contributed by
Steven Solie. Thank you very much!
- Added the missing strerror_r() function.
- fpathconf() should work with the stdio streams, even in the thread-safe
library version, again.
- Updated m68k specs file in /documentation to contain an own __CLIB2__
define so that existing m68k compilers also have this define. In addition,
the common "-noixemul" option can now also be specified but will do a NOP
so that Makefiles sharing multiple runtime lib setups work without
a warning.
- Added a new callback function which can be used in programs which want
to avoid that the command line wildcard expansion takes place.
- __get_default_file() now dynamically fills in file handles for the
stdin/stdout/stderr streams if it's part of the thread-safe library.
- fpathconf() now checks if the file descriptor is really referring to a file.
- The termios hook entry code could file descriptor's embedded file handle
rather than what the thread safe library had dynamically bound to the
stdin/stdout/stderr streams.
- execve() now finds commands in the current directory again, even if you
omit the leading "./" path name.
- The execve() code that looks for the command/script file now begins by
checking if the file name includes path separators. If it does not,
then the search for the command begins with the resident command list;
otherwise the local directories are checked. The new code also properly
cleans up after itself (a FreeDeviceProc() was missing) and the "PROGDIR:"
lock now always refers to the directory in which the command/script
file is found.
- Added the missing fdim() and fdimf() functions to the build
makefiles. The OS4 build makefile was missing lrint() and
lrintf(). Ouch.
- Added the POSIX exec() family functions, based upon code contributed
by Henning Nielsen Lund. Thank you very much!
- atoll() no longer sets 'errno' directly but now calls __set_errno()
instead.
- Added pathconf(), fpathconf(), sysinfo(), ftime(), ulimit(), getrlimit()
and setrlimit() as contributed by Peter Bengtsson. Thank you very much!
- Added the missing S_ISSOCKET() macro to <sys/stat.h>. Note that this
is not actually a POSIX feature.
- Added fmin(), fminf(), fmax() and fmaxf() to the build makefiles.
Somehow I must have forgotten about them :-(
- select() and waitselect() can now be called without any file descriptor
sets to work with, as some software does which uses select() in place
of sleep().
- The <sys/ioctl.h> header file now includes both <sys/select.h> and
<sys/filio.h> for better compatibility with the TCP/IP stack header
files.
- Added the global variable __expand_wildcard_args which can be used
to disable wildcard pattern expansion of command line parameters when
linked against "libunix.a". Note that this has no effect on the "regular"
libc.a behaviour.
c.lib 1.200 (17.4.2006)
- The default break signal mask (SIGBREAKF_CTRL_C) is no longer

3
library/contrib/README Normal file
View File

@@ -0,0 +1,3 @@
This directory contains contributions which have not yet been integrated
with the clib2 library build but which should be in the CVS repository
both for safekeeping and for you to look at and adapt.

View File

@@ -0,0 +1,183 @@
#ifndef __BYTESWAP_H
#define __BYTESWAP_H
#include <sys/types.h>
#include <stdint.h>
#if defined(__GNUC__)
#define __CONST_FUNC __attribute__((const))
#else
#define __CONST_FUNC /* Nothing */
#endif
/* Single value byteswap functions. */
extern __CONST_FUNC uint16_t bswap16(uint16_t);
extern __CONST_FUNC uint32_t bswap24(uint32_t);
extern __CONST_FUNC uint32_t bswap32(uint32_t);
#ifdef INT64_MIN
extern __CONST_FUNC uint64_t bswap64(uint64_t);
#endif
/* Block byteswap functions. The swab() function usually resides in unistd.h, so perhaps it should be moved there? */
/* NOTE: Contrary to the standard swab(), this version returns the "to" pointer and the pointers are not restrict
* qualified - so swapping buffer-contents in-place is supported.
* Also, swab24(), swab32() and swab64() are non-standard functions.
*/
extern void *swab(void *from,void *to,ssize_t nbytes);
extern void *swab24(void *from,void *to,ssize_t nbytes); /* Same as swab(), but operates on 24-bit words instead. */
extern void *swab32(void *from,void *to,ssize_t nbytes); /* Same as swab(), but operates on 32-bit words instead. */
extern void *swab64(void *from,void *to,ssize_t nbytes); /* Same as swab(), but operates on 64-bit words instead. */
#define swab16(x) swab(x)
/*
* Optimized inline-versions for the single-value functions follow.
* Only GCC+PPC and GCC+m68k support for now.
*/
#if defined(__GNUC__)
/* Select implementation. */
#define bswap16(x) (__builtin_constant_p(x))?__const_swap16(x):__swap16(x)
#define bswap24(x) (__builtin_constant_p(x))?__const_swap24(x):__swap24(x)
#define bswap32(x) (__builtin_constant_p(x))?__const_swap32(x):__swap32(x)
#define bswap64(x) (__builtin_constant_p(x))?__const_swap64(x):__swap64(x)
/* Assembler implementations */
#if defined(__PPC__)
static __inline__ __CONST_FUNC uint16_t __swap16(uint16_t u16) {
uint_fast16_t result;
__asm__("\
rlwinm %[result],%[u16],8,16,24\n\
rlwimi %[result],%[u16],24,24,31\n\
":[result]"=&r"(result):[u16]"r"(u16));
return(result);
}
static __inline__ __CONST_FUNC uint32_t __swap24(uint32_t u32) {
uint_fast32_t result;
__asm__("\
rlwinm %[result],%[u32],16,8,31\n\
rlwimi %[result],%[u32],0,16,24\n\
":[result]"=&r"(result):[u32]"r"(u32));
return(result);
}
static __inline__ __CONST_FUNC uint32_t __swap32(uint32_t u32) {
uint_fast32_t result;
__asm__("\
rlwinm %[result],%[u32],8,8,31\n\
rlwimi %[result],%[u32],24,0,7\n\
rlwimi %[result],%[u32],24,16,23\n\
":[result]"=&r"(result):[u32]"r"(u32));
return(result);
}
/*
* Note: __swap64() might perhaps be optimized a bit more by scheduling the
* instructions to alternate register-use, but this instead means there
* are two less registers free since "u64" and "result" may no longer overlap.
* Decisions, decisions....
*/
static __inline__ __CONST_FUNC uint64_t __swap64(uint64_t u64) {
uint_fast64_t result;
uint_fast32_t tmp;
__asm__("\
rlwinm %[tmp],%[u64],8,8,31\n\
rlwimi %[tmp],%[u64],24,0,7\n\
rlwimi %[tmp],%[u64],24,16,23\n\
rlwinm %[result],%L[u64],8,8,31\n\
rlwimi %[result],%L[u64],24,0,7\n\
rlwimi %[result],%L[u64],24,16,23\n\
or %L[result],%[tmp],%[tmp]\n\
":[result]"=r"(result),[tmp]"=&r"(tmp):[u64]"r"(u64));
return(result);
}
#elif defined(__mc68020__)
static __inline__ __CONST_FUNC uint16_t __swap16(uint16_t u16) {
__asm__("\
rol.w #8,%[u16]\n\
":[u16]"+d"(u16)::"cc");
return(u16);
}
static __inline__ __CONST_FUNC uint32_t __swap24(uint32_t u32) {
__asm__("\
rol.w #8,%[u32]\n\
swap %[u32]\n\
rol.w #8,%[u32]\n\
ror.l #8,%[u32]\n\
":[u32]"+d"(u32)::"cc");
return(u32);
}
static __inline__ __CONST_FUNC uint32_t __swap32(uint32_t u32) {
__asm__("\
rol.w #8,%[u32]\n\
swap %[u32]\n\
rol.w #8,%[u32]\n\
":[u32]"+d"(u32)::"cc");
return(u32);
}
static __inline__ __CONST_FUNC uint64_t __swap64(uint64_t u64) {
__asm__("\
rol.w #8,%[u64]\n\
rol.w #8,%L[u64]\n\
swap %[u64]\n\
swap %L[u64]\n\
rol.w #8,%[u64]\n\
rol.w #8,%L[u64]\n\
exg %[u64],L%[u64]\n\
":[u64]"+d"(u64)::"cc");
return(u64);
}
#else
/* Unknown or undefined architecture. Perhaps compiling with "-strict -ansi", but should not use this header then anyway. */
#undef bswap16
#undef bswap24
#undef bswap32
#undef bswap64
#define bswap16(x) (__builtin_constant_p(x))?__const_swap16(x):bswap16(x)
#define bswap24(x) (__builtin_constant_p(x))?__const_swap24(x):bswap24(x)
#define bswap32(x) (__builtin_constant_p(x))?__const_swap32(x):bswap32(x)
#define bswap64(x) (__builtin_constant_p(x))?__const_swap64(x):bswap64(x)
#endif
/* C implementations for constant values */
static __inline__ uint16_t __const_swap16(uint16_t u16) {
return(u16>>8|u16<<8);
}
static __inline__ uint32_t __const_swap24(uint32_t u32) {
return(((u32&0xff)<<16)|((u32&0xff00))|((u32&0xff0000)>>16));
}
static __inline__ uint32_t __const_swap32(uint32_t u32) {
return(((u32&0xff)<<24)|((u32&0xff00)<<8)|((u32&0xff0000)>>8)|((u32&0xff000000)>>24));
}
static __inline__ uint64_t __const_swap64(uint64_t u64) {
return(((u64&0xffLL)<<56)|((u64&0xff00LL)<<40)|((u64&0xff0000LL)<<24)|((u64&0xff000000LL)<<8)|
((u64&0xff00000000LL)>>8)|((u64&0xff0000000000LL)>>24)|((u64&0xff000000000000LL)>>40)|((u64&0xff00000000000000LL)>>56));
}
#endif /* __GNUC__ */
#endif /* __BYTESWAP_H */
/* vi:set ts=3: */

View File

@@ -0,0 +1,28 @@
#if defined(__PPC__) && defined(__GNUC__)
asm("\
.text\n\
.align 2\n\
.globl bswap16\n\
.type bswap16, @function\n\
bswap16:\n\
# rlwinm %r4,%r3,8,16,24\n\
# rlwimi %r4,%r3,24,24,31\n\
# or %r3,%r4,%r4\n\
rlwimi %r3,%r3,16,8,15\n\
srwi %r3,%r3,8\n\
blr\n\
");
#else
#include <stdint.h>
uint16_t bswap16(uint16_t u16)
{
return(u16>>8|u16<<8);
}
#endif

View File

@@ -0,0 +1,29 @@
#if defined(__PPC__) && defined(__GNUC__)
asm(" .text\n\
.align 2\n\
.globl bswap24\n\
.type bswap24, @function\n\
bswap32:\n\
rlwinm %r4,%r3,16,8,31\n\
rlwimi %r4,%r3,0,16,24\n\
or %r3,%r4,%r4\n\
blr\n\
");
#else
#include <stdint.h>
uint32_t bswap24(uint32_t u32)
{
return(
((u32&0xff)<<16)|
((u32&0xff00))|
((u32&0xff0000)>>16)
);
}
#endif

View File

@@ -0,0 +1,31 @@
#if defined(__PPC__) && defined(__GNUC__)
asm(" .text\n\
.align 2\n\
.globl bswap32\n\
.type bswap32, @function\n\
bswap32:\n\
rlwinm %r4,%r3,8,8,31\n\
rlwimi %r4,%r3,24,0,7\n\
rlwimi %r4,%r3,24,16,23\n\
or %r3,%r4,%r4\n\
blr\n\
");
#else
#include <stdint.h>
uint32_t bswap32(uint32_t u32)
{
return(
((u32&0xff)<<24)|
((u32&0xff00)<<8)|
((u32&0xff0000)>>8)|
((u32&0xff000000)>>24)
);
}
#endif

View File

@@ -0,0 +1,48 @@
#if defined(USE_64_BIT_INTS)
#if defined(__PPC__) && defined(__GNUC__)
asm(" .text\n\
.align 2\n\
.globl bswap64\n\
.type bswap64, @function\n\
bswap64:\n\
rlwinm %r5,%r3,8,8,31\n\
rlwimi %r5,%r3,24,0,7\n\
rlwimi %r5,%r3,24,16,23\n\
rlwinm %r3,%r4,8,8,31\n\
rlwimi %r3,%r4,24,0,7\n\
rlwimi %r3,%r4,24,16,23\n\
or %r4,%r5,%r5\n\
blr\n\
");
#else
#include <stdint.h>
uint64_t bswap64(uint64_t u64)
{
union {
uint64_t ll;
uint32_t l[2];
} v={.ll=u64};
uint32_t tmp;
tmp=v.l[0];
v.l[0]=((v.l[1]&0xff)<<24)|
((v.l[1]&0xff00)<<8)|
((v.l[1]&0xff0000)>>8)|
((v.l[1]&0xff000000)>>24);
v.l[1]=((tmp&0xff)<<24)|
((tmp&0xff00)<<8)|
((tmp&0xff0000)>>8)|
((tmp&0xff000000)>>24);
return(v.ll);
}
#endif
#endif

View File

@@ -0,0 +1,70 @@
#if defined(__GNUC__) && defined(__PPC__)
/* r3=from, r4=to, r5=len/count, r6=index, r7=load/store/temp */
asm("\
.text\n\
.align 2\n\
.globl swab\n\
.type swab,@function\n\
swab:\n\
dcbt 0,%r3\n\
srawi. %r5,%r5,1\n\
bc 4,gt,.exit\n\
andi. %r7,%r3,3 # Check if we start on an address evenly divisible by 4.\n\
li %r6,0\n\
bc 4,gt,.preploop\n\
lhbrx %r7,%r6,%r3 # Fix alignment if needed.\n\
sthx %r7,%r6,%r4\n\
addi %r6,%r6,2\n\
subi %r5,%r5,1\n\
.preploop:\n\
andi. %r7,%r5,1 # Check if even or odd number of 16-bit words.\n\
srawi %r5,%r5,1 # Number of 32-bit words to half-swap.\n\
mtctr %r5\n\
bc 12,gt,.oddloop # Jump to loop for odd number of 16-bit words.\n\
.loop: # Loop is 'unrolled' by reading/writing 32-bit words.\n\
lwbrx %r7,%r6,%r3\n\
rotlwi %r7,%r7,16\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
bc 0,lt,.loop\n\
.exit:\n\
or %r3,%r4,%r4\n\
blr\n\
.oddloop:\n\
lwbrx %r7,%r6,%r3\n\
rotlwi %r7,%r7,16\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
bc 0,lt,.oddloop\n\
sub %r6,%r6,2\n\
lhbrx %r7,%r6,%r3 # Fix last 16-bit word.\n\
sthx %r7,%r6,%r4\n\
or %r3,%r4,%r4\n\
blr\n\
");
#else
#include <sys/types.h>
#include <stdint.h>
void *swab(void *from,void *to,ssize_t len)
{
int i;
uint16_t u16,*u16in=from,*u16out=to;
for(i=0;i<(len>>1);i++) {
u16=u16in[i];
u16out[i]=u16>>8|u16<<8;
}
return(u16out);
}
#endif

View File

@@ -0,0 +1,91 @@
#if defined(__GNUC__) && defined(__PPC__)
/* r3=from, r4=to, r5=len/remaining, r6/r7=index & r7=temp, r8/r9/r10=read/write temp */
asm("\
.text\n\
.align 2\n\
.globl swab24\n\
.type swab24,@function\n\
swab24:\n\
dcbt 0,%r3\n\
li %r7,3\n\
divwu %r5,%r5,%r7\n\
andi. %r7,%r5,3\n\
srawi. %r5,%r5,2\n\
mtctr %r5\n\
or %r5,%r7,%r7\n\
li %r6,0\n\
bc 4,gt,.postfix\n\
.loop:\n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwzx %r9,%r7,%r3\n\
addi %r7,%r6,8\n\
lwbrx %r10,%r7,%r3\n\
rotlwi %r8,%r8,8\n\
or %r7,%r9,%r9\n\
rlwimi %r9,%r8,16,8,15\n\
rlwimi %r9,%r10,8,16,23\n\
rlwimi %r8,%r7,16,24,31\n\
rotrwi %r10,%r10,8\n\
rlwimi %r10,%r7,16,0,7\n\
stwx %r8,%r6,%r4\n\
addi %r6,%r6,4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,4\n\
stwx %r10,%r6,%r4\n\
addi %r6,%r6,4\n\
bc 0,lt,.loop\n\
.postfix: # Fix any remaining 24-bit words (number of remaining words in r5).\n\
or. %r5,%r5,%r5\n\
bc 4,gt,.exit\n\
mtctr %r5\n\
add %r3,%r3,%r6\n\
add %r6,%r4,%r6\n\
subi %r3,%r3,1\n\
.fixloop:\n\
lbzu %r7,1(%r3)\n\
lbzu %r8,1(%r3)\n\
lbzu %r9,1(%r3)\n\
stb %r7,2(%r6)\n\
stb %r8,1(%r6)\n\
stb %r9,0(%r6)\n\
addi %r6,%r6,3\n\
bc 0,lt,.fixloop\n\
.exit:\n\
or %r3,%r4,%r4\n\
blr\n\
");
#else
#include <sys/types.h>
#include <stdint.h>
/*
* Ugh, this is really very, very ineffiecient.
* (But simple, understandable and safe)
*/
void *swab24(void *from,void *to,ssize_t len)
{
uint8_t *src=from,B0,B1,B2,*dst=to;
int i;
for(i=0;i<len;i+=3) {
B0=src[i];
B1=src[i+1];
B2=src[i+2];
dst[i]=B2;
dst[i+1]=B1;
dst[i+2]=B0;
}
return(to);
}
#endif

View File

@@ -0,0 +1,112 @@
#if defined(__GNUC__) && defined(__PPC__)
/* r3=from, r4=to, r5=len, r6=index, r7=load/store temp */
asm("\
.text\n\
.align 2\n\
.globl swab32\n\
.type swab32,@function\n\
swab32:\n\
srawi. %r5,%r5,2\n\
li %r6,0\n\
bc 4,gt,.exit\n\
mtctr %r5\n\
.loop:\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
bc 0,lt,.loop\n\
.exit:\n\
or %r3,%r4,%r4\n\
blr\n\
");
/* r3=from, r4=to, r5=len/temp, r6=index, r7=load/store temp, r8=cache hint
*
* The unrolled, cache-hinting version appears to be about 4.5% faster, but
* in this case I opted for the smaller implementation. swab64() appears to
* gain more from cache-hinting - probably because of it using more registers
* for intermediate storage.
asm("\
.text\n\
.align 2\n\
.globl swab32\n\
.type swab32,@function\n\
swab32:\n\
dcbt 0,%r3\n\
andi. %r8,%r5,31 # The number of bytes handled in '.pre'. Used for prefetch hint.\n\
srawi %r5,%r5,2 # Convert bytes-># of 32-bit words\n\
andi. %r7,%r5,7\n\
li %r6,0\n\
bc 4,gt,.preploop\n\
mtctr %r7\n\
.pre: # One 32-bit word at a time until we have (nLeft%8)==0 \n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
bc 0,lt,.pre\n\
.preploop:\n\
srawi. %r5,%r5,3 # Divide by 8 again to get number of loops.\n\
addi %r8,%r8,32 # Start address for next loop (from r3).\n\
bc 4,gt,.exit\n\
mtctr %r5\n\
.loop: # Loop unrolled 8 times = 32 bytes = 1 cache-line (except on the 970).\n\
dcbt %r8,%r3 # Cache hint (prefetch) for the next loop\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
lwbrx %r7,%r6,%r3\n\
stwx %r7,%r6,%r4\n\
addi %r6,%r6,4\n\
addi %r8,%r8,32 # Update cache-hint offset\n\
bc 0,lt,.loop\n\
.exit:\n\
or %r3,%r4,%r4\n\
blr\n\
");
*/
#else
#include <sys/types.h>
#include <stdint.h>
void *swab32(void *from,void *to,ssize_t len)
{
int i;
uint32_t *u32in=from,*u32out=to,tmp;
for(i=0;i<(len>>2);i++) {
tmp=u32in[i];
u32out[i]=((tmp&0xff)<<24)|
((tmp&0xff00)<<8)|
((tmp&0xff0000)>>8)|
((tmp&0xff000000)>>24);
}
return(to);
}
#endif

View File

@@ -0,0 +1,101 @@
#if defined(__GNUC__) && defined(__PPC__)
/* r3=from, r4=to, r5=len/temp, r6/r7=index, r8/r9=load/store temp, r10=cache hint */
/* This version is unrolled and uses cache-hinting. It appears to gain about 10%
* over a non-unrolled, non-hinting version.
*/
asm("\
.text\n\
.align 2\n\
.globl swab64\n\
.type swab64,@function\n\
swab64:\n\
dcbt 0,%r3\n\
andi. %r10,%r5,31 # The number of bytes handled in '.pre'. Used for prefetch hint.\n\
srawi %r5,%r5,3 # Convert bytes-># of 64-bit words\n\
andi. %r7,%r5,3\n\
li %r6,0\n\
bc 4,gt,.preploop\n\
mtctr %r7\n\
.pre: # One 64-bit word at a time until we have (nLeft%4)==0 \n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwbrx %r9,%r7,%r3\n\
stwx %r8,%r7,%r4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,8\n\
bc 0,lt,.pre\n\
.preploop:\n\
srawi. %r5,%r5,2 # Divide by 4 again to get number of loops.\n\
addi %r10,%r10,32 # Start address for next loop.\n\
bc 4,gt,.exit\n\
mtctr %r5\n\
.loop: # Loop unrolled 4 times = 32 bytes = 1 cache-line (except on the 970).\n\
dcbt %r10,%r3 # Cache hint (prefetch) for the next iteration\n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwbrx %r9,%r7,%r3\n\
stwx %r8,%r7,%r4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,8\n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwbrx %r9,%r7,%r3\n\
stwx %r8,%r7,%r4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,8\n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwbrx %r9,%r7,%r3\n\
stwx %r8,%r7,%r4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,8\n\
lwbrx %r8,%r6,%r3\n\
addi %r7,%r6,4\n\
lwbrx %r9,%r7,%r3\n\
stwx %r8,%r7,%r4\n\
stwx %r9,%r6,%r4\n\
addi %r6,%r6,8\n\
addi %r10,%r10,32 # Update cache-hint offset\n\
bc 0,lt,.loop\n\
.exit:\n\
or %r3,%r4,%r4\n\
blr\n\
");
#else
#include <sys/types.h>
#include <stdint.h>
void *swab64(void *from,void *to,ssize_t len)
{
int i;
struct {
uint32_t u32[2];
} *u64in=from,*u64out=to;
uint32_t tmp1,tmp2;
for(i=0;i<(len>>3);i++) {
tmp1=u64in[i].u32[0];
tmp2=u64in[i].u32[1];
u64out[i].u32[0]=((tmp2&0xff)<<24)|
((tmp2&0xff00)<<8)|
((tmp2&0xff0000)>>8)|
((tmp2&0xff000000)>>24);
u64out[i].u32[1]=((tmp1&0xff)<<24)|
((tmp1&0xff00)<<8)|
((tmp1&0xff0000)>>8)|
((tmp1&0xff000000)>>24);
}
return(to);
}
#endif
/* vi:set ts=3: */

View File

@@ -1,5 +1,5 @@
/*
* $Id: crtbegin.c,v 1.10 2005-03-18 12:38:22 obarthel Exp $
* $Id: crtbegin.c,v 1.13 2010-08-21 11:37:03 obarthel Exp $
*
* :ts=4
*
@@ -27,12 +27,22 @@ static void (*__DTOR_LIST__[1]) (void) __attribute__(( used, section(".dtors"),
/****************************************************************************/
void _init(void);
void _fini(void);
/****************************************************************************/
void
_init(void)
{
extern void shared_obj_init(void);
int num_ctors,i;
int j;
/* The shared objects need to be set up before any local
constructors are invoked. */
shared_obj_init();
for(i = 1, num_ctors = 0 ; __CTOR_LIST__[i] != NULL ; i++)
num_ctors++;
@@ -45,6 +55,7 @@ _init(void)
void
_fini(void)
{
extern void shared_obj_exit(void);
int num_dtors,i;
static int j;
@@ -53,6 +64,10 @@ _fini(void)
while(j++ < num_dtors)
__DTOR_LIST__[j]();
/* The shared objects need to be cleaned up after all local
destructors have been invoked. */
shared_obj_exit();
}
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
/*
* $Id: debug.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: debug.c,v 1.6 2006-09-25 14:51:15 obarthel Exp $
*
* :ts=8
*
@@ -160,7 +160,7 @@ _SHOWVALUE(
{
if(__debug_level >= DEBUGLEVEL_Reports)
{
char *fmt;
const char *fmt;
switch(size)
{
@@ -207,7 +207,7 @@ _SHOWPOINTER(
{
if(__debug_level >= DEBUGLEVEL_Reports)
{
char *fmt;
const char *fmt;
_INDENT();
@@ -273,7 +273,7 @@ _DPRINTF(const char *fmt,...)
va_list args;
va_start(args,fmt);
KPutFmt((char *)fmt,args);
KPutFmt(fmt,args);
va_end(args);
KPrintF("\n");
@@ -288,7 +288,7 @@ _DLOG(const char *fmt,...)
va_list args;
va_start(args,fmt);
KPutFmt((char *)fmt,args);
KPutFmt(fmt,args);
va_end(args);
}
}

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "debug.lib 1.200"
#define VSTRING "debug.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "debug.lib 1.205"
#define VSTRING "debug.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,5 +1,5 @@
/*
* $Id: dirent_readdir.c,v 1.9 2006-01-08 12:04:22 obarthel Exp $
* $Id: dirent_readdir.c,v 1.10 2006-09-25 14:51:15 obarthel Exp $
*
* :ts=4
*
@@ -88,7 +88,7 @@ readdir(DIR * directory_pointer)
{
D_S(struct FileInfoBlock,fib);
D_S(struct bcpl_name,bcpl_name);
UBYTE * name = bcpl_name->name;
char * name = (char *)bcpl_name->name;
BPTR dir_lock;
assert( (((ULONG)name) & 3) == 0 );
@@ -96,7 +96,7 @@ readdir(DIR * directory_pointer)
if(dh->dh_VolumeNode == NULL && NOT IsListEmpty((struct List *)&dh->dh_VolumeList))
dh->dh_VolumeNode = (struct Node *)dh->dh_VolumeList.mlh_Head;
strcpy((char *)name,"\1:"); /* BSTR for ":" */
strcpy(name,"\1:"); /* BSTR for ":" */
while(result == NULL && dh->dh_VolumeNode != NULL && dh->dh_VolumeNode->ln_Succ != NULL)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: fcntl_fcntl.c,v 1.19 2006-01-08 12:04:22 obarthel Exp $
* $Id: fcntl_fcntl.c,v 1.20 2006-11-16 14:39:23 obarthel Exp $
*
* :ts=4
*
@@ -97,7 +97,7 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
goto out;
}
if(fd->fd_DefaultFile == ZERO)
if(fd->fd_File == ZERO)
{
__set_errno(EBADF);
goto out;
@@ -155,7 +155,7 @@ fcntl(int file_descriptor, int cmd, ... /* int arg */ )
SHOWMSG("cmd=F_SETFL");
/* If this is a file, make sure that we don't hit a zero file handle. */
if(FLAG_IS_CLEAR(fd->fd_Flags,FDF_IS_SOCKET) && fd->fd_DefaultFile == ZERO)
if(FLAG_IS_CLEAR(fd->fd_Flags,FDF_IS_SOCKET) && fd->fd_File == ZERO)
{
__set_errno(EBADF);
goto out;

View File

@@ -1,5 +1,5 @@
/*
* $Id: fcntl_get_default_file.c,v 1.5 2006-01-08 12:04:22 obarthel Exp $
* $Id: fcntl_get_default_file.c,v 1.8 2006-11-16 14:39:23 obarthel Exp $
*
* :ts=4
*
@@ -44,8 +44,8 @@
int
__get_default_file(int file_descriptor,long * file_ptr)
{
struct fd * fd;
int result = ERROR;
struct fd * fd;
assert( file_descriptor >= 0 && file_descriptor < __num_fd );
assert( __fd[file_descriptor] != NULL );
@@ -59,11 +59,15 @@ __get_default_file(int file_descriptor,long * file_ptr)
goto out;
}
(*file_ptr) = (long)fd->fd_DefaultFile;
__fd_lock(fd);
(*file_ptr) = (long)__resolve_fd_file(fd);
result = 0;
out:
__fd_unlock(fd);
return(result);
}

87
library/include/dlfcn.h Normal file
View File

@@ -0,0 +1,87 @@
/*
* $Id: dlfcn.h,v 1.2 2010-08-21 11:37:03 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2010 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _DLFCN_H
#define _DLFCN_H
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The shared object API is available only on AmigaOS 4.0. */
#if defined(__amigaos4__)
/****************************************************************************/
/* We only support a subset of the flags available on Unix systems. */
#define RTLD_LAZY 1
#define RTLD_NOW 2
#define RTLD_LOCAL 4
#define RTLD_GLOBAL 8
#define RTLD_DEFAULT ((void *)0)
/****************************************************************************/
extern int dlclose(void * __handle);
extern const char * dlerror(void);
extern void * dlopen(const char * __path_name,int __mode);
extern void * dlsym(void * __handle,const char * __symbol_name);
/****************************************************************************/
#endif /* __amigaos4__ */
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _DLFCN_H */

View File

@@ -1,5 +1,5 @@
/*
* $Id: dos.h,v 1.19 2006-04-05 08:39:46 obarthel Exp $
* $Id: dos.h,v 1.28 2006-09-27 09:40:06 obarthel Exp $
*
* :ts=4
*
@@ -470,6 +470,101 @@ extern BOOL __thread_safe_errno_h_errno;
/****************************************************************************/
/*
* If you link against libunix.a then the default command line processing
* function will attempt to expand every single wildcard parameter on the
* command line into a series of file and directories names matching the
* wildcards. The idea is to provide functionality which on Unix the
* shell is responsible for. On AmigaDOS the shell commands need to perform
* the expansion. However, if you are mixing AmigaDOS commands which expand
* wildcard patterns with a shell that already does the job, you may run into
* big trouble. To disable the expansion, declare the global variable named
* "__expand_wildcard_args" in your code and have it set to FALSE. Because
* the program startup code checks this variable early on, its value must
* be available at that time, i.e. you cannot just set it differently in
* your code lateron because by that time the startup code will have already
* checked it.
*
* Note that the startup code will disable wildcard expansion if the local
* shell environment variable "DISABLE_COMMANDLINE_WILDCARD_EXPANSION"
* is set.
*/
extern BOOL __expand_wildcard_args;
/*
* Similar to the boolean flag value __expand_wildcard_args described above,
* a function can be called which may be used to enable/disable wildcard
* expansion at runtime. The function is undefined by default, which means
* that the __expand_wildcard_args value will take precedence. If you want
* to override the effects of the __expand_wildcard_args variable, declare
* your own check function and then assign it to the
* __expand_wildcard_args_check pointer.
*/
extern BOOL (*__expand_wildcard_args_check)(void);
/****************************************************************************/
/*
* Defaults for path delimiter (":") and the shell search path
* ("/gcc/bin:/SDK/C:/SDK/Local/C:/C:.") as used by the execvp()
* function.
*/
extern const char * __default_path_delimiter;
extern const char * __default_path;
/****************************************************************************/
/*
* 'environ' is the default environment variable table as used by the execl(),
* execv() and execvp() functions. This needs to be initialized before you
* can use it. The table has the following form:
*
* char ** environ =
* {
* "variable1=value",
* "variable2=value",
* NULL
* };
*
* Note that if you initialize the 'environ' table you will also have to
* provide for a function which prepares its contents in execve() for use
* by the command to be executed. That function is called
* __execve_environ_init(). Should program execution fail, you need to
* clean up after what __execve_environ_init() set up. To do this, call
* __execve_environ_exit(). There are stubs in clib2 for these functions
* which essentially do nothing at all. You will have to implement these
* yourself if you want to use them.
*/
extern char ** environ;
extern int __execve_environ_init(char * const envp[]);
extern void __execve_environ_exit(char * const envp[]);
/****************************************************************************/
/*
* The __execve_exit() function is called by execve() if the command
* executed correctly and control should be returned to the shell. The
* default behaviour is to eventually call exit(). You can, however,
* replace __execve_exit() with a stub which does nothing at all. In
* that case the execve() function will return control to the caller
* instead.
*/
extern void __execve_exit(int return_code);
/****************************************************************************/
/*
* The unlink() and remove() functions in libunix.a may return success even
* though deletion failed because the file/directory/link in question is still
* reported as being "in use". This is the default behaviour. If you want the
* deletion to fail instead, set '__unlink_retries' to FALSE.
*/
extern BOOL __unlink_retries;
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@@ -1,5 +1,5 @@
/*
* $Id: libgen.h,v 1.6 2006-01-08 12:06:14 obarthel Exp $
* $Id: libgen.h,v 1.7 2006-09-25 13:29:47 obarthel Exp $
*
* :ts=4
*
@@ -53,8 +53,8 @@ extern "C" {
/****************************************************************************/
char * basename(char *path);
char * dirname(char *path);
char * basename(const char *path);
char * dirname(const char *path);
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
/*
* $Id: limits.h,v 1.11 2006-01-08 12:06:14 obarthel Exp $
* $Id: limits.h,v 1.12 2010-08-20 15:33:36 obarthel Exp $
*
* :ts=4
*
@@ -78,9 +78,9 @@
/****************************************************************************/
#define INT_MIN (-2147483647L - 1)
#define INT_MAX 2147483647L
#define UINT_MAX 4294967295UL
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647
#define UINT_MAX 4294967295U
/****************************************************************************/
@@ -109,7 +109,7 @@
/****************************************************************************/
#define SSIZE_MAX 2147483647L
#define SSIZE_MAX LONG_MAX
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
/*
* $Id: math.h,v 1.21 2006-01-08 12:06:14 obarthel Exp $
* $Id: math.h,v 1.22 2007-01-06 10:09:49 obarthel Exp $
*
* :ts=4
*
@@ -297,6 +297,7 @@ extern double hypot(double x,double y);
extern double lgamma(double x);
extern double log1p(double x);
extern double logb(double x);
extern long long int llrint(double x);
extern long int lrint(double x);
extern long int lround(double x);
extern double nan(const char *tagp);

View File

@@ -1,5 +1,5 @@
/*
* $Id: stdlib.h,v 1.17 2006-01-08 12:06:14 obarthel Exp $
* $Id: stdlib.h,v 1.19 2008-04-30 14:34:03 obarthel Exp $
*
* :ts=4
*
@@ -156,6 +156,7 @@ extern long atol(const char *str);
/****************************************************************************/
extern void _exit(int status);
extern int rand_r(unsigned int * seed);
/****************************************************************************/
@@ -194,7 +195,7 @@ extern int rand_r(unsigned int * seed);
extern int setenv(const char *name, const char *value, int overwrite);
extern int putenv(const char *string);
extern void unsetenv(const char *name);
extern int unsetenv(const char *name);
extern char * mktemp(char * name_template);
extern int mkstemp(char *name_template);
extern char * mkdtemp(char *name_template);

View File

@@ -1,5 +1,5 @@
/*
* $Id: string.h,v 1.11 2006-01-08 12:06:14 obarthel Exp $
* $Id: string.h,v 1.12 2006-09-17 17:36:42 obarthel Exp $
*
* :ts=4
*
@@ -106,6 +106,7 @@ extern void *memset(void *ptr, int val, size_t len);
/****************************************************************************/
extern int strerror_r(int error,char * buffer,size_t buffer_size);
extern char * index(const char *s, int c);
extern char * rindex(const char *s, int c);

View File

@@ -0,0 +1,190 @@
/*
* $Id: clib2_io.h,v 1.4 2006-11-16 14:39:23 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _SYS_CLIB2_IO_H
#define _SYS_CLIB2_IO_H
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
/* Operations that can be performed by the file action function. */
enum file_action_t
{
file_action_read,
file_action_write,
file_action_seek,
file_action_close,
file_action_set_blocking,
file_action_set_async,
file_action_examine
};
/****************************************************************************/
/* A message sent to a file action function. */
struct file_action_message
{
enum file_action_t fam_Action; /* What to do */
char * fam_Data; /* Where to read/write the data */
int fam_Size; /* How much data to write */
long int fam_Offset; /* The seek offset */
int fam_Mode; /* The seek mode */
int fam_Arg; /* Action parameters, e.g. whether or not
this file should be set non-blocking or
use asynchronous I/O */
struct FileInfoBlock * fam_FileInfo; /* File information to be filled in */
struct MsgPort * fam_FileSystem; /* File system pointer to be filled in */
int fam_Error; /* Error code, if any... */
};
/****************************************************************************/
/* A forward declaration to make the following typedef work. */
struct _fd;
/****************************************************************************/
/* The file action function for unbuffered files. */
typedef int (*_file_action_fd_t)(struct _fd * _fd,struct file_action_message * fam);
/****************************************************************************/
/* A low level unbuffered file or socket. */
struct _fd
{
int fd_Version; /* Version number of this definition
of the '_fd' data structure (see
below). */
_file_action_fd_t fd_Action; /* Function to invoke to perform actions */
void * fd_UserData; /* To be used by custom file action
functions */
ULONG fd_Flags; /* File properties */
union
{
BPTR fdu_File; /* A dos.library file handle */
LONG fdu_Socket; /* A socket identifier */
} fdu_Default;
};
/****************************************************************************/
/* The version of the '_fd' data structure, covering the fields 'fd_Version'
through 'fdu_Default' bears version number 1. */
/****************************************************************************/
/* Sneaky preprocessor tricks to make access to the file/socket IDs
work smoothly. */
#define fd_DefaultFile fdu_Default.fdu_File
#define fd_File fdu_Default.fdu_File
#define fd_Socket fdu_Default.fdu_Socket
/****************************************************************************/
/* Flag bits that can be set in _fd->fd_Flags; not all of these may be in
use, or can be changed. */
#define FDF_READ (1UL<<0) /* Data can be read from this file */
#define FDF_WRITE (1UL<<1) /* Data can be written to this file */
#define FDF_APPEND (1UL<<2) /* Before any data is written to it,
the file position must be set to the
end of the file */
#define FDF_NO_CLOSE (1UL<<3) /* Never close this file */
#define FDF_NON_BLOCKING (1UL<<4) /* File was switched into non-blocking
mode (console streams only) */
#define FDF_IS_SOCKET (1UL<<5) /* This is not a disk file but a socket */
#define FDF_IS_LOCKED (1UL<<6) /* This file has an advisory record lock set */
#define FDF_IN_USE (1UL<<7) /* This file is in use */
#define FDF_CREATED (1UL<<8) /* This file was newly created and may need
to have its protection bits updated after
it has been closed */
#define FDF_CACHE_POSITION (1UL<<9) /* Cache the file position. */
#define FDF_ASYNC_IO (1UL<<10) /* File was switched into asynchronous I/O
mode (sockets only). */
#define FDF_IS_INTERACTIVE (1UL<<11) /* File is attached to a console window or
something like it. */
#define FDF_STDIO (1UL<<12) /* File is to be attached to one of the
standard input/output/error streams. */
#define FDF_TERMIOS (1UL<<13) /* File is under termios control.
FDF_IS_INTERACTIVE should also be set. */
/****************************************************************************/
/* Obtain a pointer to the _fd data structure associated with a file
descriptor number. Note that this does not perform any locking, which
means that you have to be absolutely certain that the file will not be
closed while you are still looking at it. This function can return
NULL if the file descriptor you provided is not valid. */
extern struct _fd * __get_fd(int file_descriptor);
/* Replaces the action callback function and (optionally) returns the old
function pointer; returns 0 for success and -1 for failure if you
provided an invalid file descriptor. This function performs proper locking
and is thus safe to use in a thread-safe environment. */
extern int __change_fd_action(int file_descriptor,_file_action_fd_t new_action,_file_action_fd_t * old_action_ptr);
/* Replaces the user data pointer and (optionally) returns the old user
data pointer; returns 0 for success and -1 for failure if you
provided an invalid file descriptor. This function performs proper locking
and is thus safe to use in a thread-safe environment. */
extern int __change_fd_user_data(int file_descriptor,void * new_user_data,void ** old_user_data_ptr);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _SYS_CLIB2_IO_H */

View File

@@ -1,5 +1,5 @@
/*
* $Id: ioctl.h,v 1.4 2006-01-08 12:06:14 obarthel Exp $
* $Id: ioctl.h,v 1.5 2006-06-21 15:53:55 obarthel Exp $
*
* :ts=4
*
@@ -47,6 +47,16 @@
/****************************************************************************/
#ifndef _SYS_SELECT_H
#include <sys/select.h>
#endif /* _SYS_SELECT_H */
#ifndef _SYS_FILIO_H
#include <sys/filio.h>
#endif /* _SYS_FILIO_H */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

View File

@@ -0,0 +1,99 @@
/*
* $Id: resource.h,v 1.2 2006-07-28 14:02:32 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _SYS_RESOURCE_H
#define _SYS_RESOURCE_H
/****************************************************************************/
#ifndef _SYS_TYPES_H
#include <sys/types.h> /* For the definition of rlim_t */
#endif /* _SYS_TYPES_H */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#define RLIM_INFINITY 0xffffffffUL
#define RLIM_SAVED_MAX (RLIM_INFINITY-1)
#define RLIM_SAVED_CUR (RLIM_INFINITY-2)
/****************************************************************************/
#define RLIM_VMEM 1
#define RLIM_AS RLIM_VMEM
#define RLIM_CORE 2
#define RLIM_CPU 3
#define RLIM_DATA 4
#define RLIM_FSIZE 5
#define RLIM_NOFILE 6
#define RLIM_OFILE RLIMIT_NOFILE
#define RLIM_STACK 7
/****************************************************************************/
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
/****************************************************************************/
extern int getrlimit(int resource,struct rlimit *rlp);
extern int setrlimit(int resource,const struct rlimit *rlp);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _SYS_RESOURCE_H */

View File

@@ -1,5 +1,5 @@
/*
* $Id: stat.h,v 1.9 2006-01-08 12:06:14 obarthel Exp $
* $Id: stat.h,v 1.10 2006-07-28 13:19:12 obarthel Exp $
*
* :ts=4
*
@@ -106,12 +106,13 @@ extern "C" {
/****************************************************************************/
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo */
#define S_ISBLK(m) (0) /* block special */
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo */
#define S_ISBLK(m) (0) /* block special */
#define S_ISSOCK(m) (((m) & S_IFSOCK) == S_IFSOCK) /* socket */
/****************************************************************************/

View File

@@ -0,0 +1,84 @@
/*
* $Id: systeminfo.h,v 1.1 2006-07-28 14:02:32 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _SYS_SYSTEMINFO_H
#define _SYS_SYSTEMINFO_H
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* Numbers are picked to be the same as for Solaris */
#define SI_SYSNAME 1
#define SI_HOSTNAME 2
#define SI_RELEASE 3
#define SI_VERSION 4
#define SI_MACHINE 5
#define SI_ARCHITECTURE 6
#define SI_HW_SERIAL 7
#define SI_HW_PROVIDER 8
#define SI_SET_HOSTNAME 258
#define SI_PLATFORM 513
#define SI_ISALIST 514
/****************************************************************************/
extern long sysinfo(int cmd,char *buf,long buflen);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _SYS_SYSTEMINFO_H */

View File

@@ -0,0 +1,82 @@
/*
* $Id: timeb.h,v 1.3 2006-07-28 14:02:32 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _SYS_TIMEB_H
#define _SYS_TIMEB_H
/****************************************************************************/
#ifndef _TIME_H
#include <time.h> /* For the definition of time_t */
#endif /* _TIME_H */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
struct timeb
{
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
/****************************************************************************/
extern int ftime(struct timeb *);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _SYS_TIMEB_H */

73
library/include/ulimit.h Normal file
View File

@@ -0,0 +1,73 @@
/*
* $Id: ulimit.h,v 1.2 2006-07-28 14:02:32 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*
*****************************************************************************
*
* Documentation and source code for this library, and the most recent library
* build are available from <http://sourceforge.net/projects/clib2>.
*
*****************************************************************************
*/
#ifndef _ULIMIT_H
#define _ULIMIT_H
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
#define UL_GETFSIZE 1
#define UL_SETFSIZE 2
#define UL_GMEMLIM 3
#define UL_GDESLIM 4
/****************************************************************************/
extern long ulimit(int cmd,long newlimit);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _ULIMIT_H */

View File

@@ -1,5 +1,5 @@
/*
* $Id: unistd.h,v 1.18 2006-01-29 09:17:00 obarthel Exp $
* $Id: unistd.h,v 1.23 2007-01-06 10:09:49 obarthel Exp $
*
* :ts=4
*
@@ -51,6 +51,10 @@
#include <fcntl.h>
#endif /* _FCNTL_H */
#ifndef _STDIO_H
#include <stdio.h>
#endif /* _STDIO_H */
#if !defined(__NO_NET_API) && !defined(_SYS_SELECT_H)
#include <sys/select.h>
#endif /* __NO_NET_API && _SYS_SELECT_H */
@@ -114,7 +118,7 @@ extern int chdir(const char * path_name);
extern int lockf(int file_descriptor, int function, off_t size);
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 * const argv[], const char *opts);
extern pid_t getpid(void);
extern char *realpath(const char *file_name, char *resolved_name);
extern int fsync(int file_descriptor);
@@ -122,7 +126,12 @@ extern int fdatasync(int file_descriptor);
extern char *ttyname(int);
extern int ttyname_r(int file_descriptor,char *name,size_t buflen);
extern int ttyname_t(int,char *,size_t);
extern int execl(const char *path,const char *arg0,...);
extern int execle(const char *path,const char *arg0,...);
extern int execlp(const char *path,const char *arg0,...);
extern int execv(const char *path,char * const argv[]);
extern int execve(const char *path,char *const argv[],char *const envp[]);
extern int execvp(const char *command,char * const argv[]);
extern int profil(unsigned short *buffer, size_t bufSize, size_t offset, unsigned int scale);
/****************************************************************************/
@@ -167,6 +176,42 @@ extern int setuid(uid_t uid);
/****************************************************************************/
/* The following is for use with pathconf()/fpathconf() */
#define _PC_LINK_MAX 0
#define _PC_MAX_CANON 1
#define _PC_MAX_INPUT 2
#define _PC_NAME_MAX 3
#define _PC_PATH_MAX 4
#define _PC_PIPE_BUF 5
#define _PC_CHOWN_RESTRICTED 6
#define _PC_NO_TRUNC 7
#define _PC_VDISABLE 8
#define _PC_SYNC_IO 9
#define _PC_ASYNC_IO 10
#define _PC_PRIO_IO 11
#define _PC_SOCK_MAXBUF 12
#define _PC_FILESIZEBITS 13
#if 0
#define _PC_REC_INCR_XFER_SIZE 14
#define _PC_REC_MAX_XFER_SIZE 15
#define _PC_REC_MIN_XFER_SIZE 16
#define _PC_REC_XFER_ALIGN 17
#define _PC_ALLOC_SIZE_MIN 18
#endif
#define _PC_SYMLINK_MAX 19
#define _PC_XATTR_EXISTS 20
#define _PC_XATTR_ENABLED 21
/* Amiga Specific */
#define _PC_DOSTYPE 300
/****************************************************************************/
extern long pathconf(const char *path,int name);
extern long fpathconf(int file_descriptor,int name);
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@@ -1,5 +1,5 @@
/*
* $Id: wchar.h,v 1.7 2006-01-08 12:06:14 obarthel Exp $
* $Id: wchar.h,v 1.8 2008-04-30 14:34:03 obarthel Exp $
*
* :ts=4
*
@@ -97,7 +97,7 @@ extern wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t n);
extern size_t wcslen(const wchar_t *s);
extern wchar_t * wcschr(const wchar_t *s, wchar_t c);
extern size_t wcsspn(const wchar_t *s, const wchar_t *set);
extern wchar_t wcspbrk(const wchar_t *s, const wchar_t *set);
extern wchar_t *wcspbrk(const wchar_t *s, const wchar_t *set);
extern wchar_t *wcstok(wchar_t *str, const wchar_t *set);
extern wchar_t *wcsstr(const wchar_t *src, const wchar_t *sub);
@@ -179,6 +179,11 @@ extern size_t wcsftime(wchar_t *s, size_t maxsize, const wchar_t *format, const
extern long long wcstoll(const wchar_t *str, wchar_t **ptr, int base);
extern unsigned long long wcstoull(const wchar_t *str, wchar_t **ptr, int base);
extern size_t mbrtowc_l(wchar_t *restrict pwc, const char *restrict s, size_t n, mbstate_t *restrict ps, locale_t loc);
extern int wcscoll_l(const wchar_t *ws1, const wchar_t *ws2, locale_t loc);
extern size_t wcscspn(const wchar_t *ws1, const wchar_t *ws2);
extern wchar_t * wcsrchr(const wchar_t *ws, wchar_t wc);
#endif /* __STDC_VERSION__ && __STDC_VERSION__ >= 199901L */
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
/*
* $Id: wctype.h,v 1.7 2006-01-08 12:06:14 obarthel Exp $
* $Id: wctype.h,v 1.8 2008-04-30 14:41:28 obarthel Exp $
*
* :ts=4
*
@@ -68,7 +68,7 @@ extern int iswdigit(wint_t c);
extern int iswxdigit(wint_t c);
extern int iswgraph(wint_t c);
extern int iswpunc(wint_t c);
extern int iswpunct(wint_t c);
extern int iswprint(wint_t c);
extern int iswlower(wint_t c);

127
library/libamiga.gmk Executable file
View File

@@ -0,0 +1,127 @@
#
# $Id: libamiga.gmk,v 1.1 2006-09-17 17:37:27 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libamiga.a \
lib/soft-float/libamiga.a \
lib/small-data/libamiga.a \
lib/baserel/libamiga.a \
lib.threadsafe/libamiga.a \
lib.threadsafe/soft-float/libamiga.a \
lib.threadsafe/small-data/libamiga.a \
lib.threadsafe/baserel/libamiga.a
##############################################################################
AMIGA_LIB = \
amiga.lib_rev.o \
amiga_acrypt.o \
amiga_addtof.o \
amiga_argarraydone.o \
amiga_argarrayinit.o \
amiga_argint.o \
amiga_argstring.o \
amiga_beginio.o \
amiga_callhooka.o \
amiga_coercemethod.o \
amiga_createextio.o \
amiga_createport.o \
amiga_createstdio.o \
amiga_createtask.o \
amiga_deleteextio.o \
amiga_deleteport.o \
amiga_deletestdio.o \
amiga_deletetask.o \
amiga_domethod.o \
amiga_dosupermethod.o \
amiga_dotimer.o \
amiga_fastrand.o \
amiga_freeievents.o \
amiga_hotkey.o \
amiga_invertstring.o \
amiga_newlist.o \
amiga_rangerand.o \
amiga_remtof.o \
amiga_rexxvars.o \
amiga_setsuperattrs.o \
amiga_timedelay.o \
amiga_waitbeam.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj/soft-float/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj/small-data/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj/baserel/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj.threadsafe/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj.threadsafe/soft-float/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj.threadsafe/small-data/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
obj.threadsafe/baserel/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h
##############################################################################
obj/libamiga/%.o : CFLAGS += $(LARGEDATA)
obj/libamiga/%.o : %.c
@$(COMPILE)
obj/soft-float/libamiga/%.o : CFLAGS += $(SOFTFLOAT)
obj/soft-float/libamiga/%.o : %.c
@$(COMPILE)
obj/small-data/libamiga/%.o : CFLAGS += $(SMALLDATA)
obj/small-data/libamiga/%.o : %.c
@$(COMPILE)
obj/baserel/libamiga/%.o : CFLAGS += $(BASEREL)
obj/baserel/libamiga/%.o : %.c
@$(COMPILE)
obj.threadsafe/libamiga/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA)
obj.threadsafe/libamiga/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libamiga/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
obj.threadsafe/soft-float/libamiga/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libamiga/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA)
obj.threadsafe/small-data/libamiga/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libamiga/%.o : CFLAGS += $(THREADSAFE) $(BASEREL)
obj.threadsafe/baserel/libamiga/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libamiga.a : $(addprefix obj/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib/soft-float/libamiga.a : $(addprefix obj/soft-float/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib/small-data/libamiga.a : $(addprefix obj/small-data/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib/baserel/libamiga.a : $(addprefix obj/baserel/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib.threadsafe/libamiga.a : $(addprefix obj.threadsafe/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libamiga.a : $(addprefix obj.threadsafe/soft-float/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libamiga.a : $(addprefix obj.threadsafe/small-data/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libamiga.a : $(addprefix obj.threadsafe/baserel/libamiga/,$(AMIGA_LIB))
@$(MAKELIB)

444
library/libc.gmk Executable file
View File

@@ -0,0 +1,444 @@
#
# $Id: libc.gmk,v 1.8 2010-08-21 11:37:03 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libc.a \
lib/soft-float/libc.a \
lib/small-data/libc.a \
lib/baserel/libc.a \
lib.threadsafe/libc.a \
lib.threadsafe/soft-float/libc.a \
lib.threadsafe/small-data/libc.a \
lib.threadsafe/baserel/libc.a
##############################################################################
C_LIB := \
c.lib_rev.o \
ctype_isalnum.o \
ctype_isalpha.o \
ctype_isascii.o \
ctype_isblank.o \
ctype_iscntrl.o \
ctype_isdigit.o \
ctype_isgraph.o \
ctype_islower.o \
ctype_isprint.o \
ctype_ispunct.o \
ctype_isspace.o \
ctype_isupper.o \
ctype_isxdigit.o \
ctype_table.o \
ctype_tolower.o \
ctype_toupper.o \
dirent_closedir.o \
dirent_opendir.o \
dirent_readdir.o \
dirent_rewinddir.o \
errno_data.o \
fcntl_close.o \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_get_default_file.o \
fcntl_lock.o \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
ftw_ftw.o \
ftw_nftw.o \
inttypes_imaxdiv.o \
inttypes_imaxabs.o \
inttypes_strtoimax.o \
inttypes_strtoumax.o \
libgen_basename.o \
libgen_dirname.o \
locale_init_exit.o \
locale_localeconv.o \
locale_open_locale.o \
locale_setlocale.o \
mount_convertinfo.o \
mount_fstatfs.o \
mount_statfs.o \
profile_profil.o \
signal_checkabort.o \
signal_data.o \
signal_kill.o \
signal_mask.o \
signal_raise.o \
signal_sigaddset.o \
signal_sigblock.o \
signal_sigemptyset.o \
signal_sigmask.o \
signal_signal.o \
signal_sigprocmask.o \
signal_sigsetmask.o \
stat_chmod.o \
stat_convertfileinfo.o \
stat_fchmod.o \
stat_fstat.o \
stat_lstat.o \
stat_lock.o \
stat_mkdir.o \
stat_rmdir.o \
stat_stat.o \
stat_umask.o \
stdio_asprintf.o \
stdio_change_fd_action.o \
stdio_change_fd_user_data.o \
stdio_clearerr.o \
stdio_dropiobreadbuffer.o \
stdio_duplicate_fd.o \
stdio_examine_fh.o \
stdio_fclose.o \
stdio_fdhookentry.o \
stdio_feof.o \
stdio_ferror.o \
stdio_fflush.o \
stdio_fgetc.o \
stdio_fgetpos.o \
stdio_fgets.o \
stdio_filliobreadbuffer.o \
stdio_findvacantfdentry.o \
stdio_findvacantiobentry.o \
stdio_flockfile.o \
stdio_flush.o \
stdio_flush_all_files.o \
stdio_flushiobwritebuffer.o \
stdio_fopen.o \
stdio_fprintf.o \
stdio_fputc.o \
stdio_fputs.o \
stdio_fread.o \
stdio_freopen.o \
stdio_fscanf.o \
stdio_fseek.o \
stdio_fseeko.o \
stdio_fsetpos.o \
stdio_ftell.o \
stdio_ftello.o \
stdio_ftrylockfile.o \
stdio_funlockfile.o \
stdio_fwrite.o \
stdio_getc.o \
stdio_getc_unlocked.o \
stdio_getchar.o \
stdio_getchar_unlocked.o \
stdio_gets.o \
stdio_get_fd.o \
stdio_get_file_descriptor.o \
stdio_growfdtable.o \
stdio_growiobtable.o \
stdio_grow_file.o \
stdio_initializefd.o \
stdio_initializeiob.o \
stdio_init_exit.o \
stdio_file_init.o \
stdio_iobhookentry.o \
stdio_lock.o \
stdio_locksemaphorename.o \
stdio_nostdio.o \
stdio_openiob.o \
stdio_parent_of_fh.o \
stdio_perror.o \
stdio_popen.o \
stdio_printf.o \
stdio_putc.o \
stdio_putc_unlocked.o \
stdio_putchar.o \
stdio_putchar_unlocked.o \
stdio_puts.o \
stdio_remove.o \
stdio_remove_fd_alias.o \
stdio_rename.o \
stdio_resolve_fd_file.o \
stdio_rewind.o \
stdio_scanf.o \
stdio_setbuf.o \
stdio_setvbuf.o \
stdio_snprintf.o \
stdio_sprintf.o \
stdio_sscanf.o \
stdio_sscanf_hook_entry.o \
stdio_tmpfile.o \
stdio_tmpnam.o \
stdio_translateioerror.o \
stdio_ungetc.o \
stdio_unlockfile.o \
stdio_vasprintf.o \
stdio_vasprintf_hook_entry.o \
stdio_vfprintf.o \
stdio_vfscanf.o \
stdio_vsscanf.o \
stdio_vscanf.o \
stdio_vprintf.o \
stdio_vsnprintf.o \
stdio_vsnprintf_hook_entry.o \
stdio_vsprintf.o \
stdio_vsprintf_hook_entry.o \
stdlib_abort.o \
stdlib_abs.o \
stdlib_alloca.o \
stdlib_alloca_cleanup.o \
stdlib_alloca_trap.o \
stdlib_assertion_failure.o \
stdlib_atexit.o \
stdlib_atoi.o \
stdlib_atol.o \
stdlib_atoll.o \
stdlib_bsearch.o \
stdlib_calloc.o \
stdlib_checkdetach.o \
stdlib_constructor.o \
stdlib_constructor_begin.o \
stdlib_default_pool_size.o \
stdlib_default_puddle_size.o \
stdlib_destructor.o \
stdlib_detach.o \
stdlib_disablerequesters.o \
stdlib_div.o \
stdlib_divsi3.o \
stdlib_divsi4.o \
stdlib_dlclose.o \
stdlib_dlerror.o \
stdlib_dlopen.o \
stdlib_dlsym.o \
stdlib_dosbase.o \
stdlib_exit.o \
stdlib_free.o \
stdlib_getdefstacksize.o \
stdlib_getenv.o \
stdlib_getmemstats.o \
stdlib_getsp.o \
stdlib_get_errno.o \
stdlib_isresident.o \
stdlib_labs.o \
stdlib_llabs.o \
stdlib_ldiv.o \
stdlib_lldiv.o \
stdlib_lib_main.o \
stdlib_lib_startup.o \
stdlib_machine_test.o \
stdlib_main.o \
stdlib_main_stub.o \
stdlib_malloc.o \
stdlib_math.o \
stdlib_mkdtemp.o \
stdlib_mkstemp.o \
stdlib_mktemp.o \
stdlib_modsi3.o \
stdlib_mulsi3.o \
stdlib_never_free.o \
stdlib_osliberror.o \
stdlib_oslibversion.o \
stdlib_priority.o \
stdlib_process_name.o \
stdlib_program_name.o \
stdlib_putenv.o \
stdlib_qsort.o \
stdlib_rand.o \
stdlib_rand_r.o \
stdlib_realloc.o \
stdlib_red_black.o \
stdlib_resetmemstats.o \
stdlib_semaphore.o \
stdlib_setenv.o \
stdlib_setjmp.o \
stdlib_set_errno.o \
stdlib_set_process_window.o \
stdlib_shared_objs.o \
stdlib_shell_escape.o \
stdlib_showerror.o \
stdlib_srand.o \
stdlib_stackargbytes.o \
stdlib_stackcheck.o \
stdlib_stackoverflow.o \
stdlib_stacksafezone.o \
stdlib_stacksize.o \
stdlib_stack_usage.o \
stdlib_arg.o \
stdlib_stdio_window_spec.o \
stdlib_strtol.o \
stdlib_strtoll.o \
stdlib_strtoul.o \
stdlib_strtoull.o \
stdlib_swapstack.o \
stdlib_sysbase.o \
stdlib_system.o \
stdlib_termination_message.o \
stdlib_threshold.o \
stdlib_utilitybase.o \
stdlib_udivsi3.o \
stdlib_udivsi4.o \
stdlib_umodsi3.o \
stdlib_unsetenv.o \
strings_ffs.o \
strings_strcasecmp.o \
strings_strncasecmp.o \
string_bcmp.o \
string_bcopy.o \
string_bzero.o \
string_index.o \
string_memchr.o \
string_memcmp.o \
string_memcpy.o \
string_memmove.o \
string_memset.o \
string_rindex.o \
string_strcat.o \
string_strchr.o \
string_strcmp.o \
string_strcoll.o \
string_strcpy.o \
string_strcspn.o \
string_strdup.o \
string_strerror.o \
string_strerror_r.o \
string_strlcat.o \
string_strlcpy.o \
string_strlen.o \
string_strncat.o \
string_strncmp.o \
string_strncpy.o \
string_strpbrk.o \
string_strrchr.o \
string_strspn.o \
string_strstr.o \
string_strtok.o \
string_strtok_r.o \
string_strxfrm.o \
time_asctime.o \
time_asctime_r.o \
time_clock.o \
time_converttime.o \
time_convert_datestamp.o \
time_convert_time.o \
time_ctime.o \
time_ctime_r.o \
time_data.o \
time_days_per_date.o \
time_gettimeofday.o \
time_gmtime.o \
time_gmtime_r.o \
time_localtime.o \
time_localtime_r.o \
time_mktime.o \
time_numbertostring.o \
time_strftime.o \
time_time.o \
time_weekday.o \
uio_readv.o \
uio_writev.o \
ulimit_ulimit.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_currentpathname.o \
unistd_dup.o \
unistd_dup2.o \
unistd_fchown.o \
unistd_fdatasync.o \
unistd_fdopen.o \
unistd_fileno.o \
unistd_fsync.o \
unistd_ftruncate.o \
unistd_getcwd.o \
unistd_getopt.o \
unistd_getpid.o \
unistd_init_exit.o \
unistd_isatty.o \
unistd_lchown.o \
unistd_link.o \
unistd_lockf.o \
unistd_readlink.o \
unistd_realpath.o \
unistd_sleep.o \
unistd_symlink.o \
unistd_sync_fd.o \
unistd_timer.o \
unistd_time_delay.o \
unistd_truncate.o \
unistd_unlink.o \
unistd_usleep.o \
utime_utime.o \
utsname_uname.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj/soft-float/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj/small-data/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj/baserel/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj.threadsafe/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj.threadsafe/soft-float/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj.threadsafe/small-data/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
obj.threadsafe/baserel/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h
##############################################################################
obj/libc/%.o : CFLAGS += $(LARGEDATA)
obj/libc/%.o : %.c
@$(COMPILE)
obj/soft-float/libc/%.o : CFLAGS += $(SOFTFLOAT)
obj/soft-float/libc/%.o : %.c
@$(COMPILE)
obj/small-data/libc/%.o : CFLAGS += $(SMALLDATA)
obj/small-data/libc/%.o : %.c
@$(COMPILE)
obj/baserel/libc/%.o : CFLAGS += $(BASEREL)
obj/baserel/libc/%.o : %.c
@$(COMPILE)
obj.threadsafe/libc/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA)
obj.threadsafe/libc/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libc/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
obj.threadsafe/soft-float/libc/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libc/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA)
obj.threadsafe/small-data/libc/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libc/%.o : CFLAGS += $(THREADSAFE) $(BASEREL)
obj.threadsafe/baserel/libc/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libc.a : $(addprefix obj/libc/,$(C_LIB))
@$(MAKELIB)
lib/soft-float/libc.a : $(addprefix obj/soft-float/libc/,$(C_LIB))
@$(MAKELIB)
lib/small-data/libc.a : $(addprefix obj/small-data/libc/,$(C_LIB))
@$(MAKELIB)
lib/baserel/libc.a : $(addprefix obj/baserel/libc/,$(C_LIB))
@$(MAKELIB)
lib.threadsafe/libc.a : $(addprefix obj.threadsafe/libc/,$(C_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libc.a : $(addprefix obj.threadsafe/soft-float/libc/,$(C_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libc.a : $(addprefix obj.threadsafe/small-data/libc/,$(C_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libc.a : $(addprefix obj.threadsafe/baserel/libc/,$(C_LIB))
@$(MAKELIB)

125
library/libdebug.gmk Executable file
View File

@@ -0,0 +1,125 @@
#
# $Id: libdebug.gmk,v 1.1 2006-09-17 17:37:27 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libdebug.a \
lib/soft-float/libdebug.a \
lib/small-data/libdebug.a \
lib/baserel/libdebug.a \
lib.threadsafe/libdebug.a \
lib.threadsafe/soft-float/libdebug.a \
lib.threadsafe/small-data/libdebug.a \
lib.threadsafe/baserel/libdebug.a
##############################################################################
DEBUG_LIB = \
debug.lib_rev.o \
debug.o \
debug_cmpstrexec.o \
debug_kcmpstr.o \
debug_kdofmt.o \
debug_kgetc.o \
debug_kgetch1.o \
debug_kgetch2.o \
debug_kgetchar1.o \
debug_kgetchar2.o \
debug_kgetnum1.o \
debug_kgetnum2.o \
debug_kmaygetch.o \
debug_kmaygetchar.o \
debug_kprintf1.o \
debug_kprintf2.o \
debug_kputc.o \
debug_kputch1.o \
debug_kputch2.o \
debug_kputchar1.o \
debug_kputchar2.o \
debug_kputfmt.o \
debug_kputs1.o \
debug_kputs2.o \
debug_kputstr1.o \
debug_kputstr2.o \
debug_kvprintf1.o \
debug_kvprintf2.o \
debug_level.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj/soft-float/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj/small-data/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj/baserel/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj.threadsafe/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj.threadsafe/soft-float/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj.threadsafe/small-data/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
obj.threadsafe/baserel/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h
##############################################################################
obj/libdebug/%.o : CFLAGS += $(LARGEDATA)
obj/libdebug/%.o : %.c
@$(COMPILE)
obj/soft-float/libdebug/%.o : CFLAGS += $(SOFTFLOAT)
obj/soft-float/libdebug/%.o : %.c
@$(COMPILE)
obj/small-data/libdebug/%.o : CFLAGS += $(SMALLDATA)
obj/small-data/libdebug/%.o : %.c
@$(COMPILE)
obj/baserel/libdebug/%.o : CFLAGS += $(BASEREL)
obj/baserel/libdebug/%.o : %.c
@$(COMPILE)
obj.threadsafe/libdebug/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA)
obj.threadsafe/libdebug/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libdebug/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
obj.threadsafe/soft-float/libdebug/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libdebug/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA)
obj.threadsafe/small-data/libdebug/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libdebug/%.o : CFLAGS += $(THREADSAFE) $(BASEREL)
obj.threadsafe/baserel/libdebug/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libdebug.a : $(addprefix obj/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib/soft-float/libdebug.a : $(addprefix obj/soft-float/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib/small-data/libdebug.a : $(addprefix obj/small-data/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib/baserel/libdebug.a : $(addprefix obj/baserel/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib.threadsafe/libdebug.a : $(addprefix obj.threadsafe/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libdebug.a : $(addprefix obj.threadsafe/soft-float/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libdebug.a : $(addprefix obj.threadsafe/small-data/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libdebug.a : $(addprefix obj.threadsafe/baserel/libdebug/,$(DEBUG_LIB))
@$(MAKELIB)

View File

@@ -1,5 +1,5 @@
/*
* $Id: libgen_basename.c,v 1.4 2006-01-08 12:04:22 obarthel Exp $
* $Id: libgen_basename.c,v 1.8 2006-10-02 07:15:37 obarthel Exp $
*
* :ts=4
*
@@ -33,6 +33,7 @@
#include <string.h>
#include <libgen.h>
#include <stdio.h>
/****************************************************************************/
@@ -45,9 +46,12 @@
/****************************************************************************/
char *
basename(char *path)
basename(const char *path)
{
static char new_path[MAXPATHLEN];
const char * str;
char * result;
size_t len;
ENTER();
@@ -56,41 +60,63 @@ basename(char *path)
else
SHOWSTRING(path);
/* An empty path always comes out as the "current directory". */
if(path == NULL || path[0] == '\0')
{
result = ".";
str = ".";
len = 1;
}
else
{
int len,i;
/* Strip all trailing slashes. */
len = strlen(path);
while(len > 0 && path[len-1] == '/')
len--;
/* Is there anything left? */
if(len > 0)
{
result = path;
size_t i;
path[len] = '\0';
/* Return what follows the last slash in the path. That's
usually a file or directory name. */
str = path;
for(i = len-1 ; i >= 0 ; i--)
for(i = len - 1 ; ; i--)
{
if(path[i] == '/')
{
result = &path[i+1];
len -= i+1;
str = &path[i+1];
break;
}
if(i == 0)
break;
}
}
else
/* If the whole operation produced an empty string, then it
means that we dealt with a string which consisted entirely
of slashes. And that's what we will return. */
if(len == 0)
{
result = "/";
str = "/";
len = 1;
}
}
SHOWSTRING(result);
/* Truncate the path name we can return. This function always returns
a valid pointer rather than NULL because some software expects it
to do so (I blame the specifications). */
if(len >= sizeof(new_path))
len = sizeof(new_path)-1;
memcpy(new_path,str,len);
new_path[len] = '\0';
result = new_path;
RETURN(result);
return(result);

View File

@@ -1,5 +1,5 @@
/*
* $Id: libgen_dirname.c,v 1.4 2006-01-08 12:04:23 obarthel Exp $
* $Id: libgen_dirname.c,v 1.8 2006-10-02 07:15:37 obarthel Exp $
*
* :ts=4
*
@@ -33,6 +33,7 @@
#include <string.h>
#include <libgen.h>
#include <stdio.h>
/****************************************************************************/
@@ -45,9 +46,12 @@
/****************************************************************************/
char *
dirname(char *path)
dirname(const char *path)
{
static char new_path[MAXPATHLEN];
const char * str;
char * result;
size_t len;
ENTER();
@@ -56,42 +60,57 @@ dirname(char *path)
else
SHOWSTRING(path);
if(path == NULL || path[0] == '\0')
{
result = ".";
}
else
{
int len,i;
/* An empty path always comes out as the "current directory". */
str = ".";
len = 1;
if(path != NULL && path[0] != '\0')
{
/* Strip all trailing slashes. */
len = strlen(path);
while(len > 0 && path[len-1] == '/')
while(len > 1 && path[len-1] == '/')
len--;
/* Is there anything left? */
if(len > 0)
{
result = ".";
size_t i;
for(i = len-1 ; i >= 0 ; i--)
for(i = len-1 ; ; i--)
{
if(path[i] == '/')
{
path[i] = '\0';
/* Return everything up to, but not including
the last slash in the path. That's usually
the directory name. */
str = path;
len = i;
result = path;
/* If that produces an empty string, it means
that the entire string consists of slash
characters. We'll return only the first. */
if(i == 0)
len++;
break;
}
if(i == 0)
break;
}
}
else
{
result = "/";
}
}
SHOWSTRING(result);
/* Truncate the path name we can return. This function always returns
a valid pointer rather than NULL because some software expects it
to do so (I blame the specifications). */
if(len >= sizeof(new_path))
len = sizeof(new_path)-1;
memcpy(new_path,str,len);
new_path[len] = '\0';
result = new_path;
RETURN(result);
return(result);

265
library/libm.gmk Executable file
View File

@@ -0,0 +1,265 @@
#
# $Id: libm.gmk,v 1.3 2007-01-06 10:09:48 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libm.a \
lib/soft-float/libm.a \
lib/small-data/libm.a \
lib/baserel/libm.a \
lib.threadsafe/libm.a \
lib.threadsafe/soft-float/libm.a \
lib.threadsafe/small-data/libm.a \
lib.threadsafe/baserel/libm.a
##############################################################################
MATH_LIB := \
complex_carg.o \
complex_cargf.o \
complex_cargl.o \
complex_cimag.o \
complex_cimagf.o \
complex_cimagl.o \
complex_conj.o \
complex_conjf.o \
complex_conjl.o \
complex_creal.o \
complex_crealf.o \
complex_creall.o \
fenv_feclearexcept.o \
fenv_fegetenv.o \
fenv_fegetexceptflag.o \
fenv_fegetround.o \
fenv_feholdexcept.o \
fenv_feraiseexcept.o \
fenv_fesetenv.o \
fenv_fesetexceptflag.o \
fenv_fetestexcept.o \
fenv_fetestround.o \
fenv_feupdateenv.o \
math_acos.o \
math_acosf.o \
math_acosh.o \
math_acoshf.o \
math_asin.o \
math_asinf.o \
math_asinh.o \
math_asinhf.o \
math_atan.o \
math_atan2.o \
math_atan2f.o \
math_atanf.o \
math_atanh.o \
math_atanhf.o \
math_cbrt.o \
math_cbrtf.o \
math_ceil.o \
math_ceilf.o \
math_copysign.o \
math_copysignf.o \
math_cos.o \
math_cosf.o \
math_cosh.o \
math_coshf.o \
math_erf.o \
math_erfc.o \
math_erfcf.o \
math_erff.o \
math_exp.o \
math_exp2.o \
math_exp2f.o \
math_expf.o \
math_expm1.o \
math_expm1f.o \
math_fabs.o \
math_fabsf.o \
math_fdim.o \
math_fdimf.o \
math_floor.o \
math_floorf.o \
math_fma.o \
math_fmaf.o \
math_fmax.o \
math_fmaxf.o \
math_fmin.o \
math_fminf.o \
math_fmod.o \
math_fmodf.o \
math_fpclassify.o \
math_frexp.o \
math_frexpf.o \
math_huge_val.o \
math_huge_valf.o \
math_hypot.o \
math_hypotf.o \
math_ilogb.o \
math_ilogbf.o \
math_inf.o \
math_inff.o \
math_init_exit.o \
math_isfinite.o \
math_isunordered.o \
math_kernel_cos.o \
math_kernel_cosf.o \
math_kernel_expm1.o \
math_kernel_rem_pio2.o \
math_kernel_sin.o \
math_kernel_sinf.o \
math_kernel_tan.o \
math_kernel_tanf.o \
math_ldexp.o \
math_ldexpf.o \
math_lgamma.o \
math_lgammaf.o \
math_llrint.o \
math_log.o \
math_log10.o \
math_log10f.o \
math_log1p.o \
math_log1pf.o \
math_log2.o \
math_log2f.o \
math_logb.o \
math_logbf.o \
math_logf.o \
math_lrint.o \
math_lrintf.o \
math_lround.o \
math_lroundf.o \
math_modf.o \
math_modff.o \
math_nan.o \
math_nanf.o \
math_nearbyint.o \
math_nearbyintf.o \
math_nextafter.o \
math_nextafterf.o \
math_pow.o \
math_powf.o \
math_remainder.o \
math_remainderf.o \
math_remquo.o \
math_remquof.o \
math_rem_pio2f.o \
math_rint.o \
math_rintf.o \
math_round.o \
math_roundf.o \
math_scalbn.o \
math_scalbnf.o \
math_signbit.o \
math_sin.o \
math_sinf.o \
math_sinh.o \
math_sinhf.o \
math_sqrt.o \
math_sqrtf.o \
math_tan.o \
math_tanf.o \
math_tanh.o \
math_tanhf.o \
math_tgamma.o \
math_tgammaf.o \
math_trunc.o \
math_truncf.o \
stdio_asprintf.o \
stdio_flush.o \
stdio_flush_all_files.o \
stdio_fprintf.o \
stdio_fscanf.o \
stdio_printf.o \
stdio_scanf.o \
stdio_snprintf.o \
stdio_sprintf.o \
stdio_sscanf.o \
stdio_vasprintf.o \
stdio_vfprintf.o \
stdio_vfscanf.o \
stdio_vsscanf.o \
stdio_vscanf.o \
stdio_vprintf.o \
stdio_vsnprintf.o \
stdio_vsprintf.o \
stdlib_atof.o \
stdlib_strtod.o \
stdlib_strtof.o \
time_difftime.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj/soft-float/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj/small-data/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj/baserel/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj.threadsafe/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj.threadsafe/soft-float/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj.threadsafe/small-data/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
obj.threadsafe/baserel/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h
##############################################################################
obj/libm/%.o : CFLAGS += $(LARGEDATA) -DPPC_FLOATING_POINT_SUPPORT
obj/libm/%.o : %.c
@$(COMPILE)
obj/soft-float/libm/%.o : CFLAGS += $(SOFTFLOAT)
obj/soft-float/libm/%.o : %.c
@$(COMPILE)
obj/small-data/libm/%.o : CFLAGS += $(SMALLDATA) -DPPC_FLOATING_POINT_SUPPORT
obj/small-data/libm/%.o : %.c
@$(COMPILE)
obj/baserel/libm/%.o : CFLAGS += $(BASEREL) -DPPC_FLOATING_POINT_SUPPORT
obj/baserel/libm/%.o : %.c
@$(COMPILE)
obj.threadsafe/libm/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -DPPC_FLOATING_POINT_SUPPORT
obj.threadsafe/libm/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libm/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
obj.threadsafe/soft-float/libm/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libm/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -DPPC_FLOATING_POINT_SUPPORT
obj.threadsafe/small-data/libm/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libm/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -DPPC_FLOATING_POINT_SUPPORT
obj.threadsafe/baserel/libm/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libm.a : $(addprefix obj/libm/,$(MATH_LIB))
@$(MAKELIB)
lib/soft-float/libm.a : $(addprefix obj/soft-float/libm/,$(MATH_LIB))
@$(MAKELIB)
lib/small-data/libm.a : $(addprefix obj/small-data/libm/,$(MATH_LIB))
@$(MAKELIB)
lib/baserel/libm.a : $(addprefix obj/baserel/libm/,$(MATH_LIB))
@$(MAKELIB)
lib.threadsafe/libm.a : $(addprefix obj.threadsafe/libm/,$(MATH_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libm.a : $(addprefix obj.threadsafe/soft-float/libm/,$(MATH_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libm.a : $(addprefix obj.threadsafe/small-data/libm/,$(MATH_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libm.a : $(addprefix obj.threadsafe/baserel/libm/,$(MATH_LIB))
@$(MAKELIB)

174
library/libnet.gmk Executable file
View File

@@ -0,0 +1,174 @@
#
# $Id: libnet.gmk,v 1.1 2006-09-17 17:37:27 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libnet.a \
lib/soft-float/libnet.a \
lib/small-data/libnet.a \
lib/baserel/libnet.a \
lib.threadsafe/libnet.a \
lib.threadsafe/soft-float/libnet.a \
lib.threadsafe/small-data/libnet.a \
lib.threadsafe/baserel/libnet.a
##############################################################################
NET_LIB := \
net.lib_rev.o \
socket_accept.o \
socket_bind.o \
socket_check_daemon.o \
socket_connect.o \
socket_gethostbyaddr.o \
socket_gethostbyname.o \
socket_gethostid.o \
socket_gethostname.o \
socket_getnetbyaddr.o \
socket_getnetbyname.o \
socket_getpeername.o \
socket_getprotobyname.o \
socket_getprotobynumber.o \
socket_getservbyname.o \
socket_getservbyport.o \
socket_getsockname.o \
socket_getsockopt.o \
socket_get_descriptor.o \
socket_inet_addr.o \
socket_inet_aton.o \
socket_inet_lnaof.o \
socket_inet_makeaddr.o \
socket_inet_netof.o \
socket_inet_network.o \
socket_inet_ntoa.o \
socket_init_exit.o \
socket_ioctl.o \
socket_isdaemon.o \
socket_listen.o \
socket_obtain_daemon.o \
socket_recv.o \
socket_recvfrom.o \
socket_recvmsg.o \
socket_select_signal.o \
socket_select.o \
socket_wait_select.o \
socket_send.o \
socket_sendmsg.o \
socket_sendto.o \
socket_setsockopt.o \
socket_shutdown.o \
socket_socket.o \
socket_hook_entry.o \
socket_hstrerror.o \
socket_get_h_errno.o \
socket_set_h_errno.o \
systeminfo_sysinfo.o \
stat_umask.o \
usergroup_crypt.o \
usergroup_data.o \
usergroup_endgrent.o \
usergroup_endpwent.o \
usergroup_getegid.o \
usergroup_geteuid.o \
usergroup_getgid.o \
usergroup_getgrent.o \
usergroup_getgrgid.o \
usergroup_getgrnam.o \
usergroup_getgroups.o \
usergroup_getpass.o \
usergroup_getpwent.o \
usergroup_getpwnam.o \
usergroup_getpwuid.o \
usergroup_getuid.o \
usergroup_initgroups.o \
usergroup_init_exit.o \
usergroup_rootmode.o \
usergroup_setegid.o \
usergroup_seteuid.o \
usergroup_setgid.o \
usergroup_setgrent.o \
usergroup_setgroups.o \
usergroup_setpwent.o \
usergroup_setregid.o \
usergroup_setreuid.o \
usergroup_setsid.o \
usergroup_setuid.o \
utsname_uname.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj/soft-float/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj/small-data/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj/baserel/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj.threadsafe/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj.threadsafe/soft-float/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj.threadsafe/small-data/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
obj.threadsafe/baserel/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h
##############################################################################
obj/libnet/%.o : CFLAGS += $(LARGEDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj/libnet/%.o : %.c
@$(COMPILE)
obj/soft-float/libnet/%.o : CFLAGS += $(SOFTFLOAT) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj/soft-float/libnet/%.o : %.c
@$(COMPILE)
obj/small-data/libnet/%.o : CFLAGS += $(SMALLDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj/small-data/libnet/%.o : %.c
@$(COMPILE)
obj/baserel/libnet/%.o : CFLAGS += $(BASEREL) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj/baserel/libnet/%.o : %.c
@$(COMPILE)
obj.threadsafe/libnet/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj.threadsafe/libnet/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libnet/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj.threadsafe/soft-float/libnet/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libnet/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj.threadsafe/small-data/libnet/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libnet/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT
obj.threadsafe/baserel/libnet/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libnet.a : $(addprefix obj/libnet/,$(NET_LIB))
@$(MAKELIB)
lib/soft-float/libnet.a : $(addprefix obj/soft-float/libnet/,$(NET_LIB))
@$(MAKELIB)
lib/small-data/libnet.a : $(addprefix obj/small-data/libnet/,$(NET_LIB))
@$(MAKELIB)
lib/baserel/libnet.a : $(addprefix obj/baserel/libnet/,$(NET_LIB))
@$(MAKELIB)
lib.threadsafe/libnet.a : $(addprefix obj.threadsafe/libnet/,$(NET_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libnet.a : $(addprefix obj.threadsafe/soft-float/libnet/,$(NET_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libnet.a : $(addprefix obj.threadsafe/small-data/libnet/,$(NET_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libnet.a : $(addprefix obj.threadsafe/baserel/libnet/,$(NET_LIB))
@$(MAKELIB)

132
library/libprofile.gmk Executable file
View File

@@ -0,0 +1,132 @@
#
# $Id: libprofile.gmk,v 1.1 2006-09-17 17:37:27 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libprofile.a \
lib/soft-float/libprofile.a \
lib/small-data/libprofile.a \
lib/baserel/libprofile.a \
lib.threadsafe/libprofile.a \
lib.threadsafe/soft-float/libprofile.a \
lib.threadsafe/small-data/libprofile.a \
lib.threadsafe/baserel/libprofile.a
##############################################################################
PROFILE_LIB = \
profile__mcount.o \
profile_gmon.o \
profile_mcount.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj/soft-float/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj/small-data/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj/baserel/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj.threadsafe/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj.threadsafe/soft-float/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj.threadsafe/small-data/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
obj.threadsafe/baserel/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h
##############################################################################
obj/libprofile/%.o : AFLAGS += $(LARGEDATA)
obj/libprofile/%.o : %.S
@$(ASSEMBLE)
obj/soft-float/libprofile/%.o : AFLAGS += $(SOFTFLOAT)
obj/soft-float/libprofile/%.o : %.S
@$(ASSEMBLE)
obj/small-data/libprofile/%.o : AFLAGS += $(SMALLDATA)
obj/small-data/libprofile/%.o : %.S
@$(ASSEMBLE)
obj/baserel/libprofile/%.o : AFLAGS += $(BASEREL)
obj/baserel/libprofile/%.o : %.S
@$(ASSEMBLE)
obj.threadsafe/libprofile/%.o : AFLAGS += $(LARGEDATA)
obj.threadsafe/libprofile/%.o : %.S
@$(ASSEMBLE)
obj.threadsafe/soft-float/libprofile/%.o : AFLAGS += $(SOFTFLOAT)
obj.threadsafe/soft-float/libprofile/%.o : %.S
@$(ASSEMBLE)
obj.threadsafe/small-data/libprofile/%.o : AFLAGS += $(SMALLDATA)
obj.threadsafe/small-data/libprofile/%.o : %.S
@$(ASSEMBLE)
obj.threadsafe/baserel/libprofile/%.o : AFLAGS += $(BASEREL)
obj.threadsafe/baserel/libprofile/%.o : %.S
@$(ASSEMBLE)
##############################################################################
obj/libprofile/%.o : CFLAGS += $(LARGEDATA)
obj/libprofile/%.o : %.c
@$(COMPILE)
obj/soft-float/libprofile/%.o : CFLAGS += $(SOFTFLOAT)
obj/soft-float/libprofile/%.o : %.c
@$(COMPILE)
obj/small-data/libprofile/%.o : CFLAGS += $(SMALLDATA)
obj/small-data/libprofile/%.o : %.c
@$(COMPILE)
obj/baserel/libprofile/%.o : CFLAGS += $(BASEREL)
obj/baserel/libprofile/%.o : %.c
@$(COMPILE)
obj.threadsafe/libprofile/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA)
obj.threadsafe/libprofile/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libprofile/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
obj.threadsafe/soft-float/libprofile/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libprofile/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA)
obj.threadsafe/small-data/libprofile/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libprofile/%.o : CFLAGS += $(THREADSAFE) $(BASEREL)
obj.threadsafe/baserel/libprofile/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libprofile.a : $(addprefix obj/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib/soft-float/libprofile.a : $(addprefix obj/soft-float/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib/small-data/libprofile.a : $(addprefix obj/small-data/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib/baserel/libprofile.a : $(addprefix obj/baserel/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib.threadsafe/libprofile.a : $(addprefix obj.threadsafe/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libprofile.a : $(addprefix obj.threadsafe/soft-float/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libprofile.a : $(addprefix obj.threadsafe/small-data/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libprofile.a : $(addprefix obj.threadsafe/baserel/libprofile/,$(PROFILE_LIB))
@$(MAKELIB)

203
library/libunix.gmk Executable file
View File

@@ -0,0 +1,203 @@
#
# $Id: libunix.gmk,v 1.4 2010-08-21 10:59:34 obarthel Exp $
#
# :ts=8
#
# -*- mode: makefile; -*-
##############################################################################
LIBS += \
lib/libunix.a \
lib/soft-float/libunix.a \
lib/small-data/libunix.a \
lib/baserel/libunix.a \
lib.threadsafe/libunix.a \
lib.threadsafe/soft-float/libunix.a \
lib.threadsafe/small-data/libunix.a \
lib.threadsafe/baserel/libunix.a
##############################################################################
UNIX_LIB := \
unix.lib_rev.o \
dirent_closedir.o \
dirent_rewinddir.o \
dirent_opendir.o \
dirent_readdir.o \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_open.o \
fcntl_get_default_file.o \
getopt_getopt_long.o \
mount_convertinfo.o \
mount_statfs.o \
resource_getrlimit.o \
resource_setrlimit.o \
stat_chmod.o \
stat_fstat.o \
stat_lstat.o \
stat_lock.o \
stat_mkdir.o \
stat_rmdir.o \
stat_stat.o \
stdio_ctermid.o \
stdio_fdhookentry.o \
stdio_fflush.o \
stdio_fopen.o \
stdio_file_init.o \
stdio_init_exit.o \
stdio_locksemaphorename.o \
stdio_openiob.o \
stdio_popen.o \
stdio_record_locking.o \
stdio_remove.o \
stdio_rename.o \
stdlib_alloca.o \
stdlib_alloca_cleanup.o \
stdlib_alloca_trap.o \
stdlib_arg.o \
stdlib_dlopen.o \
stdlib_expand_wildcard.o \
stdlib_expand_wildcard_check.o \
stdlib_getmemstats.o \
stdlib_main.o \
stdlib_main_stub.o \
stdlib_mkdtemp.o \
stdlib_mkstemp.o \
stdlib_mktemp.o \
stdlib_malloc.o \
stdlib_realloc.o \
stdlib_resetmemstats.o \
stdlib_system.o \
systeminfo_sysinfo.o \
termios_cfgetispeed.o \
termios_cfgetospeed.o \
termios_cfmakeraw.o \
termios_cfsetispeed.o \
termios_cfsetospeed.o \
termios_console_fdhookentry.o \
termios_openserial.o \
termios_tcdrain.o \
termios_tcflow.o \
termios_tcflush.o \
termios_tcgetattr.o \
termios_tcsendbreak.o \
termios_tcsetattr.o \
timeb_ftime.o \
uio_readv.o \
uio_writev.o \
unistd_access.o \
unistd_chdir.o \
unistd_chdir_exit.o \
unistd_chown.o \
unistd_common_pathconf.o \
unistd_def_path.o \
unistd_def_path_delimiter.o \
unistd_environ.o \
unistd_execl.o \
unistd_execle.o \
unistd_execlp.o \
unistd_execv.o \
unistd_execve.o \
unistd_execve_env_exit.o \
unistd_execve_env_init.o \
unistd_execve_exit.o \
unistd_execvp.o \
unistd_fpathconf.o \
unistd_getcwd.o \
unistd_lchown.o \
unistd_link.o \
unistd_lockf.o \
unistd_pathconf.o \
unistd_readlink.o \
unistd_realpath.o \
unistd_restorepathname.o \
unistd_setcurrentpath.o \
unistd_strip_double_slash.o \
unistd_symlink.o \
unistd_translatea2u.o \
unistd_translaterel.o \
unistd_translateu2a.o \
unistd_truncate.o \
unistd_ttyname.o \
unistd_ttyname_r.o \
unistd_unix_path_semantics.o \
unistd_unlink.o \
unistd_unlink_retries.o \
unistd_wildcard_expand.o \
utime_utime.o
##############################################################################
# Dependencies to rebuild if the library version changes
obj/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj/soft-float/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj/small-data/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj/baserel/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj.threadsafe/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj.threadsafe/soft-float/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj.threadsafe/small-data/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
obj.threadsafe/baserel/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h
##############################################################################
obj/libunix/%.o : CFLAGS += $(LARGEDATA) -DUNIX_PATH_SEMANTICS
obj/libunix/%.o : %.c
@$(COMPILE)
obj/soft-float/libunix/%.o : CFLAGS += $(SOFTFLOAT) -DUNIX_PATH_SEMANTICS
obj/soft-float/libunix/%.o : %.c
@$(COMPILE)
obj/small-data/libunix/%.o : CFLAGS += $(SMALLDATA) -DUNIX_PATH_SEMANTICS
obj/small-data/libunix/%.o : %.c
@$(COMPILE)
obj/baserel/libunix/%.o : CFLAGS += $(BASEREL) -DUNIX_PATH_SEMANTICS
obj/baserel/libunix/%.o : %.c
@$(COMPILE)
obj.threadsafe/libunix/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -DUNIX_PATH_SEMANTICS
obj.threadsafe/libunix/%.o : %.c
@$(COMPILE)
obj.threadsafe/soft-float/libunix/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -DUNIX_PATH_SEMANTICS
obj.threadsafe/soft-float/libunix/%.o : %.c
@$(COMPILE)
obj.threadsafe/small-data/libunix/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -DUNIX_PATH_SEMANTICS
obj.threadsafe/small-data/libunix/%.o : %.c
@$(COMPILE)
obj.threadsafe/baserel/libunix/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -DUNIX_PATH_SEMANTICS
obj.threadsafe/baserel/libunix/%.o : %.c
@$(COMPILE)
##############################################################################
lib/libunix.a : $(addprefix obj/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib/soft-float/libunix.a : $(addprefix obj/soft-float/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib/small-data/libunix.a : $(addprefix obj/small-data/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib/baserel/libunix.a : $(addprefix obj/baserel/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib.threadsafe/libunix.a : $(addprefix obj.threadsafe/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib.threadsafe/soft-float/libunix.a : $(addprefix obj.threadsafe/soft-float/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib.threadsafe/small-data/libunix.a : $(addprefix obj.threadsafe/small-data/libunix/,$(UNIX_LIB))
@$(MAKELIB)
lib.threadsafe/baserel/libunix.a : $(addprefix obj.threadsafe/baserel/libunix/,$(UNIX_LIB))
@$(MAKELIB)

View File

@@ -1,5 +1,5 @@
/*
* $Id: locale_localeconv.c,v 1.5 2006-01-08 12:04:23 obarthel Exp $
* $Id: locale_localeconv.c,v 1.7 2006-09-25 14:51:15 obarthel Exp $
*
* :ts=4
*
@@ -54,18 +54,18 @@ localeconv(void)
monetary_locale = __locale_table[LC_MONETARY];
/* This makes up the current locale settings from the various
* components in use.
*/
loc.decimal_point = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_DecimalPoint) : ".";
loc.thousands_sep = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_GroupSeparator) : "";
loc.grouping = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_Grouping) : "";
loc.int_curr_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonIntCS) : "";
loc.currency_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonCS) : "";
loc.mon_decimal_point = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonDecimalPoint) : "";
loc.mon_thousands_sep = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGroupSeparator) : "";
loc.mon_grouping = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGrouping) : "";
loc.positive_sign = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonPositiveSign) : "";
loc.negative_sign = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonNegativeSign) : "";
components in use. */
loc.decimal_point = ((numeric_locale != NULL) ? ((char *)numeric_locale->loc_DecimalPoint) : (char *)".");
loc.thousands_sep = ((numeric_locale != NULL) ? ((char *)numeric_locale->loc_GroupSeparator) : (char *)"");
loc.grouping = ((numeric_locale != NULL) ? ((char *)numeric_locale->loc_Grouping) : (char *)"");
loc.int_curr_symbol = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonIntCS) : (char *)"");
loc.currency_symbol = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonCS) : (char *)"");
loc.mon_decimal_point = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonDecimalPoint) : (char *)"");
loc.mon_thousands_sep = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGroupSeparator) : (char *)"");
loc.mon_grouping = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGrouping) : (char *)"");
loc.positive_sign = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonPositiveSign) : (char *)"");
loc.negative_sign = ((monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonNegativeSign) : (char *)"");
loc.int_frac_digits = (monetary_locale != NULL) ? monetary_locale->loc_MonIntFracDigits : CHAR_MAX;
loc.frac_digits = (monetary_locale != NULL) ? monetary_locale->loc_MonFracDigits : CHAR_MAX;
loc.p_cs_precedes = (monetary_locale != NULL) ? monetary_locale->loc_MonPositiveCSPos : CHAR_MAX;

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "m.lib 1.200"
#define VSTRING "m.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: m.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "m.lib 1.205"
#define VSTRING "m.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: m.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "m881.lib 1.200"
#define VSTRING "m881.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "m881.lib 1.205"
#define VSTRING "m881.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_atan2.c,v 1.8 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_atan2.c,v 1.9 2006-09-22 07:54:24 obarthel Exp $
*
* :ts=4
*
@@ -225,7 +225,7 @@ __atan2(double y,double x)
if( ((ix|((lx|-lx)>>31))>0x7ff00000) || ((iy|((ly|-ly)>>31))>0x7ff00000) ) /* x or y is NaN */
return x+y;
if((hx-0x3ff00000|lx)==0)
if(((hx-0x3ff00000)|lx)==0)
return atan(y); /* x=1.0 */
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_exp.c,v 1.6 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_exp.c,v 1.8 2006-09-22 09:02:51 obarthel Exp $
*
* :ts=4
*
@@ -158,8 +158,8 @@ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
INLINE STATIC double
__exp(double x)
{
double y,hi,lo,c,t;
int k,xsb;
double y,hi=0,lo=0,c,t;
int k=0,xsb;
unsigned int hx;
GET_HIGH_WORD(hx,x);

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_headers.h,v 1.14 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_headers.h,v 1.15 2006-11-13 09:51:53 obarthel Exp $
*
* :ts=4
*
@@ -216,7 +216,6 @@ extern double __kernel_sin(double x, double y, int iy);
extern int __rem_pio2(double x, double *y);
extern double __kernel_tan(double x, double y, int iy);
extern double __expm1(double x);
extern double __scalbn(double x, int n);
extern float __kernel_cosf(float x, float y);
extern float __kernel_sinf(float x, float y, int iy);
extern LONG __rem_pio2f(float x, float *y);

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_kernel_expm1.c,v 1.3 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_kernel_expm1.c,v 1.4 2006-09-22 07:54:24 obarthel Exp $
*
* :ts=4
*
@@ -67,7 +67,7 @@ Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
double __expm1(double x)
{
double y,hi,lo,c,t,e,hxs,hfx,r1;
double y,hi,lo,c=0,t,e,hxs,hfx,r1;
int k,xsb;
unsigned int hx;

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_kernel_rem_pio2.c,v 1.5 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_kernel_rem_pio2.c,v 1.7 2006-11-13 09:51:53 obarthel Exp $
*
* :ts=4
*
@@ -55,7 +55,7 @@ static const double PIo2[] = {
1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
3.28200341580791294123e422, /* 0x3B78CC51, 0x60000000 */
3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
@@ -102,7 +102,7 @@ recompute:
}
/* compute n */
z = __scalbn(z,(int)q0); /* actual value of z */
z = scalbn(z,(int)q0); /* actual value of z */
z -= 8.0*floor(z*0.125); /* trim off integer >= 8 */
n = (int) z;
z -= (double)n;
@@ -135,7 +135,7 @@ recompute:
}
if(ih==2) {
z = one - z;
if(carry!=0) z -= __scalbn(one,(int)q0);
if(carry!=0) z -= scalbn(one,(int)q0);
}
}
@@ -161,7 +161,7 @@ recompute:
jz -= 1; q0 -= 24;
while(iq[jz]==0) { jz--; q0-=24;}
} else { /* break z into 24-bit if necessary */
z = __scalbn(z,-(int)q0);
z = scalbn(z,-(int)q0);
if(z>=two24) {
fw = (double)((int)(twon24*z));
iq[jz] = (int)(z-two24*fw);
@@ -171,7 +171,7 @@ recompute:
}
/* convert integer "bit" chunk to floating-point value */
fw = __scalbn(one,(int)q0);
fw = scalbn(one,(int)q0);
for(i=jz;i>=0;i--) {
q[i] = fw*(double)iq[i]; fw*=twon24;
}
@@ -331,7 +331,7 @@ int __rem_pio2(double x, double *y)
}
/* keep the compiler happy */
z = 0;
/* set z = __scalbn(|x|,ilogb(x)-23) */
/* set z = scalbn(|x|,ilogb(x)-23) */
GET_LOW_WORD(low,x);
SET_LOW_WORD(z,low);
e0 = (int)((ix>>20)-1046); /* e0 = ilogb(z)-23; */

128
library/math_llrint.c Normal file
View File

@@ -0,0 +1,128 @@
/*
* $Id: math_llrint.c,v 1.1 2007-01-06 10:09:48 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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)
/****************************************************************************/
/* Adding a double, x, to 2^52 will cause the result to be rounded based on
the fractional part of x, according to the implementation's current rounding
mode. 2^52 is the smallest double that can be represented using all 52 significant
digits. */
static const double TWO52[2]={
4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
-4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
};
/****************************************************************************/
long long int
llrint(double x)
{
LONG i0,j0,sx;
ULONG i1;
double t;
volatile double w;
long long int result;
EXTRACT_WORDS(i0,i1,x);
/* Extract sign bit. */
sx = (i0>>31)&1;
/* Extract exponent field. */
j0 = ((i0 & 0x7ff00000) >> 20) - 1023;
if(j0 < 20)
{
if(j0 < -1)
return 0;
else
{
w = TWO52[sx] + x;
t = w - TWO52[sx];
GET_HIGH_WORD(i0, t);
/* Detect the all-zeros representation of plus and
minus zero, which fails the calculation below. */
if ((i0 & ~(1 << 31)) == 0)
return 0;
j0 = ((i0 & 0x7ff00000) >> 20) - 1023;
i0 &= 0x000fffff;
i0 |= 0x00100000;
result = i0 >> (20 - j0);
}
}
else if (j0 < (int)(8 * sizeof (long long int)) - 1)
{
if (j0 >= 52)
result = ((long long int) ((i0 & 0x000fffff) | 0x0010000) << (j0 - 20)) |
(i1 << (j0 - 52));
else
{
w = TWO52[sx] + x;
t = w - TWO52[sx];
EXTRACT_WORDS (i0, i1, t);
j0 = ((i0 & 0x7ff00000) >> 20) - 1023;
i0 &= 0x000fffff;
i0 |= 0x00100000;
result = ((long long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
}
}
else
{
return (long long int) x;
}
return sx ? -result : result;
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_log.c,v 1.9 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_log.c,v 1.10 2007-11-08 11:23:53 damato Exp $
*
* :ts=4
*
@@ -244,7 +244,7 @@ log(double x)
{
double result;
if(x > DBL_EPSILON)
if(x > 0)
{
result = __log(x);
}

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_log10.c,v 1.8 2006-01-08 12:04:23 obarthel Exp $
* $Id: math_log10.c,v 1.9 2007-11-08 11:23:53 damato Exp $
*
* :ts=4
*
@@ -186,7 +186,7 @@ log10(double x)
{
double result;
if(x > DBL_EPSILON)
if(x > 0)
{
result = __log10(x);
}

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_sqrt.c,v 1.8 2006-01-08 12:04:24 obarthel Exp $
* $Id: math_sqrt.c,v 1.9 2006-09-22 07:54:24 obarthel Exp $
*
* :ts=4
*
@@ -143,7 +143,7 @@ INLINE STATIC double
__sqrt(double x)
{
double z;
int sign = (int)0x80000000;
unsigned int sign = (unsigned int)0x80000000;
unsigned int r,t1,s1,ix1,q1;
int ix0,s0,q,m,t,i;

View File

@@ -1,5 +1,5 @@
/*
* $Id: mount_convertinfo.c,v 1.6 2006-01-08 12:04:24 obarthel Exp $
* $Id: mount_convertinfo.c,v 1.7 2008-04-16 07:38:10 obarthel Exp $
*
* :ts=4
*
@@ -42,6 +42,20 @@
/****************************************************************************/
#ifndef ID_BUSY_DISK
#define ID_BUSY_DISK (0x42555359L) /* 'BUSY' */
#endif /* ID_LONGNAME_DOS_DISK */
#ifndef ID_LONGNAME_DOS_DISK
#define ID_LONGNAME_DOS_DISK (0x444F5306L) /* 'DOS\6' */
#endif /* ID_LONGNAME_DOS_DISK */
#ifndef ID_LONGNAME_FFS_DISK
#define ID_LONGNAME_FFS_DISK (0x444F5307L) /* 'DOS\7' */
#endif /* ID_LONGNAME_FFS_DISK */
/****************************************************************************/
void
__convert_info_to_statfs(struct InfoData * id,struct statfs * f)
{

View File

@@ -1,5 +1,5 @@
/*
* $Id: mount_fstatfs.c,v 1.13 2006-01-08 12:04:24 obarthel Exp $
* $Id: mount_fstatfs.c,v 1.14 2006-11-16 14:39:23 obarthel Exp $
*
* :ts=4
*
@@ -106,7 +106,7 @@ fstatfs(int file_descriptor, struct statfs *buf)
}
PROFILE_OFF();
parent_dir = __safe_parent_of_file_handle(fd->fd_DefaultFile);
parent_dir = __safe_parent_of_file_handle(fd->fd_File);
PROFILE_ON();
if(parent_dir == ZERO)

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 200
#define DATE "17.4.2006"
#define VERS "net.lib 1.200"
#define VSTRING "net.lib 1.200 (17.4.2006)\r\n"
#define VERSTAG "\0$VER: net.lib 1.200 (17.4.2006)"
#define REVISION 205
#define DATE "21.8.2010"
#define VERS "net.lib 1.205"
#define VSTRING "net.lib 1.205 (21.8.2010)\r\n"
#define VERSTAG "\0$VER: net.lib 1.205 (21.8.2010)"

View File

@@ -1 +1 @@
200
205

View File

@@ -1,5 +1,5 @@
|
| $Id: nrcrt0.S,v 1.5 2006-01-08 12:04:24 obarthel Exp $
| $Id: nrcrt0.S,v 1.6 2006-11-16 10:09:20 obarthel Exp $
|
| :ts=4
|
@@ -56,7 +56,7 @@ MEMF_CLEAR = 65536
.text
.globl _main | This enforces linkage against the main() function
.globl _main | This enforces linkage against the main() function
.globl __main
.globl ___is_resident

View File

@@ -1,5 +1,5 @@
/*
* $Id: math_kernel_scalbn.c,v 1.5 2006-01-08 12:04:23 obarthel Exp $
* $Id: resource_getrlimit.c,v 1.2 2006-07-28 14:37:27 obarthel Exp $
*
* :ts=4
*
@@ -29,60 +29,103 @@
* 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 */
#include <sys/resource.h>
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT) && defined(PPC_FLOATING_POINT_SUPPORT)
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
static const double
huge = 1.0e+300,
tiny = 1.0e-300,
two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
twom54 = 5.55111512312578270212e-17; /* 0x3C900000, 0x00000000 */
/* The following is not part of the ISO 'C' (1994) standard. */
double __scalbn (double x, int n)
/****************************************************************************/
int
getrlimit(int resource,struct rlimit *rlp)
{
int k,hx,lx;
EXTRACT_WORDS(hx,lx,x);
k = (hx&0x7ff00000)>>20; /* extract exponent */
if (k==0) { /* 0 or subnormal x */
if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */
x *= two54;
GET_HIGH_WORD(hx,x);
k = ((hx&0x7ff00000)>>20) - 54;
if (n< -50000) return tiny*x; /*underflow*/
struct Task *self;
int ret = -1;
rlim_t l;
if(rlp == NULL)
{
__set_errno(EFAULT);
goto out;
}
if (k==0x7ff) return x+x; /* NaN or Inf */
k = k+n;
if (k > 0x7fe) return huge*copysign(huge,x); /* overflow */
if (k > 0) /* normal result */
{SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); return x;}
if (k <= -54) {
if (n > 50000) /* in case integer overflow in n+k */
return huge*copysign(huge,x); /*overflow*/
else return tiny*copysign(tiny,x); /*underflow*/
switch(resource)
{
case RLIM_VMEM:
rlp->rlim_cur = RLIM_INFINITY;
rlp->rlim_max = RLIM_INFINITY;
break;
case RLIM_CORE: /* Coredumps are not supported. */
rlp->rlim_cur = 0;
rlp->rlim_max = 0;
break;
case RLIM_CPU:
rlp->rlim_cur = RLIM_INFINITY;
rlp->rlim_max = RLIM_INFINITY;
break;
case RLIM_DATA:
#if defined(__amigaos4__)
{
l = AvailMem(MEMF_TOTAL|MEMF_VIRTUAL);
}
#else
{
l = AvailMem(MEMF_TOTAL);
}
#endif /* __amigaos4__ */
rlp->rlim_cur = l;
rlp->rlim_max = l;
break;
case RLIM_FSIZE:
rlp->rlim_cur = RLIM_INFINITY; /* Use RLIM_INFINITY in case we have a 64-bit fs. pathconf() can be more precise. */
rlp->rlim_max = RLIM_INFINITY;
break;
case RLIM_NOFILE:
rlp->rlim_cur = RLIM_INFINITY;
rlp->rlim_max = RLIM_INFINITY;
break;
case RLIM_STACK: /* Return current stacksize. */
self = FindTask(NULL);
l = (char *)self->tc_SPUpper - (char *)self->tc_SPLower;
rlp->rlim_cur = l;
rlp->rlim_max = RLIM_INFINITY;
break;
default:
__set_errno(EINVAL);
goto out;
}
k += 54; /* subnormal result */
SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20));
return x*twom54;
ret = 0;
out:
return(ret);
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT && PPC_FLOATING_POINT_SUPPORT */

View File

@@ -0,0 +1,83 @@
/*
* $Id: resource_setrlimit.c,v 1.2 2006-07-28 14:37:27 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) 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.
*/
#include <sys/resource.h>
/****************************************************************************/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
setrlimit(int resource,const struct rlimit *rlp)
{
int ret = -1;
if(rlp == NULL)
{
__set_errno(EFAULT);
goto out;
}
switch(resource)
{
case RLIM_VMEM:
case RLIM_CORE:
case RLIM_CPU:
case RLIM_DATA:
case RLIM_FSIZE:
case RLIM_NOFILE:
case RLIM_STACK: /* TODO: See if it might be possible to set the stacksize here. */
__set_errno(EPERM);
goto out;
default:
__set_errno(EINVAL);
goto out;
}
ret = 0;
out:
return(ret);
}

View File

@@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.os4,v 1.4 2006-01-08 12:06:14 obarthel Exp $
# $Id: GNUmakefile.os4,v 1.5 2006-06-22 09:30:25 obarthel Exp $
#
# :ts=4
#
@@ -40,6 +40,8 @@ CPU =
OPTIONS = -DNDEBUG -mcrt=clib2-ts
OPTIMIZE = -O
DEBUG = -ggdb
CRTBEGIN = /usr/local/amiga/ppc-amigaos/clib2/lib/crtbegin.o
CRTEND = /usr/local/amiga/ppc-amigaos/clib2/lib/crtend.o
###############################################################################
@@ -52,7 +54,7 @@ OBJS = \
###############################################################################
LIBS = -lc -lamiga
LIBS = $(CRTBEGIN) -lc -lamiga $(CRTEND)
###############################################################################

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_accept.c,v 1.16 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_accept.c,v 1.17 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -95,7 +95,7 @@ accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)
goto out;
/* Remember the socket number for later. */
socket_fd = (LONG)fd->fd_DefaultFile;
socket_fd = fd->fd_Socket;
/* Now let go of the stdio lock, so that the only locking performed
will be done inside the accept() call. */

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_bind.c,v 1.7 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_bind.c,v 1.8 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,7 +84,7 @@ bind(int sockfd,const struct sockaddr *name,socklen_t namelen)
goto out;
PROFILE_OFF();
result = __bind((LONG)fd->fd_DefaultFile,(struct sockaddr *)name,namelen);
result = __bind(fd->fd_Socket,(struct sockaddr *)name,namelen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_connect.c,v 1.8 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_connect.c,v 1.9 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,7 +84,7 @@ connect(int sockfd,const struct sockaddr *name,socklen_t namelen)
goto out;
PROFILE_OFF();
result = __connect((LONG)fd->fd_DefaultFile,(struct sockaddr *)name,namelen);
result = __connect(fd->fd_Socket,(struct sockaddr *)name,namelen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_getpeername.c,v 1.7 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_getpeername.c,v 1.8 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,7 +84,7 @@ getpeername(int sockfd,struct sockaddr *name,socklen_t *namelen)
goto out;
PROFILE_OFF();
result = __getpeername((LONG)fd->fd_DefaultFile,name,(LONG *)namelen);
result = __getpeername(fd->fd_Socket,name,(LONG *)namelen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_getsockname.c,v 1.7 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_getsockname.c,v 1.8 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,7 +84,7 @@ getsockname(int sockfd,struct sockaddr *name,socklen_t *namelen)
goto out;
PROFILE_OFF();
result = __getsockname((LONG)fd->fd_DefaultFile,name,(LONG *)namelen);
result = __getsockname(fd->fd_Socket,name,(LONG *)namelen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_getsockopt.c,v 1.7 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_getsockopt.c,v 1.8 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -86,7 +86,7 @@ getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)
goto out;
PROFILE_OFF();
result = __getsockopt((LONG)fd->fd_DefaultFile,level,optname,optval,(LONG *)optlen);
result = __getsockopt(fd->fd_Socket,level,optname,optval,(LONG *)optlen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_hook_entry.c,v 1.16 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_hook_entry.c,v 1.17 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -79,7 +79,7 @@ __socket_hook_entry(
PROFILE_OFF();
result = __recv((LONG)fd->fd_DefaultFile,fam->fam_Data,fam->fam_Size,0);
result = __recv(fd->fd_Socket,fam->fam_Data,fam->fam_Size,0);
if(result < 0)
fam->fam_Error = __get_errno();
@@ -99,7 +99,7 @@ __socket_hook_entry(
PROFILE_OFF();
result = __send((LONG)fd->fd_DefaultFile,fam->fam_Data,fam->fam_Size,0);
result = __send(fd->fd_Socket,fam->fam_Data,fam->fam_Size,0);
if(result < 0)
fam->fam_Error = __get_errno();
@@ -126,7 +126,7 @@ __socket_hook_entry(
{
PROFILE_OFF();
result = __CloseSocket((LONG)fd->fd_DefaultFile);
result = __CloseSocket(fd->fd_Socket);
PROFILE_ON();
}
@@ -163,7 +163,7 @@ __socket_hook_entry(
param = (int)(fam->fam_Arg == 0);
result = __IoctlSocket(fd->fd_DefaultFile,FIONBIO,&param);
result = __IoctlSocket(fd->fd_Socket,FIONBIO,&param);
if(result < 0)
fam->fam_Error = __get_errno();
@@ -175,7 +175,7 @@ __socket_hook_entry(
param = (int)(fam->fam_Arg != 0);
result = __IoctlSocket(fd->fd_DefaultFile,FIOASYNC,&param);
result = __IoctlSocket(fd->fd_Socket,FIOASYNC,&param);
if(result < 0)
fam->fam_Error = __get_errno();

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_ioctl.c,v 1.11 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_ioctl.c,v 1.14 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,21 +84,21 @@ ioctl(int sockfd,int request, ... /* char *arg */)
SHOWPOINTER(param);
PROFILE_OFF();
result = __IoctlSocket((LONG)fd->fd_DefaultFile,request,param);
result = __IoctlSocket(fd->fd_Socket,request,param);
PROFILE_ON();
if(result == 0)
{
int * option = (int *)param;
const int * option = (const int *)param;
if(request == (unsigned int)FIONBIO)
if(request == (int)FIONBIO)
{
if((*option) != 0)
SET_FLAG(fd->fd_Flags,FDF_NON_BLOCKING);
else
CLEAR_FLAG(fd->fd_Flags,FDF_NON_BLOCKING);
}
else if (request == (unsigned int)FIOASYNC)
else if (request == (int)FIOASYNC)
{
if((*option) != 0)
SET_FLAG(fd->fd_Flags,FDF_ASYNC_IO);

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_listen.c,v 1.5 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_listen.c,v 1.6 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -64,7 +64,7 @@ listen(int sockfd,int backlog)
goto out;
PROFILE_OFF();
result = __listen((LONG)fd->fd_DefaultFile,backlog);
result = __listen(fd->fd_Socket,backlog);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_obtain_daemon.c,v 1.4 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_obtain_daemon.c,v 1.5 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -93,7 +93,7 @@ __obtain_daemon_message(VOID)
struct TagItem tags[2];
/* Check if it is safe to call the IsServerProcess() function. */
tags[0].ti_Tag = SBTM_GETREF(SBTC_BREAKMASK);
tags[0].ti_Tag = SBTM_GETREF(SBTC_HAVE_SERVER_API);
tags[0].ti_Data = (ULONG)&have_server_api;
tags[1].ti_Tag = TAG_END;

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_recv.c,v 1.6 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_recv.c,v 1.7 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -86,7 +86,7 @@ recv(int sockfd,void *buff,size_t nbytes,int flags)
goto out;
PROFILE_OFF();
result = __recv((LONG)fd->fd_DefaultFile,buff,(LONG)nbytes,flags);
result = __recv(fd->fd_Socket,buff,(LONG)nbytes,flags);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_recvfrom.c,v 1.8 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_recvfrom.c,v 1.9 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -87,7 +87,7 @@ recvfrom(int sockfd,void *buff,size_t len,int flags,struct sockaddr *from,sockle
goto out;
PROFILE_OFF();
result = __recvfrom((LONG)fd->fd_DefaultFile,buff,len,flags,from,(LONG *)fromlen);
result = __recvfrom(fd->fd_Socket,buff,len,flags,from,(LONG *)fromlen);
PROFILE_ON();
out:

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket_recvmsg.c,v 1.6 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_recvmsg.c,v 1.7 2006-11-16 10:41:15 obarthel Exp $
*
* :ts=4
*
@@ -84,7 +84,7 @@ recvmsg(int sockfd,struct msghdr *msg,int flags)
goto out;
PROFILE_OFF();
result = __recvmsg((LONG)fd->fd_DefaultFile,msg,flags);
result = __recvmsg(fd->fd_Socket,msg,flags);
PROFILE_ON();
out:

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