isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(),
isupper(), isxdigit(), tolower() and toupper() functions
to clamp the input parameter to the "unsigned char" range before
it is submitted to the respective locale.library function. This
should be in sync with what the specs demand, which state that
if the input parameter is neither EOF nor in the range of an
"unsigned char" variable, then the results are undefined.
- ungetc() now returns the input character, clamped to an unsigned
char value, upon success. Previously, if the input parameter was
negative and not EOF, the result was identical to the input, which
could have had negative side-effects.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14958 87f5fb63-7c3d-0410-a384-fd976d0f7a62
regular libc.a, but only of libunix.a.
- Changed the definition of the D_S() macro to cast the pointer
address to an unsigned 32 bit integer.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14956 87f5fb63-7c3d-0410-a384-fd976d0f7a62
year number mod 100.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14955 87f5fb63-7c3d-0410-a384-fd976d0f7a62
in place of the copying loop.
- Modified __translate_unix_to_amiga_path_name() and
__translate_amiga_to_unix_path_name() to not to call strlen()
on the results of __strip_double_slash().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14951 87f5fb63-7c3d-0410-a384-fd976d0f7a62
- nan() and nanf() now return quiet NaNs.
- Added internal __inf() and __inff() functions.
- strtof() now calls nanf() and __inff(), respectively, to produce
the special floating point values for nan/inf/infinity.
- strtod() now calls nan() and __inf(), respectively, to produce
the special floating point values for nan/inf/infinity.
- The scanf() family now calls nan() and __inf(), respectively, to
produce the special floating point values for nan/inf/infinity.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14948 87f5fb63-7c3d-0410-a384-fd976d0f7a62
- Floating point output in hexadecimal notation can now show a sign
in front of the hex prefix string.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14945 87f5fb63-7c3d-0410-a384-fd976d0f7a62
islessequal() and islessgreater() to <math.h> for C99.
- The wchar_t type is now an 'unsigned short' integer (16 bits wide).
- Added PTRDIFF_MIN/PTRDIFF_MAX, WCHAR_MIN/WCHAR_MAX and
WINT_MIN/WINT_MAX to <stdint.h> for C99.
- Added imaxdiv() and imaxabs() for C99.
- Added strtoimax() and strtoumax() for C99.
- Added nextafter() and nextafterf() for C99.
- Added copysign() and copysignf() for C99.
- Unless I missed something, clib2 should now be functionally complete
with regard to C99, except for the floating point operations covered.
These are a major challenge all by themselves, and I wonder both
whether they are worth the effort and how one could implement them
correctly.
- fflush() now consistently supports a NULL parameter, causing all
streams to be flushed for which this behaviour is defined.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14943 87f5fb63-7c3d-0410-a384-fd976d0f7a62
"decimal" number. That is, if the difference is 5 hours and 30 minutes,
then %z will now print "530" rather than "330".
- mktime() now handles one leap second gracefully.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14941 87f5fb63-7c3d-0410-a384-fd976d0f7a62
number rather than a decimal one. Now how odd is that?
- strtod() and strtof() now support "inf"/"infinity"/"nan"/"nan(..)" and
hexadecimal floating point numbers, for C99.
- Added the fpclassify(), isfinite(), isnormal() and signbit() macros for C99.
- Reimplemented isnan() and isinf() as macros for C99. The corresponding
functions will be dropped from the library. Note that the isinf() macro
does not return -1, 0 or 1 like the old function did, but only 0 or 1
depending upon whether the parameter represents +/- infinity or not.
- Added fabsf() for C99.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14935 87f5fb63-7c3d-0410-a384-fd976d0f7a62
%a/%A conversions for C99. The %j is treated like %ll, %t and %z are treated
like %l.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14933 87f5fb63-7c3d-0410-a384-fd976d0f7a62
of a command unless it contains path separator characters.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14929 87f5fb63-7c3d-0410-a384-fd976d0f7a62
of records or the size of each record is zero, both now call clearerr() to
avoid giving the caller the wrong impression that an EOF or error occured.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14927 87f5fb63-7c3d-0410-a384-fd976d0f7a62
- Added code to the startup routine which allows you to monitor where command
was started from and which parameters it was invoked with.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14926 87f5fb63-7c3d-0410-a384-fd976d0f7a62
Seek(). Seek() is particularly challenging because the value it
returns might be a valid file position and not an error.
- Replaced numeric function return codes of 0 and -1 with macros OK,
SEEK_ERROR/ERROR to clarify the respective purposes.
- Changed how ftell() and fseek() are used, double-checking the return
value and the errno code.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14923 87f5fb63-7c3d-0410-a384-fd976d0f7a62
file has been protected from deletion.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14920 87f5fb63-7c3d-0410-a384-fd976d0f7a62
- Made the clearerr(), feof() and ferror() macros thread-safe.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14914 87f5fb63-7c3d-0410-a384-fd976d0f7a62
very much! This includes the following:
- Added SSIZE_MAX to <limits.h>.
- Added <sys/uio.h>, readv() and writev().
- Cut back the soft link resolution code in lstat().
- In <fcntl.h> O_NDELAY is now an alias for O_NONBLOCK.
- Added <complex.h>, carg(), cargf(), cargl(), cimag(), cimagf(),
cimagl(), conj(), conjf(), conjl(), creal(), crealf() and creall().
Note that the C99 support for the complex floating point data
types is limited to GCC 3.x for now.
- Added va_copy() to <stdarg.h>.
- Added _Exit() to <stdlib.h>.
- Added <stdbool.h>.
- Added vfscanf() to <stdio.h>.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14912 87f5fb63-7c3d-0410-a384-fd976d0f7a62
to a likely console handler file's MsgPort.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14911 87f5fb63-7c3d-0410-a384-fd976d0f7a62
information identifying it as a character special file. Side-effect:
if the input/output went to a CON:/AUTO window, that window will
pop open and stay open.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14910 87f5fb63-7c3d-0410-a384-fd976d0f7a62
the original file descriptors they are duplicates of. I modified the
function which maps file descriptor numbers to file descriptor
table entries to return the table entries of the original files.
- In the thread-safe library, duplicated stdin/stdout/stderr
descriptors now work like the "real" ones. This is true even if
the "real" ones were closed and only their former aliases remain.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14909 87f5fb63-7c3d-0410-a384-fd976d0f7a62
a separate file.
- Simplified the library/open close code in "stdlib_main.c".
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14908 87f5fb63-7c3d-0410-a384-fd976d0f7a62
currently configured. It merely blocks the delivery of the respective
signal to prevent recursion.
- raise() now drops into abort() if a signal handler is set to
SIG_DFL. The exception is in SIGINT delivery, which has the
effect of printing a different termination message but otherwise
program flow takes the same path as abort().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14907 87f5fb63-7c3d-0410-a384-fd976d0f7a62
signal_data.c and into signal_raise.c where they are actually used.
This makes it possible to override the default definition of the
__check_abort_enabled variable in your own programs.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14906 87f5fb63-7c3d-0410-a384-fd976d0f7a62
for OS4 if the AllocSysObject() function is used to create it.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14905 87f5fb63-7c3d-0410-a384-fd976d0f7a62
until the function has returned. Which is harsh, but there is no
elegant solution to the issue of keeping the same dos.library
file handles from concurrent use which SystemTagList() might just
end up using.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14898 87f5fb63-7c3d-0410-a384-fd976d0f7a62
the 68k build. The PowerPC build may follow later, provided
I manage to get the specs file fixed.
- Moved the check for the presence of an FPU into the
math_init.c code.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14897 87f5fb63-7c3d-0410-a384-fd976d0f7a62
was still wrongish for the OS4 library. So I had to change
it *again*. Which probably means that the 68k library will
need further changes...
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14894 87f5fb63-7c3d-0410-a384-fd976d0f7a62
should no longer spell big trouble on account of the stdio
data structures possibly not being in a well-defined and
initialized state.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14893 87f5fb63-7c3d-0410-a384-fd976d0f7a62
separate files.
- Removed some more redundant data from stdlib_main.c.
- Added the first real C99 function: _Exit().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14892 87f5fb63-7c3d-0410-a384-fd976d0f7a62
- Dropped unused stub code which is now redundant because of
the constructor/destructor mechanism.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14891 87f5fb63-7c3d-0410-a384-fd976d0f7a62
to what it is supposed to do. Fixed.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14888 87f5fb63-7c3d-0410-a384-fd976d0f7a62
destructor functions in any way at all. I reimplemented the
entire library constructor/destructor functionality to use the
same approach as libnix.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14887 87f5fb63-7c3d-0410-a384-fd976d0f7a62
of the original file descriptor.
- close() did not return 0 if the file descriptor in question
was really just an alias. Fixed.
- Added a feature which makes it possible to have several clients
use the standard I/O streams (stdin/stdout/stderr) and have these
referring to their process' Input()/Output()/ErrorOutput()
streams. This is intended to support the upcoming shared
library feature.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14885 87f5fb63-7c3d-0410-a384-fd976d0f7a62
that the constructors/destructors are called in the proper
order, too.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14884 87f5fb63-7c3d-0410-a384-fd976d0f7a62
setjmp(). This is now done within stdlib_main.c prior to
calling the destructor function invocation code.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14883 87f5fb63-7c3d-0410-a384-fd976d0f7a62
constructor/destructor functions for initialization and cleanup
purposes.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14882 87f5fb63-7c3d-0410-a384-fd976d0f7a62