Changeset 17042
- Timestamp:
- Mar 18, 2008, 8:48:16 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/read_vectors.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/read_vectors.c
r15869 r17042 148 148 } 149 149 150 # define ESCAPE(MSG) \ 151 gprint (GP_ERR, "%s\n", MSG); \ 152 if (CCDKeyword != NULL) free (CCDKeyword); \ 153 gfits_free_table (&table); \ 154 gfits_free_header (&header); \ 155 return (FALSE); 156 150 157 int read_table_vectors (int argc, char **argv, char *extname) { 151 158 … … 172 179 } 173 180 174 if (argc < 2) { 175 gprint (GP_ERR, "USAGE: read -fits extension [-extnum] [-keyword key] name name ...\n"); 176 gprint (GP_ERR, " ('extension' may be a name or number)\n"); 177 goto escape; 178 } 179 180 if (f == (FILE *) NULL) goto escape; 181 if (argc < 2) ESCAPE ("USAGE: read -fits extension [-extnum] [-keyword key] name name ..."); 182 183 if (f == NULL) ESCAPE ("file not found"); 181 184 fseek (f, 0, SEEK_SET); 182 185 table.header = &header; … … 186 189 // first extension is PHU, cannot be a table. 187 190 // Nextend counts from 0 for first extension 188 if (!gfits_load_header (f, &header)) goto escape;191 if (!gfits_load_header (f, &header)) ESCAPE ("error reading primary header for file"); 189 192 Nbytes = gfits_data_size (&header); 190 193 fseek (f, Nbytes, SEEK_CUR); … … 192 195 193 196 for (i = 0; i < Nextend; i++) { 194 if (!gfits_load_header (f, &header)) goto escape;197 if (!gfits_load_header (f, &header)) ESCAPE ("extension not found"); 195 198 Nbytes = gfits_data_size (&header); 196 199 /* skip the prior data buffers */ … … 198 201 gfits_free_header (&header); 199 202 } 200 if (!gfits_load_header (f, &header)) goto escape;201 if (!gfits_fread_ftable_data (f, &table)) goto escape;203 if (!gfits_load_header (f, &header)) ESCAPE ("error reading header for extension"); 204 if (!gfits_fread_ftable_data (f, &table)) ESCAPE ("error reading table for extension"); 202 205 203 206 } else { … … 210 213 211 214 while (1) { 212 if (!gfits_load_header (f, &header)) goto escape;215 if (!gfits_load_header (f, &header)) ESCAPE ("extensio not found in file"); 213 216 Nbytes = gfits_data_size (&header); 214 217 … … 223 226 continue; 224 227 } 225 if (!gfits_fread_ftable_data (f, &table)) goto escape;228 if (!gfits_fread_ftable_data (f, &table)) ESCAPE ("error reading table for extension"); 226 229 break; 227 230 } … … 232 235 gfits_scan (&header, "XTENSION", "%s", 1, type); 233 236 if (strcmp (type, "BINTABLE") && strcmp (type, "TABLE")) { 234 gprint (GP_ERR, "specified extension (%s) is not a table\n", extname); 235 goto escape; 237 ESCAPE ("specified extension is not a table\n"); 236 238 } 237 239 Binary = !strcmp (type, "BINTABLE"); … … 251 253 Nval = 0; 252 254 if (Binary) { 253 if (!gfits_get_bintable_column_type (&header, argv[i], type, &Nval)) goto escape;254 if (!gfits_get_bintable_column (&header, &table, argv[i], &data)) goto escape;255 if (!gfits_get_bintable_column_type (&header, argv[i], type, &Nval)) ESCAPE ("requested field not found"); 256 if (!gfits_get_bintable_column (&header, &table, argv[i], &data)) ESCAPE ("error reading data from specified field"); 255 257 } else { 256 if (!gfits_get_table_column_type (&header, argv[i], type)) goto escape;257 if (!gfits_get_table_column (&header, &table, argv[i], &data)) goto escape;258 } 259 if (Nval == 0) goto escape;258 if (!gfits_get_table_column_type (&header, argv[i], type)) ESCAPE ("requested field not found"); 259 if (!gfits_get_table_column (&header, &table, argv[i], &data)) ESCAPE ("error reading data from specified field"); 260 } 261 if (Nval == 0) ESCAPE ("no data for field in table"); 260 262 261 263 ALLOCATE (vec, Vector *, Nval); … … 265 267 else 266 268 sprintf (name, "%s:%d", argv[i], j); 267 if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape;269 if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) ESCAPE ("bad vector name"); 268 270 REALLOCATE (vec[j][0].elements, float, MAX (Ny,1)); 269 271 vec[j][0].Nelements = Ny; … … 317 319 gfits_free_header (&header); 318 320 return (TRUE); 319 320 escape:321 if (CCDKeyword != NULL) free (CCDKeyword);322 gfits_free_table (&table);323 gfits_free_header (&header);324 return (FALSE);325 321 }
Note:
See TracChangeset
for help on using the changeset viewer.
