mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-03 08:01:25 +08:00
73 lines
1.5 KiB
C
73 lines
1.5 KiB
C
/*********************************************************************
|
|
* Copyright 2018, UCAR/Unidata
|
|
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
|
|
* $Id: error.c,v 1.7 2007/05/15 01:36:57 ed Exp $
|
|
*********************************************************************/
|
|
|
|
#include <config.h>
|
|
#include <stddef.h> /* because gcc 2.7.2.2 doesn't define size_t */
|
|
/* in <stdio.h> and it cannot hurt */
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
|
|
#include "error.h"
|
|
#include "tests.h"
|
|
|
|
/*
|
|
* Use for logging error conditions
|
|
*/
|
|
void
|
|
error(const char *fmt, ...)
|
|
{
|
|
va_list args ;
|
|
|
|
va_start(args, fmt) ;
|
|
if (nfails <= max_nmpt)
|
|
(void) vfprintf(stderr,fmt,args) ;
|
|
va_end(args) ;
|
|
}
|
|
|
|
/*
|
|
* Use for general printing (other than error conditions)
|
|
* This also currently goes to stderr, but this could change
|
|
*/
|
|
void
|
|
print(const char *fmt, ...)
|
|
{
|
|
va_list args ;
|
|
|
|
va_start(args, fmt) ;
|
|
(void) vfprintf(stderr,fmt,args) ;
|
|
va_end(args) ;
|
|
}
|
|
|
|
/*
|
|
* Called by macro IF
|
|
*/
|
|
int
|
|
ifFail(const int expr, const int line, const char *file)
|
|
{
|
|
if (expr != 0) {
|
|
++nfails;
|
|
error("\n\tFAILURE at line %d of %s: ", line, file);
|
|
}
|
|
return expr;
|
|
}
|
|
|
|
/* TODO:
|
|
* This diagnostic doesn't fit very well with the diagnostic message
|
|
* "architecture" of this program.
|
|
*/
|
|
void
|
|
print_n_size_t(int nelems, const size_t *array)
|
|
{
|
|
fprintf(stderr, "[");
|
|
while(nelems-- > 0)
|
|
{
|
|
fprintf(stderr, "%ld", (long)*array++);
|
|
if(nelems > 0)
|
|
fprintf(stderr, " ");
|
|
}
|
|
fprintf(stderr, "]");
|
|
}
|