aboutsummaryrefslogtreecommitdiff
path: root/src/gensvm_strutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gensvm_strutil.c')
-rw-r--r--src/gensvm_strutil.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/gensvm_strutil.c b/src/gensvm_strutil.c
index b4c5c54..4b8b37b 100644
--- a/src/gensvm_strutil.c
+++ b/src/gensvm_strutil.c
@@ -61,17 +61,22 @@ void next_line(FILE *fid, char *filename)
* @param[in] filename name of the file
* @param[in,out] buffer allocated buffer to read to
*/
-void get_line(FILE *fid, char *filename, char *buffer)
+char *get_line(FILE *fid, char *filename, char *buffer)
{
- if (fgets(buffer, MAX_LINE_LENGTH, fid) == NULL) {
+ char *retval = fgets(buffer, MAX_LINE_LENGTH, fid);
+ if (retval == NULL) {
fprintf(stderr, "Error reading file %s\n", filename);
- exit(1);
}
+ return retval;
}
/**
* @brief Read a double from file following a format
*
+ * @details
+ * This function reads a double value from a file. If no value can be found, a
+ * warning is printed to stderr, and NAN is returned.
+ *
* @param[in] fid File opened for reading
* @param[in] filename Name of the file
* @param[in] fmt Format containing a float format
@@ -80,10 +85,13 @@ void get_line(FILE *fid, char *filename, char *buffer)
double get_fmt_double(FILE *fid, char *filename, const char *fmt)
{
char buffer[MAX_LINE_LENGTH];
- double value;
+ double value = NAN;
+ int retval;
get_line(fid, filename, buffer);
- sscanf(buffer, fmt, &value);
+ retval = sscanf(buffer, fmt, &value);
+ if (retval == 0)
+ fprintf(stderr, "No double read from file.\n");
return value;
}
@@ -98,10 +106,13 @@ double get_fmt_double(FILE *fid, char *filename, const char *fmt)
long get_fmt_long(FILE *fid, char *filename, const char *fmt)
{
char buffer[MAX_LINE_LENGTH];
- long value;
+ long value = 0;
+ int retval;
get_line(fid, filename, buffer);
- sscanf(buffer, fmt, &value);
+ retval = sscanf(buffer, fmt, &value);
+ if (retval == 0)
+ fprintf(stderr, "No long read from file.\n");
return value;
}