milk  1.01
Modular Image processing Library toolKit
MACROS: Error checking

Macros

#define PRINT_ERROR(...)
 Print error (in red) and continue. More...
 
#define PRINT_WARNING(...)
 Print warning and continue. More...
 
#define EXECUTE_SYSTEM_COMMAND(...)
 system call with error checking and handling More...
 
#define SNPRINTF_CHECK(string, maxlen, ...)
 snprintf with error checking and handling More...
 
#define WRITE_IMAGENAME(imname, ...)
 Write image name to string. More...
 
#define WRITE_DIRNAME(dirname, ...)
 Write directory name to string. More...
 
#define WRITE_FILENAME(fname, ...)
 Write filename to string. More...
 
#define WRITE_FULLFILENAME(ffname, ...)
 Write full path filename to string. More...
 
#define WRITE_STRING_TO_FILE(fname, ...)
 Write a string to file. More...
 
#define WRITE_FITSKEYWNAME(keywname, ...)
 Write FITS keyword to string. More...
 

Detailed Description

Macro Definition Documentation

◆ EXECUTE_SYSTEM_COMMAND

#define EXECUTE_SYSTEM_COMMAND (   ...)
Value:
do { \
char syscommandstring[STRINGMAXLEN_COMMAND]; \
int slen = snprintf(syscommandstring, STRINGMAXLEN_COMMAND, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_COMMAND) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
data.retvalue = system(syscommandstring); \
} while(0)

system call with error checking and handling

◆ PRINT_ERROR

#define PRINT_ERROR (   ...)
Value:
do { \
sprintf(data.testpoint_msg, __VA_ARGS__); \
printf("ERROR: %c[%d;%dm %s %c[%d;m\n", (char) 27, 1, 31, data.testpoint_msg, (char) 27, 0); \
sprintf(data.testpoint_file, "%s", __FILE__); \
sprintf(data.testpoint_func, "%s", __func__); \
data.testpoint_line = __LINE__; \
clock_gettime(CLOCK_REALTIME, &data.testpoint_time); \
} while(0)

Print error (in red) and continue.

◆ PRINT_WARNING

#define PRINT_WARNING (   ...)
Value:
do { \
char warnmessage[1000]; \
sprintf(warnmessage, __VA_ARGS__); \
fprintf(stderr, \
"%c[%d;%dm WARNING [ FILE: %s FUNCTION: %s LINE: %d ] %c[%d;m\n", \
(char) 27, 1, 35, __FILE__, __func__, __LINE__, (char) 27, 0); \
if(C_ERRNO != 0) \
{ \
char buff[256]; \
if( strerror_r( errno, buff, 256 ) == 0 ) { \
fprintf(stderr,"C Error: %s\n", buff ); \
} else { \
fprintf(stderr,"Unknown C Error\n"); \
} \
} else { \
fprintf(stderr,"No C error (errno = 0)\n"); } \
fprintf(stderr, "%c[%d;%dm ", (char) 27, 1, 35); \
fprintf(stderr, "%s", warnmessage); \
fprintf(stderr, " %c[%d;m\n", (char) 27, 0); \
C_ERRNO = 0; \
} while(0)

Print warning and continue.

◆ SNPRINTF_CHECK

#define SNPRINTF_CHECK (   string,
  maxlen,
  ... 
)
Value:
do { \
int slen = snprintf(string, maxlen, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= maxlen) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

snprintf with error checking and handling

◆ WRITE_DIRNAME

#define WRITE_DIRNAME (   dirname,
  ... 
)
Value:
do { \
int slen = snprintf(dirname, STRINGMAXLEN_DIRNAME, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_DIRNAME) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

Write directory name to string.

Requires existing image string of len #STRINGMAXLEN_DIRNAME

Example use:

char fname[STRINGMAXLEN_FILENAME];
char name[]="imlog";
WRITE_FULLFILENAME(fname, "%s.txt", name);

◆ WRITE_FILENAME

#define WRITE_FILENAME (   fname,
  ... 
)
Value:
do { \
int slen = snprintf(fname, STRINGMAXLEN_FILENAME, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_FILENAME) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

Write filename to string.

Requires existing image string of len #STRINGMAXLEN_FILENAME

Example use:

char fname[STRINGMAXLEN_FILENAME];
char name[]="imlog";
WRITE_FULLFILENAME(fname, "%s.txt", name);

◆ WRITE_FITSKEYWNAME

#define WRITE_FITSKEYWNAME (   keywname,
  ... 
)
Value:
do { \
int slen = snprintf(keywname, STRINGMAXLEN_FITSKEYWORDNAME, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_FITSKEYWORDNAME) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

Write FITS keyword to string.

Requires existing image string of len #STRINGMAXLEN_FITSKEYWORD

Example use:

char keywname[STRINGMAXLEN_FITSKEYWORD];
char name[]="CHAN";
int imindex = 34;
WRITE_FITSKEYWNAME(keywname, "%s_%04d", name, imindex);

◆ WRITE_FULLFILENAME

#define WRITE_FULLFILENAME (   ffname,
  ... 
)
Value:
do { \
int slen = snprintf(ffname, STRINGMAXLEN_FULLFILENAME, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_FULLFILENAME) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

Write full path filename to string.

Requires existing image string of len #STRINGMAXLEN_FULLFILENAME

Example use:

char ffname[STRINGMAXLEN_FULLFILENAME];
char directory[]="/tmp/";
char name[]="imlog";
WRITE_FULLFILENAME(ffname, "%s/%s.txt", directory, name);

◆ WRITE_IMAGENAME

#define WRITE_IMAGENAME (   imname,
  ... 
)
Value:
do { \
int slen = snprintf(imname, STRINGMAXLEN_IMGNAME, __VA_ARGS__); \
if(slen<1) { \
PRINT_ERROR("snprintf wrote <1 char"); \
abort(); \
} \
if(slen >= STRINGMAXLEN_IMGNAME) { \
PRINT_ERROR("snprintf string truncation"); \
abort(); \
} \
} while(0)

Write image name to string.

Requires existing image string of len #STRINGMAXLEN_IMGNAME

Example use:

char imname[STRINGMAXLEN_IMGNAME];
char name[]="im";
int imindex = 34;
WRITE_FULLFILENAME(imname, "%s_%04d", name, imindex);

◆ WRITE_STRING_TO_FILE

#define WRITE_STRING_TO_FILE (   fname,
  ... 
)
Value:
do { \
FILE *fptmp; \
fptmp = fopen(fname, "w"); \
if (fptmp == NULL) { \
int errnum = errno; \
PRINT_ERROR("fopen() returns NULL"); \
fprintf(stderr, "Error opening file %s: %s\n", fname, strerror( errnum )); \
abort(); \
} else { \
fprintf(fptmp, __VA_ARGS__); \
fclose(fptmp); \
} \
} while(0)

Write a string to file.

Creates file, writes string, and closes file.

Example use:

float piapprox = 3.14;
WRITE_STRING_TO_FILE("logfile.txt", "pi is approximately %f\n", piapprox);
WRITE_FULLFILENAME
#define WRITE_FULLFILENAME(ffname,...)
Write full path filename to string.
Definition: CLIcore.h:412
WRITE_FITSKEYWNAME
#define WRITE_FITSKEYWNAME(keywname,...)
Write FITS keyword to string.
Definition: COREMOD_iofits_common.h:35
WRITE_STRING_TO_FILE
#define WRITE_STRING_TO_FILE(fname,...)
Write a string to file.
Definition: CLIcore.h:440