[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnuastro-commits] master 1acc441: Library (txt.c): no error when sexage
From: |
Mohammad Akhlaghi |
Subject: |
[gnuastro-commits] master 1acc441: Library (txt.c): no error when sexagesimal used for column info |
Date: |
Sun, 24 Oct 2021 16:42:59 -0400 (EDT) |
branch: master
commit 1acc441a0f2cf47f84fe71e8efff0ca5145d2406
Author: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Commit: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Library (txt.c): no error when sexagesimal used for column info
Until now, when a plain-text table with no metadata contained sexagesimal
values in the first row (that is used to extract metadata for the rest of
the rows), Table would crash with an error saying that the sexagesimal
number couldn't be interpretted as a number! As a result a basic command
like below (which is even in the "Invoking asttable" section of the book),
would fail:
echo "7h34m35.5498 31d53m14.352s" | asttable
This had happened because of a recent change in the plain-text reading
library that was added to make sure that the first un-commented line of a
file without metadata actually has numbers in it (bug #60999).
With this commit, that part of the code has been corrected to also check
for sexagesimal inputs, not just raw numbers. Also, to make sure that this
situation is tested every time, the command above has been added to the
'make check' tests.
This fixes bug #61378.
---
NEWS | 1 +
lib/txt.c | 15 +++++++----
tests/Makefile.am | 3 ++-
tests/table/sexagesimal-to-deg.sh | 56 +++++++++++++++++++++++++++++++++++++++
4 files changed, 69 insertions(+), 6 deletions(-)
diff --git a/NEWS b/NEWS
index e8d604e..a219776 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,7 @@ See the end of the file for license conditions.
** Bugs fixed
bug #61329: make check crash in macOS in convolve/spectrum-1d.sh, found
and fixed with the help of Sebastian Luna-Valero.
+ bug #61378: Table crash when input is sexagesimal RA/DEC and no metadata.
diff --git a/lib/txt.c b/lib/txt.c
index 8f4b706..4ad22ae 100644
--- a/lib/txt.c
+++ b/lib/txt.c
@@ -411,12 +411,17 @@ txt_info_from_first_row(char *in_line, gal_data_t
**datall, int format,
information). */
if( *datall==NULL || format==TXT_FORMAT_TABLE )
{
- /* Make sure the token is actually a number and print a good
- error message when the input isn't actually a number but a
- string (like uncommented metadata).*/
- if( gal_type_from_string( &tmpdptr, token, GAL_TYPE_FLOAT64) )
+ /* Make sure the token is actually a number (or RA/Dec
+ written in Sexagesimal format) and print a good error
+ message when the input isn't actually a number but a
+ string (this test was added because of uncommented
+ metadata)! */
+ if( gal_type_from_string( &tmpdptr, token, GAL_TYPE_FLOAT64)
+ && isnan( gal_units_ra_to_degree(token) )
+ && isnan( gal_units_dec_to_degree(token) ) )
error(EXIT_FAILURE, 0, "'%s' couldn't be read as a number "
- "(element %zu of first uncommented line)", token, n);
+ "(element %zu of first uncommented line) %f ", token, n,
+ gal_units_ra_to_degree(token));
/* Allocate this column's dataset and set it's 'status' to
the column number that it corresponds to. */
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 261cda7..31182ff 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -187,12 +187,13 @@ endif
if COND_TABLE
MAYBE_TABLE_TESTS = table/txt-to-fits-binary.sh \
table/fits-binary-to-txt.sh table/txt-to-fits-ascii.sh \
- table/fits-ascii-to-txt.sh
+ table/fits-ascii-to-txt.sh table/sexagesimal-to-deg.sh
table/txt-to-fits-binary.sh: prepconf.sh.log
table/fits-binary-to-txt.sh: table/txt-to-fits-binary.sh.log
table/txt-to-fits-ascii.sh: prepconf.sh.log
table/fits-ascii-to-txt.sh: table/txt-to-fits-ascii.sh.log
+ table/sexagesimal-to-deg.sh: prepconf.sh.log
endif
if COND_WARP
MAYBE_WARP_TESTS = warp/warp_scale.sh warp/homographic.sh
diff --git a/tests/table/sexagesimal-to-deg.sh
b/tests/table/sexagesimal-to-deg.sh
new file mode 100755
index 0000000..a998f74
--- /dev/null
+++ b/tests/table/sexagesimal-to-deg.sh
@@ -0,0 +1,56 @@
+# Convert sexagesimal coordinates to degrees, while also reading input from
+# a pipe.
+#
+# See the Tests subsection of the manual for a complete explanation
+# (in the Installing gnuastro section).
+#
+# Original author:
+# Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Contributing author(s):
+# Copyright (C) 2021, Free Software Foundation, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+
+
+
+
+
+# Preliminaries
+# =============
+#
+# Set the variables (The executable is in the build tree). Do the
+# basic checks to see if the executable is made or if the defaults
+# file exists (basicchecks.sh is in the source tree).
+prog=table
+execname=../bin/$prog/ast$prog
+
+
+
+
+
+# Skip?
+# =====
+#
+# If the dependencies of the test don't exist, then skip it. There are two
+# types of dependencies:
+#
+# - The executable was not made (for example due to a configure option),
+#
+# - The input data was not made (for example the test that created the
+# data file failed).
+if [ ! -f $execname ]; then echo "$execname not created."; exit 77; fi
+
+
+
+
+
+# Actual test script
+# ==================
+#
+# 'check_with_program' can be something like 'Valgrind' or an empty
+# string. Such programs will execute the command if present and help in
+# debugging when the developer doesn't have access to the user's system.
+echo "7h34m35.5498 31d53m14.352s" | $check_with_program $execname
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnuastro-commits] master 1acc441: Library (txt.c): no error when sexagesimal used for column info,
Mohammad Akhlaghi <=