fileHandling.c

00001 /******************************************************************************
00002 *******************************************************************************
00003 *               European Southern Observatory
00004 *               VLTI Data Reduction Software
00005 *
00006 * File name:    fileHanding.c
00007 * Description:  Contains the routines for general file handing
00008 *               and freeing
00009 *
00010 *
00011 * History:
00012 * 05-Jul-04     (csabet) Created
00013 *******************************************************************************
00014 ******************************************************************************/
00015 
00016 /******************************************************************************
00017 *   Compiler directives
00018 ******************************************************************************/
00019 
00020 /******************************************************************************
00021 *   Include files
00022 ******************************************************************************/
00023 #include <sys/types.h>
00024 #include <sys/stat.h>
00025 #include <time.h>
00026 #include <math.h>
00027 #include <unistd.h>
00028 #include <stdio.h>
00029 #include <cpl.h>
00030 #include "midiGlobal.h"
00031 #include "midiLib.h"
00032 #include "errorHandling.h"
00033 #include "fileHandling.h"
00034 #include "qfits.h"
00035 
00036 /******************************************************************************
00037 *   Global Variables
00038 ******************************************************************************/
00039 
00040 /******************************************************************************
00041 *   Prototypes
00042 ******************************************************************************/
00043 
00044 /*============================ C O D E    A R E A ===========================*/
00045 
00046 
00047 
00048 
00049 
00050 /******************************************************************************
00051 *               European Southern Observatory
00052 *            VLTI MIDI Data Reduction Software
00053 *
00054 * Module name:  removePathName
00055 * Input/Output: See function arguments to avoid duplication
00056 * Description:  Returns a clean file name without the path name
00057 *
00058 *
00059 * History:
00060 * 26-Nov-03     (csabet) Created
00061 ******************************************************************************/
00062 void removePathName(
00063     char    *fileName,  /*  IO: Name of string possibly containig path names */
00064     FILE    *filePtr)   /*  In: Pointer to an open temporary file */
00065 {
00066     /*  Local Declarations
00067     --------------------*/
00068     const char      routine[] = "removePathName";
00069     FILE            *temp1Ptr, *temp2Ptr;
00070     size_t          stringLength;
00071     unsigned int    i, indexCount = 0;
00072     char            nextChar;
00073 
00074     /*  Algorithm
00075     -----------*/
00076     if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking      routine   '%s' \n", routine);
00077     if (diagnostic > 4) fprintf (filePtr, "Invoking      routine   '%s' \n", routine);
00078     
00079 
00080     stringLength = strlen (fileName);
00081     temp1Ptr = fopen("temp1.grb", "w");
00082     fprintf (temp1Ptr, "%s\n", fileName);
00083     fclose (temp1Ptr);
00084     temp1Ptr = fopen("temp1.grb", "r");
00085     for (i = 0; i < stringLength; i++)
00086     {
00087         fscanf (temp1Ptr, "%c", &nextChar);
00088         if (memcmp (&nextChar, "/", 1) == 0) indexCount = i+1;
00089     }
00090     rewind (temp1Ptr);
00091     temp2Ptr = fopen("temp2.grb", "w");
00092     for (i = 0; i < stringLength; i++)
00093     {
00094         nextChar = fgetc (temp1Ptr);
00095         if (i >= indexCount) fputc (nextChar, temp2Ptr);
00096     }
00097     fclose (temp1Ptr);
00098     fclose (temp2Ptr);
00099     temp2Ptr = fopen("temp2.grb", "r");
00100     fscanf (temp2Ptr, "%s\n", fileName);
00101     fclose (temp2Ptr);
00102     remove ("temp1.grb");
00103     remove ("temp2.grb");
00104 
00105     return;
00106 }
00107 /*****************************************************************************/
00108 
00109 
00110 /******************************************************************************
00111 *               European Southern Observatory
00112 *            VLTI MIDI Data Reduction Software
00113 *
00114 * Module name:  getFirstCharacter
00115 * Input/Output: See function arguments to avoid duplication
00116 * Description:  Returns the first character of a string
00117 *
00118 *
00119 * History:
00120 * 13-Jan-04     (csabet) Created
00121 ******************************************************************************/
00122 char getFirstCharacter (    /*  Ou: First character of the input string */
00123     char    *string)        /*  In: String to be examined */
00124 {
00125     /*  Local Declarations
00126     --------------------*/
00127     const char      routine[] = "getFirstCharacter";
00128     char            firstChar;
00129     FILE            *tempPtr;
00130 
00131     /*  Algorithm
00132     -----------*/
00133     if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking      routine   '%s' \n", routine);
00134     
00135     if (string == NULL) return (' ');
00136 
00137     tempPtr = fopen ("getFirstChar.grb", "w");
00138     fprintf (tempPtr, "%s\n", string);
00139     fclose (tempPtr);
00140     tempPtr = fopen ("getFirstChar.grb", "r");
00141     fscanf (tempPtr, "%c", &firstChar);
00142     fclose (tempPtr);
00143     remove ("getFirstChar.grb");
00144 
00145     return (firstChar);
00146 }
00147 /*****************************************************************************/
00148 
00149 
00150 
00151 /******************************************************************************
00152 *               European Southern Observatory
00153 *             VLTI MIDI Data Reduction Software
00154 *
00155 * Module name:  getFitsNames
00156 * Input/Output: See function arguments to avoid duplication
00157 * Description:  It looks into a given directory and writes names of FITS files
00158 *               into an output file
00159 *
00160 * History:
00161 * 17-Oct-03     (csabet) Created
00162 ******************************************************************************/
00163 void getFitsNames (
00164     MidiFiles   *fileNames, /*  IO: Pointer to midi files structure */
00165     FILE        *filePtr)
00166 {
00167     /*  Local Declarations
00168     --------------------*/
00169     const char  routine[] = "getFitsNames";
00170     char        *argument;
00171     FILE        *inFitsClassifiedPtr;
00172     struct stat buf;
00173     int         numOfFiles;
00174 
00175     /*  Algorithm
00176     -----------*/
00177     if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking      routine   '%s' \n", routine);
00178     if (diagnostic > 4) fprintf (filePtr, "Invoking      routine   '%s' \n", routine);
00179 
00180     /*  Allocate memory */
00181     argument = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00182 
00183     /*  Remove existing list */
00184     if (stat (fileNames->inFitsClassified, &buf) == 0)  /*  If the file exist delete it */
00185         remove (fileNames->inFitsClassified);
00186 
00187 /*  TO_DO_MIDI_DRS  This section shall be replaced by an appropriate C code. (csabet 26-Oct-03) */
00188     strcat (argument, "ls -1 ");
00189     strcat (argument, fileNames->inFileDir);
00190     strcat (argument, "MIDI*.fits ");
00191     strcat (argument, "> ");
00192     strcat (argument, fileNames->inFitsClassified);
00193     system (argument);
00194 
00195     /*  Open the file for reading */
00196     inFitsClassifiedPtr = fopen (fileNames->inFitsClassified, "r");
00197     numOfFiles = 0;
00198     while (fscanf (inFitsClassifiedPtr, "%s\n", argument) != EOF)
00199     {
00200         numOfFiles++;
00201     }
00202     if (numOfFiles == 0)
00203     {
00204         sprintf (midiMessage, "Cannot find any valid MIDI FITS files in ... %s", fileNames->inFileDir);
00205         midiReportError (filePtr, routine, __FILE__, __LINE__, midiMessage);
00206     }
00207 
00208     fclose (inFitsClassifiedPtr);
00209 
00210     /*  Release memory */
00211     free (argument);
00212 
00213     return;
00214 }
00215 /*****************************************************************************/
00216 
00217 
00218 /******************************************************************************
00219 *               European Southern Observatory
00220 *            VLTI MIDI Data Reduction Software
00221 *
00222 * Module name:  cleanUpString
00223 * Input/Output: See function arguments to avoid duplication
00224 * Description:  Returns a clean string without spaces and quotes
00225 *
00226 *
00227 * History:
00228 * 11-Nov-03     (csabet) Created
00229 ******************************************************************************/
00230 void cleanUpString (
00231     char    *rawString,        // In: String to be cleaned up
00232     char    *cleanString)    // Ou: Cleaned up string
00233 {
00234     /*  Local Declarations
00235     --------------------*/
00236     char    *string=NULL, *qfitsStr=NULL;
00237     
00238     //    Algorithm
00239     //-----------
00240     
00241     //    Allocate memory
00242     string = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00243 
00244     sprintf (string, "%s", rawString);
00245     qfitsStr = qfits_pretty_string (string);
00246     sprintf (cleanString, "%s", qfitsStr);
00247 
00248     //    Release memory
00249     free (string);
00250 
00251     return;
00252 }
00253 /*****************************************************************************/
00254 
00255 
00256 /******************************************************************************
00257 *               European Southern Observatory
00258 *            VLTI MIDI Data Reduction Software
00259 *
00260 * Module name:  removeNewLine
00261 * Input/Output: See function arguments to avoid duplication
00262 * Description:  Returns a clean string without new line
00263 *
00264 *
00265 * History:
00266 * 29-Apr-05     (csabet) Created
00267 ******************************************************************************/
00268 void removeNewLine (
00269     char    *rawString,        // In: String to be cleaned up
00270     char    *cleanString)    // Ou: Cleaned up string
00271 {
00272     /*  Local Declarations
00273     --------------------*/
00274     char    lastChar, nextChar;
00275     FILE    *tempPtr=NULL;
00276     int        i;
00277     char    *tempSrt=NULL;
00278     size_t    newLength, stringLength;
00279     
00280     //    Algorithm
00281     //-----------
00282     tempSrt = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00283     stringLength = strlen (rawString);    
00284     tempPtr = fopen ("temp.grb", "w");
00285     fprintf (tempPtr, "%s\n", rawString);
00286     fclose (tempPtr);
00287     tempPtr = fopen ("temp.grb", "r");
00288 
00289     newLength = 0;
00290     for (i = 0; i < (int)stringLength; i++)
00291     {
00292         nextChar = fgetc (tempPtr);
00293         if (nextChar == '\n' || nextChar == ' ') break;
00294         lastChar = nextChar;
00295         newLength++;
00296     }
00297     if (lastChar == ' ') newLength--;
00298     fclose (tempPtr);
00299     strncpy (tempSrt, rawString, newLength);
00300     sprintf (cleanString, "%s", tempSrt);
00301     remove ("temp.grb");
00302 
00303     free (tempSrt);
00304     
00305     return;
00306 }
00307 /*****************************************************************************/
00308 
00309 
00310 
00311 /******************************************************************************
00312 *               European Southern Observatory
00313 *            VLTI MIDI Data Reduction Software
00314 *
00315 * Module name:  createQcLog
00316 * Input/Output: See function arguments to avoid duplication
00317 * Description:  Copies keywords from the raw input FITS primary header to the
00318 *               QC log
00319 *
00320 * History:
00321 * 23-Feb-04     (csabet) Created
00322 ******************************************************************************/
00323 void createQcLog (
00324     char    *inFitsName,
00325     int        *error)
00326 
00327 {
00328 
00329     /*  Local Declarations
00330     --------------------*/
00331     const char      routine[] = "createQcLog";
00332     char            *qfitsString, *emptyString, *cleanString;
00333 
00334     /*  Algorithm
00335     -----------*/
00336     if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking      routine   '%s' \n", routine);
00337     if (diagnostic > 4) fprintf(midiReportPtr, "Invoking      routine   '%s' \n", routine);
00338 
00339     /* Reset status */
00340     *error = 0;
00341 
00342     /* Allocate memory */
00343     emptyString = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
00344     cleanString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00345 
00346     /*  Initialise empty string */
00347     strcpy (emptyString, "\"UNKNOWN\"");
00348 
00349     /* Get all the keywords */
00350     qfitsString = qfits_query_hdr (inFitsName, "ARCFILE");
00351     if (qfitsString == NULL)
00352         fprintf (midiQcLogPtr, "ARCFILE             %s \n", emptyString);
00353     else {cleanUpString (qfitsString, cleanString);
00354         fprintf (midiQcLogPtr, "ARCFILE             \"%s\" \n", cleanString);}
00355 
00356     qfitsString = qfits_query_hdr (inFitsName, "TELESCOP");
00357     if (qfitsString == NULL)
00358         fprintf (midiQcLogPtr, "TELESCOP            %s \n", emptyString);
00359     else {cleanUpString (qfitsString, cleanString);
00360         fprintf (midiQcLogPtr, "TELESCOP            \"%s\" \n", cleanString);}
00361 
00362     qfitsString = qfits_query_hdr (inFitsName, "INSTRUME");
00363     if (qfitsString == NULL)
00364         fprintf (midiQcLogPtr, "INSTRUME            %s \n", emptyString);
00365     else {cleanUpString (qfitsString, cleanString);
00366         fprintf (midiQcLogPtr, "INSTRUME            \"%s\" \n", cleanString);}
00367 
00368     qfitsString = qfits_query_hdr (inFitsName, "MJD-OBS");
00369     if (qfitsString == NULL)
00370         fprintf (midiQcLogPtr, "MJD-OBS             %s \n", emptyString);
00371     else {cleanUpString (qfitsString, cleanString);
00372         fprintf (midiQcLogPtr, "MJD-OBS             \"%s\" \n", cleanString);}
00373 
00374     qfitsString = qfits_query_hdr (inFitsName, "DATE-OBS");
00375     if (qfitsString == NULL)
00376         fprintf (midiQcLogPtr, "DATE-OBS            %s \n", emptyString);
00377     else {cleanUpString (qfitsString, cleanString);
00378         fprintf (midiQcLogPtr, "DATE-OBS            \"%s\" \n", cleanString);}
00379 
00380     qfitsString = qfits_query_hdr (inFitsName, "UTC");
00381     if (qfitsString == NULL)
00382         fprintf (midiQcLogPtr, "UTC                 %s \n", emptyString);
00383     else {cleanUpString (qfitsString, cleanString);
00384         fprintf (midiQcLogPtr, "UTC                 %s \n", cleanString);}
00385 
00386     qfitsString = qfits_query_hdr (inFitsName, "LST");
00387     if (qfitsString == NULL)
00388         fprintf (midiQcLogPtr, "LST                 %s \n", emptyString);
00389     else {cleanUpString (qfitsString, cleanString);
00390         fprintf (midiQcLogPtr, "LST                 %s \n", cleanString);}
00391 
00392     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID DEC");
00393     if (qfitsString == NULL)
00394         fprintf (midiQcLogPtr, "COU.GUID.DEC        %s \n", emptyString);
00395     else {cleanUpString (qfitsString, cleanString);
00396         fprintf (midiQcLogPtr, "COU.GUID.DEC        %s \n", cleanString);}
00397 
00398     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID RA");
00399     if (qfitsString == NULL)
00400         fprintf (midiQcLogPtr, "COU.GUID.RA         %s \n", emptyString);
00401     else {cleanUpString (qfitsString, cleanString);
00402         fprintf (midiQcLogPtr, "COU.GUID.RA         %s \n", cleanString);}
00403 
00404     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID MAG");
00405     if (qfitsString == NULL) 
00406         fprintf (midiQcLogPtr, "COU.GUID.MAG        %s \n", emptyString);
00407     else {cleanUpString (qfitsString, cleanString); 
00408         fprintf (midiQcLogPtr, "COU.GUID.MAG        %s \n", cleanString);}
00409 
00410     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_MEAN");
00411     if (qfitsString == NULL)
00412         fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", emptyString);
00413     else {cleanUpString (qfitsString, cleanString);
00414         fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", cleanString);}
00415 
00416     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_MEAN");
00417     if (qfitsString == NULL)
00418         fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", emptyString);
00419     else {cleanUpString (qfitsString, cleanString);
00420         fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", cleanString);}
00421 
00422     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_RMS");
00423     if (qfitsString == NULL)
00424         fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS  %s \n", emptyString);
00425     else {cleanUpString (qfitsString, cleanString);
00426         fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS  %s \n", cleanString);}
00427 
00428     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_RMS");
00429     if (qfitsString == NULL)
00430         fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS  %s \n", emptyString);
00431     else {cleanUpString (qfitsString, cleanString);
00432         fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS  %s \n", cleanString);}
00433 
00434     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_MEAN");
00435     if (qfitsString == NULL)
00436         fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN    %s \n", emptyString);
00437     else {cleanUpString (qfitsString, cleanString);
00438         fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN    %s \n", cleanString);}
00439 
00440     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_MEAN");
00441     if (qfitsString == NULL)
00442         fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN    %s \n", emptyString);
00443     else {cleanUpString (qfitsString, cleanString);
00444         fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN    %s \n", cleanString);}
00445 
00446     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_RMS");
00447     if (qfitsString == NULL)
00448         fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS     %s \n", emptyString);
00449     else {cleanUpString (qfitsString, cleanString);
00450         fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS     %s \n", cleanString);}
00451 
00452     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_RMS");
00453     if (qfitsString == NULL)
00454         fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS     %s \n", emptyString);
00455     else {cleanUpString (qfitsString, cleanString);
00456         fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS     %s \n", cleanString);}
00457 
00458     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_MEAN");
00459     if (qfitsString == NULL)
00460         fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN    %s \n", emptyString);
00461     else {cleanUpString (qfitsString, cleanString);
00462         fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN    %s \n", cleanString);}
00463 
00464     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_MEAN");
00465     if (qfitsString == NULL)
00466         fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN    %s \n", emptyString);
00467     else {cleanUpString (qfitsString, cleanString);
00468         fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN    %s \n", cleanString);}
00469 
00470     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_RMS");
00471     if (qfitsString == NULL)
00472         fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS     %s \n", emptyString);
00473     else {cleanUpString (qfitsString, cleanString);
00474         fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS     %s \n", cleanString);}
00475 
00476     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_RMS");
00477     if (qfitsString == NULL)
00478         fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS     %s \n", emptyString);
00479     else {cleanUpString (qfitsString, cleanString);
00480         fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS     %s \n", cleanString);}
00481 
00482     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_MEAN");
00483     if (qfitsString == NULL)
00484         fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN   %s \n", emptyString);
00485     else {cleanUpString (qfitsString, cleanString);
00486         fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN   %s \n", cleanString);}
00487 
00488     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_MEAN");
00489     if (qfitsString == NULL)
00490         fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN   %s \n", emptyString);
00491     else {cleanUpString (qfitsString, cleanString);
00492         fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN   %s \n", cleanString);}
00493 
00494     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_RMS");
00495     if (qfitsString == NULL)
00496         fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS    %s \n", emptyString);
00497     else {cleanUpString (qfitsString, cleanString);
00498         fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS    %s \n", cleanString);}
00499 
00500     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_RMS");
00501     if (qfitsString == NULL)
00502         fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS    %s \n", emptyString);
00503     else {cleanUpString (qfitsString, cleanString);
00504         fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS    %s \n", cleanString);}
00505 
00506     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_MEAN");
00507     if (qfitsString == NULL)
00508         fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN     %s \n", emptyString);
00509     else {cleanUpString (qfitsString, cleanString);
00510         fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN     %s \n", cleanString);}
00511 
00512     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_MEAN");
00513     if (qfitsString == NULL)
00514         fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN     %s \n", emptyString);
00515     else {cleanUpString (qfitsString, cleanString);
00516         fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN     %s \n", cleanString);}
00517 
00518     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_RMS");
00519     if (qfitsString == NULL)
00520         fprintf (midiQcLogPtr, "COU.AO1.L0_RMS      %s \n", emptyString);
00521     else {cleanUpString (qfitsString, cleanString);
00522         fprintf (midiQcLogPtr, "COU.AO1.L0_RMS      %s \n", cleanString);}
00523 
00524     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_RMS");
00525     if (qfitsString == NULL)
00526         fprintf (midiQcLogPtr, "COU.AO2.L0_RMS      %s \n", emptyString);
00527     else {cleanUpString (qfitsString, cleanString);
00528         fprintf (midiQcLogPtr, "COU.AO2.L0_RMS      %s \n", cleanString);}
00529 
00530     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_MEAN");
00531     if (qfitsString == NULL)
00532         fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN     %s \n", emptyString);
00533     else {cleanUpString (qfitsString, cleanString);
00534         fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN     %s \n", cleanString);}
00535 
00536     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_MEAN");
00537     if (qfitsString == NULL)
00538         fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN     %s \n", emptyString);
00539     else {cleanUpString (qfitsString, cleanString);
00540         fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN     %s \n", cleanString);}
00541 
00542     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_RMS");
00543     if (qfitsString == NULL)
00544         fprintf (midiQcLogPtr, "COU.AO1.R0_RMS      %s \n", emptyString);
00545     else {cleanUpString (qfitsString, cleanString);
00546         fprintf (midiQcLogPtr, "COU.AO1.R0_RMS      %s \n", cleanString);}
00547 
00548     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_RMS");
00549     if (qfitsString == NULL)
00550         fprintf (midiQcLogPtr, "COU.AO2.R0_RMS      %s \n", emptyString);
00551     else {cleanUpString (qfitsString, cleanString);
00552         fprintf (midiQcLogPtr, "COU.AO2.R0_RMS      %s \n", cleanString);}
00553 
00554     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_MEAN");
00555     if (qfitsString == NULL)
00556         fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN     %s \n", emptyString);
00557     else {cleanUpString (qfitsString, cleanString);
00558         fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN     %s \n", cleanString);}
00559 
00560     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_MEAN");
00561     if (qfitsString == NULL)
00562         fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN     %s \n", emptyString);
00563     else {cleanUpString (qfitsString, cleanString);
00564         fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN     %s \n", cleanString);}
00565 
00566     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_RMS");
00567     if (qfitsString == NULL)
00568         fprintf (midiQcLogPtr, "COU.AO1.T0_RMS      %s \n", emptyString);
00569     else {cleanUpString (qfitsString, cleanString);
00570         fprintf (midiQcLogPtr, "COU.AO1.T0_RMS      %s \n", cleanString);}
00571 
00572     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_RMS");
00573     if (qfitsString == NULL)
00574         fprintf (midiQcLogPtr, "COU.AO2.T0_RMS      %s \n", emptyString);
00575     else {cleanUpString (qfitsString, cleanString);
00576         fprintf (midiQcLogPtr, "COU.AO2.T0_RMS      %s \n", cleanString);}
00577 
00578     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NX");
00579     if (qfitsString == NULL)
00580         fprintf (midiQcLogPtr, "DET.CHIP.NX         %s \n", emptyString);
00581     else {cleanUpString (qfitsString, cleanString);
00582         fprintf (midiQcLogPtr, "DET.CHIP.NX         %s \n", cleanString);}
00583 
00584     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NY");
00585     if (qfitsString == NULL)
00586         fprintf (midiQcLogPtr, "DET.CHIP.NY         %s \n", emptyString);
00587     else {cleanUpString (qfitsString, cleanString);
00588         fprintf (midiQcLogPtr, "DET.CHIP.NY         %s \n", cleanString);}
00589 
00590     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DIT");
00591     if (qfitsString == NULL)
00592         fprintf (midiQcLogPtr, "DET.DIT             %s \n", emptyString);
00593     else {cleanUpString (qfitsString, cleanString);
00594         fprintf (midiQcLogPtr, "DET.DIT             %s \n", cleanString);}
00595 
00596     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DITDELAY");
00597     if (qfitsString == NULL)
00598         fprintf (midiQcLogPtr, "DET.DITDELAY        %s \n", emptyString);
00599     else {cleanUpString (qfitsString, cleanString);
00600         fprintf (midiQcLogPtr, "DET.DITDELAY        %s \n", cleanString);}
00601 
00602     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET INT MODE");
00603     if (qfitsString == NULL)
00604         fprintf (midiQcLogPtr, "DET.INT.MODE        %s \n", emptyString);
00605     else {cleanUpString (qfitsString, cleanString);
00606         fprintf (midiQcLogPtr, "DET.INT.MODE        \"%s\" \n", cleanString);}
00607 
00608     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NDIT");
00609     if (qfitsString == NULL)
00610         fprintf (midiQcLogPtr, "DET.NDIT            %s \n", emptyString);
00611     else {cleanUpString (qfitsString, cleanString);
00612         fprintf (midiQcLogPtr, "DET.NDIT            %s \n", cleanString);}
00613 
00614     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NRTS MODE");
00615     if (qfitsString == NULL)
00616         fprintf (midiQcLogPtr, "DET.NRTS.MODE       %s \n", emptyString);
00617     else {cleanUpString (qfitsString, cleanString);
00618         fprintf (midiQcLogPtr, "DET.NRTS.MODE       \"%s\" \n", cleanString);}
00619 
00620     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NX");
00621     if (qfitsString == NULL)
00622         fprintf (midiQcLogPtr, "DET.WIN1.NX         %s \n", emptyString);
00623     else {cleanUpString (qfitsString, cleanString);
00624         fprintf (midiQcLogPtr, "DET.WIN1.NX         %s \n", cleanString);}
00625 
00626     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NY");
00627     if (qfitsString == NULL)
00628         fprintf (midiQcLogPtr, "DET.WIN1.NY         %s \n", emptyString);
00629     else {cleanUpString (qfitsString, cleanString);
00630         fprintf (midiQcLogPtr, "DET.WIN1.NY         %s \n", cleanString);}
00631 
00632     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NX");
00633     if (qfitsString == NULL)
00634         fprintf (midiQcLogPtr, "DET.WIN2.NX         %s \n", emptyString);
00635     else {cleanUpString (qfitsString, cleanString);
00636         fprintf (midiQcLogPtr, "DET.WIN2.NX         %s \n", cleanString);}
00637 
00638     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NY");
00639     if (qfitsString == NULL)
00640         fprintf (midiQcLogPtr, "DET.WIN2.NY         %s \n", emptyString);
00641     else {cleanUpString (qfitsString, cleanString);
00642         fprintf (midiQcLogPtr, "DET.WIN2.NY         %s \n", cleanString);}
00643 
00644     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR CATG");
00645     if (qfitsString == NULL)
00646         fprintf (midiQcLogPtr, "DPR.CATG            %s \n", emptyString);
00647     else {cleanUpString (qfitsString, cleanString);
00648         fprintf (midiQcLogPtr, "DPR.CATG            \"%s\" \n", cleanString);}
00649 
00650     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TECH");
00651     if (qfitsString == NULL)
00652         fprintf (midiQcLogPtr, "DPR.TECH            %s \n", emptyString);
00653     else {cleanUpString (qfitsString, cleanString);
00654         fprintf (midiQcLogPtr, "DPR.TECH            \"%s\" \n", cleanString);}
00655 
00656     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TYPE");
00657     if (qfitsString == NULL)
00658         fprintf (midiQcLogPtr, "DPR.TYPE            %s \n", emptyString);
00659     else {cleanUpString (qfitsString, cleanString);
00660         fprintf (midiQcLogPtr, "DPR.TYPE            \"%s\" \n", cleanString);}
00661 
00662     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS CAM NAME");
00663     if (qfitsString == NULL)
00664         fprintf (midiQcLogPtr, "INS.CAM.NAME        %s \n", emptyString);
00665     else {cleanUpString (qfitsString, cleanString);
00666         fprintf (midiQcLogPtr, "INS.CAM.NAME        \"%s\" \n", cleanString);}
00667 
00668     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS FILT NAME");
00669     if (qfitsString == NULL)
00670         fprintf (midiQcLogPtr, "INS.FILT.NAME       %s \n", emptyString);
00671     else {cleanUpString (qfitsString, cleanString);
00672         fprintf (midiQcLogPtr, "INS.FILT.NAME       \"%s\" \n", cleanString);}
00673 
00674     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS GRIS NAME");
00675     if (qfitsString == NULL)
00676         fprintf (midiQcLogPtr, "INS.GRIS.NAME       %s \n", emptyString);
00677     else {cleanUpString (qfitsString, cleanString);
00678         fprintf (midiQcLogPtr, "INS.GRIS.NAME       \"%s\" \n", cleanString);}
00679 
00680     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS MODE");
00681     if (qfitsString == NULL)
00682         fprintf (midiQcLogPtr, "INS.MODE            %s \n", emptyString);
00683     else {cleanUpString (qfitsString, cleanString);
00684         fprintf (midiQcLogPtr, "INS.MODE            \"%s\" \n", cleanString);}
00685 
00686     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 NAME");
00687     if (qfitsString == NULL)
00688         fprintf (midiQcLogPtr, "INS.OPT1.NAME       %s \n", emptyString);
00689     else {cleanUpString (qfitsString, cleanString);
00690         fprintf (midiQcLogPtr, "INS.OPT1.NAME       \"%s\" \n", cleanString);}
00691 
00692     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 TYPE");
00693     if (qfitsString == NULL)
00694         fprintf (midiQcLogPtr, "INS.OPT1.TYPE       %s \n", emptyString);
00695     else {cleanUpString (qfitsString, cleanString);
00696         fprintf (midiQcLogPtr, "INS.OPT1.TYPE       \"%s\" \n", cleanString);}
00697 
00698     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SHUT NAME");
00699     if (qfitsString == NULL)
00700         fprintf (midiQcLogPtr, "INS.SHUT.NAME       %s \n", emptyString);
00701     else {cleanUpString (qfitsString, cleanString);
00702         fprintf (midiQcLogPtr, "INS.SHUT.NAME       \"%s\" \n", cleanString);}
00703 
00704     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SLIT NAME");
00705     if (qfitsString == NULL)
00706         fprintf (midiQcLogPtr, "INS.SLIT.NAME       %s \n", emptyString);
00707     else {cleanUpString (qfitsString, cleanString);
00708         fprintf (midiQcLogPtr, "INS.SLIT.NAME       \"%s\" \n", cleanString);}
00709 
00710     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM END");
00711     if (qfitsString == NULL)
00712         fprintf (midiQcLogPtr, "ISS.AIRM.END        %s \n", emptyString);
00713     else {cleanUpString (qfitsString, cleanString);
00714         fprintf (midiQcLogPtr, "ISS.AIRM.END        %s \n", cleanString);}
00715 
00716     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM START");
00717     if (qfitsString == NULL)
00718         fprintf (midiQcLogPtr, "ISS.AIRM.START      %s \n", emptyString);
00719     else {cleanUpString (qfitsString, cleanString);
00720         fprintf (midiQcLogPtr, "ISS.AIRM.START      %s \n", cleanString);}
00721 
00722     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS ALT");
00723     if (qfitsString == NULL)
00724         fprintf (midiQcLogPtr, "ISS.ALT             %s \n", emptyString);
00725     else {cleanUpString (qfitsString, cleanString);
00726         fprintf (midiQcLogPtr, "ISS.ALT             %s \n", cleanString);}
00727 
00728     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM END");
00729     if (qfitsString == NULL)
00730         fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END   %s \n", emptyString);
00731     else {cleanUpString (qfitsString, cleanString);
00732         fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END   %s \n", cleanString);}
00733 
00734     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM START");
00735     if (qfitsString == NULL)
00736         fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", emptyString);
00737     else {cleanUpString (qfitsString, cleanString);
00738         fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", cleanString);}
00739 
00740     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI PRES");
00741     if (qfitsString == NULL)
00742         fprintf (midiQcLogPtr, "ISS.AMBI.PRES       %s \n", emptyString);
00743     else {cleanUpString (qfitsString, cleanString);
00744         fprintf (midiQcLogPtr, "ISS.AMBI.PRES       %s \n", cleanString);}
00745 
00746     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI RHUM");
00747     if (qfitsString == NULL)
00748         fprintf (midiQcLogPtr, "ISS.AMBI.RHUM       %s \n", emptyString);
00749     else {cleanUpString (qfitsString, cleanString);
00750         fprintf (midiQcLogPtr, "ISS.AMBI.RHUM       %s \n", cleanString);}
00751 
00752     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 END");
00753     if (qfitsString == NULL)
00754         fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END   %s \n", emptyString);
00755     else {cleanUpString (qfitsString, cleanString);
00756         fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END   %s \n", cleanString);}
00757 
00758     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 START");
00759     if (qfitsString == NULL)
00760         fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", emptyString);
00761     else {cleanUpString (qfitsString, cleanString);
00762         fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", cleanString);}
00763 
00764     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TEMP");
00765     if (qfitsString == NULL)
00766         fprintf (midiQcLogPtr, "ISS.AMBI.TEMP       %s \n", emptyString);
00767     else {cleanUpString (qfitsString, cleanString);
00768         fprintf (midiQcLogPtr, "ISS.AMBI.TEMP       %s \n", cleanString);}
00769 
00770     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDDIR");
00771     if (qfitsString == NULL)
00772         fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR    %s \n", emptyString);
00773     else {cleanUpString (qfitsString, cleanString);
00774         fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR    %s \n", cleanString);}
00775 
00776     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDSP");
00777     if (qfitsString == NULL)
00778         fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP     %s \n", emptyString);
00779     else {cleanUpString (qfitsString, cleanString);
00780         fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP     %s \n", cleanString);}
00781 
00782     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AZ");
00783     if (qfitsString == NULL)
00784         fprintf (midiQcLogPtr, "ISS.AZ              %s \n", emptyString);
00785     else {cleanUpString (qfitsString, cleanString);
00786         fprintf (midiQcLogPtr, "ISS.AZ              %s \n", cleanString);}
00787 
00788     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION1");
00789     if (qfitsString == NULL)
00790         fprintf (midiQcLogPtr, "ISS.CONF.STATION1   %s \n", emptyString);
00791     else {cleanUpString (qfitsString, cleanString);
00792         fprintf (midiQcLogPtr, "ISS.CONF.STATION1   \"%s\" \n", cleanString);}
00793 
00794     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION2");
00795     if (qfitsString == NULL)
00796         fprintf (midiQcLogPtr, "ISS.CONF.STATION2   %s \n", emptyString);
00797     else {cleanUpString (qfitsString, cleanString);
00798         fprintf (midiQcLogPtr, "ISS.CONF.STATION2   \"%s\" \n", cleanString);}
00799 
00800     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1X");
00801     if (qfitsString == NULL)
00802         fprintf (midiQcLogPtr, "ISS.CONF.T1X        %s \n", emptyString);
00803     else {cleanUpString (qfitsString, cleanString);
00804         fprintf (midiQcLogPtr, "ISS.CONF.T1X        %s \n", cleanString);}
00805 
00806     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Y");
00807     if (qfitsString == NULL)
00808         fprintf (midiQcLogPtr, "ISS.CONF.T1Y        %s \n", emptyString);
00809     else {cleanUpString (qfitsString, cleanString);
00810         fprintf (midiQcLogPtr, "ISS.CONF.T1Y        %s \n", cleanString);}
00811 
00812     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Z");
00813     if (qfitsString == NULL)
00814         fprintf (midiQcLogPtr, "ISS.CONF.T1Z        %s \n", emptyString);
00815     else {cleanUpString (qfitsString, cleanString);
00816         fprintf (midiQcLogPtr, "ISS.CONF.T1Z        %s \n", cleanString);}
00817 
00818     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2X");
00819     if (qfitsString == NULL)
00820         fprintf (midiQcLogPtr, "ISS.CONF.T2X        %s \n", emptyString);
00821     else {cleanUpString (qfitsString, cleanString);
00822         fprintf (midiQcLogPtr, "ISS.CONF.T2X        %s \n", cleanString);}
00823 
00824     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Y");
00825     if (qfitsString == NULL)
00826         fprintf (midiQcLogPtr, "ISS.CONF.T2Y        %s \n", emptyString);
00827     else {cleanUpString (qfitsString, cleanString);
00828         fprintf (midiQcLogPtr, "ISS.CONF.T2Y        %s \n", cleanString);}
00829 
00830     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Z");
00831     if (qfitsString == NULL)
00832         fprintf (midiQcLogPtr, "ISS.CONF.T2Z        %s \n", emptyString);
00833     else {cleanUpString (qfitsString, cleanString);
00834         fprintf (midiQcLogPtr, "ISS.CONF.T2Z        %s \n", cleanString);}
00835 
00836     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG END");
00837     if (qfitsString == NULL)
00838         fprintf (midiQcLogPtr, "ISS.PARANG.END      %s \n", emptyString);
00839     else {cleanUpString (qfitsString, cleanString);
00840         fprintf (midiQcLogPtr, "ISS.PARANG.END      %s \n", cleanString);}
00841 
00842     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG START");
00843     if (qfitsString == NULL)
00844         fprintf (midiQcLogPtr, "ISS.PARANG.START    %s \n", emptyString);
00845     else {cleanUpString (qfitsString, cleanString);
00846         fprintf (midiQcLogPtr, "ISS.PARANG.START    %s \n", cleanString);}
00847 
00848     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 END");
00849     if (qfitsString == NULL)
00850         fprintf (midiQcLogPtr, "ISS.PBL12.END       %s \n", emptyString);
00851     else {cleanUpString (qfitsString, cleanString);
00852         fprintf (midiQcLogPtr, "ISS.PBL12.END       %s \n", cleanString);}
00853 
00854     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 START");
00855     if (qfitsString == NULL)
00856         fprintf (midiQcLogPtr, "ISS.PBL12.START     %s \n", emptyString);
00857     else {cleanUpString (qfitsString, cleanString);
00858         fprintf (midiQcLogPtr, "ISS.PBL12.START     %s \n", cleanString);}
00859 
00860     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS ID");
00861     if (qfitsString == NULL)
00862         fprintf (midiQcLogPtr, "OBS.ID              %s \n", emptyString);
00863     else {cleanUpString (qfitsString, cleanString);
00864         fprintf (midiQcLogPtr, "OBS.ID              \"%s\" \n", cleanString);}
00865 
00866     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS NAME");
00867     if (qfitsString == NULL)
00868         fprintf (midiQcLogPtr, "OBS.NAME            %s \n", emptyString);
00869     else {cleanUpString (qfitsString, cleanString);
00870         fprintf (midiQcLogPtr, "OBS.NAME            \"%s\" \n", cleanString);}
00871 
00872     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI ID");
00873     if (qfitsString == NULL)
00874         fprintf (midiQcLogPtr, "OBS.PI-COI.ID       %s \n", emptyString);
00875     else {cleanUpString (qfitsString, cleanString);
00876         fprintf (midiQcLogPtr, "OBS.PI-COI.ID       \"%s\" \n", cleanString);}
00877 
00878     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI NAME");
00879     if (qfitsString == NULL)
00880         fprintf (midiQcLogPtr, "OBS.PI-COI.NAME     %s \n", emptyString);
00881     else {cleanUpString (qfitsString, cleanString);
00882         fprintf (midiQcLogPtr, "OBS.PI-COI.NAME     \"%s\" \n", cleanString);}
00883 
00884     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PROG ID");
00885     if (qfitsString == NULL)
00886         fprintf (midiQcLogPtr, "OBS.PROG.ID         %s \n", emptyString);
00887     else {cleanUpString (qfitsString, cleanString);
00888         fprintf (midiQcLogPtr, "OBS.PROG.ID         \"%s\" \n", cleanString);}
00889 
00890     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS START");
00891     if (qfitsString == NULL)
00892         fprintf (midiQcLogPtr, "OBS.START           %s \n", emptyString);
00893     else {cleanUpString (qfitsString, cleanString);
00894         fprintf (midiQcLogPtr, "OBS.START           \"%s\" \n", cleanString);}
00895 
00896     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS TARG NAME");
00897     if (qfitsString == NULL)
00898         fprintf (midiQcLogPtr, "OBS.TARG.NAME       %s \n", emptyString);
00899     else {cleanUpString (qfitsString, cleanString);
00900         fprintf (midiQcLogPtr, "OBS.TARG.NAME       \"%s\" \n", cleanString);}
00901 
00902     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OCS EXPO1 FNAME1");
00903     if (qfitsString == NULL)
00904         fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1    %s \n", emptyString);
00905     else {cleanUpString (qfitsString, cleanString);
00906         fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1    \"%s\" \n", cleanString);}
00907 
00908     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL ID");
00909     if (qfitsString == NULL)
00910         fprintf (midiQcLogPtr, "TPL.ID              %s \n", emptyString);
00911     else {cleanUpString (qfitsString, cleanString);
00912         fprintf (midiQcLogPtr, "TPL.ID              \"%s\" \n", cleanString);}
00913 
00914     qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL START");
00915     if (qfitsString == NULL)
00916         fprintf (midiQcLogPtr, "TPL.START           %s \n", emptyString);
00917     else {cleanUpString (qfitsString, cleanString);
00918         fprintf (midiQcLogPtr, "TPL.START           \"%s\" \n", cleanString);}
00919 
00920 
00921     /* Release memory */
00922     free (emptyString);
00923     free (cleanString);
00924 
00925     return;
00926 }
00927 /*****************************************************************************/

Generated on 15 Mar 2012 for MIDI Pipeline Reference Manual by  doxygen 1.6.1