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

56 Commits

Author SHA1 Message Date
Olaf Barthel
2ff45ab6ba This commit was manufactured by cvs2svn to create tag 'V1_201'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_201@15144 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-09-22 09:19:08 +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
118 changed files with 7085 additions and 2652 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.96 2006-09-17 17:36:42 obarthel Exp $
# #
# :ts=8 # :ts=8
# #
@@ -106,6 +106,7 @@ WARNINGS = \
INCLUDES = -Iinclude -I. -Inetinclude INCLUDES = -Iinclude -I. -Inetinclude
#OPTIONS = -fno-builtin -fno-common -DDEBUG #OPTIONS = -fno-builtin -fno-common -DDEBUG
OPTIONS = -fno-builtin -fno-common -DNDEBUG 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 -D__MEM_DEBUG
#OPTIONS = -fno-builtin -fno-common -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG #OPTIONS = -fno-builtin -fno-common -DDEBUG -D__MEM_DEBUG -DNO_INLINE_STDARG
OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions OPTIMIZE = -O -fomit-frame-pointer -fstrength-reduce -finline-functions
@@ -168,6 +169,7 @@ C_LIB = \
signal_checkabort.o \ signal_checkabort.o \
signal_data.o \ signal_data.o \
signal_kill.o \ signal_kill.o \
signal_mask.o \
signal_raise.o \ signal_raise.o \
signal_sigaddset.o \ signal_sigaddset.o \
signal_sigblock.o \ signal_sigblock.o \
@@ -386,6 +388,7 @@ C_LIB = \
string_strcspn.o \ string_strcspn.o \
string_strdup.o \ string_strdup.o \
string_strerror.o \ string_strerror.o \
string_strerror_r.o \
string_strlcat.o \ string_strlcat.o \
string_strlcpy.o \ string_strlcpy.o \
string_strlen.o \ string_strlen.o \
@@ -421,6 +424,7 @@ C_LIB = \
time_weekday.o \ time_weekday.o \
uio_readv.o \ uio_readv.o \
uio_writev.o \ uio_writev.o \
ulimit_ulimit.o \
unistd_access.o \ unistd_access.o \
unistd_chdir.o \ unistd_chdir.o \
unistd_chdir_exit.o \ unistd_chdir_exit.o \
@@ -468,6 +472,8 @@ UNIX_LIB = \
getopt_getopt_long.o \ getopt_getopt_long.o \
mount_convertinfo.o \ mount_convertinfo.o \
mount_statfs.o \ mount_statfs.o \
resource_getrlimit.o \
resource_setrlimit.o \
stat_chmod.o \ stat_chmod.o \
stat_fstat.o \ stat_fstat.o \
stat_lstat.o \ stat_lstat.o \
@@ -490,6 +496,8 @@ UNIX_LIB = \
stdlib_alloca_cleanup.o \ stdlib_alloca_cleanup.o \
stdlib_alloca_trap.o \ stdlib_alloca_trap.o \
stdlib_arg.o \ stdlib_arg.o \
stdlib_expand_wildcard.o \
stdlib_expand_wildcard_check.o \
stdlib_getmemstats.o \ stdlib_getmemstats.o \
stdlib_main.o \ stdlib_main.o \
stdlib_main_stub.o \ stdlib_main_stub.o \
@@ -500,6 +508,7 @@ UNIX_LIB = \
stdlib_realloc.o \ stdlib_realloc.o \
stdlib_resetmemstats.o \ stdlib_resetmemstats.o \
stdlib_system.o \ stdlib_system.o \
systeminfo_sysinfo.o \
termios_cfgetispeed.o \ termios_cfgetispeed.o \
termios_cfgetospeed.o \ termios_cfgetospeed.o \
termios_cfmakeraw.o \ termios_cfmakeraw.o \
@@ -512,16 +521,32 @@ UNIX_LIB = \
termios_tcgetattr.o \ termios_tcgetattr.o \
termios_tcsendbreak.o \ termios_tcsendbreak.o \
termios_tcsetattr.o \ termios_tcsetattr.o \
timeb_ftime.o \
uio_readv.o \ uio_readv.o \
uio_writev.o \ uio_writev.o \
unistd_access.o \ unistd_access.o \
unistd_chdir.o \ unistd_chdir.o \
unistd_chdir_exit.o \ unistd_chdir_exit.o \
unistd_chown.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_getcwd.o \
unistd_lchown.o \ unistd_lchown.o \
unistd_link.o \ unistd_link.o \
unistd_lockf.o \ unistd_lockf.o \
unistd_pathconf.o \
unistd_readlink.o \ unistd_readlink.o \
unistd_realpath.o \ unistd_realpath.o \
unistd_restorepathname.o \ unistd_restorepathname.o \
@@ -599,10 +624,16 @@ MATH_LIB = \
math_expm1f.o \ math_expm1f.o \
math_fabs.o \ math_fabs.o \
math_fabsf.o \ math_fabsf.o \
math_fdim.o \
math_fdimf.o \
math_floor.o \ math_floor.o \
math_floorf.o \ math_floorf.o \
math_fma.o \ math_fma.o \
math_fmaf.o \ math_fmaf.o \
math_fmax.o \
math_fmaxf.o \
math_fmin.o \
math_fminf.o \
math_fmod.o \ math_fmod.o \
math_fmodf.o \ math_fmodf.o \
math_fpclassify.o \ math_fpclassify.o \
@@ -772,7 +803,9 @@ NET_LIB = \
socket_recv.o \ socket_recv.o \
socket_recvfrom.o \ socket_recvfrom.o \
socket_recvmsg.o \ socket_recvmsg.o \
socket_select_signal.o \
socket_select.o \ socket_select.o \
socket_wait_select.o \
socket_send.o \ socket_send.o \
socket_sendmsg.o \ socket_sendmsg.o \
socket_sendto.o \ socket_sendto.o \
@@ -784,6 +817,7 @@ NET_LIB = \
socket_get_h_errno.o \ socket_get_h_errno.o \
socket_set_h_errno.o \ socket_set_h_errno.o \
stat_umask.o \ stat_umask.o \
systeminfo_sysinfo.o \
usergroup_crypt.o \ usergroup_crypt.o \
usergroup_data.o \ usergroup_data.o \
usergroup_endgrent.o \ usergroup_endgrent.o \

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 199 #define REVISION 201
#define DATE "6.3.2006" #define DATE "21.9.2006"
#define VERS "amiga.lib 1.199" #define VERS "amiga.lib 1.201"
#define VSTRING "amiga.lib 1.199 (6.3.2006)\r\n" #define VSTRING "amiga.lib 1.201 (21.9.2006)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.199 (6.3.2006)" #define VERSTAG "\0$VER: amiga.lib 1.201 (21.9.2006)"

View File

@@ -1 +1 @@
199 201

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 * :ts=4
* *
@@ -75,9 +75,9 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
goto out; goto out;
for(i = 1 ; i < argc ; i++) 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) else if (IconBase != NULL)
{ {
@@ -90,7 +90,7 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
if(CXLIB_disko == NULL) if(CXLIB_disko == NULL)
goto out; goto out;
result = (unsigned char **)CXLIB_disko->do_ToolTypes; result = (STRPTR *)CXLIB_disko->do_ToolTypes;
} }
out: out:

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 * :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 LONG
DoTimer(struct timeval *tv,LONG unit,LONG command) DoTimer(struct timeval *tv,LONG unit,LONG command)
{ {
@@ -67,10 +84,10 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
#if defined(__amigaos4__) #if defined(__amigaos4__)
{ {
mp = AllocSysObjectTags(ASOT_PORT, mp = AllocSysObjectTags(ASOT_PORT,
ASOPORT_Action, PA_SIGNAL, ASOPORT_Action, PA_SIGNAL,
ASOPORT_AllocSig, FALSE, ASOPORT_AllocSig, FALSE,
ASOPORT_Signal, SIGB_SINGLE, ASOPORT_Signal, SIGB_SINGLE,
ASOPORT_Target, FindTask(NULL), ASOPORT_Target, FindTask(NULL),
TAG_DONE); TAG_DONE);
if(mp == NULL) if(mp == NULL)

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.8 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -154,7 +154,7 @@ CheckRexxMsg(struct RexxMsg *message)
LONG LONG
GetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR *buffer_pointer) GetRexxVar(struct RexxMsg *message,STRPTR variable_name,STRPTR *buffer_pointer)
{ {
static UBYTE buffer[256]; static TEXT buffer[256];
LONG result; LONG result;
/* The following uses a function which was added to rexxsyslib.library V45. /* The following uses a function which was added to rexxsyslib.library V45.

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 * :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 LONG
TimeDelay(LONG unit,ULONG seconds,ULONG micros) TimeDelay(LONG unit,ULONG seconds,ULONG micros)
{ {

View File

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

View File

@@ -1 +1 @@
199 201

View File

@@ -1,3 +1,115 @@
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) c.lib 1.199 (6.3.2006)
- In <stdio.h> MAXPATHLEN is now equivalent to PATH_MAX (from <limits.h>), - In <stdio.h> MAXPATHLEN is now equivalent to PATH_MAX (from <limits.h>),

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 * :ts=4
* *
@@ -27,6 +27,11 @@ static void (*__DTOR_LIST__[1]) (void) __attribute__(( used, section(".dtors"),
/****************************************************************************/ /****************************************************************************/
void _init(void);
void _fini(void);
/****************************************************************************/
void void
_init(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.5 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=8 * :ts=8
* *
@@ -160,7 +160,7 @@ _SHOWVALUE(
{ {
if(__debug_level >= DEBUGLEVEL_Reports) if(__debug_level >= DEBUGLEVEL_Reports)
{ {
char *fmt; const char *fmt;
switch(size) switch(size)
{ {
@@ -207,7 +207,7 @@ _SHOWPOINTER(
{ {
if(__debug_level >= DEBUGLEVEL_Reports) if(__debug_level >= DEBUGLEVEL_Reports)
{ {
char *fmt; const char *fmt;
_INDENT(); _INDENT();

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 199 #define REVISION 201
#define DATE "6.3.2006" #define DATE "21.9.2006"
#define VERS "debug.lib 1.199" #define VERS "debug.lib 1.201"
#define VSTRING "debug.lib 1.199 (6.3.2006)\r\n" #define VSTRING "debug.lib 1.201 (21.9.2006)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.199 (6.3.2006)" #define VERSTAG "\0$VER: debug.lib 1.201 (21.9.2006)"

View File

@@ -1 +1 @@
199 201

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.6 2006-09-12 14:16:44 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -44,8 +44,9 @@
int int
__get_default_file(int file_descriptor,long * file_ptr) __get_default_file(int file_descriptor,long * file_ptr)
{ {
struct fd * fd;
int result = ERROR; int result = ERROR;
struct fd * fd;
BPTR file;
assert( file_descriptor >= 0 && file_descriptor < __num_fd ); assert( file_descriptor >= 0 && file_descriptor < __num_fd );
assert( __fd[file_descriptor] != NULL ); assert( __fd[file_descriptor] != NULL );
@@ -59,11 +60,73 @@ __get_default_file(int file_descriptor,long * file_ptr)
goto out; goto out;
} }
(*file_ptr) = (long)fd->fd_DefaultFile; __fd_unlock(fd);
#if defined(__THREAD_SAFE)
{
/* Check if this file should be dynamically bound to one of the
three standard I/O streams. */
if(FLAG_IS_SET(fd->fd_Flags,FDF_STDIO))
{
switch(fd->fd_DefaultFile)
{
case STDIN_FILENO:
file = Input();
break;
case STDOUT_FILENO:
file = Output();
break;
case STDERR_FILENO:
#if defined(__amigaos4__)
{
file = ErrorOutput();
}
#else
{
struct Process * this_process = (struct Process *)FindTask(NULL);
file = this_process->pr_CES;
}
#endif /* __amigaos4__ */
/* The following is rather controversial; if the standard error stream
is unavailable, we default to reuse the standard output stream. This
is problematic if the standard output stream was redirected and should
not be the same as the standard error output stream. */
if(file == ZERO)
file = Output();
break;
default:
file = ZERO;
break;
}
}
else
{
file = fd->fd_DefaultFile;
}
}
#else
{
file = fd->fd_DefaultFile;
}
#endif /* __THREAD_SAFE */
(*file_ptr) = (long)file;
result = 0; result = 0;
out: out:
__fd_unlock(fd);
return(result); 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.26 2006-09-22 07:54:25 obarthel Exp $
* *
* :ts=4 * :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 * Call this function to set up the environment information for your
* program to access its data. This is typically used in Task or Process * program to access its data. This is typically used in Task or Process
@@ -457,6 +470,91 @@ 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 char * __default_path_delimiter;
extern 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);
/****************************************************************************/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */

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 * :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 * index(const char *s, int c);
extern char * rindex(const char *s, int c); extern char * rindex(const char *s, int c);

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 * :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 #ifdef __cplusplus
extern "C" { extern "C" {
#endif /* __cplusplus */ #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 * :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); 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 */ #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 * :ts=4
* *
@@ -55,6 +55,10 @@
#include <sys/uio.h> #include <sys/uio.h>
#endif /* _SYS_UIO_H_ */ #endif /* _SYS_UIO_H_ */
#ifndef _SYS_TIME_H
#include <sys/time.h>
#endif /* _SYS_TIME_H */
/****************************************************************************/ /****************************************************************************/
#ifdef __cplusplus #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 * :ts=4
* *
@@ -106,12 +106,13 @@ extern "C" {
/****************************************************************************/ /****************************************************************************/
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */ #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */ #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */ #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */ #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo */ #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo */
#define S_ISBLK(m) (0) /* block special */ #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.21 2006-08-02 06:49:47 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -122,7 +122,12 @@ extern int fdatasync(int file_descriptor);
extern char *ttyname(int); extern char *ttyname(int);
extern int ttyname_r(int file_descriptor,char *name,size_t buflen); extern int ttyname_r(int file_descriptor,char *name,size_t buflen);
extern int ttyname_t(int,char *,size_t); 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); extern int profil(unsigned short *buffer, size_t bufSize, size_t offset, unsigned int scale);
/****************************************************************************/ /****************************************************************************/
@@ -167,6 +172,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 #ifdef __cplusplus
} }
#endif /* __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)

436
library/libc.gmk Executable file
View File

@@ -0,0 +1,436 @@
#
# $Id: libc.gmk,v 1.1 2006-09-17 17:37:27 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 \
crtbegin.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_mkdir.o \
stat_rmdir.o \
stat_stat.o \
stat_umask.o \
stdio_asprintf.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_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_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 \
crtend.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.5 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -58,7 +58,7 @@ basename(char *path)
if(path == NULL || path[0] == '\0') if(path == NULL || path[0] == '\0')
{ {
result = "."; result = (char *)".";
} }
else else
{ {
@@ -86,7 +86,7 @@ basename(char *path)
} }
else else
{ {
result = "/"; result = (char *)"/";
} }
} }

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.5 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -58,7 +58,7 @@ dirname(char *path)
if(path == NULL || path[0] == '\0') if(path == NULL || path[0] == '\0')
{ {
result = "."; result = (char *)".";
} }
else else
{ {
@@ -71,7 +71,7 @@ dirname(char *path)
if(len > 0) if(len > 0)
{ {
result = "."; result = (char *)".";
for(i = len-1 ; i >= 0 ; i--) for(i = len-1 ; i >= 0 ; i--)
{ {
@@ -87,7 +87,7 @@ dirname(char *path)
} }
else else
{ {
result = "/"; result = (char *)"/";
} }
} }

265
library/libm.gmk Executable file
View File

@@ -0,0 +1,265 @@
#
# $Id: libm.gmk,v 1.1 2006-09-17 17:37:27 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_scalbn.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_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)

200
library/libunix.gmk Executable file
View File

@@ -0,0 +1,200 @@
#
# $Id: libunix.gmk,v 1.1 2006-09-17 17:37:27 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_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_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.6 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -56,16 +56,16 @@ localeconv(void)
/* This makes up the current locale settings from the various /* This makes up the current locale settings from the various
* components in use. * components in use.
*/ */
loc.decimal_point = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_DecimalPoint) : "."; loc.decimal_point = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_DecimalPoint) : (char *)".";
loc.thousands_sep = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_GroupSeparator) : ""; loc.thousands_sep = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_GroupSeparator) : (char *)"";
loc.grouping = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_Grouping) : ""; loc.grouping = (numeric_locale != NULL) ? ((char *)numeric_locale->loc_Grouping) : (char *)"";
loc.int_curr_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonIntCS) : ""; loc.int_curr_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonIntCS) : (char *)"";
loc.currency_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonCS) : ""; loc.currency_symbol = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonCS) : (char *)"";
loc.mon_decimal_point = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonDecimalPoint) : ""; 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) : ""; loc.mon_thousands_sep = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGroupSeparator) : (char *)"";
loc.mon_grouping = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGrouping) : ""; loc.mon_grouping = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonGrouping) : (char *)"";
loc.positive_sign = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonPositiveSign) : ""; loc.positive_sign = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonPositiveSign) : (char *)"";
loc.negative_sign = (monetary_locale != NULL) ? ((char *)monetary_locale->loc_MonNegativeSign) : ""; 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.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.frac_digits = (monetary_locale != NULL) ? monetary_locale->loc_MonFracDigits : CHAR_MAX;
loc.p_cs_precedes = (monetary_locale != NULL) ? monetary_locale->loc_MonPositiveCSPos : 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 VERSION 1
#define REVISION 199 #define REVISION 201
#define DATE "6.3.2006" #define DATE "21.9.2006"
#define VERS "m.lib 1.199" #define VERS "m.lib 1.201"
#define VSTRING "m.lib 1.199 (6.3.2006)\r\n" #define VSTRING "m.lib 1.201 (21.9.2006)\r\n"
#define VERSTAG "\0$VER: m.lib 1.199 (6.3.2006)" #define VERSTAG "\0$VER: m.lib 1.201 (21.9.2006)"

View File

@@ -1 +1 @@
199 201

View File

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

View File

@@ -1 +1 @@
199 201

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 * :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 */ if( ((ix|((lx|-lx)>>31))>0x7ff00000) || ((iy|((ly|-ly)>>31))>0x7ff00000) ) /* x or y is NaN */
return x+y; return x+y;
if((hx-0x3ff00000|lx)==0) if(((hx-0x3ff00000)|lx)==0)
return atan(y); /* x=1.0 */ return atan(y); /* x=1.0 */
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */ 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 * :ts=4
* *
@@ -158,8 +158,8 @@ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
INLINE STATIC double INLINE STATIC double
__exp(double x) __exp(double x)
{ {
double y,hi,lo,c,t; double y,hi=0,lo=0,c,t;
int k,xsb; int k=0,xsb;
unsigned int hx; unsigned int hx;
GET_HIGH_WORD(hx,x); GET_HIGH_WORD(hx,x);

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 * :ts=4
* *
@@ -67,7 +67,7 @@ Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
double __expm1(double x) 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; int k,xsb;
unsigned int hx; unsigned int hx;

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 * :ts=4
* *
@@ -143,7 +143,7 @@ INLINE STATIC double
__sqrt(double x) __sqrt(double x)
{ {
double z; double z;
int sign = (int)0x80000000; unsigned int sign = (unsigned int)0x80000000;
unsigned int r,t1,s1,ix1,q1; unsigned int r,t1,s1,ix1,q1;
int ix0,s0,q,m,t,i; int ix0,s0,q,m,t,i;

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 199 #define REVISION 201
#define DATE "6.3.2006" #define DATE "21.9.2006"
#define VERS "net.lib 1.199" #define VERS "net.lib 1.201"
#define VSTRING "net.lib 1.199 (6.3.2006)\r\n" #define VSTRING "net.lib 1.201 (21.9.2006)\r\n"
#define VERSTAG "\0$VER: net.lib 1.199 (6.3.2006)" #define VERSTAG "\0$VER: net.lib 1.201 (21.9.2006)"

View File

@@ -1 +1 @@
199 201

View File

@@ -0,0 +1,131 @@
/*
* $Id: resource_getrlimit.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
getrlimit(int resource,struct rlimit *rlp)
{
struct Task *self;
int ret = -1;
rlim_t l;
if(rlp == NULL)
{
__set_errno(EFAULT);
goto out;
}
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;
}
ret = 0;
out:
return(ret);
}

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 * :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 SPROFMSG
{ {
struct Message message; 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 * :ts=4
* *
@@ -44,6 +44,6 @@
void void
__check_abort(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); 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 * :ts=4
* *
@@ -80,7 +80,7 @@ kill(pid_t pid, int signal_number)
SHOWMSG("found the process"); SHOWMSG("found the process");
if(signal_number == SIGTERM || signal_number == SIGINT) if(signal_number == SIGTERM || signal_number == SIGINT)
Signal((struct Task *)pid,SIGBREAKF_CTRL_C); Signal((struct Task *)pid,__break_signal_mask);
else else
SHOWMSG("but won't shut it down"); 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 # :ts=4
# #
@@ -40,6 +40,8 @@ CPU =
OPTIONS = -DNDEBUG -mcrt=clib2-ts OPTIONS = -DNDEBUG -mcrt=clib2-ts
OPTIMIZE = -O OPTIMIZE = -O
DEBUG = -ggdb 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 * :ts=4
* *
@@ -100,7 +100,7 @@ UserLibOpen(struct UserData * ud)
{ {
BOOL result = FALSE; 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 initialization code. Note that this is not strictly
necessary. In fact, you should not need this functionality necessary. In fact, you should not need this functionality
if you stick to use Amiga operating system routines only 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 Use this feature only if you are porting code to the Amiga
which cannot be easily converted to follow the AmigaOS which cannot be easily converted to follow the AmigaOS
API definitions only. */ API definitions only. */
#if defined(__amigaos4__) && defined(__THREAD_SAFE) #if defined(__THREAD_SAFE)
{ {
/* Note that the clib2 library initialization is /* Note that the clib2 library initialization is
called exactly once, when the first client called exactly once, when the first client
opens this library. */ opens this library. */
if(ud->ud_UseCount == 0 && !__lib_init(SysBase)) if(ud->ud_UseCount == 0 && !__lib_init(ud->ud_SysBase))
goto out; goto out;
} }
#endif /* __amigaos4__ && __THREAD_SAFE */ #endif /* __THREAD_SAFE */
/* Remember that one more customer is using this data structure. */ /* Remember that one more customer is using this data structure. */
ud->ud_UseCount++; ud->ud_UseCount++;
@@ -140,7 +140,7 @@ UserLibClose(struct UserData * ud)
/* Remember that one less customer is using this data structure. */ /* Remember that one less customer is using this data structure. */
ud->ud_UseCount--; 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 cleanup code. Note that this is not strictly
necessary. In fact, you should not need this functionality necessary. In fact, you should not need this functionality
if you stick to use Amiga operating system routines only 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 Use this feature only if you are porting code to the Amiga
which cannot be easily converted to follow the AmigaOS which cannot be easily converted to follow the AmigaOS
API definitions only. */ API definitions only. */
#if defined(__amigaos4__) && defined(__THREAD_SAFE) #if defined(__THREAD_SAFE)
{ {
/* Note that the clib2 library cleanup code is /* Note that the clib2 library cleanup code is
called exactly once, when the last client called exactly once, when the last client
@@ -157,7 +157,7 @@ UserLibClose(struct UserData * ud)
if(ud->ud_UseCount == 0) if(ud->ud_UseCount == 0)
__lib_exit(); __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 # :ts=8
# #
@@ -315,6 +315,7 @@ SIGNAL_OBJ = \
signal_checkabort.o \ signal_checkabort.o \
signal_data.o \ signal_data.o \
signal_kill.o \ signal_kill.o \
signal_mask.o \
signal_raise.o \ signal_raise.o \
signal_sigaddset.o \ signal_sigaddset.o \
signal_sigblock.o \ signal_sigblock.o \
@@ -358,7 +359,9 @@ SOCKET_OBJ = \
socket_recv.o \ socket_recv.o \
socket_recvfrom.o \ socket_recvfrom.o \
socket_recvmsg.o \ socket_recvmsg.o \
socket_select_signal.o \
socket_select.o \ socket_select.o \
socket_wait_select.o \
socket_send.o \ socket_send.o \
socket_sendmsg.o \ socket_sendmsg.o \
socket_sendto.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 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 stdio_fclose.o : stdio_fclose.c stdlib_memory.h

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 * :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 int __get_h_errno(void);
extern void __set_h_errno(int new_h_errno); extern void __set_h_errno(int new_h_errno);
extern BOOL __obtain_daemon_message(VOID); 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_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 * :ts=4
* *
@@ -224,7 +224,7 @@ SOCKET_CONSTRUCTOR(socket_init)
tags[1].ti_Tag = SBTM_SETVAL(SBTC_BREAKMASK); tags[1].ti_Tag = SBTM_SETVAL(SBTC_BREAKMASK);
if(__check_abort_enabled) if(__check_abort_enabled)
tags[1].ti_Data = SIGBREAKF_CTRL_C; tags[1].ti_Data = __break_signal_mask;
else else
tags[1].ti_Data = 0; 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.12 2006-09-21 09:24:20 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -91,14 +91,14 @@ ioctl(int sockfd,int request, ... /* char *arg */)
{ {
int * option = (int *)param; int * option = (int *)param;
if(request == (unsigned int)FIONBIO) if(request == (int)FIONBIO)
{ {
if((*option) != 0) if((*option) != 0)
SET_FLAG(fd->fd_Flags,FDF_NON_BLOCKING); SET_FLAG(fd->fd_Flags,FDF_NON_BLOCKING);
else else
CLEAR_FLAG(fd->fd_Flags,FDF_NON_BLOCKING); CLEAR_FLAG(fd->fd_Flags,FDF_NON_BLOCKING);
} }
else if (request == (unsigned int)FIOASYNC) else if (request == (int)FIOASYNC)
{ {
if((*option) != 0) if((*option) != 0)
SET_FLAG(fd->fd_Flags,FDF_ASYNC_IO); SET_FLAG(fd->fd_Flags,FDF_ASYNC_IO);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,56 @@
/*
* $Id: socket_wait_select.c,v 1.3 2006-04-10 15:08:10 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.
*/
#if defined(SOCKET_SUPPORT)
/****************************************************************************/
#ifndef _SOCKET_HEADERS_H
#include "socket_headers.h"
#endif /* _SOCKET_HEADERS_H */
/****************************************************************************/
int
waitselect(int num_fds,fd_set *read_fds,fd_set *write_fds,fd_set *except_fds,struct timeval *timeout,unsigned long * signal_mask)
{
int result;
result = __select(num_fds,read_fds,write_fds,except_fds,timeout,signal_mask);
return(result);
}
/****************************************************************************/
#endif /* SOCKET_SUPPORT */

View File

@@ -1,6 +1,6 @@
#define VERSION 1 #define VERSION 1
#define REVISION 199 #define REVISION 201
#define DATE "6.3.2006" #define DATE "21.9.2006"
#define VERS "stack.lib 1.199" #define VERS "stack.lib 1.201"
#define VSTRING "stack.lib 1.199 (6.3.2006)\r\n" #define VSTRING "stack.lib 1.201 (21.9.2006)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.199 (6.3.2006)" #define VERSTAG "\0$VER: stack.lib 1.201 (21.9.2006)"

View File

@@ -1 +1 @@
199 201

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stat_convertfileinfo.c,v 1.8 2006-01-08 12:04:24 obarthel Exp $ * $Id: stat_convertfileinfo.c,v 1.9 2006-09-20 19:46:57 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -81,7 +81,7 @@ __convert_file_info_to_stat(
mode = S_IFIFO; mode = S_IFIFO;
else if (fib->fib_DirEntryType == ST_SOCKET) else if (fib->fib_DirEntryType == ST_SOCKET)
mode = S_IFSOCK; mode = S_IFSOCK;
else if (fib->fib_DirEntryType == ST_CONSOLE) else if (fib->fib_DirEntryType == ST_CONSOLE || fib->fib_DirEntryType == ST_NIL)
mode = S_IFCHR; mode = S_IFCHR;
else if (fib->fib_DirEntryType < 0) else if (fib->fib_DirEntryType < 0)
mode = S_IFREG; mode = S_IFREG;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stat_lstat.c,v 1.13 2006-01-08 12:04:24 obarthel Exp $ * $Id: stat_lstat.c,v 1.14 2006-09-21 09:24:20 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -271,7 +271,7 @@ lstat(const char * path_name, struct stat * st)
time(&mtime); time(&mtime);
st->st_mode = S_IFLNK | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; st->st_mode = S_IFLNK | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
st->st_dev = (ULONG)DeviceProc((STRPTR)path_name); st->st_dev = (dev_t)DeviceProc((STRPTR)path_name);
st->st_size = link_length; st->st_size = link_length;
st->st_mtime = mtime; st->st_mtime = mtime;
st->st_atime = mtime; st->st_atime = mtime;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_fdhookentry.c,v 1.32 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_fdhookentry.c,v 1.33 2006-09-20 19:46:57 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -581,7 +581,18 @@ __fd_hook_entry(
fh = BADDR(file); fh = BADDR(file);
if(CANNOT __safe_examine_file_handle(file,fam->fam_FileInfo)) /* Special treatment for "NIL:", for which we make
some stuff up. */
if(fh->fh_Type == NULL)
{
/* Make up some stuff for this stream. */
memset(fam->fam_FileInfo,0,sizeof(*fam->fam_FileInfo));
DateStamp(&fam->fam_FileInfo->fib_Date);
fam->fam_FileInfo->fib_DirEntryType = ST_NIL;
}
else if (CANNOT __safe_examine_file_handle(file,fam->fam_FileInfo))
{ {
LONG error; LONG error;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_filliobreadbuffer.c,v 1.11 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_filliobreadbuffer.c,v 1.12 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -66,7 +66,7 @@ __fill_iob_read_buffer(struct iob * file)
SHOWVALUE(file->iob_BufferSize); SHOWVALUE(file->iob_BufferSize);
fam.fam_Action = file_action_read; fam.fam_Action = file_action_read;
fam.fam_Data = file->iob_Buffer; fam.fam_Data = (char *)file->iob_Buffer;
fam.fam_Size = file->iob_BufferSize; fam.fam_Size = file->iob_BufferSize;
assert( file->iob_Action != NULL ); assert( file->iob_Action != NULL );

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_flushiobwritebuffer.c,v 1.8 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_flushiobwritebuffer.c,v 1.9 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -70,7 +70,7 @@ __flush_iob_write_buffer(struct iob * file)
SHOWMSG("calling the hook"); SHOWMSG("calling the hook");
fam.fam_Action = file_action_write; fam.fam_Action = file_action_write;
fam.fam_Data = file->iob_Buffer; fam.fam_Data = (char *)file->iob_Buffer;
fam.fam_Size = file->iob_BufferWriteBytes; fam.fam_Size = file->iob_BufferWriteBytes;
assert( file->iob_Action != NULL ); assert( file->iob_Action != NULL );

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_headers.h,v 1.25 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_headers.h,v 1.26 2006-09-20 19:46:57 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -168,6 +168,9 @@ struct iob;
/* The same for a console stream. */ /* The same for a console stream. */
#define ST_CONSOLE (20050402) #define ST_CONSOLE (20050402)
/* And something for NIL: */
#define ST_NIL (20060920)
/****************************************************************************/ /****************************************************************************/
/* Operations that can be performed by the file action function. */ /* Operations that can be performed by the file action function. */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_initializeiob.c,v 1.5 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_initializeiob.c,v 1.6 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -54,7 +54,7 @@ __initialize_iob(
memset(iob,0,sizeof(*iob)); memset(iob,0,sizeof(*iob));
iob->iob_CustomBuffer = custom_buffer; iob->iob_CustomBuffer = custom_buffer;
iob->iob_Buffer = buffer; iob->iob_Buffer = (UBYTE *)buffer;
iob->iob_BufferSize = buffer_size; iob->iob_BufferSize = buffer_size;
iob->iob_Descriptor = file_descriptor; iob->iob_Descriptor = file_descriptor;
iob->iob_SlotNumber = slot_number; iob->iob_SlotNumber = slot_number;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_locksemaphorename.c,v 1.4 2006-01-08 12:04:24 obarthel Exp $ * $Id: stdio_locksemaphorename.c,v 1.5 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -37,4 +37,4 @@
/****************************************************************************/ /****************************************************************************/
char * NOCOMMON __file_lock_semaphore_name = "Advisory File Locking"; char * NOCOMMON __file_lock_semaphore_name = (char *)"Advisory File Locking";

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_record_locking.c,v 1.15 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdio_record_locking.c,v 1.16 2006-04-05 08:39:45 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -1031,7 +1031,7 @@ __handle_record_locking(int cmd,struct flock * l,struct fd * fd,int * error_ptr)
const int rand_max = RAND_MAX / 65536; const int rand_max = RAND_MAX / 65536;
int num_random_ticks; int num_random_ticks;
if(__check_abort_enabled && (SetSignal(0,0) & SIGBREAKF_CTRL_C) != 0) if(__check_abort_enabled && (SetSignal(0,0) & __break_signal_mask) != 0)
{ {
SHOWMSG("lock polling loop stopped"); SHOWMSG("lock polling loop stopped");

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_setvbuf.c,v 1.9 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdio_setvbuf.c,v 1.10 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -154,7 +154,7 @@ setvbuf(FILE *stream,char *buf,int bufmode,size_t size)
if(bufmode == IOBF_BUFFER_MODE_NONE) if(bufmode == IOBF_BUFFER_MODE_NONE)
{ {
/* Use the default buffer, which is one byte in size. */ /* Use the default buffer, which is one byte in size. */
new_buffer = &file->iob_SingleByte; new_buffer = (char *)&file->iob_SingleByte;
size = 1; size = 1;
} }
else else
@@ -162,7 +162,7 @@ setvbuf(FILE *stream,char *buf,int bufmode,size_t size)
/* Replace the old buffer. */ /* Replace the old buffer. */
if(buf != NULL) if(buf != NULL)
{ {
new_buffer = (UBYTE *)buf; new_buffer = (char *)buf;
} }
else else
{ {
@@ -178,7 +178,7 @@ setvbuf(FILE *stream,char *buf,int bufmode,size_t size)
assert( file->iob_BufferReadBytes == 0 ); assert( file->iob_BufferReadBytes == 0 );
assert( file->iob_BufferWriteBytes == 0 ); assert( file->iob_BufferWriteBytes == 0 );
file->iob_Buffer = new_buffer; file->iob_Buffer = (UBYTE *)new_buffer;
file->iob_BufferSize = size; file->iob_BufferSize = size;
file->iob_Flags &= ~IOBF_BUFFER_MODE; file->iob_Flags &= ~IOBF_BUFFER_MODE;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdio_vfprintf.c,v 1.21 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdio_vfprintf.c,v 1.22 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -1329,7 +1329,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
#if defined(NDEBUG) #if defined(NDEBUG)
{ {
if(output_buffer == NULL) if(output_buffer == NULL)
output_buffer = ""; output_buffer = (char *)"";
} }
#else #else
{ {
@@ -1504,13 +1504,13 @@ vfprintf(FILE * stream,const char * format, va_list arg)
/* Get ready to prefix a sign character, if required. */ /* Get ready to prefix a sign character, if required. */
if(FLAG_IS_SET(format_flags,FORMATF_IsNegative)) if(FLAG_IS_SET(format_flags,FORMATF_IsNegative))
prefix = "-"; prefix = (char *)"-";
else if (FLAG_IS_SET(format_flags,FORMATF_ProduceSign)) else if (FLAG_IS_SET(format_flags,FORMATF_ProduceSign))
prefix = "+"; prefix = (char *)"+";
else if (FLAG_IS_SET(format_flags,FORMATF_ProduceSpace)) else if (FLAG_IS_SET(format_flags,FORMATF_ProduceSpace))
prefix = " "; prefix = (char *)" ";
else if (FLAG_IS_SET(format_flags,FORMATF_ZeroPrefix)) else if (FLAG_IS_SET(format_flags,FORMATF_ZeroPrefix))
prefix = "0"; prefix = (char *)"0";
else else
prefix = NULL; prefix = NULL;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_arg.c,v 1.10 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdlib_arg.c,v 1.14 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -121,16 +121,32 @@ ARG_CONSTRUCTOR(arg_init)
/* Shell startup? */ /* Shell startup? */
if(__WBenchMsg == NULL) if(__WBenchMsg == NULL)
{ {
BOOL expand_wildcard_args;
size_t number_of_arguments; size_t number_of_arguments;
unsigned char * arg_str; unsigned char * arg_str;
size_t arg_len; size_t arg_len;
unsigned char * command_line; unsigned char * command_line;
unsigned char * str; unsigned char * str;
/* Check if wildcard expansion of command line parameters
should be enabled. Note that the callback function, if
declared, takes precedence over the global variable. */
#if defined(UNIX_PATH_SEMANTICS)
{
expand_wildcard_args = __expand_wildcard_args;
if(FindVar("DISABLE_COMMANDLINE_WILDCARD_EXPANSION",LV_VAR) != NULL)
expand_wildcard_args = FALSE;
if(__expand_wildcard_args_check != NULL)
expand_wildcard_args = (*__expand_wildcard_args_check)();
}
#endif /* UNIX_PATH_SEMANTICS */
/* Get the shell parameter string and find out /* Get the shell parameter string and find out
how long it is, stripping a trailing line how long it is, stripping a trailing line
feed and blank spaces if necessary. */ feed and blank spaces if necessary. */
arg_str = GetArgStr(); arg_str = (unsigned char *)GetArgStr();
while(is_space(*arg_str)) while(is_space(*arg_str))
arg_str++; arg_str++;
@@ -234,16 +250,16 @@ ARG_CONSTRUCTOR(arg_init)
#if defined(UNIX_PATH_SEMANTICS) #if defined(UNIX_PATH_SEMANTICS)
{ {
/* If necessary, indicate that this parameter was quoted. */ /* If necessary, indicate that this parameter was quoted. */
if(__wildcard_quote_parameter(__argc) < 0) if(expand_wildcard_args && __wildcard_quote_parameter(__argc) < 0)
goto out; goto out;
} }
#endif /* UNIX_PATH_SEMANTICS */ #endif /* UNIX_PATH_SEMANTICS */
str++; str++;
__argv[__argc++] = str; __argv[__argc++] = (char *)str;
arg = str; arg = (char *)str;
/* Process the quoted string. */ /* Process the quoted string. */
while((*str) != '\0' && NOT is_final_quote_character(str)) while((*str) != '\0' && NOT is_final_quote_character(str))
@@ -298,7 +314,7 @@ ARG_CONSTRUCTOR(arg_init)
} }
else else
{ {
__argv[__argc++] = str; __argv[__argc++] = (char *)str;
while((*str) != '\0' && NOT is_space(*str)) while((*str) != '\0' && NOT is_space(*str))
str++; str++;
@@ -319,7 +335,7 @@ ARG_CONSTRUCTOR(arg_init)
{ {
/* If necessary, expand wildcard patterns found in the command /* If necessary, expand wildcard patterns found in the command
line string into file and directory names. */ line string into file and directory names. */
if(__wildcard_expand_init() < 0) if(expand_wildcard_args && __wildcard_expand_init() < 0)
goto out; goto out;
} }
#endif /* UNIX_PATH_SEMANTICS */ #endif /* UNIX_PATH_SEMANTICS */

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_atoll.c,v 1.2 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdlib_atoll.c,v 1.3 2006-08-02 08:00:27 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -58,7 +58,7 @@ atoll(const char *str)
{ {
if(str == NULL) if(str == NULL)
{ {
errno = EFAULT; __set_errno(EFAULT);
goto out; goto out;
} }
} }

View File

@@ -0,0 +1,40 @@
/*
* $Id: stdlib_expand_wildcard.c,v 1.1 2006-05-04 08:01:47 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 */
/****************************************************************************/
BOOL __expand_wildcard_args = TRUE;

View File

@@ -0,0 +1,40 @@
/*
* $Id: stdlib_expand_wildcard_check.c,v 1.1 2006-09-15 06:58:16 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 */
/****************************************************************************/
BOOL (*__expand_wildcard_args_check)(void);

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_main.c,v 1.30 2006-01-08 12:04:25 obarthel Exp $ * $Id: stdlib_main.c,v 1.32 2006-09-22 09:19:07 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -347,7 +347,7 @@ _main(void)
/* Try to open the libraries we need to proceed. */ /* Try to open the libraries we need to proceed. */
if(CANNOT open_libraries()) if(CANNOT open_libraries())
{ {
char * error_message; const char * error_message;
/* If available, use the error message provided by the client. */ /* If available, use the error message provided by the client. */
error_message = __minimum_os_lib_error; error_message = __minimum_os_lib_error;
@@ -501,7 +501,7 @@ _main(void)
tags[i]. ti_Tag = NP_StackSize; tags[i]. ti_Tag = NP_StackSize;
tags[i++]. ti_Data = stack_size; tags[i++]. ti_Data = stack_size;
tags[i]. ti_Tag = NP_Name; tags[i]. ti_Tag = NP_Name;
tags[i++]. ti_Data = (ULONG)(__process_name != NULL ? __process_name : FilePart(program_name)); tags[i++]. ti_Data = (ULONG)(__process_name != NULL ? __process_name : (char *)FilePart(program_name));
tags[i]. ti_Tag = NP_CommandName; tags[i]. ti_Tag = NP_CommandName;
tags[i++]. ti_Data = (ULONG)FilePart(program_name); tags[i++]. ti_Data = (ULONG)FilePart(program_name);
tags[i]. ti_Tag = NP_Cli; tags[i]. ti_Tag = NP_Cli;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: stdlib_setenv.c,v 1.10 2006-01-08 12:04:26 obarthel Exp $ * $Id: stdlib_setenv.c,v 1.11 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -220,7 +220,7 @@ setenv(const char *original_name, const char *original_value, int overwrite)
} }
if(value == NULL) if(value == NULL)
value = ""; value = (char *)"";
SHOWSTRING(name); SHOWSTRING(name);
SHOWSTRING(value); SHOWSTRING(value);

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: string_memcpy.c,v 1.7 2006-01-08 12:04:26 obarthel Exp $ * $Id: string_memcpy.c,v 1.8 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -312,8 +312,8 @@ __memcpy(unsigned char * to,unsigned char * from,size_t len)
len -= sizeof(long); len -= sizeof(long);
} }
to = (char *)_to; to = (unsigned char *)_to;
from = (char *)_from; from = (unsigned char *)_from;
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: string_memmove.c,v 1.6 2006-01-08 12:04:26 obarthel Exp $ * $Id: string_memmove.c,v 1.7 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -447,8 +447,8 @@ __memmove(unsigned char * to,unsigned char * from,size_t len)
len -= sizeof(long); len -= sizeof(long);
} }
to = (char *)_to; to = (unsigned char *)_to;
from = (char *)_from; from = (unsigned char *)_from;
} }
} }
@@ -549,8 +549,8 @@ __memmove(unsigned char * to,unsigned char * from,size_t len)
len -= sizeof(long); len -= sizeof(long);
} }
to = (char *)_to; to = (unsigned char *)_to;
from = (char *)_from; from = (unsigned char *)_from;
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: string_memset.c,v 1.7 2006-01-08 12:04:26 obarthel Exp $ * $Id: string_memset.c,v 1.8 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -116,7 +116,7 @@ __memset(unsigned char * to,unsigned char value,size_t len)
len -= sizeof(long); len -= sizeof(long);
} }
to = (char *)_to; to = (unsigned char *)_to;
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: string_strerror.c,v 1.3 2006-01-08 12:04:27 obarthel Exp $ * $Id: string_strerror.c,v 1.4 2006-09-17 17:36:42 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -37,162 +37,78 @@
/****************************************************************************/ /****************************************************************************/
static char * error_table[EILSEQ - EPERM + 1] = static void
number_to_string(int number,char * string,size_t string_size)
{ {
"Operation not permitted", int is_negative = 0;
"No such file or directory", char * s = string;
"No such process", unsigned int n;
"Interrupted system call", size_t i,len;
"Input/output error", char c;
"Device not configured",
"Argument list too long", /* We convert the error number into in an unsigned
"Exec format error", integer, so that numbers such as 0x80000000
"Bad file descriptor", can come out of the conversion. */
"No child processes", if(number < 0)
"Resource deadlock avoided", {
"Cannot allocate memory", is_negative = 1;
"Permission denied",
"Bad address", n = (-number);
"Block device required", }
"Device busy", else
"File exists", {
"Cross-device link", n = number;
"Operation not supported by device", }
"Not a directory",
"Is a directory", /* Convert the error number into a string of digits. */
"Invalid argument", len = 0;
"Too many open files in system",
"Too many open files", do
"Inappropriate ioctl for device", {
"Text file busy", (*s++) = '0' + (n % 10);
"File too large", n /= 10;
"No space left on device", len++;
"Illegal seek", }
"Read-only file system", while(n > 0 && len < string_size-1);
"Too many links",
"Broken pipe", /* Add the sign, if necessary. */
"Numerical argument out of domain", if(is_negative && len < string_size-1)
"Result too large", {
"Resource temporarily unavailable", (*s++) = '-';
"Operation now in progress", len++;
"Operation already in progress", }
"Socket operation on non-socket",
"Destination address required", (*s) = '\0';
"Message too long",
"Protocol wrong type for socket", /* Reverse the string in place. */
"Protocol not available", for(i = 0 ; i < len / 2 ; i++)
"Protocol not supported", {
"Socket type not supported", c = string[len-1-i];
"Operation not supported on socket", string[len-1-i] = string[i];
"Protocol family not supported", string[i] = c;
"Address family not supported by protocol family", }
"Address already in use", }
"Can't assign requested address",
"Network is down",
"Network is unreachable",
"Network dropped connection on reset",
"Software caused connection abort",
"Connection reset by peer",
"No buffer space available",
"Socket is already connected",
"Socket is not connected",
"Can't send after socket shutdown",
"Too many references: can't splice",
"Connection timed out",
"Connection refused",
"Too many levels of symbolic links",
"File name too long",
"Host is down",
"No route to host",
"Directory not empty",
"Too many processes",
"Too many users",
"Disc quota exceeded",
"Stale NFS file handle",
"Too many levels of remote in path",
"RPC struct is bad",
"RPC version wrong",
"RPC program not available",
"Program version wrong",
"Bad procedure for program",
"No locks available",
"Function not implemented",
"Inappropriate file type or format",
"Authentication error",
"Need authenticator",
"Identifier removed",
"No message of the desired type.",
"Value too large to be stored in data type.",
"Encoding error detected"
};
/****************************************************************************/ /****************************************************************************/
char * char *
strerror(int error_number) strerror(int error_number)
{ {
char * result; static char error_message[80];
if(error_number < EPERM || error_number > EILSEQ) /* NOTE: We are making the assumption that if strerror_r() fails, it
will fail only because the error code is unknown, and not
because the size of the supplied buffer is too small. */
if(strerror_r(error_number,error_message,sizeof(error_message)) != 0)
{ {
static char error_buffer[80]; char number[20];
char number[30];
char *s = number;
int is_negative = 0;
unsigned int n;
int i,len,c;
/* We convert the error number into in an unsigned number_to_string(error_number,number,sizeof(number));
integer, so that numbers such as 0x80000000
can come out of the conversion. */
if(error_number < 0)
{
is_negative = 1;
n = (-error_number); strcpy(error_message,"Unknown error ");
} strcat(error_message,number);
else
{
n = error_number;
}
/* Convert the error number into a string of digits. */
len = 0;
do
{
(*s++) = '0' + (n % 10);
n /= 10;
len++;
}
while(n > 0 && len < (int)sizeof(number)-1);
/* Add the sign, if necessary. */
if(is_negative && len < (int)sizeof(number)-1)
{
(*s++) = '-';
len++;
}
(*s) = '\0';
/* Reverse the string in place. */
for(i = 0 ; i < len / 2 ; i++)
{
c = number[len-1-i];
number[len-1-i] = number[i];
number[i] = c;
}
strcpy(error_buffer,"Unknown error ");
strcat(error_buffer,number);
result = error_buffer;
}
else
{
result = error_table[error_number - EPERM];
} }
return(result); return(error_message);
} }

164
library/string_strerror_r.c Normal file
View File

@@ -0,0 +1,164 @@
/*
* $Id: string_strerror_r.c,v 1.2 2006-09-21 09:24:20 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 _STRING_HEADERS_H
#include "string_headers.h"
#endif /* _STRING_HEADERS_H */
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
static const char * error_table[EILSEQ - EPERM + 1] =
{
"Operation not permitted",
"No such file or directory",
"No such process",
"Interrupted system call",
"Input/output error",
"Device not configured",
"Argument list too long",
"Exec format error",
"Bad file descriptor",
"No child processes",
"Resource deadlock avoided",
"Cannot allocate memory",
"Permission denied",
"Bad address",
"Block device required",
"Device busy",
"File exists",
"Cross-device link",
"Operation not supported by device",
"Not a directory",
"Is a directory",
"Invalid argument",
"Too many open files in system",
"Too many open files",
"Inappropriate ioctl for device",
"Text file busy",
"File too large",
"No space left on device",
"Illegal seek",
"Read-only file system",
"Too many links",
"Broken pipe",
"Numerical argument out of domain",
"Result too large",
"Resource temporarily unavailable",
"Operation now in progress",
"Operation already in progress",
"Socket operation on non-socket",
"Destination address required",
"Message too long",
"Protocol wrong type for socket",
"Protocol not available",
"Protocol not supported",
"Socket type not supported",
"Operation not supported on socket",
"Protocol family not supported",
"Address family not supported by protocol family",
"Address already in use",
"Can't assign requested address",
"Network is down",
"Network is unreachable",
"Network dropped connection on reset",
"Software caused connection abort",
"Connection reset by peer",
"No buffer space available",
"Socket is already connected",
"Socket is not connected",
"Can't send after socket shutdown",
"Too many references: can't splice",
"Connection timed out",
"Connection refused",
"Too many levels of symbolic links",
"File name too long",
"Host is down",
"No route to host",
"Directory not empty",
"Too many processes",
"Too many users",
"Disc quota exceeded",
"Stale NFS file handle",
"Too many levels of remote in path",
"RPC struct is bad",
"RPC version wrong",
"RPC program not available",
"Program version wrong",
"Bad procedure for program",
"No locks available",
"Function not implemented",
"Inappropriate file type or format",
"Authentication error",
"Need authenticator",
"Identifier removed",
"No message of the desired type.",
"Value too large to be stored in data type.",
"Encoding error detected"
};
/****************************************************************************/
int
strerror_r(int number,char * buffer,size_t buffer_size)
{
int result = -1;
const char * str;
size_t len;
if(number < EPERM || number > EILSEQ)
{
__set_errno(EINVAL);
goto out;
}
str = error_table[number - EPERM];
len = strlen(str);
if(len >= buffer_size)
{
__set_errno(ERANGE);
goto out;
}
strcpy(buffer,str);
result = 0;
out:
return(result);
}

View File

@@ -0,0 +1,214 @@
/*
* $Id: systeminfo_sysinfo.c,v 1.5 2006-09-22 09:02:51 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/systeminfo.h>
#include <sys/utsname.h>
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#if defined(SOCKET_SUPPORT) && !defined(_SOCKET_HEADERS_H)
#include "socket_headers.h"
#endif /* SOCKET_SUPPORT && !_SOCKET_HEADERS_H */
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
#if !defined(__amigaos4__)
#include <exec/execbase.h>
/* The order here is important. */
static const struct { UWORD flags; char *name; } isanames[] =
{
/* Apparently there is a 060 card sans FPU, but how to detect it without a LineF exception?
Perhaps I should see if I can find my old MC68060 manual. */
{AFF_68060|AFF_68060, "68060+fpu060 "},
{AFF_68060|AFF_68060, "68060+fpu "},
{AFF_68040|AFF_FPU40, "68040+fpu040 "},
{AFF_68040|AFF_68882, "68040+fpu "},
{AFF_68040|AFF_68881, "68040+fpu "},
{AFF_68040, "68040 "},
{AFF_68030|AFF_68882, "68030+fpu "},
{AFF_68030|AFF_68881, "68030+fpu "},
{AFF_68020|AFF_68882, "68020+fpu "},
{AFF_68020|AFF_68881, "68020+fpu "},
{AFF_68030, "68030 "},
{AFF_68020, "68020 "},
{AFF_68010, "68010 "},
};
#endif /* !__amigaos4__ */
/****************************************************************************/
long
sysinfo(int cmd,char *buf,long buflen)
{
struct utsname info;
long ret = -1;
ENTER();
if(buf == NULL)
{
__set_errno(EFAULT);
goto out;
}
uname(&info); /* Most of the keys use this. */
switch(cmd)
{
case SI_SYSNAME:
ret = strlcpy(buf,info.sysname,buflen);
break;
case SI_HOSTNAME:
ret = strlcpy(buf,info.nodename,buflen);
break;
case SI_SET_HOSTNAME:
__set_errno(EPERM);
goto out;
case SI_RELEASE:
ret = strlcpy(buf,info.release,buflen);
break;
case SI_VERSION:
ret = strlcpy(buf,info.version,buflen);
break;
case SI_MACHINE:
ret = strlcpy(buf,"amiga",buflen);
break;
case SI_ARCHITECTURE:
ret = strlcpy(buf,info.machine,buflen);
break;
case SI_ISALIST:
#if defined(__amigaos4__)
{
/* Solaris uses "ppc" as the isa name, but gcc uses powerpc. "ppc+altivec" follows the
convention of specifying isa+ext from Solaris on SPARC machines. This way of implementing
SI_ISALIST seemed like a good idea at the time. */
const char * s;
uint32 vecu;
GetCPUInfoTags(GCIT_VectorUnit,&vecu,TAG_DONE);
if(vecu == VECTORTYPE_ALTIVEC || vecu == VECTORTYPE_VMX) /* AltiVec and VMX are the same. */
s = "ppc+altivec ppc common";
else
s = "ppc common";
ret = strlcpy(buf,s,buflen);
}
#else
{
UWORD attention_flags = ((struct ExecBase *)SysBase)->AttnFlags;
char * last_added = "";
size_t i;
ret = 0;
strlcpy(buf,"",buflen);
for(i = 0 ; i < NUM_ENTRIES(isanames) ; i++)
{
if((attention_flags & isanames[i].flags) == isanames[i].flags)
{
if(strcmp(last_added,isanames[i].name) != SAME)
{
ret += strlcat(buf,isanames[i].name,buflen);
last_added = isanames[i].name;
}
}
}
ret += strlcat(buf,"68000",buflen);
}
#endif
break;
case SI_PLATFORM: /* TODO: Figure out a good way of checking this. */
ret = strlcpy(buf,"Amiga,Unknown",buflen);
break;
case SI_HW_PROVIDER: /* TODO: Figure out a good way of checking this. */
ret = strlcpy(buf,"Unknown",buflen);
break;
case SI_HW_SERIAL:
#if defined(SOCKET_SUPPORT)
{
ret = snprintf(buf,buflen,"%lu",gethostid());
}
#else
{
ret = strlcpy(buf,"0",buflen);
}
#endif
break;
default:
__set_errno(EINVAL);
goto out;
}
out:
RETURN(ret);
return(ret);
}

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: termios_console_fdhookentry.c,v 1.2 2006-01-08 12:04:27 obarthel Exp $ * $Id: termios_console_fdhookentry.c,v 1.4 2006-09-20 19:46:57 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -328,7 +328,7 @@ __termios_console_hook(
} }
else else
{ {
if(WaitForChar(fd->fd_DefaultFile,100000*tios->c_cc[VTIME])) if(WaitForChar(file,100000*tios->c_cc[VTIME]))
result = Read(file,fam->fam_Data,fam->fam_Size); result = Read(file,fam->fam_Data,fam->fam_Size);
} }
} }
@@ -589,7 +589,18 @@ __termios_console_hook(
fh = BADDR(file); fh = BADDR(file);
if(CANNOT __safe_examine_file_handle(file,fam->fam_FileInfo)) /* Special treatment for "NIL:", for which we make
some stuff up. */
if(fh->fh_Type == NULL)
{
/* Make up some stuff for this stream. */
memset(fam->fam_FileInfo,0,sizeof(*fam->fam_FileInfo));
DateStamp(&fam->fam_FileInfo->fib_Date);
fam->fam_FileInfo->fib_DirEntryType = ST_NIL;
}
else if (CANNOT __safe_examine_file_handle(file,fam->fam_FileInfo))
{ {
LONG error; LONG error;

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: time_asctime_r.c,v 1.8 2006-01-08 12:04:27 obarthel Exp $ * $Id: time_asctime_r.c,v 1.9 2006-09-22 09:02:51 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -177,7 +177,7 @@ __asctime_r(const struct tm *tm,char * buffer,size_t buffer_size)
} }
else else
{ {
result = ""; result = (char *)"";
} }
out: out:

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: time_strftime.c,v 1.18 2006-01-08 12:04:27 obarthel Exp $ * $Id: time_strftime.c,v 1.19 2006-04-05 06:43:56 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -59,8 +59,8 @@ struct format_hook_data
STATIC VOID STATIC VOID
format_hook_function( format_hook_function(
struct Hook * hook, struct Hook * hook,
long c, struct Locale * UNUSED unused_locale,
struct Locale * UNUSED unused_locale) ULONG c)
{ {
struct format_hook_data * data = hook->h_Data; struct format_hook_data * data = hook->h_Data;
@@ -97,7 +97,7 @@ store_string_via_hook(const char * string,int len,struct Hook * hook)
len = strlen(string); len = strlen(string);
while(len-- > 0) while(len-- > 0)
CallHookPkt(hook,(APTR)((ULONG)(*string++)),NULL); CallHookPkt(hook,NULL,(APTR)((ULONG)(*string++)));
} }
/****************************************************************************/ /****************************************************************************/

78
library/timeb_ftime.c Normal file
View File

@@ -0,0 +1,78 @@
/*
* $Id: timeb_ftime.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/timeb.h>
#include <sys/time.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
ftime(struct timeb *tb)
{
struct timeval tv;
struct timezone tz;
int retval = -1;
ENTER();
if(tb == NULL)
{
__set_errno(EFAULT);
goto out;
}
if(gettimeofday(&tv,&tz) != 0)
goto out;
tb->time = tv.tv_sec;
tb->millitm = tv.tv_usec / 1000;
tb->timezone = tz.tz_minuteswest;
tb->dstflag = tz.tz_dsttime;
retval = 0;
out:
RETURN(retval);
return(retval);
}

94
library/ulimit_ulimit.c Normal file
View File

@@ -0,0 +1,94 @@
/*
* $Id: ulimit_ulimit.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 <ulimit.h>
/****************************************************************************/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
long
ulimit(int cmd,long newlim)
{
long ret = -1;
switch(cmd)
{
case UL_GETFSIZE:
/* Maximum number of 512-byte blocks in a file. Largefile aware programs should not use ulimit() anyway. */
ret = (0x7fffffffL >> 9) - 1L; /* Max Filesize/512 - 1 */
break;
case UL_GMEMLIM: /* Which flags are appropriate for AvailMem()? */
#if defined(__amigaos4__)
{
ret = AvailMem(MEMF_TOTAL|MEMF_VIRTUAL);
}
#else
{
ret = AvailMem(MEMF_ANY|MEMF_LARGEST); /* Too conservative? */
}
#endif
break;
case UL_GDESLIM: /* No limit, so we just return a reasonably large value. */
ret = 1024;
break;
case UL_SETFSIZE: /* Not supported */
__set_errno(EPERM);
goto out;
default:
__set_errno(EINVAL);
goto out;
}
out:
return(ret);
}

View File

@@ -1,5 +1,5 @@
/* /*
* $Id: unistd_chown.c,v 1.9 2006-01-08 12:04:27 obarthel Exp $ * $Id: unistd_chown.c,v 1.11 2006-04-05 08:19:11 obarthel Exp $
* *
* :ts=4 * :ts=4
* *
@@ -54,6 +54,8 @@ chown(const char * path_name, uid_t owner, gid_t group)
struct name_translation_info path_name_nti; struct name_translation_info path_name_nti;
#endif /* UNIX_PATH_SEMANTICS */ #endif /* UNIX_PATH_SEMANTICS */
struct DevProc * dvp = NULL; struct DevProc * dvp = NULL;
BPTR file_lock = ZERO;
BOOL owner_changed = TRUE;
LONG status; LONG status;
int result = ERROR; int result = ERROR;
@@ -80,14 +82,6 @@ chown(const char * path_name, uid_t owner, gid_t group)
} }
#endif /* CHECK_FOR_NULL_POINTERS */ #endif /* CHECK_FOR_NULL_POINTERS */
if(owner > 65535 || group > 65535)
{
SHOWMSG("invalid owner or group");
__set_errno(EINVAL);
goto out;
}
#if defined(UNIX_PATH_SEMANTICS) #if defined(UNIX_PATH_SEMANTICS)
{ {
if(__unix_path_semantics) if(__unix_path_semantics)
@@ -112,58 +106,105 @@ chown(const char * path_name, uid_t owner, gid_t group)
} }
#endif /* UNIX_PATH_SEMANTICS */ #endif /* UNIX_PATH_SEMANTICS */
D(("changing owner of '%s'",path_name)); /* A value of -1 for either the owner or the group ID means
that what's currently being used should not be changed. */
if(owner == (uid_t)-1 || group == (gid_t)-1)
{
D_S(struct FileInfoBlock,fib);
#if defined(__amigaos4__)
{
PROFILE_OFF(); PROFILE_OFF();
status = SetOwner((STRPTR)path_name,(LONG)((((ULONG)owner) << 16) | group));
/* Try to find out which owner/group information
is currently in use. */
file_lock = Lock((STRPTR)path_name,SHARED_LOCK);
if(file_lock == ZERO || CANNOT Examine(file_lock,fib))
{
PROFILE_ON();
__set_errno(__translate_access_io_error_to_errno(IoErr()));
goto out;
}
UnLock(file_lock);
file_lock = ZERO;
PROFILE_ON(); PROFILE_ON();
/* Replace the information that should not be changed. */
if(owner == (uid_t)-1)
owner = fib->fib_OwnerUID;
if(group == (gid_t)-1)
group = fib->fib_OwnerGID;
/* Is anything different at all? */
if(owner == fib->fib_OwnerUID && group == fib->fib_OwnerGID)
owner_changed = FALSE;
} }
#else
if(owner > 65535 || group > 65535)
{ {
if(((struct Library *)DOSBase)->lib_Version >= 39) SHOWMSG("invalid owner or group");
__set_errno(EINVAL);
goto out;
}
if(owner_changed)
{
D(("changing owner of '%s'",path_name));
#if defined(__amigaos4__)
{ {
PROFILE_OFF(); PROFILE_OFF();
status = SetOwner((STRPTR)path_name,(LONG)((((ULONG)owner) << 16) | group)); status = SetOwner((STRPTR)path_name,(LONG)((((ULONG)owner) << 16) | group));
PROFILE_ON(); PROFILE_ON();
} }
else #else
{ {
D_S(struct bcpl_name,new_name); if(((struct Library *)DOSBase)->lib_Version >= 39)
size_t len;
len = strlen(path_name);
if(len >= sizeof(new_name->name))
{ {
__set_errno(ENAMETOOLONG); PROFILE_OFF();
goto out; status = SetOwner((STRPTR)path_name,(LONG)((((ULONG)owner) << 16) | group));
PROFILE_ON();
} }
else
PROFILE_OFF();
dvp = GetDeviceProc((STRPTR)path_name,NULL);
PROFILE_ON();
if(dvp == NULL)
{ {
__set_errno(__translate_io_error_to_errno(IoErr())); D_S(struct bcpl_name,new_name);
goto out; size_t len;
len = strlen(path_name);
if(len >= sizeof(new_name->name))
{
__set_errno(ENAMETOOLONG);
goto out;
}
PROFILE_OFF();
dvp = GetDeviceProc((STRPTR)path_name,NULL);
PROFILE_ON();
if(dvp == NULL)
{
__set_errno(__translate_io_error_to_errno(IoErr()));
goto out;
}
new_name->name[0] = len;
memmove(&new_name->name[1],path_name,len);
PROFILE_OFF();
status = DoPkt(dvp->dvp_Port,ACTION_SET_OWNER,dvp->dvp_Lock,MKBADDR(new_name),(LONG)((((ULONG)owner) << 16) | group),0,0);
PROFILE_ON();
} }
new_name->name[0] = len;
memmove(&new_name->name[1],path_name,len);
PROFILE_OFF();
status = DoPkt(dvp->dvp_Port,ACTION_SET_OWNER,dvp->dvp_Lock,MKBADDR(new_name),(LONG)((((ULONG)owner) << 16) | group),0,0);
PROFILE_ON();
} }
} #endif /* __amigaos4__ */
#endif /* __amigaos4__ */
if(status == DOSFALSE) if(status == DOSFALSE)
{ {
__set_errno(__translate_io_error_to_errno(IoErr())); __set_errno(__translate_io_error_to_errno(IoErr()));
goto out; goto out;
}
} }
result = OK; result = OK;
@@ -171,7 +212,12 @@ chown(const char * path_name, uid_t owner, gid_t group)
out: out:
PROFILE_OFF(); PROFILE_OFF();
FreeDeviceProc(dvp); FreeDeviceProc(dvp);
if(file_lock != ZERO)
UnLock(file_lock);
PROFILE_ON(); PROFILE_ON();
RETURN(result); RETURN(result);

View File

@@ -0,0 +1,266 @@
/*
* $Id: unistd_common_pathconf.c,v 1.3 2006-09-21 09:24:20 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_NULL_POINTER_CHECK_H
#include "stdlib_null_pointer_check.h"
#endif /* _STDLIB_NULL_POINTER_CHECK_H */
/****************************************************************************/
#ifndef _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
#ifndef ID_CON
#define ID_CON (0x434F4E00L) /* 'CON\0' */
#endif /* ID_CON */
#ifndef ID_RAWCON
#define ID_RAWCON (0x52415700L) /* 'RAW\0' */
#endif /* ID_RAWCON */
/****************************************************************************/
struct fs_info
{
ULONG dos_type;
int name_max,path_max;
int link_max,symlink_max;
int file_size_bits;
};
/****************************************************************************/
static const struct fs_info fs_info[] =
{
{ID_NO_DISK_PRESENT, 0, 0, 0, 0, 0}, /* No disk */
{ID_UNREADABLE_DISK, 0, 0, 0, 0, 0}, /* BAD\0 */
{ID_BUSY_DISK, 0, 0, 0, 0, 0}, /* BUSY - Diskchange in progress? */
{ID_CON, 0, 0, 0, 0, 0}, /* CON\0 - Not really a disk. */
{ID_RAWCON, 0, 0, 0, 0, 0}, /* RAW\0 - Not really a disk. */
{ID_NOT_REALLY_DOS, 0, 0, 0, 0, 0}, /* Unreadable disk. */
{ID_KICKSTART_DISK, 0, 0, 0, 0, 0}, /* Kickstart disk. */
{ID_MSDOS_DISK, 8, 31, 0, 0, 30}, /* MSDOS - TODO: Check what the limits really are. */
{ID_DOS_DISK, 30, 254, -1, -1, 31}, /* DOS\0 = OFS */
{ID_FFS_DISK, 30, 254, -1, -1, 31}, /* DOS\1 = FFS */
{ID_INTER_DOS_DISK, 30, 254, -1, -1, 31}, /* DOS\2 = OFS INTL */
{ID_INTER_FFS_DISK, 30, 254, -1, -1, 31}, /* DOS\3 = FFS INTL */
{ID_FASTDIR_DOS_DISK, 30, 254, -1, -1, 31}, /* DOS\4 = OFS DC */
{ID_FASTDIR_FFS_DISK, 30, 254, -1, -1, 31}, /* DOS\5 = FFS DC */
{ID_LONGNAME_DOS_DISK, 107, 8192, -1, -1, 31}, /* DOS\6 = OFS LONGNAMES */
{ID_LONGNAME_FFS_DISK, 107, 8192, -1, -1, 63}, /* DOS\7 = FFS LONGNAMES */
{0x53465300, 107, 8192, 0, -1, 31}, /* SFS\0 = Smartfilesystem */
{0x53465302, 107, 8192, 0, -1, 63}, /* SFS\2 = Smartfilesystem2 */
{0x50465300, 30, 254, 0, 0, 31}, /* PFS\0 = Professional File System */
{0x46545854, 0, 0, 0, 0, 0}, /* FTXT - Textclip device */
};
/****************************************************************************/
long
__pathconf(struct MsgPort *port,int name)
{
ULONG dos_type = 0;
size_t fs_index = 0;
long ret = -1;
if(port != NULL)
{
D_S(struct InfoData,id);
if(DoPkt(port,ACTION_IS_FILESYSTEM,0,0,0,0,0) == DOSFALSE) /* Not a filesystem. */
{
SHOWMSG("Not a filesystem.");
__set_errno(ENODEV);
goto out;
}
if(DoPkt(port,ACTION_DISK_INFO,MKBADDR(id),0,0,0,0)) /* Managed to obtain disk info. */
{
size_t i;
switch(id->id_DiskState)
{
case ID_VALIDATING: /* Consider this an error condition? */
case ID_WRITE_PROTECTED:
case ID_VALIDATED:
dos_type = id->id_DiskType;
/* See if we know anything about this file-system */
for(i = 0 ; i < NUM_ENTRIES(fs_info) ; i++)
{
if(dos_type == fs_info[i].dos_type)
{
fs_index = i;
break;
}
}
break;
default:
SHOWMSG("Invalid disk state.");
break;
}
}
else
{
/* Treat error as no disk present by having default fs_index=0 */
SHOWMSG("Unable to query DISK_INFO");
}
}
switch(name)
{
case _PC_FILESIZEBITS:
ret = fs_info[fs_index].file_size_bits;
break;
case _PC_LINK_MAX:
ret = fs_info[fs_index].link_max;
break;
case _PC_MAX_CANON:
ret = 510; /* I could not find any documentation regarding this. */
break;
case _PC_MAX_INPUT:
#if defined(__amigaos4__)
{
uint32 Bufsize;
struct TagItem TagList[2]=
{
{DC_FHBufferR, (ULONG)&Bufsize},
{TAG_DONE, 0}
};
DosControl(TagList);
ret = Bufsize; /* Default is 2048 bytes. */
}
#else
{
ret = 204;
}
#endif /* __amigaos4__ */
break;
case _PC_NAME_MAX:
ret = fs_info[fs_index].name_max;
break;
case _PC_PATH_MAX:
ret = fs_info[fs_index].path_max;
break;
case _PC_PIPE_BUF:
ret = 512; /* One buffer. The PIPE: device usually has 8 of these. */
break;
case _PC_XATTR_ENABLED:
ret = 0;
break;
case _PC_XATTR_EXISTS:
ret = 0;
break;
case _PC_CHOWN_RESTRICTED:
ret = 0;
break;
case _PC_NO_TRUNC:
ret = 0;
break;
case _PC_VDISABLE:
ret = 0; /* TODO: Implement this in the termios emulation. */
break;
case _PC_ASYNC_IO:
ret = 0;
break;
case _PC_PRIO_IO:
ret = 0;
break;
case _PC_SYNC_IO:
ret = 0;
break;
case _PC_SYMLINK_MAX:
ret = fs_info[fs_index].symlink_max;
break;
case _PC_DOSTYPE: /* Amiga-specific extension. */
ret = dos_type;
break;
default:
SHOWMSG("Invalid option name");
__set_errno(EINVAL);
goto out;
}
out:
return(ret);
}

40
library/unistd_def_path.c Normal file
View File

@@ -0,0 +1,40 @@
/*
* $Id: unistd_def_path.c,v 1.3 2006-09-22 09:02:51 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
char * __default_path = (char *)"/gcc/bin:/SDK/C:/SDK/Local/C:/C:.";

View File

@@ -0,0 +1,40 @@
/*
* $Id: unistd_def_path_delimiter.c,v 1.3 2006-09-22 09:02:51 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
char * __default_path_delimiter = (char *)":";

40
library/unistd_environ.c Normal file
View File

@@ -0,0 +1,40 @@
/*
* $Id: unistd_environ.c,v 1.1 2006-08-02 08:00: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.
*/
#ifndef _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
char ** environ;

98
library/unistd_execl.c Normal file
View File

@@ -0,0 +1,98 @@
/*
* $Id: unistd_execl.c,v 1.3 2006-08-02 08:00: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.
*/
#ifndef _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
execl(const char *path, const char *arg0, ...)
{
char ** argv = NULL;
int result = -1;
size_t argc = 0;
va_list args;
/* If there are any, count the number of arguments supplied */
if(arg0 != NULL)
{
argc = 1;
va_start(args,arg0);
while(va_arg(args,const char *) != NULL)
argc++;
va_end(args);
}
/* Allocate enough memory for the entire argument list
plus the terminating NULL */
argv = (char **)malloc(sizeof(*argv) * (argc + 1));
if(argv == NULL)
{
__set_errno(ENOMEM);
goto out;
}
if(argc > 0)
{
size_t i;
argv[0] = (char *)arg0;
va_start(args,arg0);
for(i = 1 ; i < argc ; i++)
argv[i] = va_arg(args,char *);
va_end(args);
}
argv[argc] = NULL;
result = execve(path,(char * const *)argv,environ);
out:
if(argv != NULL)
free(argv);
return(result);
}

104
library/unistd_execle.c Normal file
View File

@@ -0,0 +1,104 @@
/*
* $Id: unistd_execle.c,v 1.3 2006-08-02 06:49:47 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
execle(const char *path, const char *arg0, ...)
{
char ** argv = NULL;
int result = -1;
size_t argc = 0;
va_list args;
char **envp;
/* If there are any, count the number of arguments supplied */
if(arg0 != NULL)
{
argc = 1;
va_start(args,arg0);
while(va_arg(args,const char *) != NULL)
argc++;
va_end(args);
}
/* Allocate enough memory for the entire argument list
plus the terminating NULL */
argv = (char **)malloc(sizeof(*argv) * (argc + 1));
if(argv == NULL)
{
__set_errno(ENOMEM);
goto out;
}
va_start(args,arg0);
if(argc > 0)
{
size_t i;
argv[0] = (char *)arg0;
for(i = 1 ; i < argc ; i++)
argv[i] = va_arg(args,char *);
/* Skip the NULL terminator */
(void)va_arg(args, char **);
}
envp = va_arg(args, char **);
va_end(args);
argv[argc] = NULL;
result = execve(path,(char * const *)argv, envp );
out:
if(argv != NULL)
free(argv);
return(result);
}

98
library/unistd_execlp.c Normal file
View File

@@ -0,0 +1,98 @@
/*
* $Id: unistd_execlp.c,v 1.2 2006-08-02 06:49:47 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 _UNISTD_HEADERS_H
#include "unistd_headers.h"
#endif /* _UNISTD_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
execlp(const char *path, const char *arg0, ...)
{
char ** argv = NULL;
int result = -1;
size_t argc = 0;
va_list args;
/* If there are any, count the number of arguments supplied */
if(arg0 != NULL)
{
argc = 1;
va_start(args,arg0);
while(va_arg(args,const char *) != NULL)
argc++;
va_end(args);
}
/* Allocate enough memory for the entire argument list
plus the terminating NULL */
argv = (char **)malloc(sizeof(*argv) * (argc + 1));
if(argv == NULL)
{
__set_errno(ENOMEM);
goto out;
}
if(argc > 0)
{
size_t i;
argv[0] = (char *)arg0;
va_start(args,arg0);
for(i = 1 ; i < argc ; i++)
argv[i] = va_arg(args,char *);
va_end(args);
}
argv[argc] = NULL;
result = execvp(path,(char * const *)argv);
out:
if(argv != NULL)
free(argv);
return(result);
}

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