1WCSTools WCS subroutine library release history
2
3Version 3.9.5 (May 2, 2017)
4dateutil.c:  Allocate new output string for fd2ofd() and fd2oft()
5
6Version 3.9.4 (August 2, 2016) (after Ole Streicher)
7wcs.c: Clean up use of ptype so it is always 3 characters long
8
9Version 3.9.3 (June 23, 2016)
10wcs.h, wcs.c: Increase ctype string length to 15 (+null=16) for distortion
11wcslib.h, wcslib.c: Increase ctype string length to 15 (+null=16) for distortion
12hget.c, fitsfile.c: Fix isnum() tests for added coloned times and dashed date
13
14Version 3.9.2 (December 10, 2015)
15hget.c: Add return of 4 for yyyy-mm-dd dates to isnum() (2015-11-06)
16
17Version 3.9.0 (December 19, 2014)
18fileutil.c: Add next_line() to return one line of file
19fitfile.c: fix buffer reallocation bug in fitsrhead()
20
21Version 3.8.7 (October 31, 2012)
22dateutil.c:  Unused l0 dropped from jd2lst(); ts2ss from jd2mst()
23imio.c:  Fix errors with short and character images in minvec(), maxvec()
24wcs.c:  Drop d1 and d2 from wcsdist(); diffi from wcsdist1()
25wcs.c:  Drop depwcs; it's in main wcs structure
26wcsinit.c: Drop unused variable iszpx; fix bug in latmin assignment
27zpxpos.c: Fix code for quadratic near pole
28
29catutil.c:  Skip trailing right bracket in aget*()
30
31Version 3.8.6 (August 10, 2012)
32All: Update author name
33imio.c:  Fix 8-bit variables to be unsigned char
34
35Version 3.8.5 (April 12, 2012)
36imio.c: Change 8-bit pixel values from char to unsigned char
37fitsfile.c: Always check first 8 characters of FITS files for "SIMPLE"
38
39Version 3.8.4 (September 1, 2011)
40imgetwcs.c, wcsinit.c, wcs.c, wcs.h, worldpos.c: Add TPV WCS for TAN with PV terms
41
42Version 3.8.3 (May 20, 2011)
43hget.c: Free allocated memory in strnsrch() to eliminate memory leak (2011-05-19)
44imhfile.c: Free *newpixname* not pixname. (2011-05-20)
45wcsinit.c: Change error() calls to setwcserr()
46wcslib.h: Declare undeclared SCAMP subroutine raw-to-pv()
47wcs.c: Fix wcsfree() so it frees depended-on WCS structures (2011-05-09)
48
49March 18, 2011 - Release 3.8.2
50zpxpos.c, wcs.c, wcsinit.c: Add support for NOAO ZPX protection (Frank Valdes)
51imsetwcs.c:  Allocate NMAXMAG instead of number of magnitudes, nmag
52wcsinit.c,wcs.c,proj.c: Support SCAMP TAN distortion correction (Ed Los)
53wcsinit.c: ARSEC and DEG constants used by SCAMP replaced by S2D and D2S
54proj.c: If no PV coefficients in ZPN projection, make it ARC
55wcs.c: Fix bug involving dependent WCS's (Ed Los)
56
57April 30, 2010 - Release 3.8.1
58scat,imcat: Set GSC2 magnitudes > 90 to 99.99
59gethead: Fix buffer reallocation bug which crashed reading very large
60         headers
61gethead: Fix trailing spaces on ASCII file quoted string values
62gethead: Fix problems with string value extraction changing ASCII files
63skycoor: Use number of decimal places from -n for -r difference if set
64wcscon.c: Fix bug in fk524() e-term computation; fix J<->B conversions
65fitsfile.c: In fitswhead(), always pad blocks to 2880 bytes with spaces
66            and fix bug dealing with large primary headers
67wcscon.c: Fix bug in computing the magnitude of the e-terms in fk524()
68          and drop ep1 assignment after line 178 in wcsconp()
69
70
71November 13, 2009 - Release 3.8.0
72dateutil.c: Fix possible bug in nutation subroutine
73fitsfile.c: Add subroutine moveb() and fix binary table calls to it
74            Fix lengths for ASCII numeric table entries in fitsrthead()
75fitsfile.h: Add moveb() which is used by binary FITS table code in fitsfile.c
76hget.c: In strfix(), if parentheses enclose a number, drop them
77
78November 21, 2008 - Release 3.7.6
79fitsfile.c: In fitswhead() do not print write error if nw = nbytes
80dateutil.c: Use IAU 2006 nutation for sidereal time computations
81dateutil.c: Add ang2hr(), ang2deg(), deg2ang(), and ang2hr() to
82            convert betweem decimal floating point degrees and
83            vigesimal hours or degrees
84tnxpos.c: Fix image to world coordinate system transformation and
85          WCS to image transformation
86
87July 1, 2008 - Release 3.7.5
88wcsinit.c: Initialize TNX projection when projection types first set and
89           check for IMAGEW and IMAGEH if NAXIS1 and NAXIS2 not present,
90fitsfile.c: Drop comma from name when reading file in isfits() and
91            do not append primary data header if it is the only header
92
93May 9, 2008 - Release 3.7.4
94fitsfile.c: In isfits(), allow extensions in FITS files without .fit or .fts
95wcsinit.c: Call tnxinit() before any projection calls are made
96
97March 20, 2008 - Release 3.7.3
98wcs.c: Compute angular separation in wcsdist() using arcos
99
100December 31, 2007 - Release 3.7.2
101wcscon.c: In wcsconp, make it clear that proper motion is in spherical coordinates
102fitsfile.c: Add support to BINTABLE in ftget*() and fitsrthead()
103fitsfile.c: Add data heap numerated by PCOUNT when skipping HDU in fitsrhead()
104fitsfile.c: Return NULL pointer if fitsrhead() cannot find requested HDU
105fitswcs.c: Print error message set by fitsrhead()
106
107November 9, 2007 - Release 3.7.1
108wcsinit.c:  Fix bug which tested &mchar instead of mchar in if statement
109
110August 24, 2007 - Release 3.7.0
111hget.c: If a closing quote isn't found in a string value, make one up
112hput.c: Fix bug in comment insertion and deal correctly with missing quotes
113
114June 11, 2007 - Release 3.6.9
115imio.c: Add minvec() and speed up maxvec()
116
117April 3, 2007 - Release 3.6.8
118hget.c: Initial header length to zero in hlength() if lhead argument <= 0
119wcs.c:  In wcstype(), set to WCS_PIX if CTYPEi starts with "DET"
120wcs.c: In wcspset(), use correct cdelts when converting PC matrix to CD matrix
121wcsinit.c: Fix bug so RA, DEC, SECPIX can be used to set a WCS
122tnxpos.c: Fix bug so it doesn't crash
123
124January 16, 2007 - Release 3.6.7
125wcs.h: Fix and add ANSI C prototypes
126imio.h: Drop as it has been included in fitsfile.h for several releases now
127fitsfile.h, fitshead.h: Add ANSI C prototypes
128wcsinitc(),wcsninitc(),hgeti4c(),hgetr8c(),hgetsc(): Change WCS letter argument
129  from char to char*
130hget.c: Declare header and keyword const char in most subroutines
131hput.c: Declare keyword and value const in most subroutines
132hput.c: Fix bug in ra2str() and dec2str() so ndec=0 works
133imio.c: Include fitsfile.h instead of imio.h
134wcslib.h: Drop semicolon at end of c++ ifdef
135wcslib.h: Drop second declaration of SZP subroutines
136
137November 2, 2006 - Release 3.6.6
138fitsfile.c: Use calloc() when reallocating header as it is read
139wcsinit.c: Limit naxes to 2 everywhere; RA and DEC should always be 1st
140wcsinit.c: If either CUNITi is "pixel" set projection to WCS_XY
141wcscon.c: In wcscsys, set system to WCS_XY if PIXEL projection
142wcscon.c: In wcscsys, set system to WCS_LINEAR if LINEAR coordinate system
143dateutil.c, fitshead.h: Add sidereal time to UT and vice versa
144
145June 30, 2006 - Release 3.6.5
146wcsinit.c: Deal with up to 9x9 PC matrix
147wcs.c:     Limit WCSLIB dimensions to two (this will change in 4.0)
148hput.c:    Fix comment placement and replacement
149hget.c:    Add strfix(), a utility to clean up strings
150
151May 3, 2006 - Release 3.6.4
152fileutil.c: Add istiff(), isjpeg(), isgif() to check TIFF, JPEG, GIF files
153fitsfile.c: Add fitsrtail() to read appended FITS headers
154fitsfile.c: Add file name to header-reading error messages
155fitswcs.c:  Add code to read FITS header appended to TIFF file
156imio.c:     Fix bug of occasional double application of bscale in getvec()
157            Clean up arithmetic and increment in addpix() and multpix()
158imsetwcs.c: Allow number of decimal places in image coordinates to be set
159wcsinit.c:  Get Epoch of observation from MJD-OBS or DATE-OBS/UT unless DSS
160wcsinit.c:  Set wcs->naxes to actual number of image WCS axes, usually 2
161wcscon.c,dateutil.c,fitsfile.c: Drop declarations of unused variables
162wcs.c:      Fix calls to avoid type conflicts in Linux
163
164
165January 5, 2006 - Release 3.6.3
166wcs.h: Add WCS_ICRS to list of coordinate systems
167wcsinit.c: Initialize sys to WCS_ICRS if appropriate
168wcscon.c: Avoid precesssing ICRS coordinates
169wcscon.c: Fix precession which broke in 3.6.1
170
171July 21, 2005 - Release 3.6.2
172wcs.c: Fix wcsrange() to return correct range around RA=0
173Clean up accumulated unused and misdeclared variables using lint
174
175April 13, 2005 - Release 3.6.1
176Remove all sla_lib subroutines and calls thereto from wcscon.c, replacing
177them with local code.
178
179March 17, 2005 - Release 3.6.0
180In wcs.c, fix bug in wcsrotset() so angles > 360 are set to angle - 360, not 360
181Use unbuffered read() in isfits() in fitsfile.c
182
183------------------------
184
185November 01, 2004 - Release 3.5.8
186In wcs.c, keep wcs->rot between 0 and 360 degrees (360.0 -> 0.0)
187
188September 21, 2004 - Release 3.5.7
189In pix2wcs(), if spherical coordinate output, keep 0 < long/RA < 360
190Fix bug in wcsfull() when wrapping around RA=0:00
191In hput.c, add fixnegzero() to avoid putting -0.000 in header
192
193September 3, 2004 - Release 3.5.6
194Modify FITS file reading software to get image size from file size if
195SIMPLE is F, so FITS headers with WCS can be used on arbitrary files.
196In hget.c, fix bug so comment is not pushed onto the next line if character
197value string lengthens (off by one bug).
198
199July 13, 2004 - Release 3.5.5
200Add headshrink to hput.c to optionally keep blank lines after
201keywords are deleted.
202Read D, d, E, and e as exponent delimiters in floating point values in hget.c
203
204
205May 6, 2004 - Release 3.5.4
206Add fitswexhead() to fitsfile.c to overwrite FITS extension headers
207
208April 16, 2004 - Release 3.5.3
209Use strncsrch() in hget.c to get differently-cased keywords.
210
211February 3, 2004 - Release 3.5.2
212In worldpix() in worldpos.c, allow ra/long. to exceed 180 if reference
213pixel is more than 180 degrees from image (1,1).
214
215December 12, 2003 - Release 3.5.1
216Change p[0,1,2] initializations to p[1,2,3] in wcsinit.c to match proj.c
217(This affects constants for AZP,SIN,COP,COE,COD,COO,SZP,CEA,CYP,AIR,BON)
218Add wcs->naxes back into wcs structure for backward compatibility; it
219should always be equal to wcs->naxis.
220Fix bug in numdec() to return 0 if no digits after decimal point
221Fix call to setwcserr() with format in it
222
223November 17, 2003 - Release 3.5.0
224Rename mgets() to mgetstr() in iget.c, wcsinit.c and fitshead.h
225Add numdec() to hget.c to return number of decimal places in numeric string
226Change wcs->naxes to wcs->naxis to prepare for WCSLIB 3.*
227In iraf2fits() and irafrimage(), use image, not physical, dimensions.
228In iraf2fits(), set NAXISi to image dimensions, NPAXISi to physical dimensions.
229Fix bugs in wcsfull() in wcs.c
230Move all distortion-related code to distort.c; include unistd.h
231Include stdlib.h instead of malloc.h in lin.c and drop malloc.h from matchstar.c
232
233------------------------
234
235August 22, 2003 - Release 3.4.2
236Add fitsrfull() subroutine to read FITS files with more than 2 dimensions
237Modify fitswimage() to write FITS files with more than 2 dimensions
238
239July 11, 2003 - Release 3.4.1
240Use strncmp to check for both stdin and stdout in fitsfile.c
241
242May 30, 2003 - Release 3.4.0
243Add partial support for ZPX projection
244Fix bug reading COE and other projections when PROJPn coefficients
245were accidently reinitialized
246
247------------------------
248
249May 8, 2003 - Release 3.3.4
250Add two missing semicolons in C++ declarations in wcs.h
251Read prj.p[0] from PROJP0 for ZPN projections, instead of ignoring it
252
253April 3, 2003 - Release 3.3.2
254Add distortion conversion for SIRTF images
255
256March 27, 2003 - Release 3.3.1
257Add conversions to and from Heliocentric Julian Dates to dateutil.c
258Open FITS and IMH files "rb" instead of "r" for Linux compatibility
259Add isimlistd() to fileutil.c to check for list of images in a specified directory
260Fix default center pixel computation in GetFITSWCS(); it was off by half a pixel
261
262January 30, 2003 - Release 3.3.0
263Fix bug in dateutil.c ts2gst() sidereal time conversion.
264
265------------------------
266
267January 3, 2003 - Release 3.2.1
268Fix bug in wcsinit() which failed to read PVi_0, and now initialize
269PVi_j in only once place.
270
271December 6, 2002 - Release 3.2.0
272Add ET/TDT/TT and sidereal time conversion to dateutil.c
273Fix subroutine calls for radvel and latpole and correctly compute pixel
274at center of image for default CRPIX in wcsinit.c
275Add fitsrsect() to fitsfile.c to read a section of an image
276
277------------------------
278
279August 30, 2002 - Release 3.1.3
280Fix bug in imio.c getvec() dealing with scaled images
281Add case-insensitive string search subroutines strcsrch() and strncsrch()
282Accept stdin as file in isfile()
283Add Ephemeris time conversions to dateutil()
284
285July 8, 2002 - Release 3.1.2
286Fix bug in date utilities which always rounded to integer seconds of UT
287Fix bugs in date utilities to handle BC (negative) dates to JD 0.
288
289June 26, 2002 - Release 3.1.1
290Fix bugs which caused TNX projection to fail
291Fix two bugs in wcsinit() which caused setting RADECSYS when
292 an EQUINOX keyword is present.
293Write FITS error messages to string accessible by fitserr()
294Put SAO-written software under Gnu Lesser Public License
295
296April 12, 2002 - Release 3.1.0
297Implement WCSLIB 2.9
298Support PV entry of constants and PCi_j rotation matrices in wcsinit.c
299Support inversion (WCS->pix) of multiple dependent WCSs
300Add hgetri4c(), hgetr8c(), and hgetsc() for multiple WCS handling
301Fix bug in TNX projection software which caused an infinite loop during
302coefficient parsing.
303
304------------------------
305
306February 13, 2002 - Release 3.0.7
307Fix bug in ecliptic coordinate conversion in wcscon.c
308Allow "stdin" to include extension and/or WCS selection in fitsfile.c
309Add a global switch to turn off scaling in imio.c
310Add ifdef to lin.c so it will compile under Mac OS/X
311
312December 4, 2001 - Release 3.0.6
313In movepix(), add char to char move
314Always include stdlib.h in lin.c
315
316September 25, 2001 - Release 3.0.5
317Implement WCSLIB version 2.7
318Fix Makefile to include header files appropriately
319Accept FITS dates as yyyy/mm/dd
320Fix bug in str2dec() which misinterpreting strings with leading spaces
321Fix bug in isnum() which caused bad answer if trailing spaces
322Add fileutil.c, which includes various file info utilities
323
324September 7, 2001 - Release 3.0.3
325Disallow files with = in their name in isfits() and isiraf()
326Set coordinate system from CTYPE if not equatorial
327
328July 12, 2001 - Release 3.0
329Read PROJPn projection constants in wcsinit()
330
331------------------------
332
333March 30, 2001 - Release 2.9.4
334Fix possible header length problem in hget.c
335
336March 22, 2001 - Release 2.9.3
337Fix minor bugs in wcs.h, wcs.c, and wcsinit.c, wcslib.c, fitsfile.c, and
338cel.c found by gcc on Linux and possible memory leak in wcs.c
339
340March 9, 2001 - Release 2.9.2
341In fitsfile.c, change multiple WCS separator in FITS file names from : to %
342and fix bug which failed to read multi-extension files if END was not preceded
343by a blank line in the extension's header.
344
345February 28, 2001 - Release 2.9.1
346Fix major bug in wcsinit() which always set CRPIX2 the same as CRPIX1
347
348February 23, 2001 - Release 2.9.0
349FITS reading subroutines are fixed to ignore WCS name or character specified
350as :name or :character at end of filename.
351wcsinit() has new APIs which specify either a WCSNAME, wcsinitn(), or
352a WCS character, wcsinitc(), to allow use of multiple WCS's in a single
353FITS header.  The WCSDEPx keyword has been added to indicate dependence
354on another WCS, though this feature has not been thoroughly debugged.
355fitscimage() is fixed so it doesn't overwrite data when overwriting a file
356An off-by-one bug was fixed for some polynomial types in tnxpos().
357The WCSLIB subroutines were brought up to release 2.6 with very minor changes
358
359------------------------
360
361December 29, 2000 - Release 2.8.6
362Fix handling of embedded + or - in isnum() in hget.c
363Default to 2000 for EQUINOX and EPOCH and FK5 for RADECSYS, if keywords not present.
364In wcscon.c, fk425() and fk524() algorithms were updated to include parallax and rv,
365proper motion is added by wcscon*() after fk425() or fk524() from system epoch, and
366proper motion units in fk524p() and fk425p() were fixed.
367In wcsinit.c, a bug initializing CD matrix was fixed.
368In cel.c, include string.h for strcmp().
369
370September 29, 2000 - Release 2.8.5
371wcsinit will now use a CD matrix if ANY CD keywords are present in header
372In getvec() in imio.c, move scaling outside of loop and make it conditional.
373Read .pix files in same directory as .imh file, if not otherwise found.
374
375August 1, 2000 - Release 2.8.3
376Improve handling of 1-D WCS data.  Fix numerous warning-generating bugs.
377Fix bug in ep2jd()/jd2ep() so both start year at 1/1 0:00
378
379June 13, 2000 - Release 2.8.2
380If imh pixel file has no directory, *always* use same as header file
381
382June 9, 2000 - Release 2.8.1
383Read keyword values in hget.c even if no equal sign is present.
384
385June 2, 2000 - Release 2.8.0
386Only a few minor changes due to running lint on everything
387
388------------------------
389
390May 10, 2000 - Release 2.7.4
391In wcstype(), default to WCS_LIN, not error (after Bill Joye)
392
393May 1, 2000 - Release 2.7.3
394Bug in hadd() fixed so new line is not overwritten.
395Pixel files whcih are in subdirectories of files where IRAF .imh header
396files reside are now dealt with correctly.
397All dates in the old FITS format (dd/mm/yy) where the year ranges from
398 0 to 999 have 1900 added to them:  01/05/100 becomes 2000-05-01.
399
400March 27, 2000 - Release 2.7.2
401In hputs(), do not add quotes if writing COMMENT or HISTORY
402In fits2iraf(), in imhfile.c, minimize length of path in pixel file name
403Fix code to deal with .imh file paths longer than 67 characters.
404In platepix(), use inverse CD matrix to get better initial x,y value
405Change the maximum header string length in the hget header reading
406  subroutines from 57600 to 256000
407Replace oldsys with wcsproj  in the WCS data structure so that more options
408  are available, such as forcing use of AIPS or WCSLIB projection subroutines
409Add setdatedec() to set the number of decimal places in FITS date strings
410  returned by dateutil subroutines
411Fix precession code to deal correctly with equinoxes other than J2000 and
412  B1950.
413Move all date operations to dateutil.c, including current time used in imhfile.c
414
415February 23, 2000 - Release 2.7.0
416Upgrade WCSLIB subroutines to WCSLIB 2.5 from 2.4
417Add MJD and Besselian and Julian epoch conversion to dateutil.c
418Use WCSLIB CAR, COE, NCP projections if oldsys is 1, else use worldpos()
419Set CD matrix when using DSS projection
420Change oldwcs in wcs.h from switch to multi-value flag wcsproj, default is same
421Fix minor bug in fitsfile.c fitscimage error returns.
422
423------------------------
424
425January 11, 2000 - Release 2.6.12
426Fix bug in dateutil() to get fractional year to date conversion right
427
428December 20, 1999 - Release 2.6.11
429Fix bug in hgetdate() to get ISO minutes and seconds right
430Upgrade dateutil() to do many date conversions
431
432December 10, 1999 - Release 2.6.10
433Fix bug which caused strings starting with d and e followed by numbers
434to be declared numeric even though they're not really numbers
435Fix bug in dateutil.c ts2jd() which does not affect SAOimage
436Fix bugs dealing with NOAO TNX projection
437
438November 17, 1999 - Release 2.6.9
439Fix bug which caused loss of NCP projection
440
441November 5, 1999 - Release 2.6.8
442Change release number to match WCSTools
443Clean up code in all subroutines using lint
444Add DATE-MOD to FITS header in iraf2fits()
445Added dateutil.c file for conversions between date formats (used by iraf2fits())
446Return error code from hput*() subroutines if header buffer length exceeded.
447
448------------------------
449
450May 5, 1999 - Release 1.26
451hget.c, iget.c Use POSIX-compliant limits.h instead of values.h
452
453April 7, 1999 - Release 1.26
454wcs.c	    Fix bug in dealing with EPOCHless non-equatorial coordinates
455wcsinit.c   Add optional filename to printed error messages
456
457April 5, 1999 - Release 1.26
458hget.c      Check all string lengths before copying; ignore ^M at 80th character
459
460February 22, 1999 - Release 1.26
461wcs.c       Fix bug dealing with SPA and NPA coordinates
462            Use faaces 0-5, not 1-6 for quad cube projections
463wcsinit.c   Fix computed rotation angle for DSS projection
464
465February 9, 1999 - Release 1.26
466fitsfile.c: Allow BITPIX=0 dataless images
467wcsinit.c:  Fix bug initializing DSS image rotation
468wcs.c:      Free lin.imgpix and lin.piximg in wcsfree()
469hput.c:     Fix bug to avoid writing HISTORY or COMMENT lines past 80 chars
470
471------------------------
472
473December 8, 1998 - Release 1.25
474fitsfile.c: Fix bug in fitsrhead() reading FITS table files caused by fix below
475
476November 30, 1998 - Release 1.25
477fitsfile.c: Fix bug dealing with very large headers in fitsrhead()
478
479November 12, 1998 - Release 1.25
480dsspos.c:   Fix possible divide by zero problems
481fitsfile.c: Add isfits() which checks filename or first line of header
482imhfile.c:  Add isiraf() which checks filename for .imh
483hget.c:     Assume 2-digit year in hyphen-separated date means FITS, not ISO
484tnxpos.c:   Fix multiple bugs
485wcscon.c:   Add wcscstr() to get coordinate system as a character string
486wcscon.c:   Add subroutine wcsconp() to convert coordinates + proper motions
487wcs.c:      Add North and South Polar Angle coordinate systems
488wcs.c:      Build WCS command initialization by getenv() into wcs*init()
489wcs.c:      Fix bug in wcssize(); fix bug with rotated mirrored images
490wcslib.h:   Add cel.h, lin.h, proj.h, and wcstrig.h to wcslib.h
491worldpos.c: Fix bug in inverse (sky to pixel) COE projection
492cel.c, lin.c, proj.c, sph.c, wcstrig.c: Include only wcslib.h
493