[fitsverify] 01/01: New upstream version 4.17

Ole Streicher olebole-guest at moszumanska.debian.org
Wed Jan 29 12:21:32 UTC 2014


This is an automated email from the git hooks/post-receive script.

olebole-guest pushed a commit to branch debian
in repository fitsverify.

commit 6870e16cff25ed9da7d53e411498179b24bcf2a3
Author: Ole Streicher <debian at liska.ath.cx>
Date:   Wed Jan 29 12:51:01 2014 +0100

    New upstream version 4.17
---
 README       | 35 ++++++++++++++++++++---------------
 fitsverify.c |  2 +-
 ftverify.c   | 13 ++++++++++---
 fverify.h    |  2 +-
 fvrf_data.c  | 26 ++++++++++++--------------
 fvrf_head.c  | 39 ++++++++++++++++++++++++++++++++++-----
 fvrf_key.c   |  2 +-
 7 files changed, 79 insertions(+), 40 deletions(-)

diff --git a/README b/README
index ae14fcb..01ac4cc 100644
--- a/README
+++ b/README
@@ -12,11 +12,14 @@ libcfitsio.a on unix systems).
 fitsverify can be built on most unix machines with a command similar
 to the following:
 
-gcc -o fitsverify ftverify.c fvrf_data.c fvrf_file.c fvrf_head.c fvrf_key.c
-    fvrf_misc.c -DSTANDALONE -L. -lcfitsio -lm -lnsl -lsocket
+gcc -o fitsverify ftverify.c fvrf_data.c fvrf_file.c fvrf_head.c
+       fvrf_key.c fvrf_misc.c -DSTANDALONE -I/path/to/my/cfitsio 
+       -L/path/to/my/cfitsio -lcfitsio -lm -lnsl -lsocket
 
-(The '-lm', '-lnsl' and '-lsocket' library directives may not be 
-required on all platforms.)
+Where you should substitute "/path/to/my/cfitsio" with the location
+of the cfitsio header files and library on your system.  Note also
+that the '-lm', '-lnsl' and '-lsocket' library directives may not be
+required on all platforms.
 
 Optionally, one may add the -DERR2OUT flag to force all the error
 messages to go to stdout rather than stderr (usually only useful
@@ -27,7 +30,10 @@ vcvars32.bat file that is distributed with vcc,  unpack the fitverify
 .zip file, then excute the following command:
 
 cl /MD ftverify.c fvrf_data.c fvrf_file.c fvrf_head.c fvrf_key.c
-    fvrf_misc.c -DSTANDALONE cfitsio.lib
+    fvrf_misc.c -DSTANDALONE /link setargv.obj cfitsio.lib
+
+(The "/link setargv.obj" is optional and just enables support
+for wildcard characters (like *) in the input file names).
 
 A help file describing the features of fitsverify can be produced
 by entering the command 'fitsverify -h'.  The help file
@@ -50,17 +56,16 @@ USAGE:   fitsverify filename ...  - verify one or more FITS files
 EXAMPLES:
      fitsverify -l m101.fits    - produce a detailed verificaton report of
                                   a single file, including a keyword listing
-     fitsverify -q *.fits *.fit - verify all files with .fits or .fit 
-                                  extensions, writing a 1-line pass/fail 
+     fitsverify -q *.fits *.fit - verify all files with .fits or .fit
+                                  extensions, writing a 1-line pass/fail
                                   message for each file
  
 DESCRIPTION:
     
     This task reads one or more input FITS files and verifies that the
-    files conform to the specifications of the FITS Standard document
-    (known as the NASA/Science Office of Standards and Technology 'Definition
-    of the Current  FITS Standard', document number, NOST 100-2.0, available
-    online  at http://fits.gsfc.nasa.gov/).  The input filename template may
+    files conform to the specifications of the FITS Standard, Definition
+    of the Flexible Image Transport System (FITS), Version 3.0, available
+    online  at http://fits.gsfc.nasa.gov/.  The input filename template may
     contain wildcard characters, in which case all matching files will be 
     tested.  Alternatively, the name of an ASCII text file containing a list
     of file names, one per line, may be entered preceded by an '@' character.
@@ -86,18 +91,16 @@ DESCRIPTION:
      - Value and comment fields not separated by a slash character
      - END keyword not filled with blanks in columns 9 - 80
      - Reserved keyword with wrong datatype or illegal value
-     - EXTEND not present in the primary array if there are extensions
-     - BLOCKED, if present, not among the first 36 keywords
      - XTENSION keyword in the primary array
      - Column related keyword (TFIELDS, TTYPEn,TFORMn, etc.) in an image
      - SIMPLE, EXTEND, or BLOCKED keyword in any extension
      - BSCALE, BZERO, BUNIT, BLANK, DATAMAX, DATAMIN keywords in a table
-     - Image WCS keywords (CTYPEn, CRPIXn, CRVALn, etc.) in a table
      - Table WCS keywords (TCTYPn, TCRPXn, TCRVLn, etc.) in an image
      - TDIMn or THEAP keyword in an ASCII table 
      - TBCOLn keyword in a Binary table
      - THEAP keyword in a binary table that has PCOUNT = 0 
      - XTENSION, TFORMn, TDISPn or TDIMn value contains leading space(s)
+     - WCSAXES keyword appears after other WCS keywords
      - Index of any WCS keyword (CRPIXn, CRVALn, etc.) greater than 
        value of WCSAXES
      - Index of any table column descriptor keyword (TTYPEn, TFORMn,
@@ -106,6 +109,8 @@ DESCRIPTION:
      - TDISPn value is inconsistent with the column datatype 
      - Length of a variable length array greater than the maximum 
        length as given by the TFORMn keyword
+     - ASCII table floating-point column value does not have decimal point(*)
+     - ASCII table numeric column value has embedded space character
      - Logical column contains illegal value not equal to 'T', 'F', or 0
      - Character string column contains non-ASCII text character
      - Header fill bytes not all blanks
@@ -122,7 +127,7 @@ DESCRIPTION:
      - BSCALE or TSCALn value = 0.
      - BLANK OR TNULLn value exceeds the legal range
      - TFORMn has 'rAw' format and r is not a multiple of w
-     - DATE = 'dd/mm/yy' and yy is less than 10 (Y2K problem??)
+     - DATE = 'dd/mm/yy' and yy is less than 10 (Y2K problem?)
      - Index of any WCS keyword (CRPIXn, CRVALn, etc.) greater than
        value of NAXIS, if the WCSAXES keyword is not present
      - Duplicated keyword (except COMMENT, HISTORY, blank, etc.)
diff --git a/fitsverify.c b/fitsverify.c
index 387c80a..de7545f 100644
--- a/fitsverify.c
+++ b/fitsverify.c
@@ -49,7 +49,7 @@ printf("DESCRIPTION:\n");
 printf("    \n");
 printf("    This task reads one or more input FITS files and verifies that the\n");
 printf("    files conform to the specifications of the FITS Standard, Definition\n");
-printf("    of the Flexible Image Transport System (FITS), Version 3.0, available");
+printf("    of the Flexible Image Transport System (FITS), Version 3.0, available\n");
 printf("    online  at http://fits.gsfc.nasa.gov/.  The input filename template may\n");
 printf("    contain wildcard characters, in which case all matching files will be \n");
 printf("    tested.  Alternatively, the name of an ASCII text file containing a list\n");
diff --git a/ftverify.c b/ftverify.c
index 27ef695..74ea832 100644
--- a/ftverify.c
+++ b/ftverify.c
@@ -87,8 +87,15 @@ HISTORY
 *                            opening a nonexistent or non-FITS file.
 *                            Also fixed elusive memory allocation error.
 *
-*      2009-06-08  W Pence   updates to comply with V3.0 of the FITS Standard
-*      2010-07-26  W Pence   Updates to WCS keyword checks, plux other V3.0 issues
+*      2009-06-08  W Pence   v4.15
+*                            updates to comply with V3.0 of the FITS Standard
+*      2010-07-26  W Pence   v4.16
+*                            Updates to WCS keyword checks, plus other V3.0 issues.
+*                            Also check for non-zero heap if binary table has no
+*                            variable length array columns.
+*      2013-08-12  W Pence   v4.17
+*                            Ignore blank keywords preceding the END keyword.
+*                            Support (partially at least) files with PCOUNT > 2GB.
 */
 
 #define TOOLSUB ftverify
@@ -131,7 +138,7 @@ int ftverify (void)
     char errreport[PIL_LINESIZE];
     
     static char taskname[80] = "ftverify";
-    static char version[8] = "4.16";
+    static char version[8] = "4.17";
 
     /* Register taskname and version. */
 
diff --git a/fverify.h b/fverify.h
index 6b6206c..bcb77c4 100644
--- a/fverify.h
+++ b/fverify.h
@@ -91,7 +91,7 @@ typedef struct {
     int  isgroup;		/* random group flag */ 
     int  istilecompressed;	/* tile compressed image */ 
     int  gcount;		/* gcount  */
-    int  pcount;		/* pcount  */
+    LONGLONG  pcount;		/* pcount  */
     int  bitpix;		/* pix number */
     int  naxis;			/* number of the axis,used for image array*/
     LONGLONG *naxes;		/* dimension of each axis,used for image array*/
diff --git a/fvrf_data.c b/fvrf_data.c
index a488db2..f349bdf 100644
--- a/fvrf_data.c
+++ b/fvrf_data.c
@@ -70,9 +70,8 @@ void test_data(fitsfile *infits, 	/* input fits file   */
     long repeat; 
 
     long totalrows;
-    long heap_offset;
-    long length;
-    long toffset;
+    LONGLONG length;
+    LONGLONG toffset;
     long *maxlen;
     int icol;
     char *cdata;
@@ -288,7 +287,6 @@ void test_data(fitsfile *infits, 	/* input fits file   */
     perbyte        = (int *) calloc(ndesc , sizeof(int));
     fits_get_num_rows(infits,&totalrows,&status);
     status = 0;
-    heap_offset = hduptr->heap - hduptr->naxes[0] * hduptr->naxes[1];
 
   /* this routine now only reads and test BIT, LOGICAL, and STRING columns */
   /* There is no point in reading the other columns because the other datatypes */
@@ -354,7 +352,7 @@ void test_data(fitsfile *infits, 	/* input fits file   */
             icol = desclist[i]; 
 
             /* read and check the descriptor length and offset values */
-            if(fits_read_descript(infits, icol ,jl,&length,
+            if(fits_read_descriptll(infits, icol ,jl,&length,
 		   &toffset, &status)){ 
                 
                 sprintf(errtmp,"Row #%ld Col.#%d: ",jl,icol);
@@ -364,7 +362,7 @@ void test_data(fitsfile *infits, 	/* input fits file   */
 	        sprintf(errmes, "Descriptor of Column #%d at Row %ld: ", 
                      icol, jl);
                 sprintf(errtmp,"nelem(%ld) > maxlen(%ld) given by TFORM%d.",
-                    length,maxlen[i],icol);
+                    (long) length,maxlen[i],icol);
                 strcat(errmes,errtmp);
                 wrterr(out,errmes,1); 
             } 
@@ -374,19 +372,19 @@ void test_data(fitsfile *infits, 	/* input fits file   */
             else 
                  bytelength = length*perbyte[i]; 
 
-            if(heap_offset + toffset + bytelength > hduptr->pcount ) { 
+            if(toffset + bytelength > hduptr->pcount ) { 
 	        sprintf(errmes, "Descriptor of Column #%d at Row %ld: ", 
                      icol, jl);
 	        sprintf(errtmp, 
                     " offset of first element(%ld) + nelem(%ld)", 
-                     toffset,length); 
+                     (long) toffset, (long) length); 
                 strcat(errmes,errtmp);
                 if(perbyte[i] < 0) 
 	            sprintf(errtmp, "/8 >  total heap area  = %ld.",
-		       hduptr->pcount-heap_offset); 
+		       (long) hduptr->pcount); 
                 else 
 	            sprintf(errtmp, "*%d >  total heap area  = %ld.",
-		       perbyte[i],hduptr->pcount-heap_offset); 
+		       perbyte[i], (long) hduptr->pcount); 
                 strcat(errmes,errtmp);
                 wrterr(out,errmes,2);
             }
@@ -450,8 +448,8 @@ void test_data(fitsfile *infits, 	/* input fits file   */
 		  for (k = 0; k < rlength; k++) {
                     if (cdata[k] > 2) {
                       sprintf(errmes, 
-                      "Logical value in row #%ld, and column #%d has illegal value = %d", 
-                         jl, icol, (int) cdata[k]); 
+                      "Logical value in row #%ld, column #%d not equal to 'T', 'F', or 0", 
+                         jl, icol); 
                        wrterr(out,errmes,1);
                        strcpy(errmes,
            "             (This error is reported only once; other rows may have errors).");
@@ -632,9 +630,9 @@ data_end:
                 for(j = 1; j <= nrows * repeat[i]; j++) {
                   if (ldata[j] > 2) {
                     sprintf(errmes, 
-                    "Logical value in row #%ld, column #%d has illegal value = %d", 
+                    "Logical value in row #%ld, column #%d not equal to 'T', 'F', or 0", 
                        (firstn+j - 2)/repeat[i] +1, 
-                       fits_iter_get_colnum(&(iter_col[i])), (int) ldata[j]); 
+                       fits_iter_get_colnum(&(iter_col[i]))); 
                        wrterr(usrpt->out,errmes,1);
                        strcpy(errmes,
          "             (Other rows may have similar errors).");
diff --git a/fvrf_head.c b/fvrf_head.c
index f5a691c..87b32e5 100644
--- a/fvrf_head.c
+++ b/fvrf_head.c
@@ -222,11 +222,20 @@ void init_hdu(fitsfile *infits, 	/* input fits file   */
     for (i=0; i <  ncards; i++) { 
         cards[i] = (char *)malloc(sizeof(char )* FLEN_CARD );
     }
+
     for (i=1; i <= ncards; i++) { 
         if(fits_read_record(infits, i, cards[i-1], &status)) 
 	    wrtferr(out,"",&status,1); 
     }
 
+    /* if there were blank cards prior to the END card, then
+       make a fake END card, because CFITSIO blocks us from reading
+       the real END card */
+
+    if (strncmp(cards[ncards-1], "END     ", 8)) {
+        strcpy(cards[ncards-1],"END     ");
+    }
+
     /* Parse the XTENSION/SIMPLEX  keyword */ 
     fits_parse_card(out, 1, cards[0], tmpkey.kname, 
         &(tmpkey.ktype), tmpkey.kvalue,comm); 
@@ -452,7 +461,8 @@ void test_hdu(fitsfile *infits, 	/* input fits file   */
     int numusrkey;
     int hdunum;
     char *p, *p2, *pname = 0;
-    int i,j,k,m,n, wcsaxes = 0, taxes;
+    int i,j,k,m,n, wcsaxes = 0;
+    int taxes;
     int wcsaxesExists = 0, wcsaxesvalue = 0, wcsaxespos = 0, wcskeypos = 1000000000;
     FitsKey *pkey;
     int crota2_exists = 0, matrix_exists[2] = {0,0};  
@@ -554,6 +564,12 @@ void test_hdu(fitsfile *infits, 	/* input fits file   */
             pkey = hduptr->kwds[j]; 
 	    wcsaxesvalue = (int) strtol(pkey->kvalue,NULL,10);
             nmax = wcsaxesvalue;
+            if (wcsaxesvalue > wcsaxes) wcsaxes = wcsaxesvalue;
+            wcsaxesExists = 1;
+
+	    /* store index of the wcsaxes keyword */
+	    /*  (it must appear before other WCS keywords) */
+	    if (pkey->kindex > wcsaxespos) wcsaxespos = pkey->kindex;
         }
     }
 
@@ -562,6 +578,9 @@ void test_hdu(fitsfile *infits, 	/* input fits file   */
     /* This is a less rigorous test than if one were to test the range of the */
     /* keywords for each of the alternate WCS systems (A - Z) against the */
     /* corresponding WCSAXESa keyword.  */
+
+
+
     key_match(tmpkwds,numusrkey,&ptemp,0,&k,&n);  
 
     for (j = k; j< n + k ; j++){
@@ -573,7 +592,17 @@ void test_hdu(fitsfile *infits, 	/* input fits file   */
 
 	    /* store highest index of any wcsaxes keyword */
 	    /*  (they must appear before other WCS keywords) */
-	    if (pkey->kindex > wcsaxespos) wcsaxespos = pkey->kindex;
+
+
+/*  Removed this check on 6/28/2012.  See discussion on FITSBITS related
+    to this requirement.  The sense of this dicussion is that it is not required
+    that every WCSAXESa keyword appear before ANY OTHER WCS keyword.  In principle,
+    each WCSAXESa keyword should appear before any other WCS keyword within the SAME
+    alternate system, but this does not really provide any benefit to software that
+    needs to parse the WCS keywords.  Since it would be somewhat tedious to make
+    this test, we will not not worry about the placement of the WCSAXESa keywords.
+*/
+/*	    if (pkey->kindex > wcsaxespos) wcsaxespos = pkey->kindex;  */
 	}
     }
 
@@ -1000,7 +1029,7 @@ void test_prm(fitsfile *infits, 	/* input fits file   */
         }
         else { 
 	    if(check_int(pkey,out))   
-	        hduptr->pcount = (int) strtol(pkey->kvalue,NULL,10);
+	        hduptr->pcount = (LONGLONG) atof(pkey->kvalue);
 
             check_fixed_int(cards[pkey->kindex - 1], out);
         }
@@ -1196,7 +1225,7 @@ void test_ext(fitsfile *infits, 	/* input fits file   */
     else {
         pkey = hduptr->kwds[k]; 
 	if(check_int(pkey,out)) 
-	    hduptr->pcount = (int) strtol(pkey->kvalue,NULL,10);
+	    hduptr->pcount = (LONGLONG) atof(pkey->kvalue);
         if( pkey->kindex != 4 + hduptr->naxis ) {
 	     sprintf(errmes,"PCOUNT is not in record %d of the header.",
                  hduptr->naxis + 4); 
@@ -1287,7 +1316,7 @@ void test_img_ext(fitsfile *infits, 	/* input fits file   */
 
     if(hduptr->pcount != 0 && hduptr->pcount != -99){
         sprintf(errmes,
-           "Illegal pcount value %d for image ext.",hduptr->pcount);
+           "Illegal pcount value %ld for image ext.",(long) hduptr->pcount);
         wrterr(out,errmes,1);
     }
 
diff --git a/fvrf_key.c b/fvrf_key.c
index 7ae605b..1185266 100644
--- a/fvrf_key.c
+++ b/fvrf_key.c
@@ -57,7 +57,7 @@ int fits_parse_card(FILE *out,		/* output file pointer */
 	   (*p < '0'  ||  *p > '9')&& 
 	   (*p != '-' &&  *p  != '_') ) { 
 	    sprintf(errmes,
-"Keyword #%d: Name \"%s\" contains char \"%c\" which is not letter, digit, \"-\", and \"_\".",kpos,kname,*p);
+"Keyword #%d: Name \"%s\" contains char \"%c\" which is not upper case letter, digit, \"-\", or \"_\".",kpos,kname,*p);
 	    wrterr(out,errmes,1);
 	    break;
         }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/fitsverify.git



More information about the debian-science-commits mailing list