From 3185b354ec9a478543b44fa90ece794a7717333b Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Tue, 20 Sep 2016 16:38:32 +0200 Subject: Switch to using exit_failure and use of err for errors --- src/GenSVMgrid.c | 2 +- src/GenSVMtraintest.c | 2 +- src/gensvm_init.c | 7 +++++-- src/gensvm_io.c | 25 +++++++++++++++++++------ src/gensvm_kernel.c | 13 +++++++------ src/gensvm_memory.c | 18 ++++++++++++------ src/gensvm_optimize.c | 11 +++++------ src/gensvm_strutil.c | 7 ++++--- 8 files changed, 54 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/GenSVMgrid.c b/src/GenSVMgrid.c index a6c749e..e2cb161 100644 --- a/src/GenSVMgrid.c +++ b/src/GenSVMgrid.c @@ -43,7 +43,7 @@ void exit_with_help() printf("-h | -help : print this help.\n"); printf("-q : quiet mode (no output)\n"); - exit(0); + exit(EXIT_FAILURE); } /** diff --git a/src/GenSVMtraintest.c b/src/GenSVMtraintest.c index 73c0ce9..4d99c04 100644 --- a/src/GenSVMtraintest.c +++ b/src/GenSVMtraintest.c @@ -50,7 +50,7 @@ void exit_with_help() "group)\n"); printf("-t type: kerneltype (0=LINEAR, 1=POLY, 2=RBF, 3=SIGMOID)\n"); - exit(0); + exit(EXIT_FAILURE); } int main(int argc, char **argv) diff --git a/src/gensvm_init.c b/src/gensvm_init.c index 28f34ba..938fafd 100644 --- a/src/gensvm_init.c +++ b/src/gensvm_init.c @@ -14,6 +14,7 @@ */ #include "gensvm_init.h" +#include "gensvm_print.h" inline double rnd() { return (double) rand()/0x7FFFFFFF; } @@ -106,7 +107,9 @@ void gensvm_initialize_weights(struct GenData *data, struct GenModel *model) for (i=0; irho[i] = ((double) n)/((double) (groups[data->y[i]-1]*K)); } else { - fprintf(stderr, "Unknown weight specification.\n"); - exit(1); + // LCOV_EXCL_START + err("[GenSVM Error]: Unknown weight specification.\n"); + exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } } diff --git a/src/gensvm_io.c b/src/gensvm_io.c index 696f46f..97ea73b 100644 --- a/src/gensvm_io.c +++ b/src/gensvm_io.c @@ -12,6 +12,7 @@ */ #include "gensvm_io.h" +#include "gensvm_print.h" /** * @brief Read data from file @@ -43,9 +44,11 @@ void gensvm_read_data(struct GenData *dataset, char *data_file) char buf[MAX_LINE_LENGTH]; if ((fid = fopen(data_file, "r")) == NULL) { - fprintf(stderr, "\nERROR: datafile %s could not be opened.\n", + // LCOV_EXCL_START + err("[GenSVM Error]: Datafile %s could not be opened.\n", data_file); - exit(0); + exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } // Read data dimensions @@ -63,9 +66,12 @@ void gensvm_read_data(struct GenData *dataset, char *data_file) // Check if there is a label at the end of the line if (fgets(buf, MAX_LINE_LENGTH, fid) == NULL) { - fprintf(stderr, "ERROR: No label found on first line.\n"); - exit(1); + // LCOV_EXCL_START + err("[GenSVM Error]: No label found on first line.\n"); + exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } + if (sscanf(buf, "%lf", &value) > 0) { dataset->y = Malloc(long, n); dataset->y[0] = value; @@ -99,12 +105,19 @@ void gensvm_read_data(struct GenData *dataset, char *data_file) "value is: %ld\n", data_file, min_y); exit(0); + // LCOV_EXCL_START + err("[GenSVM Error]: Class labels should start from 1 and " + "have no gaps. Please reformat your data.\n"); + exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } if (nr < n * m) { - fprintf(stderr, "ERROR: not enough data found in %s\n", + // LCOV_EXCL_START + err("[GenSVM Error]: not enough data found in %s\n", data_file); - exit(0); + exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } // Set the column of ones diff --git a/src/gensvm_kernel.c b/src/gensvm_kernel.c index 9dc5e29..7ca58da 100644 --- a/src/gensvm_kernel.c +++ b/src/gensvm_kernel.c @@ -12,6 +12,7 @@ */ #include "gensvm_kernel.h" +#include "gensvm_print.h" /** * @brief Do the preprocessing steps needed to perform kernel GenSVM @@ -114,9 +115,9 @@ void gensvm_make_kernel(struct GenModel *model, struct GenData *data, value = gensvm_dot_sigmoid(x1, x2, model->kernelparam, data->m); else { - fprintf(stderr, "Unknown kernel type in " + err("[GenSVM Error]: Unknown kernel type in " "gensvm_make_kernel\n"); - exit(1); + exit(EXIT_FAILURE); } matrix_set(K, n, i, j, value); matrix_set(K, n, j, i, value); @@ -159,8 +160,8 @@ long gensvm_make_eigen(double *K, long n, double **P, double **Sigma) tempSigma, tempP, n, WORK, LWORK, IWORK, IFAIL); if (status != 0) { - fprintf(stderr, "Nonzero exit status from dsyevx. Exiting..."); - exit(1); + err("[GenSVM Error]: Nonzero exit status from dsyevx.\n"); + exit(EXIT_FAILURE); } // Select the desired number of eigenvalues, depending on their size. @@ -230,9 +231,9 @@ void gensvm_make_crosskernel(struct GenModel *model, model->kernelparam, m); else { - fprintf(stderr, "Unknown kernel type in " + err("[GenSVM Error]: Unknown kernel type in " "gensvm_make_crosskernel\n"); - exit(1); + exit(EXIT_FAILURE); } matrix_set((*K2), n_train, i, j, value); } diff --git a/src/gensvm_memory.c b/src/gensvm_memory.c index 63c8965..624a4a6 100644 --- a/src/gensvm_memory.c +++ b/src/gensvm_memory.c @@ -33,9 +33,11 @@ void *mycalloc(const char *file, int line, unsigned long size, void *ptr = calloc(size, typesize); if (!ptr) { - fprintf(stderr, "Couldn't allocate memory: %lu bytes (%s:%d)\n", - size, file, line); + // LCOV_EXCL_START + fprintf(stderr, "[GenSVM Error]: Couldn't allocate memory: " + "%lu bytes (%s:%d)\n", size, file, line); exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } return ptr; } @@ -62,9 +64,11 @@ void *mymalloc(const char *file, int line, unsigned long size) { void *ptr = malloc(size); if (!ptr) { - fprintf(stderr, "Couldn't allocate memory: %lu bytes (%s:%d)\n", - size, file, line); + // LCOV_EXCL_START + fprintf(stderr, "[GenSVM Error]: Couldn't allocate memory: " + "%lu bytes (%s:%d)\n", size, file, line); exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } return ptr; } @@ -92,9 +96,11 @@ void *myrealloc(const char *file, int line, unsigned long size, void *var) { void *ptr = realloc(var, size); if (!ptr) { - fprintf(stderr, "Couldn't reallocate memory: %lu bytes (%s:%d)\n", - size, file, line); + // LCOV_EXCL_START + fprintf(stderr, "[GenSVM Error]: Couldn't reallocate memory: " + "%lu bytes (%s:%d)\n", size, file, line); exit(EXIT_FAILURE); + // LCOV_EXCL_STOP } return ptr; } diff --git a/src/gensvm_optimize.c b/src/gensvm_optimize.c index 464815d..9332995 100644 --- a/src/gensvm_optimize.c +++ b/src/gensvm_optimize.c @@ -85,10 +85,10 @@ void gensvm_optimize(struct GenModel *model, struct GenData *data) it++; } if (L > Lbar) - fprintf(stderr, "[WARNING]: Negative step occurred in " + err("[GenSVM Warning]: Negative step occurred in " "majorization.\n"); if (it >= MAX_ITER) - fprintf(stderr, "[WARNING]: maximum number of iterations " + err("[GenSVM Warning]: maximum number of iterations " "reached.\n"); note("Optimization finished, iter = %li, loss = %15.16f, " @@ -463,9 +463,8 @@ void gensvm_get_update(struct GenModel *model, struct GenData *data, double *B, // This step should not be necessary, as the matrix // ZAZ is positive semi-definite by definition. It // is included for safety. - fprintf(stderr, "GenSVM warning: Received nonzero status from " - "dposv: %i\n", - status); + err("[GenSVM Warning]: Received nonzero status from " + "dposv: %i\n", status); int *IPIV = malloc((m+1)*sizeof(int)); double *WORK = malloc(1*sizeof(double)); status = dsysv( @@ -492,7 +491,7 @@ void gensvm_get_update(struct GenModel *model, struct GenData *data, double *B, WORK, sizeof(WORK)/sizeof(double)); if (status != 0) - fprintf(stderr, "GenSVM warning: Received nonzero " + err("[GenSVM Warning]: Received nonzero " "status from dsysv: %i\n", status); free(WORK); free(IPIV); diff --git a/src/gensvm_strutil.c b/src/gensvm_strutil.c index 4b8b37b..9762e52 100644 --- a/src/gensvm_strutil.c +++ b/src/gensvm_strutil.c @@ -10,6 +10,7 @@ */ #include "gensvm_strutil.h" +#include "gensvm_print.h" /** * @brief Check if a string starts with a prefix @@ -65,7 +66,7 @@ char *get_line(FILE *fid, char *filename, char *buffer) { char *retval = fgets(buffer, MAX_LINE_LENGTH, fid); if (retval == NULL) { - fprintf(stderr, "Error reading file %s\n", filename); + err("[GenSVM Error]: Error reading from file %s\n", filename); } return retval; } @@ -91,7 +92,7 @@ double get_fmt_double(FILE *fid, char *filename, const char *fmt) get_line(fid, filename, buffer); retval = sscanf(buffer, fmt, &value); if (retval == 0) - fprintf(stderr, "No double read from file.\n"); + err("[GenSVM Error]: No double read from file.\n"); return value; } @@ -112,7 +113,7 @@ long get_fmt_long(FILE *fid, char *filename, const char *fmt) get_line(fid, filename, buffer); retval = sscanf(buffer, fmt, &value); if (retval == 0) - fprintf(stderr, "No long read from file.\n"); + err("[GenSVM Error]: No long read from file.\n"); return value; } -- cgit v1.2.3