IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 18, 2008, 2:52:14 PM (19 years ago)
Author:
eugene
Message:

return NULL if output var requested and entry not found

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libfits/matrix/F_write_M.c

    r7054 r16139  
    2121int gfits_fwrite_matrix (FILE *f, Matrix *matrix) {
    2222
    23   int i, status, nbytes, Nbytes;
    24   unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
    25   int perpix;
     23  int status, nbytes, Nbytes;
    2624
    2725  status = TRUE;
     
    3028     if the size is wrong, it probably should simply pad the fwrite statement.
    3129     better policy should be defined (ie, matrix.size always correct blocking?)
    32  */
     30  */
    3331
    3432  if (matrix[0].size % FT_RECORD_SIZE)
     
    3937  /* this is a bit cumbersome: swap all words, write out file, then swap back... */
    4038# ifdef BYTE_SWAP 
    41   perpix = abs(matrix[0].bitpix) / 8;
    42   if (perpix > 1) {
    43     byte0 = (unsigned char *) matrix[0].buffer;
    44     byte1 = (unsigned char *) matrix[0].buffer + 1;
    45     byte2 = (unsigned char *) matrix[0].buffer + 2;
    46     byte3 = (unsigned char *) matrix[0].buffer + 3;
    47     byte4 = (unsigned char *) matrix[0].buffer + 4;
    48     byte5 = (unsigned char *) matrix[0].buffer + 5;
    49     byte6 = (unsigned char *) matrix[0].buffer + 6;
    50     byte7 = (unsigned char *) matrix[0].buffer + 7;
    51     if (perpix == 2) {
    52       for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
    53         tmp = *byte0;
    54         *byte0 = *byte1;
    55         *byte1 = tmp;
     39  {
     40    int i;
     41    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
     42    int perpix;
     43
     44    perpix = abs(matrix[0].bitpix) / 8;
     45    if (perpix > 1) {
     46      byte0 = (unsigned char *) matrix[0].buffer;
     47      byte1 = (unsigned char *) matrix[0].buffer + 1;
     48      byte2 = (unsigned char *) matrix[0].buffer + 2;
     49      byte3 = (unsigned char *) matrix[0].buffer + 3;
     50      byte4 = (unsigned char *) matrix[0].buffer + 4;
     51      byte5 = (unsigned char *) matrix[0].buffer + 5;
     52      byte6 = (unsigned char *) matrix[0].buffer + 6;
     53      byte7 = (unsigned char *) matrix[0].buffer + 7;
     54      if (perpix == 2) {
     55        for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
     56          tmp = *byte0;
     57          *byte0 = *byte1;
     58          *byte1 = tmp;
     59        }
    5660      }
    57     }
    58     if (perpix == 4) {
    59       for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
    60         tmp = *byte0;
    61         *byte0 = *byte3;
    62         *byte3 = tmp;
    63         tmp = *byte1;
    64         *byte1 = *byte2;
    65         *byte2 = tmp;
     61      if (perpix == 4) {
     62        for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
     63          tmp = *byte0;
     64          *byte0 = *byte3;
     65          *byte3 = tmp;
     66          tmp = *byte1;
     67          *byte1 = *byte2;
     68          *byte2 = tmp;
     69        }
    6670      }
    67     }
    68     if (perpix == 8) {
    69       for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
    70         tmp = *byte0;
    71         *byte0 = *byte7;
    72         *byte7 = tmp;
    73         tmp = *byte1;
    74         *byte1 = *byte6;
    75         *byte6 = tmp;
    76         tmp = *byte1;
    77         *byte2 = *byte5;
    78         *byte5 = tmp;
    79         tmp = *byte1;
    80         *byte3 = *byte4;
    81         *byte4 = tmp;
     71      if (perpix == 8) {
     72        for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
     73          tmp = *byte0;
     74          *byte0 = *byte7;
     75          *byte7 = tmp;
     76          tmp = *byte1;
     77          *byte1 = *byte6;
     78          *byte6 = tmp;
     79          tmp = *byte1;
     80          *byte2 = *byte5;
     81          *byte5 = tmp;
     82          tmp = *byte1;
     83          *byte3 = *byte4;
     84          *byte4 = tmp;
     85        }
    8286      }
    8387    }
     
    9094  }
    9195
    92 # ifdef BYTE_SWAP 
    93   perpix = abs(matrix[0].bitpix) / 8;
    94   if (perpix > 1) {
    95     byte0 = (unsigned char *) matrix[0].buffer;
    96     byte1 = (unsigned char *) matrix[0].buffer + 1;
    97     byte2 = (unsigned char *) matrix[0].buffer + 2;
    98     byte3 = (unsigned char *) matrix[0].buffer + 3;
    99     byte4 = (unsigned char *) matrix[0].buffer + 4;
    100     byte5 = (unsigned char *) matrix[0].buffer + 5;
    101     byte6 = (unsigned char *) matrix[0].buffer + 6;
    102     byte7 = (unsigned char *) matrix[0].buffer + 7;
    103     if (perpix == 2) {
    104       for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
    105         tmp = *byte0;
    106         *byte0 = *byte1;
    107         *byte1 = tmp;
     96# ifdef BYTE_SWAP
     97  {
     98    int i;
     99    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
     100    int perpix;
     101
     102    perpix = abs(matrix[0].bitpix) / 8;
     103    if (perpix > 1) {
     104      byte0 = (unsigned char *) matrix[0].buffer;
     105      byte1 = (unsigned char *) matrix[0].buffer + 1;
     106      byte2 = (unsigned char *) matrix[0].buffer + 2;
     107      byte3 = (unsigned char *) matrix[0].buffer + 3;
     108      byte4 = (unsigned char *) matrix[0].buffer + 4;
     109      byte5 = (unsigned char *) matrix[0].buffer + 5;
     110      byte6 = (unsigned char *) matrix[0].buffer + 6;
     111      byte7 = (unsigned char *) matrix[0].buffer + 7;
     112      if (perpix == 2) {
     113        for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
     114          tmp = *byte0;
     115          *byte0 = *byte1;
     116          *byte1 = tmp;
     117        }
    108118      }
    109     }
    110     if (perpix == 4) {
    111       for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
    112         tmp = *byte0;
    113         *byte0 = *byte3;
    114         *byte3 = tmp;
    115         tmp = *byte1;
    116         *byte1 = *byte2;
    117         *byte2 = tmp;
     119      if (perpix == 4) {
     120        for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
     121          tmp = *byte0;
     122          *byte0 = *byte3;
     123          *byte3 = tmp;
     124          tmp = *byte1;
     125          *byte1 = *byte2;
     126          *byte2 = tmp;
     127        }
    118128      }
    119     }
    120     if (perpix == 8) {
    121       for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
    122         tmp = *byte0;
    123         *byte0 = *byte7;
    124         *byte7 = tmp;
    125         tmp = *byte1;
    126         *byte1 = *byte6;
    127         *byte6 = tmp;
    128         tmp = *byte1;
    129         *byte2 = *byte5;
    130         *byte5 = tmp;
    131         tmp = *byte1;
    132         *byte3 = *byte4;
    133         *byte4 = tmp;
     129      if (perpix == 8) {
     130        for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
     131          tmp = *byte0;
     132          *byte0 = *byte7;
     133          *byte7 = tmp;
     134          tmp = *byte1;
     135          *byte1 = *byte6;
     136          *byte6 = tmp;
     137          tmp = *byte1;
     138          *byte2 = *byte5;
     139          *byte5 = tmp;
     140          tmp = *byte1;
     141          *byte3 = *byte4;
     142          *byte4 = tmp;
     143        }
    134144      }
    135145    }
Note: See TracChangeset for help on using the changeset viewer.