Changeset 39459 for trunk/Ohana
- Timestamp:
- Mar 13, 2016, 7:53:44 AM (10 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/tools/src/ftable.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/tools/src/ftable.c
r39331 r39459 3 3 # include "inttypes.h" 4 4 5 void table_uncompress (int argc, char **argv); 5 6 int print_table_rows (FTable *table, int start, int Nrows); 6 7 FILE *load_extension (char *file, int Nextend, char *Extname, Header *header); … … 22 23 if (get_argument (argc, argv, "-h")) usage (); 23 24 if (get_argument (argc, argv, "--help")) usage (); 25 26 if ((N = get_argument (argc, argv, "-uncompress"))) { 27 remove_argument (N, &argc, argv); 28 table_uncompress (argc, argv); 29 } 30 if ((N = get_argument (argc, argv, "-u"))) { 31 remove_argument (N, &argc, argv); 32 table_uncompress (argc, argv); 33 } 24 34 25 35 Nextend = 0; … … 261 271 fprintf (stderr, " -list: print extension names\n"); 262 272 fprintf (stderr, " -layout: describe extension\n"); 273 fprintf (stderr, " -uncompress: uncompress file (requires output argument)\n"); 263 274 exit (2); 264 275 } … … 535 546 exit (0); 536 547 } 548 549 void myQuit (char *format,...) { 550 551 va_list argp; 552 va_start (argp, format); 553 vfprintf (stderr, format, argp); 554 va_end (argp); 555 556 exit (1); 557 } 558 559 void table_uncompress (int argc, char **argv) { 560 561 if (argc != 3) { 562 fprintf (stderr, "USAGE: ftable -u/-uncompress (input) (output)\n"); 563 exit (2); 564 } 565 566 Header header; 567 FTable ftable; 568 Matrix matrix; 569 ftable.header = &header; 570 571 FILE *fi = fopen (argv[1], "r"); 572 if (!fi) myQuit ("failed to open input file %s\n", argv[1]); 573 574 FILE *fo = fopen (argv[2], "w"); 575 if (!fo) myQuit ("failed to open output file %s\n", argv[2]); 576 577 if (!gfits_fread_header (fi, &header)) myQuit ("failed to read PHU header from input file %s\n", argv[1]); 578 if (!gfits_fread_matrix (fi, &matrix, &header)) myQuit ("failed to read PHU data array from input file %s\n", argv[1]); 579 580 if (!gfits_fwrite_header (fo, &header)) myQuit ("failed to write PHU header to output file %s\n", argv[2]); 581 if (!gfits_fwrite_matrix (fo, &matrix)) myQuit ("failed to write PHU data array to output file %s\n", argv[2]); 582 583 gfits_free_header (&header); 584 gfits_free_table (&ftable); 585 586 int Nextend = 0; 587 while (TRUE) { 588 if (!gfits_fread_header (fi, &header)) break; 589 590 if (!gfits_fread_ftable_data (fi, &ftable, FALSE)) { 591 myQuit ("failed to read table data for extension #%d from input file %s\n", Nextend, argv[1]); 592 } 593 594 Header *outheader = &header; 595 FTable *outtable = &ftable; 596 597 Header rawheader; 598 FTable rawtable; 599 rawtable.header = &rawheader; 600 601 int IsCompressed = gfits_extension_is_compressed_table (&header); 602 603 if (IsCompressed) { 604 int i, Nfields; 605 if (!gfits_scan (&header, "TFIELDS", "%d", 1, &Nfields)) 606 myQuit ("cannot find TFIELDS in header for extension #%d from input file %s\n", Nextend, argv[1]); 607 for (i = 0; i < Nfields; i++) { 608 if (!gfits_byteswap_varlength_column (&ftable, i+1)) 609 myQuit ("cannot swap varlength column for extension #%d from input file %s\n", Nextend, argv[1]); 610 } 611 if (!gfits_uncompress_table (&ftable, &rawtable)) 612 myQuit ("failed to uncompress table for extension #%d from input file %s\n", Nextend, argv[1]); 613 614 outheader = &rawheader; 615 outtable = &rawtable; 616 gfits_free_header (&header); 617 gfits_free_table (&ftable); 618 } 619 620 if (!gfits_fwrite_header (fo, outheader)) { 621 fprintf (stderr, "failed to write table header for extension #%d to output file %s\n", Nextend, argv[2]); 622 exit (1); 623 } 624 if (!gfits_fwrite_table (fo, outtable)) { 625 fprintf (stderr, "failed to write PHU data array for extension #%d to output file %s\n", Nextend, argv[2]); 626 exit (1); 627 } 628 629 gfits_free_header (outheader); 630 gfits_free_table (outtable); 631 632 Nextend ++; 633 } 634 635 if (!fclose (fi)) myQuit ("error closing input file %s\n", argv[1]); 636 if (!fclose (fo)) myQuit ("error closing output file %s\n", argv[1]); 637 exit (0); 638 }
Note:
See TracChangeset
for help on using the changeset viewer.
