IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 11, 2015, 2:14:39 PM (12 years ago)
Author:
eugene
Message:

merge changes from eam branch ipp-20140904

Location:
trunk/Ohana
Files:
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/libfits/Makefile

    r34088 r37807  
    3232$(HEAD)/F_scan.$(ARCH).o                        $(HEAD)/F_print.$(ARCH).o     \
    3333$(HEAD)/F_copy_H.$(ARCH).o                      $(HEAD)/F_delete.$(ARCH).o    \
    34 $(HEAD)/F_read_XH.$(ARCH).o                     $(HEAD)/F_init_H.$(ARCH).o    \
    35 $(HEAD)/F_convert_H.$(ARCH).o                   $(HEAD)/version.$(ARCH).o
     34$(HEAD)/F_find_H.$(ARCH).o                      $(HEAD)/F_init_H.$(ARCH).o    \
     35$(HEAD)/F_convert_H.$(ARCH).o                   $(HEAD)/F_read_XH.$(ARCH).o   \
     36$(HEAD)/version.$(ARCH).o
    3637
    3738MATRIX_OBJ = \
  • trunk/Ohana/src/libfits/header/F_free_H.c

    r7054 r37807  
    44/*********************** fits free header ***********************************/
    55void gfits_free_header (Header *header) {
     6
     7  // fprintf (stderr, "free data for %zx\n", (size_t) header->buffer);
    68
    79  if (header[0].buffer == (char *) NULL) return;
  • trunk/Ohana/src/libfits/include/gfitsio.h

    r37039 r37807  
    1717# define NEWLINE                 10  /* UNIX RETURN character */
    1818# endif /* NEWLINE */
     19
     20/* gfits_bintable_format returns 'byte' as the type associated with one-byte logical (non-char) values */
     21typedef char byte;
    1922
    2023/********** FITS Constants *********/
     
    116119int     gfits_modify_alt               PROTO((Header *header, char *field, char *mode, int N,...));
    117120int     gfits_print_alt                PROTO((Header *header, char *field, char *mode, int N,...));
     121int     gfits_find_Xheader             PROTO((FILE *f, Header *header, char *extname));
    118122int     gfits_read_Xheader             PROTO((char *filename, Header *header, int N));
    119123int     gfits_read_header              PROTO((char *filename, Header *header));
     
    184188int     gfits_fread_ftable             PROTO((FILE *f, FTable *ftable, char *extname));
    185189int     gfits_fread_ftable_data        PROTO((FILE *f, FTable *ftable, int padIfShort));
    186 int     gfits_fread_ftable_range       PROTO((FILE *f, FTable *ftable, off_t start, off_t Nrows));
     190int     gfits_fread_ftable_range       PROTO((FILE *f, int padIfShort, FTable *ftable, off_t start, off_t Nrows));
    187191int     gfits_fread_vtable             PROTO((FILE *f, VTable *vtable, char *extname, off_t Nrow, off_t *row));
    188192int     gfits_fread_vtable_range       PROTO((FILE *f, VTable *vtable, off_t start, off_t Nrows));
  • trunk/Ohana/src/libfits/table/F_read_T.c

    r29938 r37807  
    1919int gfits_fread_ftable (FILE *f, FTable *table, char *extname) {
    2020
    21   int j, found;
    22   off_t Nbytes;
    2321  Header *header;
    24   char tname[80];
    2522
    2623  header = table[0].header;
    27   fseeko (f, 0, SEEK_SET);
    28 
    29   found = FALSE;
    30   for (j = -1; !found; j++) {
    31     /* load data for this header */
    32     if (!gfits_load_header (f, header)) return (FALSE);
    33 
    34     /* check if this is the correct extension or not */
    35     bzero (tname, 80);
    36     gfits_scan (header, "EXTNAME", "%s", 1, tname);
    37     if (!strcmp (tname, extname)) {
    38       if (gfits_fread_ftable_data (f, table, FALSE)) return (TRUE);
    39       gfits_free_header (header);
    40       return (FALSE);
    41     }
    42 
    43     /* skip to next header */
    44     Nbytes = gfits_data_size (header);
    45     fseeko (f, Nbytes, SEEK_CUR);
    46     gfits_free_header (header);
    47   }
    48   return (TRUE);
    49 }       
     24  if (!gfits_find_Xheader (f, header, extname)) return FALSE;
     25
     26  if (gfits_fread_ftable_data (f, table, FALSE)) return (TRUE);
     27  gfits_free_header (header);
     28  return (FALSE);
     29}
    5030
    5131/*********************** fits read ftable data ***********************************/
     
    8464
    8565/*********************** fits read ftable data ***********************************/
    86 int gfits_fread_ftable_range (FILE *f, FTable *table, off_t start, off_t Nrows) {
     66int gfits_fread_ftable_range (FILE *f, int padIfShort, FTable *table, off_t start, off_t Nrows) {
    8767
    8868  off_t Nbytes, Nread, Nskip, Nx, Ny;
     
    10989    if (ferror (f)) {
    11090      perror ("fits read error");
     91      free (table[0].buffer);
     92      return (FALSE);
     93    }
     94    fprintf (stderr, "error: fits read error in %s, read "OFF_T_FMT", need "OFF_T_FMT"\n", __func__,  Nread,  Nbytes);
     95    if (padIfShort) {
     96      memset (&table[0].buffer[Nread], 0, Nbytes - Nread);
     97      fprintf (stderr, "warning: file missing data, padding with zeros: USE AT YOUR OWN RISK!\n");
     98      table[0].validsize = Nread;
     99      table[0].datasize = Nbytes;
    111100    } else {
    112       fprintf (stderr, "unexpected eof\n");
    113     }     
    114     free (table[0].buffer);
    115     return (FALSE);
     101      free (table[0].buffer);
     102      return (FALSE);
     103    }
    116104  }
    117105
  • trunk/Ohana/src/libfits/table/F_write_T.c

    r28241 r37807  
    9595
    9696  // cursor must be at start of the table (after table header)
    97   fseeko (f, Nskip, SEEK_CUR);
     97  if (fseeko (f, Nskip, SEEK_CUR)) {
     98    fprintf (stderr, "can't seek table start\n");
     99    return (FALSE);
     100  }
     101
    98102  Nwrite = fwrite (ftable[0].buffer, sizeof (char), Nbytes, f);
    99103  if (Nwrite != Nbytes) {
Note: See TracChangeset for help on using the changeset viewer.