mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
- The "char" limits in <limits.h> are now set up according to the current
compiler settings, which can either default to an unsigned or signed definition. - Changed the rules again for the use of stderr/stdout redirection when printing error messages. It is always safe to redirect them now and no requester will appear unless you specifically set the value of the "__no_standard_io" variable to TRUE in your program. git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14792 87f5fb63-7c3d-0410-a384-fd976d0f7a62
This commit is contained in:
@ -9,6 +9,15 @@
|
|||||||
- The "ptrdiff_t" definition in <stddef.h> now defaults to type 'int' rather
|
- The "ptrdiff_t" definition in <stddef.h> now defaults to type 'int' rather
|
||||||
than 'long int'.
|
than 'long int'.
|
||||||
|
|
||||||
|
- The "char" limits in <limits.h> are now set up according to the current
|
||||||
|
compiler settings, which can either default to an unsigned or
|
||||||
|
signed definition.
|
||||||
|
|
||||||
|
- Changed the rules again for the use of stderr/stdout redirection when
|
||||||
|
printing error messages. It is always safe to redirect them now and
|
||||||
|
no requester will appear unless you specifically set the value of the
|
||||||
|
"__no_standard_io" variable to TRUE in your program.
|
||||||
|
|
||||||
|
|
||||||
c.lib 1.185 (2.1.2005)
|
c.lib 1.185 (2.1.2005)
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: limits.h,v 1.4 2005-01-02 09:07:21 obarthel Exp $
|
* $Id: limits.h,v 1.5 2005-01-09 09:40:33 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@ -36,24 +36,53 @@
|
|||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#define CHAR_BIT 8
|
#define CHAR_BIT 8
|
||||||
#define CHAR_MAX 127
|
|
||||||
#define CHAR_MIN -128
|
/****************************************************************************/
|
||||||
#define INT_MAX 2147483647L
|
|
||||||
#define INT_MIN (-2147483647L - 1)
|
#define SCHAR_MIN -128
|
||||||
#define LONG_MAX 2147483647L
|
#define SCHAR_MAX 127
|
||||||
#define LONG_MIN (-2147483647L - 1)
|
#define UCHAR_MAX 255
|
||||||
#define SCHAR_MAX 127
|
|
||||||
#define SCHAR_MIN -128
|
/****************************************************************************/
|
||||||
#define SHRT_MAX 32767
|
|
||||||
|
/*
|
||||||
|
* The following defines the range a 'char' can cover by checking a
|
||||||
|
* preprocessor symbol; we support both SAS/C and GCC here.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if (defined(__GNUC__) && defined(__CHAR_UNSIGNED__)) || (defined(__SASC) && defined(_UNSCHAR))
|
||||||
|
|
||||||
|
#define CHAR_MIN 0
|
||||||
|
#define CHAR_MAX 255
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define CHAR_MIN -128
|
||||||
|
#define CHAR_MAX 127
|
||||||
|
|
||||||
|
#endif /* (__GNUC__ && __CHAR_UNSIGNED) || (__SASC && _UNSCHAR) */
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
#define SHRT_MIN -32768
|
#define SHRT_MIN -32768
|
||||||
#define UCHAR_MAX 255
|
#define SHRT_MAX 32767
|
||||||
#define UINT_MAX 4294967295UL
|
|
||||||
#define ULONG_MAX 4294967295UL
|
|
||||||
#define USHRT_MAX 65535
|
#define USHRT_MAX 65535
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#define INT_MIN (-2147483647L - 1)
|
||||||
|
#define INT_MAX 2147483647L
|
||||||
|
#define UINT_MAX 4294967295UL
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
|
#define LONG_MIN (-2147483647L - 1)
|
||||||
|
#define LONG_MAX 2147483647L
|
||||||
|
#define ULONG_MAX 4294967295UL
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
|
||||||
/* The following is not part of the ISO 'C' (1994) standard. */
|
/* The following is not part of the ISO 'C' (1994) standard. */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdlib_assertion_failure.c,v 1.5 2005-01-08 10:21:25 obarthel Exp $
|
* $Id: stdlib_assertion_failure.c,v 1.6 2005-01-09 09:40:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@ -61,50 +61,7 @@ __assertion_failure(
|
|||||||
/* Don't drop into a recursion. */
|
/* Don't drop into a recursion. */
|
||||||
if(been_here_before++ == 0)
|
if(been_here_before++ == 0)
|
||||||
{
|
{
|
||||||
BOOL use_stderr = FALSE;
|
if(__no_standard_io || __WBenchMsg != NULL)
|
||||||
|
|
||||||
/* Figure out if the assertion failure message can be printed
|
|
||||||
on the stderr stream. */
|
|
||||||
if(__iob != NULL && NOT __no_standard_io)
|
|
||||||
{
|
|
||||||
struct iob * iob;
|
|
||||||
|
|
||||||
iob = (struct iob *)stderr;
|
|
||||||
|
|
||||||
if(iob != NULL &&
|
|
||||||
FLAG_IS_SET(iob->iob_Flags,IOBF_IN_USE) &&
|
|
||||||
FLAG_IS_SET(iob->iob_Flags,IOBF_WRITE))
|
|
||||||
{
|
|
||||||
struct fd * fd;
|
|
||||||
|
|
||||||
fd = __get_file_descriptor(iob->iob_Descriptor);
|
|
||||||
|
|
||||||
if(fd != NULL &&
|
|
||||||
FLAG_IS_SET(fd->fd_Flags,FDF_IN_USE) &&
|
|
||||||
FLAG_IS_SET(fd->fd_Flags,FDF_WRITE) &&
|
|
||||||
FLAG_IS_CLEAR(fd->fd_Flags,FDF_IS_SOCKET))
|
|
||||||
{
|
|
||||||
struct FileHandle * fh = BADDR(fd->fd_DefaultFile);
|
|
||||||
|
|
||||||
/* Check if this is really not redirected to "NIL:". */
|
|
||||||
if(fh->fh_Type != NULL)
|
|
||||||
use_stderr = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(use_stderr)
|
|
||||||
{
|
|
||||||
if(__program_name != NULL)
|
|
||||||
fprintf(stderr,"[%s] ",__program_name);
|
|
||||||
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s:%d: failed assertion '%s'\n",
|
|
||||||
file_name,
|
|
||||||
line_number,
|
|
||||||
expression);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
#if defined(__amigaos4__)
|
#if defined(__amigaos4__)
|
||||||
struct IntuitionIFace * IIntuition = NULL;
|
struct IntuitionIFace * IIntuition = NULL;
|
||||||
@ -150,6 +107,17 @@ __assertion_failure(
|
|||||||
CloseLibrary(IntuitionBase);
|
CloseLibrary(IntuitionBase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(__program_name != NULL)
|
||||||
|
fprintf(stderr,"[%s] ",__program_name);
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
"%s:%d: failed assertion '%s'\n",
|
||||||
|
file_name,
|
||||||
|
line_number,
|
||||||
|
expression);
|
||||||
|
}
|
||||||
|
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: stdlib_showerror.c,v 1.6 2005-01-08 10:21:25 obarthel Exp $
|
* $Id: stdlib_showerror.c,v 1.7 2005-01-09 09:40:32 obarthel Exp $
|
||||||
*
|
*
|
||||||
* :ts=4
|
* :ts=4
|
||||||
*
|
*
|
||||||
@ -78,8 +78,6 @@ __show_error(const char * message)
|
|||||||
|
|
||||||
struct Library * IntuitionBase;
|
struct Library * IntuitionBase;
|
||||||
struct Library * DOSBase;
|
struct Library * DOSBase;
|
||||||
struct FileHandle * fh;
|
|
||||||
BPTR output;
|
|
||||||
|
|
||||||
PROFILE_OFF();
|
PROFILE_OFF();
|
||||||
|
|
||||||
@ -98,23 +96,11 @@ __show_error(const char * message)
|
|||||||
IIntuition = (struct IntuitionIFace *)GetInterface(IntuitionBase, "main", 1, 0);
|
IIntuition = (struct IntuitionIFace *)GetInterface(IntuitionBase, "main", 1, 0);
|
||||||
if (IIntuition == NULL)
|
if (IIntuition == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Try to print the error message on the default error output stream. */
|
|
||||||
output = ErrorOutput();
|
|
||||||
if(output == ZERO)
|
|
||||||
output = Output();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
output = Output();
|
|
||||||
}
|
}
|
||||||
#endif /* __amigaos4__ */
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
/* This is for checking if the stream was redirected to "NIL:". */
|
|
||||||
fh = BADDR(output);
|
|
||||||
|
|
||||||
/* If we can't hope to print the error message, show a requester instead. */
|
/* If we can't hope to print the error message, show a requester instead. */
|
||||||
if(__detach || __no_standard_io || __WBenchMsg != NULL || fh == NULL || fh->fh_Type == NULL)
|
if(__no_standard_io || __WBenchMsg != NULL)
|
||||||
{
|
{
|
||||||
if(IntuitionBase->lib_Version >= 37)
|
if(IntuitionBase->lib_Version >= 37)
|
||||||
{
|
{
|
||||||
@ -164,8 +150,31 @@ __show_error(const char * message)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Write(output,(STRPTR)message,(LONG)strlen(message));
|
BPTR output;
|
||||||
Write(output,"\n",1);
|
|
||||||
|
#if defined(__amigaos4__)
|
||||||
|
{
|
||||||
|
/* Try to print the error message on the default error output stream. */
|
||||||
|
output = ErrorOutput();
|
||||||
|
if(output == ZERO)
|
||||||
|
output = Output();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
struct Process * this_process = (struct Process *)FindTask(NULL);
|
||||||
|
|
||||||
|
if(this_process->pr_CES != ZERO)
|
||||||
|
output = this_process->pr_CES;
|
||||||
|
else
|
||||||
|
output = Output();
|
||||||
|
}
|
||||||
|
#endif /* __amigaos4__ */
|
||||||
|
|
||||||
|
if(output != ZERO)
|
||||||
|
{
|
||||||
|
Write(output,(STRPTR)message,(LONG)strlen(message));
|
||||||
|
Write(output,"\n",1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|||||||
Reference in New Issue
Block a user