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

85 Commits

Author SHA1 Message Date
Olaf Barthel
d27cfef46b This commit was manufactured by cvs2svn to create tag 'V1_202'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_202@15174 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2007-01-16 08:52:31 +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
Olaf Barthel
c26ee0ba7f - Preparations for new release.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15097 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-17 08:41:52 +00:00
Olaf Barthel
41eef5e1aa - Replaced an inappropriate "ULONG" with "unsigned long".
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15096 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-10 15:08:11 +00:00
Olaf Barthel
bbea0a86bd - Changed wait_select() to waitselect().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15095 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-07 15:45:49 +00:00
Olaf Barthel
91b4f288f9 - The default break signal mask (SIGBREAKF_CTRL_C) is no longer
hard-coded. You can override it at link time with a different
  variable value for __break_signal_mask. This may have to be
  augmented by an API for changing the value.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15094 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 08:39:46 +00:00
Olaf Barthel
55ab845de0 - Disabled the thread-safe build.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15093 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 08:24:32 +00:00
Olaf Barthel
184a2ada87 - Corrected the lock variable name.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15092 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 08:19:11 +00:00
Olaf Barthel
2e227506e5 - Added a wait_select() function which works very much like the
bsdsocket.library/WaitSelect() function.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15091 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 07:53:30 +00:00
Olaf Barthel
2e4de301cc - Added <sys/time.h> include to <sys/socket.h> due to latest "TimeVal" change
in the OS4 SDK. Otherwise "struct timeval" will not be defined at the time
  the <net/if.h> of the netincludes will be included by <proto/bsdsocket.h>.

- The strftime() hook function had the locale and character parameters
  switched, which made 'setlocale(LC_ALL,""); strftime(..);' unusable.
  Fixed.

- fchown() and chown() now accept owner and group ID values of -1, which
  indicate that the respective information should not be changed.

- The OS4 library build now includes the crtbegin.o and crtend.o object
  files in the libc.a library, which solves a problem with the thread-safe
  shared library support code.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15090 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 06:43:56 +00:00
Olaf Barthel
9c436ceaaa - Added the "setlocale.c" test program.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15089 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-05 06:35:42 +00:00
Jens Maus
bfedbbabd7 - added <sys/time.h> include to sys/socket.h due to latest "TimeVal" change
in the OS4 SDK. Otherwise "struct timeval" will not be defined at the time
  the <net/if.h> of the netincludes will be included by <proto/bsdsocket.h>.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15088 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-04-04 21:59:13 +00:00
201 changed files with 9607 additions and 4033 deletions

View File

@@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.68k,v 1.80 2006-01-29 09:16:59 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.101 2007-01-06 10:09:48 obarthel Exp $
#
# :ts=8
#
@@ -106,6 +106,7 @@ WARNINGS = \
INCLUDES = -Iinclude -I. -Inetinclude
#OPTIONS = -fno-builtin -fno-common -DDEBUG
OPTIONS = -fno-builtin -fno-common -DNDEBUG
#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
@@ -168,6 +169,7 @@ C_LIB = \
signal_checkabort.o \
signal_data.o \
signal_kill.o \
signal_mask.o \
signal_raise.o \
signal_sigaddset.o \
signal_sigblock.o \
@@ -181,11 +183,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 \
@@ -225,6 +230,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 \
@@ -250,6 +256,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 \
@@ -386,6 +393,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 \
@@ -421,6 +429,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 \
@@ -451,6 +460,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
@@ -468,9 +478,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 \
@@ -490,6 +503,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 \
@@ -500,6 +515,7 @@ UNIX_LIB = \
stdlib_realloc.o \
stdlib_resetmemstats.o \
stdlib_system.o \
systeminfo_sysinfo.o \
termios_cfgetispeed.o \
termios_cfgetospeed.o \
termios_cfmakeraw.o \
@@ -512,16 +528,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 \
@@ -599,10 +631,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 \
@@ -626,6 +664,7 @@ MATH_LIB = \
math_ldexpf.o \
math_lgamma.o \
math_lgammaf.o \
math_llrint.o \
math_log.o \
math_log10.o \
math_log10f.o \
@@ -772,7 +811,9 @@ NET_LIB = \
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 \
@@ -784,6 +825,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 199
#define DATE "6.3.2006"
#define VERS "amiga.lib 1.199"
#define VSTRING "amiga.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "amiga.lib 1.202"
#define VSTRING "amiga.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

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.6 2006-09-22 09:02:51 obarthel Exp $
*
* :ts=4
*
@@ -75,9 +75,9 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
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 +90,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_dotimer.c,v 1.7 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_dotimer.c,v 1.8 2006-04-05 06:43:56 obarthel Exp $
*
* :ts=4
*
@@ -55,6 +55,23 @@
/****************************************************************************/
/* A quick workaround for the timeval/timerequest->TimeVal/TimeRequest
change in the recent OS4 header files. */
#if defined(__NEW_TIMEVAL_DEFINITION_USED__)
#define timeval TimeVal
#define tv_secs Seconds
#define tv_micro Microseconds
#define timerequest TimeRequest
#define tr_node Request
#define tr_time Time
#endif /* __NEW_TIMEVAL_DEFINITION_USED__ */
/****************************************************************************/
LONG
DoTimer(struct timeval *tv,LONG unit,LONG command)
{
@@ -67,10 +84,10 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
#if defined(__amigaos4__)
{
mp = AllocSysObjectTags(ASOT_PORT,
ASOPORT_Action, PA_SIGNAL,
ASOPORT_Action, PA_SIGNAL,
ASOPORT_AllocSig, FALSE,
ASOPORT_Signal, SIGB_SINGLE,
ASOPORT_Target, FindTask(NULL),
ASOPORT_Signal, SIGB_SINGLE,
ASOPORT_Target, FindTask(NULL),
TAG_DONE);
if(mp == NULL)

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.10 2006-09-25 18:19:44 obarthel Exp $
*
* :ts=4
*
@@ -68,6 +68,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,ULONG length);
/****************************************************************************/
CLIB_CONSTRUCTOR(rexxvars_init)
{
ENTER();
@@ -136,7 +142,7 @@ CheckRexxMsg(struct RexxMsg *message)
if(message->rm_TaskBlock == NULL)
goto out;
if(NOT IsRexxMsg(message))
if(NOT IsRexxMsg((struct Message *)message))
goto out;
result = TRUE;
@@ -154,12 +160,12 @@ CheckRexxMsg(struct RexxMsg *message)
LONG
GetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR *buffer_pointer)
{
static UBYTE buffer[256];
static TEXT buffer[256];
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))
if(RexxSysBase == NULL || RexxSysBase->lib_Version < 45 || NOT IsRexxMsg((struct Message *)message))
{
result = ERR10_010; /* invalid message packet */
goto out;
@@ -189,7 +195,7 @@ SetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR value,ULONG lengt
/* 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))
if(RexxSysBase == NULL || RexxSysBase->lib_Version < 45 || NOT IsRexxMsg((struct Message *)message))
{
result = ERR10_010; /* invalid message packet */
goto out;

View File

@@ -1,5 +1,5 @@
/*
* $Id: amiga_timedelay.c,v 1.3 2006-01-08 12:04:22 obarthel Exp $
* $Id: amiga_timedelay.c,v 1.4 2006-04-05 06:43:56 obarthel Exp $
*
* :ts=4
*
@@ -39,6 +39,19 @@
/****************************************************************************/
/* A quick workaround for the timeval/timerequest->TimeVal/TimeRequest
change in the recent OS4 header files. */
#if defined(__NEW_TIMEVAL_DEFINITION_USED__)
#define timeval TimeVal
#define tv_secs Seconds
#define tv_micro Microseconds
#endif /* __NEW_TIMEVAL_DEFINITION_USED__ */
/****************************************************************************/
LONG
TimeDelay(LONG unit,ULONG seconds,ULONG micros)
{

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 199
#define DATE "6.3.2006"
#define VERS "c.lib 1.199"
#define VSTRING "c.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: c.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "c.lib 1.202"
#define VSTRING "c.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: c.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

View File

@@ -1,3 +1,221 @@
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
hard-coded. You can override it at link time with a different
variable value for __break_signal_mask. This may have to be
augmented by an API for changing the value.
- Added a waitselect() function which works very much like the
bsdsocket.library/WaitSelect() function.
- Added <sys/time.h> include to <sys/socket.h> due to latest "TimeVal" change
in the OS4 SDK. Otherwise "struct timeval" will not be defined at the time
the <net/if.h> of the netincludes will be included by <proto/bsdsocket.h>.
- The strftime() hook function had the locale and character parameters
switched, which made 'setlocale(LC_ALL,""); strftime(..);' unusable.
Fixed.
- fchown() and chown() now accept owner and group ID values of -1, which
indicate that the respective information should not be changed.
- The OS4 library build now includes the crtbegin.o and crtend.o object
files in the libc.a library, which solves a problem with the thread-safe
shared library support code.
c.lib 1.199 (6.3.2006)
- In <stdio.h> MAXPATHLEN is now equivalent to PATH_MAX (from <limits.h>),

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.11 2006-09-22 09:02:51 obarthel Exp $
*
* :ts=4
*
@@ -27,6 +27,11 @@ static void (*__DTOR_LIST__[1]) (void) __attribute__(( used, section(".dtors"),
/****************************************************************************/
void _init(void);
void _fini(void);
/****************************************************************************/
void
_init(void)
{

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 199
#define DATE "6.3.2006"
#define VERS "debug.lib 1.199"
#define VSTRING "debug.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "debug.lib 1.202"
#define VSTRING "debug.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

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);
}

View File

@@ -1,5 +1,5 @@
/*
* $Id: dos.h,v 1.18 2006-01-08 12:06:14 obarthel Exp $
* $Id: dos.h,v 1.28 2006-09-27 09:40:06 obarthel Exp $
*
* :ts=4
*
@@ -123,6 +123,19 @@ extern void __check_abort(void);
/****************************************************************************/
/*
* You can override the default break signal mask which is used by
* __check_abort() and other functions. This must be done at link
* time because the break signal checking is set up very early on
* while the program startup code is preparing your code to be run.
* In particular, this affects the socket I/O functionality which
* configures the break signal only once. The default value of the
* __break_signal_mask variable is SIGBREAKF_CTRL_C.
*/
extern ULONG __break_signal_mask;
/****************************************************************************/
/*
* Call this function to set up the environment information for your
* program to access its data. This is typically used in Task or Process
@@ -457,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: 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.18 2006-11-13 09:51:53 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);
/****************************************************************************/

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: select.h,v 1.6 2006-01-08 12:06:14 obarthel Exp $
* $Id: select.h,v 1.9 2006-04-10 15:08:11 obarthel Exp $
*
* :ts=4
*
@@ -108,6 +108,22 @@ typedef struct fd_set
extern int select(int nfds, fd_set *readfds,fd_set *writefds, fd_set *errorfds,struct timeval *timeout);
/* This is a special select() function which takes an extra Amiga signal
bit mask pointer parameter. This function works like select(), but it will
also return if any of the signals indicated by the 'signal_mask' parameter
are set. When this function returns, the variable pointed to by the
'signal_mask' parameter will have all the bits set which were set at the
time the function was called and for which signals arrived while the
function was still running. When this function returns, any signals
received while it was running for which bits were set in the 'signal_mask'
parameter value will be cleared with the exception of SIGBREAKF_CTRL_C.
In brief, wait_select() works exactly like the bsdsocket.library/WaitSelect()
function. */
#ifndef __NO_WAITSELECT
extern int waitselect(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout,unsigned long * signal_mask);
#endif /* __NO_WAITSELECT */
#endif /* __NO_NET_API */
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
/*
* $Id: socket.h,v 1.5 2006-01-08 12:06:14 obarthel Exp $
* $Id: socket.h,v 1.6 2006-04-04 21:59:13 damato Exp $
*
* :ts=4
*
@@ -55,6 +55,10 @@
#include <sys/uio.h>
#endif /* _SYS_UIO_H_ */
#ifndef _SYS_TIME_H
#include <sys/time.h>
#endif /* _SYS_TIME_H */
/****************************************************************************/
#ifdef __cplusplus

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 */

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)

439
library/libc.gmk Executable file
View File

@@ -0,0 +1,439 @@
#
# $Id: libc.gmk,v 1.4 2006-11-16 14:39:23 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_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_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)

202
library/libunix.gmk Executable file
View File

@@ -0,0 +1,202 @@
#
# $Id: libunix.gmk,v 1.3 2006-11-13 09:25:28 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_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 199
#define DATE "6.3.2006"
#define VERS "m.lib 1.199"
#define VSTRING "m.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: m.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "m.lib 1.202"
#define VSTRING "m.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: m.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 199
#define DATE "6.3.2006"
#define VERS "m881.lib 1.199"
#define VSTRING "m881.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "m881.lib 1.202"
#define VSTRING "m881.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

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_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_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 199
#define DATE "6.3.2006"
#define VERS "net.lib 1.199"
#define VSTRING "net.lib 1.199 (6.3.2006)\r\n"
#define VERSTAG "\0$VER: net.lib 1.199 (6.3.2006)"
#define REVISION 202
#define DATE "16.1.2007"
#define VERS "net.lib 1.202"
#define VSTRING "net.lib 1.202 (16.1.2007)\r\n"
#define VERSTAG "\0$VER: net.lib 1.202 (16.1.2007)"

View File

@@ -1 +1 @@
199
202

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: sas_profile.c,v 1.6 2005-04-24 08:46:37 obarthel Exp $
* $Id: sas_profile.c,v 1.7 2006-04-05 06:43:56 obarthel Exp $
*
* :ts=4
*
@@ -52,6 +52,19 @@ extern struct Library * SysBase;
/****************************************************************************/
/* A quick workaround for the timeval/timerequest->TimeVal/TimeRequest
change in the recent OS4 header files. */
#if defined(__NEW_TIMEVAL_DEFINITION_USED__)
#define timerequest TimeRequest
#define tr_node Request
#define tr_time Time
#endif /* __NEW_TIMEVAL_DEFINITION_USED__ */
/****************************************************************************/
struct SPROFMSG
{
struct Message message;

View File

@@ -1,5 +1,5 @@
/*
* $Id: signal_checkabort.c,v 1.3 2006-01-08 12:04:24 obarthel Exp $
* $Id: signal_checkabort.c,v 1.4 2006-04-05 08:39:45 obarthel Exp $
*
* :ts=4
*
@@ -44,6 +44,6 @@
void
__check_abort(void)
{
if(__check_abort_enabled && FLAG_IS_SET(SetSignal(0,SIGBREAKF_CTRL_C),SIGBREAKF_CTRL_C))
if(__check_abort_enabled && FLAG_IS_SET(SetSignal(0,__break_signal_mask),__break_signal_mask))
raise(SIGINT);
}

View File

@@ -1,5 +1,5 @@
/*
* $Id: signal_kill.c,v 1.7 2006-01-08 12:04:24 obarthel Exp $
* $Id: signal_kill.c,v 1.8 2006-04-05 08:39:45 obarthel Exp $
*
* :ts=4
*
@@ -80,7 +80,7 @@ kill(pid_t pid, int signal_number)
SHOWMSG("found the process");
if(signal_number == SIGTERM || signal_number == SIGINT)
Signal((struct Task *)pid,SIGBREAKF_CTRL_C);
Signal((struct Task *)pid,__break_signal_mask);
else
SHOWMSG("but won't shut it down");
}

44
library/signal_mask.c Normal file
View File

@@ -0,0 +1,44 @@
/*
* $Id: signal_mask.c,v 1.1 2006-04-05 08:39:45 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.
*/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
#ifndef _SIGNAL_HEADERS_H
#include "signal_headers.h"
#endif /* _SIGNAL_HEADERS_H */
/****************************************************************************/
ULONG __break_signal_mask = SIGBREAKF_CTRL_C;

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: lib_user.c,v 1.6 2006-01-08 12:06:14 obarthel Exp $
* $Id: lib_user.c,v 1.7 2006-04-05 06:43:56 obarthel Exp $
*
* :ts=4
*
@@ -100,7 +100,7 @@ UserLibOpen(struct UserData * ud)
{
BOOL result = FALSE;
/* For the AmigaOS4 build, invoke the clib2 shared library
/* For the thread safe build, invoke the clib2 shared library
initialization code. Note that this is not strictly
necessary. In fact, you should not need this functionality
if you stick to use Amiga operating system routines only
@@ -109,15 +109,15 @@ UserLibOpen(struct UserData * ud)
Use this feature only if you are porting code to the Amiga
which cannot be easily converted to follow the AmigaOS
API definitions only. */
#if defined(__amigaos4__) && defined(__THREAD_SAFE)
#if defined(__THREAD_SAFE)
{
/* Note that the clib2 library initialization is
called exactly once, when the first client
opens this library. */
if(ud->ud_UseCount == 0 && !__lib_init(SysBase))
if(ud->ud_UseCount == 0 && !__lib_init(ud->ud_SysBase))
goto out;
}
#endif /* __amigaos4__ && __THREAD_SAFE */
#endif /* __THREAD_SAFE */
/* Remember that one more customer is using this data structure. */
ud->ud_UseCount++;
@@ -140,7 +140,7 @@ UserLibClose(struct UserData * ud)
/* Remember that one less customer is using this data structure. */
ud->ud_UseCount--;
/* For the AmigaOS4 build, invoke the clib2 shared library
/* For the thread safe build, invoke the clib2 shared library
cleanup code. Note that this is not strictly
necessary. In fact, you should not need this functionality
if you stick to use Amiga operating system routines only
@@ -149,7 +149,7 @@ UserLibClose(struct UserData * ud)
Use this feature only if you are porting code to the Amiga
which cannot be easily converted to follow the AmigaOS
API definitions only. */
#if defined(__amigaos4__) && defined(__THREAD_SAFE)
#if defined(__THREAD_SAFE)
{
/* Note that the clib2 library cleanup code is
called exactly once, when the last client
@@ -157,7 +157,7 @@ UserLibClose(struct UserData * ud)
if(ud->ud_UseCount == 0)
__lib_exit();
}
#endif /* __amigaos4__ && __THREAD_SAFE */
#endif /* __THREAD_SAFE */
}
/****************************************************************************/

View File

@@ -1,5 +1,5 @@
#
# $Id: smakefile,v 1.59 2006-01-02 13:23:33 obarthel Exp $
# $Id: smakefile,v 1.61 2006-04-05 08:39:45 obarthel Exp $
#
# :ts=8
#
@@ -315,6 +315,7 @@ SIGNAL_OBJ = \
signal_checkabort.o \
signal_data.o \
signal_kill.o \
signal_mask.o \
signal_raise.o \
signal_sigaddset.o \
signal_sigblock.o \
@@ -358,7 +359,9 @@ SOCKET_OBJ = \
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 \
@@ -801,7 +804,7 @@ dirent_opendir.o : dirent_opendir.c stdlib_memory.h
fcntl_open.o : fcntl_open.c stdlib_memory.h
socket_select.o : socket_select.c stdlib_memory.h
socket_select_signal.o : socket_select_signal.c stdlib_memory.h
stdio_fclose.o : stdio_fclose.c stdlib_memory.h

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_headers.h,v 1.13 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_headers.h,v 1.14 2006-04-05 07:53:24 obarthel Exp $
*
* :ts=4
*
@@ -127,6 +127,7 @@ extern int __socket_hook_entry(struct fd * fd,struct file_action_message * fam);
extern int __get_h_errno(void);
extern void __set_h_errno(int new_h_errno);
extern BOOL __obtain_daemon_message(VOID);
extern int __select(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout,ULONG * signal_mask_ptr);
/****************************************************************************/

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_init_exit.c,v 1.25 2006-01-08 12:04:24 obarthel Exp $
* $Id: socket_init_exit.c,v 1.26 2006-04-05 08:39:45 obarthel Exp $
*
* :ts=4
*
@@ -224,7 +224,7 @@ SOCKET_CONSTRUCTOR(socket_init)
tags[1].ti_Tag = SBTM_SETVAL(SBTC_BREAKMASK);
if(__check_abort_enabled)
tags[1].ti_Data = SIGBREAKF_CTRL_C;
tags[1].ti_Data = __break_signal_mask;
else
tags[1].ti_Data = 0;

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:

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