3 /**********************************************************************/
7 /**********************************************************************/
8 void usage(char **argv)
10 fprintf(stderr, "Usage: %s in out.uf\n", argv[0]);
11 fprintf(stderr, "\n");
12 fprintf(stderr, "Subtract one day from all time fields in all headers,\n");
13 fprintf(stderr, "all the way down to the ray. Output to uf.\n");
17 /**********************************************************************/
19 /* subtract_one_day_ray */
21 /**********************************************************************/
23 void *subtract_one_day(int month, int day, int year,
24 int *m, int *d, int *y)
26 /* Connocialize and subtract. */
30 t = (struct tm *)calloc(1, sizeof(struct tm));
31 t->tm_mon = month-1; /* 0 - 11 */
32 t->tm_mday = day-1; /* 1 - 31 */ /* And, subtract one day. */
33 t->tm_year = year-1900; /* since 1900 */
35 t = localtime(&the_time);
42 /**********************************************************************/
44 /* subtract_one_day_ray */
46 /**********************************************************************/
47 Ray *subtract_one_day_ray(Ray *x)
49 if (x == NULL) return x;
50 subtract_one_day(x->h.month, x->h.day, x->h.year,
51 &x->h.month, &x->h.day, &x->h.year);
54 /**********************************************************************/
56 /* subtract_one_day_sweep */
58 /**********************************************************************/
59 Sweep *subtract_one_day_sweep(Sweep *x)
63 if (x == NULL) return x;
64 for(i=0; i<x->h.nrays; i++)
65 x->ray[i] = subtract_one_day_ray(x->ray[i]);
68 /**********************************************************************/
70 /* subtract_one_day_volume */
72 /**********************************************************************/
73 Volume *subtract_one_day_volume(Volume *x)
77 if (x == NULL) return x;
78 for(i=0; i<x->h.nsweeps; i++)
79 x->sweep[i] = subtract_one_day_sweep(x->sweep[i]);
82 /**********************************************************************/
84 /* subtract_one_day_radar */
86 /**********************************************************************/
87 Radar *subtract_one_day_radar(Radar *x)
91 if (x == NULL) return x;
92 for(i=0; i<x->h.nvolumes; i++)
93 x->v[i] = subtract_one_day_volume(x->v[i]);
99 /**********************************************************************/
103 /**********************************************************************/
104 int main(int argc, char **argv)
114 radar = RSL_anyformat_to_radar(argv[1]);
115 radar = subtract_one_day_radar(radar);
116 subtract_one_day(radar->h.month, radar->h.day, radar->h.year,
117 &radar->h.month, &radar->h.day, &radar->h.year);
118 RSL_radar_to_uf_gzip(radar, argv[2]);