IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38505


Ignore:
Timestamp:
Jun 20, 2015, 1:28:55 PM (11 years ago)
Author:
eugene
Message:

return from write immediately if matrix is 0 size; tidy code a bit; check memblock size before calling fwrite

Location:
branches/eam_branches/ipp-20150616/Ohana/src/libfits
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150616/Ohana/src/libfits/header/F_write_H.c

    r27435 r38505  
    55int gfits_write_header (char *filename, Header *header) {
    66
    7   FILE *f;
    8   off_t Nbytes;
    9   int status;
    10  
    11   status = TRUE;
     7  FILE *f = fopen (filename, "w");
     8  if (!f) return (FALSE);
    129
    13   f = fopen (filename, "w");
    14   if (f == (FILE *) NULL) return (FALSE);
    15 
    16   Nbytes = fwrite (header[0].buffer, sizeof(char), header[0].datasize, f);
    17 
    18   if (Nbytes != header[0].datasize) {
    19     status = FALSE;
    20   }
    21 
     10  int status = gfits_fwrite_header (f, header);
    2211  fclose (f);
    2312
     
    2918
    3019  off_t Nbytes;
    31   int status;
    32  
    33   status = TRUE;
     20
     21# ifdef OHANA_MEMORY 
     22  { // check memory before writing:
     23    // memblock of supplied pointer
     24    OhanaMemblock *myBlock = (OhanaMemblock *) header[0].buffer - 1;
     25    myAssert (myBlock->startblock == OHANA_MEMMAGIC, "bad memory");
     26    myAssert (myBlock->endblock == OHANA_MEMMAGIC, "bad memory");
     27    myAssert (myBlock->size >= header[0].datasize, "overflow");
     28  }
     29# endif
    3430
    3531  Nbytes = fwrite (header[0].buffer, sizeof(char), header[0].datasize, f);
    36 
    37   if (Nbytes != header[0].datasize) {
    38     status = FALSE;
     32  if (Nbytes != header[0].datasize) {
     33    perror ("fwrite: ");
     34    return FALSE;
    3935  }
    40 
    41   return (status);
     36  return TRUE;
    4237}       
    4338
    4439
    4540int gfits_fwrite_header (FILE *f, Header *header) {
    46 
    47   int status;
    48   status = gfits_save_header (f, header);
     41  int status = gfits_save_header (f, header);
    4942  return (status);
    5043}
  • branches/eam_branches/ipp-20150616/Ohana/src/libfits/matrix/F_write_M.c

    r33648 r38505  
    3535  else
    3636    nbytes = FT_RECORD_SIZE * ((off_t) (matrix[0].datasize / FT_RECORD_SIZE));
     37
     38  // fprintf (stderr, "write matrix: %d bytes (%d datasize)\n", (int) nbytes, (int) matrix[0].datasize);
     39  if (nbytes == 0) return TRUE;
    3740
    3841# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
  • branches/eam_branches/ipp-20150616/Ohana/src/libfits/table/F_write_T.c

    r38441 r38505  
    55int gfits_write_table (char *filename, FTable *table) {
    66 
    7   FILE *f;
    8   int status;
    9  
    10   status = TRUE;
    11  
    12   f = fopen (filename, "a+");
     7  FILE *f = fopen (filename, "a+");
    138  if (f == (FILE *) NULL) return (FALSE);
    149 
    15   status = fseeko (f, 0LL, SEEK_END);  /* write table to end of file! */
     10  int status = fseeko (f, 0LL, SEEK_END);  /* write table to end of file! */
    1611  if (status) { perror ("fseeko: "); return (FALSE);  }
    1712  status = gfits_fwrite_table (f, table);
     
    2520 
    2621  off_t Nbytes;
    27  
     22
     23# ifdef OHANA_MEMORY 
     24  { // check memory before writing:
     25    // memblock of supplied pointer
     26    OhanaMemblock *myBlock = (OhanaMemblock *) table[0].buffer - 1;
     27    myAssert (myBlock->startblock == OHANA_MEMMAGIC, "bad memory");
     28    myAssert (myBlock->endblock == OHANA_MEMMAGIC, "bad memory");
     29    myAssert (myBlock->size >= table[0].datasize, "overflow");
     30  }
     31# endif
     32
    2833  Nbytes = fwrite (table[0].buffer, sizeof(char), table[0].datasize, f);
    29   if (Nbytes != table[0].datasize) { perror ("fwrite: "); return (FALSE);  }
     34  if (Nbytes != table[0].datasize) {
     35    perror ("fwrite: ");
     36    return (FALSE); 
     37  }
    3038  return (TRUE);
    3139}       
  • branches/eam_branches/ipp-20150616/Ohana/src/libfits/table/F_write_TH.c

    r38441 r38505  
    55int gfits_write_Theader (char *filename, Header *header) {
    66 
    7   FILE *f;
    8   int status;
     7  FILE *f = fopen (filename, "a+");
     8  if (!f) return (FALSE);
    99 
    10   status = TRUE;
    11  
    12   f = fopen (filename, "a+");
    13   if (f == (FILE *) NULL) return (FALSE);
    14  
    15   status = fseeko (f, 0LL, SEEK_END);  /* write header to end of file! */
     10  int status = fseeko (f, 0LL, SEEK_END);  /* write header to end of file! */
    1611  if (status) { perror ("fseeko: "); return (FALSE);  }
    1712  status = gfits_fwrite_Theader (f, header);
     
    2621  off_t Nbytes;
    2722 
     23# ifdef OHANA_MEMORY 
     24  {
     25    // memblock of supplied pointer
     26    OhanaMemblock *myBlock = (OhanaMemblock *) header[0].buffer - 1;
     27    myAssert (myBlock->startblock == OHANA_MEMMAGIC, "bad memory");
     28    myAssert (myBlock->endblock == OHANA_MEMMAGIC, "bad memory");
     29    myAssert (myBlock->size >= header[0].datasize, "overflow");
     30  }
     31# endif
     32
    2833  Nbytes = fwrite (header[0].buffer, sizeof(char), header[0].datasize, f);
    29   if (Nbytes != header[0].datasize) { perror ("fwrite: "); return (FALSE);  }
     34  if (Nbytes != header[0].datasize) {
     35    perror ("fwrite: ");
     36    return (FALSE); 
     37  }
    3038
    3139  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.