aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--src/nad2bin.c22
2 files changed, 19 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 00f1b625..fd112c68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2012-02-20 Frank Warmerdam <warmerdam@pobox.com>
+ * src/nad2bin.c: improve io error checking (#140).
+
* src/PJ_healpix.c: fix windows build issues (#133)
2012-02-15 Frank Warmerdam <warmerdam@pobox.com>
diff --git a/src/nad2bin.c b/src/nad2bin.c
index 2c8fc28e..6de54f9c 100644
--- a/src/nad2bin.c
+++ b/src/nad2bin.c
@@ -98,9 +98,15 @@ int main(int argc, char **argv) {
/* Read the ASCII Table */
/* ==================================================================== */
- fgets(ct.id, MAX_TAB_ID, stdin);
- scanf("%d %d %*d %lf %lf %lf %lf", &ct.lim.lam, &ct.lim.phi,
- &ct.ll.lam, &ct.del.lam, &ct.ll.phi, &ct.del.phi);
+ if ( NULL == fgets(ct.id, MAX_TAB_ID, stdin) ) {
+ perror("fgets");
+ exit(1);
+ }
+ if ( EOF == scanf("%d %d %*d %lf %lf %lf %lf", &ct.lim.lam, &ct.lim.phi,
+ &ct.ll.lam, &ct.del.lam, &ct.ll.phi, &ct.del.phi) ) {
+ perror("scanf");
+ exit(1);
+ }
if (!(ct.cvs = (FLP *)malloc(tsize = ct.lim.lam * ct.lim.phi *
sizeof(FLP)))) {
perror("mem. alloc");
@@ -112,7 +118,10 @@ int main(int argc, char **argv) {
ct.del.phi *= DEG_TO_RAD;
/* load table */
for (p = ct.cvs, i = 0; i < ct.lim.phi; ++i) {
- scanf("%d:%ld %ld", &ichk, &laml, &phil);
+ if ( EOF == scanf("%d:%ld %ld", &ichk, &laml, &phil) ) {
+ perror("scanf on row");
+ exit(1);
+ }
if (ichk != i) {
fprintf(stderr,"format check on row\n");
exit(1);
@@ -121,7 +130,10 @@ int main(int argc, char **argv) {
t.phi = phil * U_SEC_TO_RAD;
*p++ = t;
for (j = 1; j < ct.lim.lam; ++j) {
- scanf("%ld %ld", &lam, &phi);
+ if ( EOF == scanf("%ld %ld", &lam, &phi) ) {
+ perror("scanf on column");
+ exit(1);
+ }
t.lam = (laml += lam) * U_SEC_TO_RAD;
t.phi = (phil += phi) * U_SEC_TO_RAD;
*p++ = t;