aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-05-12 16:40:05 +0200
committerThomas White <taw@physics.org>2021-05-12 16:40:39 +0200
commit3a3401dfe7a7fedd5f133dd5a7b416e869f6be89 (patch)
tree6bc59b7313f6edadd54a16d1d304c2cf207a44ba
parent21d7b4754ea785de5cf805b8c72d6aabd8a0a372 (diff)
Fix convert_int and add convert_float
convert_int was using strtod. Whoops!
-rw-r--r--libcrystfel/src/utils.c17
-rw-r--r--libcrystfel/src/utils.h1
2 files changed, 17 insertions, 1 deletions
diff --git a/libcrystfel/src/utils.c b/libcrystfel/src/utils.c
index 945fee15..864b1a30 100644
--- a/libcrystfel/src/utils.c
+++ b/libcrystfel/src/utils.c
@@ -307,7 +307,22 @@ void ERROR(const char *format, ...)
int convert_int(const char *str, int *pval)
{
- int val;
+ long int val;
+ char *rval;
+
+ val = strtol(str, &rval, 10);
+ if ( *rval != '\0' ) {
+ return 1;
+ } else {
+ *pval = val;
+ return 0;
+ }
+}
+
+
+int convert_float(const char *str, double *pval)
+{
+ double val;
char *rval;
val = strtod(str, &rval);
diff --git a/libcrystfel/src/utils.h b/libcrystfel/src/utils.h
index 7f50ddc3..458307e8 100644
--- a/libcrystfel/src/utils.h
+++ b/libcrystfel/src/utils.h
@@ -79,6 +79,7 @@ extern gsl_vector *solve_svd(gsl_vector *v, gsl_matrix *M, int *n_filt,
extern size_t notrail(char *s);
extern int convert_int(const char *str, int *pval);
+extern int convert_float(const char *str, double *pval);
extern void chomp(char *s);
#define CLEAR_BIT(val, bit) (((val) | (bit)) ^ (bit))