Changeset 15748
- Timestamp:
- Dec 6, 2007, 3:41:36 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/libdvo/src/dvo_catalog_split.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libdvo/src/dvo_catalog_split.c
r15744 r15748 65 65 } 66 66 } 67 free (tmpfilt); 67 68 free (primary); 68 69 return (TRUE); … … 101 102 int dvo_catalog_open_subcat (Catalog *catalog, Catalog **Subcat, Header *header, char *name, int VERBOSE) { 102 103 103 int status;104 int Nskip, status; 104 105 char *path, string[80]; 105 106 Catalog *subcat; 106 Matrix matrix;107 107 108 108 /* in split mode, we need to init & open the corresponding measure file (even if we do not read … … 117 117 118 118 /* get split filename from main header (paths relative to cpt file) */ 119 if (!gfits_scan (&catalog[0].header, name, "%s", 1, string)) return (DVO_CAT_OPEN_FAIL); 119 if (!gfits_scan (&catalog[0].header, name, "%s", 1, string)) { 120 free (path); 121 return (DVO_CAT_OPEN_FAIL); 122 } 120 123 ALLOCATE (subcat[0].filename, char, strlen(path) + strlen(string) + 2); 121 124 sprintf (subcat[0].filename, "%s/%s", path, string); 125 free (path); 122 126 123 127 /* lock & open catalog file */ … … 139 143 return (DVO_CAT_OPEN_FAIL); 140 144 } 141 /* matrix should be empty : XXX skip the matrix data? */ 142 if (!gfits_fread_matrix (subcat[0].f, &matrix, &subcat[0].header)) { 143 if (VERBOSE) fprintf (stderr, "can't read primary matrix for %s\n", name); 144 return (DVO_CAT_OPEN_FAIL); 145 } 146 gfits_free_matrix (&matrix); 145 Nskip = gfits_data_size (&subcat[0].header); 146 fseek (subcat[0].f, Nskip, SEEK_CUR); 147 147 148 /* read Measure table header */ 148 149 if (!gfits_fread_header (subcat[0].f, header)) { 149 150 if (VERBOSE) fprintf (stderr, "can't read %s PHU header\n", name); 151 gfits_free_header (&subcat[0].header); 150 152 return (DVO_CAT_OPEN_FAIL); 151 153 } … … 155 157 int dvo_catalog_load_split (Catalog *catalog, int VERBOSE) { 156 158 157 int Nitems, Nexpect, Naverage, Nmeasure, Nmissing, Nsecfilt, status; 158 char *path, string[80]; 159 int Nbytes, Nitems, Nexpect, Naverage, Nmeasure, Nmissing, Nsecfilt, status; 159 160 Header header; 160 Matrix matrix;161 161 FTable ftable; 162 162 SecFilt *primary; … … 168 168 primary = NULL; 169 169 170 /* needed to find the split files below */171 path = pathname (catalog[0].filename);172 173 170 /* get the components from the header - these duplicate information in the split files (NAXIS2) */ 174 171 if (!gfits_scan (&catalog[0].header, "NSTARS", "%d", 1, &Naverage)) return (FALSE); … … 196 193 if (catalog[0].catflags & LOAD_AVES) { 197 194 /* move pointer past header -- must be already read (load_catalog) */ 198 fseek (catalog[0].f, catalog[0].header.size, SEEK_SET); 199 /* matrix should be empty : XXX should we drop this step and skip the data? */ 200 if (!gfits_fread_matrix (catalog[0].f, &matrix, &catalog[0].header)) { 201 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 202 return (FALSE); 203 } 195 Nbytes = catalog[0].header.size + gfits_data_size (&catalog[0].header); 196 fseek (catalog[0].f, Nbytes, SEEK_SET); 204 197 /* read Average table header */ 205 if (!gfits_fread_header (catalog[0].f, &header)) { 198 if (!gfits_fread_header (catalog[0].f, &header)) { 206 199 if (VERBOSE) fprintf (stderr, "can't read table average header"); 207 200 return (FALSE); 208 201 } 209 202 /* read Average table data : format is irrelevant here */ 210 if (!gfits_fread_ftable_data (catalog[0].f, &ftable)) { 203 if (!gfits_fread_ftable_data (catalog[0].f, &ftable)) { 211 204 if (VERBOSE) fprintf (stderr, "can't read table average data"); 212 205 return (FALSE); … … 257 250 catalog[0].Nmeas_off = catalog[0].Nmeas_disk; 258 251 } 259 gfits_free_header ( ftable.header);252 gfits_free_header (&header); 260 253 261 254 /*** Missing Table ***/ … … 335 328 int dvo_catalog_load_segment_split (Catalog *catalog, int VERBOSE, int start, int Nrows) { 336 329 337 int N average, Nsecfilt, Nexpect, Nitems, Nmeasure, Nmissing;330 int Nbytes, Naverage, Nsecfilt, Nexpect, Nitems, Nmeasure, Nmissing; 338 331 Header header; 339 Matrix matrix;340 332 FTable ftable; 341 333 SecFilt *primary; … … 351 343 352 344 /*** load the Average data ***/ 353 /* move pointer past header -- must be already read (load_catalog) */ 354 fseek (catalog[0].f, catalog[0].header.size, SEEK_SET); 355 /* matrix should be empty : XXX should we drop this step and skip the data? */ 356 if (!gfits_fread_matrix (catalog[0].f, &matrix, &catalog[0].header)) { 357 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 358 return (FALSE); 359 } 345 /* move pointer past header and matrix -- must be already read (load_catalog) */ 346 Nbytes = catalog[0].header.size + gfits_data_size (&catalog[0].header); 347 fseek (catalog[0].f, Nbytes, SEEK_SET); 360 348 /* read Average table header */ 361 349 if (!gfits_fread_header (catalog[0].f, &header)) { … … 385 373 386 374 /* move pointer past header -- must be already read (load_catalog) */ 387 fseek (subcat[0].f, subcat[0].header.size, SEEK_SET); 388 /* matrix should be empty : XXX should we drop this step and skip the data? */ 389 if (!gfits_fread_matrix (subcat[0].f, &matrix, &subcat[0].header)) { 390 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 391 return (FALSE); 392 } 375 Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header); 376 fseek (subcat[0].f, Nbytes, SEEK_SET); 377 393 378 /* read Secfilt table header */ 394 379 if (!gfits_fread_header (subcat[0].f, &header)) { … … 416 401 } 417 402 gfits_free_header (&header); 418 gfits_free_matrix (&matrix);419 403 } 420 404 … … 425 409 426 410 /* move pointer past header -- must be already read (load_catalog) */ 427 fseek (subcat[0].f, subcat[0].header.size, SEEK_SET); 428 /* matrix should be empty : XXX should we drop this step and skip the data? */ 429 if (!gfits_fread_matrix (subcat[0].f, &matrix, &subcat[0].header)) { 430 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 431 return (FALSE); 432 } 411 Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header); 412 fseek (subcat[0].f, Nbytes, SEEK_SET); 413 433 414 /* read Measure table header */ 434 415 if (!gfits_fread_header (subcat[0].f, &header)) { … … 448 429 } 449 430 gfits_free_header (&header); 450 gfits_free_matrix (&matrix);451 431 catalog[0].Nmeasure = Nmeasure; 452 432 catalog[0].Nmeas_off = start; … … 459 439 460 440 /* move pointer past header -- must be already read (load_catalog) */ 461 fseek (subcat[0].f, subcat[0].header.size, SEEK_SET); 462 /* matrix should be empty : XXX should we drop this step and skip the data? */ 463 if (!gfits_fread_matrix (subcat[0].f, &matrix, &subcat[0].header)) { 464 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 465 return (FALSE); 466 } 441 Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header); 442 fseek (subcat[0].f, Nbytes, SEEK_SET); 443 467 444 /* read Missing table header */ 468 445 if (!gfits_fread_header (subcat[0].f, &header)) { … … 482 459 } 483 460 gfits_free_header (&header); 484 gfits_free_matrix (&matrix);485 461 catalog[0].Nmissing = Nmissing; 486 462 catalog[0].Nmiss_off = start; … … 549 525 assert (Nrows >= 0); 550 526 assert (first >= 0); 551 assert (first < catalog[0].Naverage);527 assert (first <= catalog[0].Naverage); 552 528 assert (catalog[0].Naves_disk >= catalog[0].Naves_off); 553 529 … … 586 562 assert (Nrows >= 0); 587 563 assert (first >= 0); 588 assert (first < catalog[0].Nmeasure);564 assert (first <= catalog[0].Nmeasure); 589 565 assert (catalog[0].Nmeas_disk >= catalog[0].Nmeas_off); 590 566 … … 637 613 assert (Nrows >= 0); 638 614 assert (first >= 0); 639 assert (first < Nitems);615 assert (first <= Nitems); 640 616 assert (catalog[0].Nsecf_disk >= catalog[0].Nsecf_off); 641 617 // XXX check these for consistency... … … 731 707 assert (Nrows >= 0); 732 708 assert (first >= 0); 733 assert (first < catalog[0].Naverage);709 assert (first <= catalog[0].Naverage); 734 710 assert (catalog[0].Naves_disk >= catalog[0].Naves_off); 735 711 … … 768 744 assert (Nrows >= 0); 769 745 assert (first >= 0); 770 assert (first < catalog[0].Nmeasure);746 assert (first <= catalog[0].Nmeasure); 771 747 assert (catalog[0].Nmeas_disk >= catalog[0].Nmeas_off); 772 748 … … 823 799 assert (Nrows >= 0); 824 800 assert (first >= 0); 825 assert (first < Nitems);801 assert (first <= Nitems); 826 802 assert (catalog[0].Nmeas_disk >= catalog[0].Nmeas_off); 827 803
Note:
See TracChangeset
for help on using the changeset viewer.
