]> Pileus Git - ~andy/rsl/blobdiff - read_write.c
Support 2 byte data
[~andy/rsl] / read_write.c
index 644a7b2dc1a88b8727949562650418a973af9133..8c9398799b433d0c54dab4289cf0acf251309a30 100644 (file)
@@ -56,8 +56,11 @@ Ray *RSL_read_ray(FILE *fp)
   Ray *r;
   int nbins;
 
-  (void)fread(header_buf, sizeof(char), sizeof(header_buf), fp);
-  (void)fread(&nbins, sizeof(int), 1, fp);
+  if (fread(header_buf, sizeof(header_buf), 1, fp) != 1 ||
+      fread(&nbins, sizeof(int), 1, fp) != 1) {
+        perror("RSL_read_ray: fread");
+        return NULL;
+  }
   if (nbins == 0) return NULL;
 
   memcpy(&ray_h, header_buf, sizeof(Ray_header));
@@ -65,7 +68,10 @@ Ray *RSL_read_ray(FILE *fp)
   r = RSL_new_ray(ray_h.nbins);
   r->h = ray_h;
 
-  (void)fread(r->range, sizeof(Range), r->h.nbins, fp);
+  if (fread(r->range, sizeof(Range), r->h.nbins, fp) != r->h.nbins) {
+    perror("RSL_read_ray: fread");
+    return NULL;
+  }
   return r;
 }
 Sweep *RSL_read_sweep(FILE *fp)
@@ -76,9 +82,11 @@ Sweep *RSL_read_sweep(FILE *fp)
   Sweep *s;
   int nrays;
 
-  (void)fread(header_buf, sizeof(char), sizeof(header_buf), fp);
-
-  (void)fread(&nrays, sizeof(int), 1, fp);
+  if (fread(header_buf, sizeof(header_buf), 1, fp) != 1 ||
+      fread(&nrays, sizeof(int), 1, fp) != 1) {
+        perror("RSL_read_sweep: fread");
+        return NULL;
+  }
   if (nrays == 0) return NULL;
 
   if (radar_verbose_flag)
@@ -101,10 +109,11 @@ Volume *RSL_read_volume(FILE *fp)
   Volume *v;
   int nsweeps;
 
-
-
-  (void)fread(header_buf, sizeof(char), sizeof(header_buf), fp);
-  (void)fread(&nsweeps, sizeof(int), 1, fp);
+  if (fread(header_buf, sizeof(header_buf), 1, fp) != 1 ||
+      fread(&nsweeps, sizeof(int), 1, fp) != 1) {
+        perror("RSL_read_volume: fread");
+        return NULL;
+  }
   if (nsweeps == 0)    return NULL;
 
   if (radar_verbose_flag)
@@ -190,15 +199,24 @@ Radar *RSL_read_radar(char *infile)
        return NULL;
   }
   fp = uncompress_pipe(fp);
-  (void)fread(title, sizeof(char), sizeof(title), fp);
+  if (fread(title, sizeof(title), 1, fp) != 1) {
+       perror("RSL_read_radar: fread");
+       return NULL;
+  }
   if (strncmp(title, "RSL", 3) != 0) return NULL;
 
-  (void)fread(header_buf, sizeof(char), sizeof(header_buf), fp);
+  if (fread(header_buf, sizeof(header_buf), 1, fp) != 1) {
+       perror("RSL_read_radar: fread");
+       return NULL;
+  }
   memcpy(&radar_h, header_buf, sizeof(Radar_header));
   radar = RSL_new_radar(MAX_RADAR_VOLUMES);
   radar->h = radar_h;
 
-  (void)fread(&nradar, sizeof(int), 1, fp);
+  if (fread(&nradar, sizeof(int), 1, fp) != 1) {
+       perror("RSL_read_radar: fread");
+       return NULL;
+  }
   if (radar_verbose_flag)
        fprintf(stderr,"Reading %d volumes.\n", nradar);
 
@@ -314,7 +332,7 @@ int RSL_write_radar_fp(Radar *radar, FILE *fp)
   if (radar == NULL) return 0;
   
   memset(title, 0, sizeof(title));
-  (void)sprintf(title, "RSL v%s. sizeof(Range) %d", RSL_VERSION_STR, sizeof(Range));
+  (void)sprintf(title, "RSL v%s. sizeof(Range) %d", VERSION, sizeof(Range));
   n += fwrite(title, sizeof(char), sizeof(title), fp);
   
   memset(header_buf, 0, sizeof(header_buf));