1 | /* |
---|
2 | |
---|
3 | This file is part of netcdf-4, a netCDF-like interface for HDF5, or a |
---|
4 | HDF5 backend for netCDF, depending on your point of view. |
---|
5 | |
---|
6 | This file contains functions relating to logging errors. Also it |
---|
7 | contains the functions nc_malloc, nc_calloc, and nc_free. |
---|
8 | |
---|
9 | Copyright 2003, University Corporation for Atmospheric Research. See |
---|
10 | netcdf-4/docs/COPYRIGHT file for copying and redistribution |
---|
11 | conditions. |
---|
12 | |
---|
13 | $Id: error4.c,v 1.4 2010/06/01 17:48:55 ed Exp $ |
---|
14 | */ |
---|
15 | |
---|
16 | #include <config.h> |
---|
17 | #include <stdarg.h> |
---|
18 | #include <stdlib.h> |
---|
19 | #include <stdio.h> |
---|
20 | #include <assert.h> |
---|
21 | #include <hdf5.h> |
---|
22 | |
---|
23 | /* This contents of this file get skipped if LOGGING is not defined |
---|
24 | * during compile. */ |
---|
25 | #ifdef LOGGING |
---|
26 | |
---|
27 | extern int nc_log_level; |
---|
28 | |
---|
29 | /* This function prints out a message, if the severity of the message |
---|
30 | is lower than the global nc_log_level. To use it, do something like |
---|
31 | this: |
---|
32 | |
---|
33 | nc_log(0, "this computer will explode in %d seconds", i); |
---|
34 | |
---|
35 | After the first arg (the severity), use the rest like a normal |
---|
36 | printf statement. Output will appear on stdout. |
---|
37 | |
---|
38 | This function is heavily based on the function in section 15.5 of |
---|
39 | the C FAQ. */ |
---|
40 | void |
---|
41 | nc_log(int severity, const char *fmt, ...) |
---|
42 | { |
---|
43 | va_list argp; |
---|
44 | int t; |
---|
45 | |
---|
46 | /* If the severity is greater than the log level, we don' care to |
---|
47 | print this message. */ |
---|
48 | if (severity > nc_log_level) |
---|
49 | return; |
---|
50 | |
---|
51 | /* If the severity is zero, this is an error. Otherwise insert that |
---|
52 | many tabs before the message. */ |
---|
53 | if (!severity) |
---|
54 | fprintf(stdout, "ERROR: "); |
---|
55 | for (t=0; t<severity; t++) |
---|
56 | fprintf(stdout, "\t"); |
---|
57 | |
---|
58 | /* Print out the variable list of args with vprintf. */ |
---|
59 | va_start(argp, fmt); |
---|
60 | vfprintf(stdout, fmt, argp); |
---|
61 | va_end(argp); |
---|
62 | |
---|
63 | /* Put on a final linefeed. */ |
---|
64 | fprintf(stdout, "\n"); |
---|
65 | fflush(stdout); |
---|
66 | } |
---|
67 | |
---|
68 | void |
---|
69 | nc_log_hdf5(void) |
---|
70 | { |
---|
71 | H5Eprint(NULL); |
---|
72 | } |
---|
73 | |
---|
74 | #endif /* ifdef LOGGING */ |
---|
75 | |
---|