rpms/sextractor/EL-6 sextractor-cflags.patch, NONE, 1.1 sextractor-pointer-alias.patch, 1.1, 1.2 sextractor.spec, 1.12, 1.13 sources, 1.3, 1.4

Sergio Pascual sergiopr at fedoraproject.org
Mon Jul 12 08:26:13 UTC 2010


Author: sergiopr

Update of /cvs/pkgs/rpms/sextractor/EL-6
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv9209

Modified Files:
	sextractor-pointer-alias.patch sextractor.spec sources 
Added Files:
	sextractor-cflags.patch 
Log Message:
* Mon Jul 12 2010 Sergio Pascual <sergiopr at fedoraproject.org> - 2.8.6-1
- New upstream source


sextractor-cflags.patch:
 configure |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

--- NEW FILE sextractor-cflags.patch ---
diff -ur sextractor-2.8.6/configure sextractor-2.8.6.new/configure
--- sextractor-2.8.6/configure	2009-04-09 15:30:14.000000000 +0200
+++ sextractor-2.8.6.new/configure	2009-08-26 16:39:05.000000000 +0200
@@ -2487,10 +2487,10 @@
 cclist="cc gcc"
 
 # Backup and reset the input CFLAGS and LDFLAGS
-mycflags="$CFLAGS"
-CFLAGS=""
-myldflags="$LDFLAGS"
-LDFLAGS=""
+#mycflags="$CFLAGS"
+#CFLAGS=""
+#myldflags="$LDFLAGS"
+#LDFLAGS=""
 
 # Provide special option for the Linux Intel C compiler
 { echo "$as_me:$LINENO: checking for Linux Intel C compiler mode" >&5
@@ -4358,8 +4358,8 @@
       rm -f conftest.*
     fi
     if test -n "$prog_cc_optim_flags"; then
-      CFLAGS="$CFLAGS $prog_cc_optim_flags"
-      LDFLAGS="$LDFLAGS $prog_ld_optim_flags"
+      prog_cc_optim_flags=""
+      prog_ld_optim_flags=""
     else
       prog_cc_optim_flags=""
       prog_ld_optim_flags=""

sextractor-pointer-alias.patch:
 analyse.c |   83 ++++-----
 analyse.o |only
 astrom.c  |  519 ++++++++++++++++++++++++++++++--------------------------------
 astrom.o  |only
 growth.c  |   22 +-
 growth.o  |only
 pc.c      |   37 ++--
 pc.o      |only
 photom.c  |  186 +++++++++++-----------
 photom.o  |only
 psf.c     |   60 +++----
 psf.o     |only
 winpos.c  |   98 +++++------
 winpos.o  |only
 14 files changed, 501 insertions(+), 504 deletions(-)

Index: sextractor-pointer-alias.patch
===================================================================
RCS file: /cvs/pkgs/rpms/sextractor/EL-6/sextractor-pointer-alias.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- sextractor-pointer-alias.patch	26 Jul 2006 16:20:29 -0000	1.1
+++ sextractor-pointer-alias.patch	12 Jul 2010 08:26:13 -0000	1.2
@@ -1,16 +1,15 @@
-diff -ur sextractor-2.5.0.old/src/analyse.c sextractor-2.5.0/src/analyse.c
---- sextractor-2.5.0.old/src/analyse.c	2006-06-29 19:58:03.000000000 +0200
-+++ sextractor-2.5.0/src/analyse.c	2006-07-25 23:26:51.000000000 +0200
-@@ -41,7 +41,7 @@
+diff -ur sextractor-2.8.6/src/analyse.c sextractor-2.8.6.new/src/analyse.c
+--- sextractor-2.8.6/src/analyse.c	2009-01-29 14:51:59.000000000 +0100
++++ sextractor-2.8.6.new/src/analyse.c	2009-05-24 00:07:07.000000000 +0200
+@@ -42,7 +42,6 @@
  #include	"som.h"
  #include	"winpos.h"
  
 -static obj2struct	*obj2 = &outobj2;
-+/* static obj2struct	*obj2 = &outobj2; */
+ extern profitstruct	*theprofit;
  
  /********************************* analyse ***********************************/
- void  analyse(picstruct *field, picstruct *dfield, int objnb,
-@@ -403,11 +403,11 @@
+@@ -392,11 +391,11 @@
    obj = &objlist->obj[n];
  
  /* Current FITS extension */
@@ -25,7 +24,7 @@ diff -ur sextractor-2.5.0.old/src/analys
  
  /* Integer coordinates */
    ix=(int)(obj->mx+0.49999);
-@@ -415,11 +415,11 @@
+@@ -404,11 +403,11 @@
  
  /* Association */
    if (prefs.assoc_flag)
@@ -39,7 +38,7 @@ diff -ur sextractor-2.5.0.old/src/analys
    else
      selecflag = 1;
  
-@@ -450,9 +450,9 @@
+@@ -439,9 +438,9 @@
        pmx2+=temp;
        pmy2-=temp;
  
@@ -52,7 +51,7 @@ diff -ur sextractor-2.5.0.old/src/analys
        }
  
      if (FLAG(obj2.poserr_cxx))
-@@ -462,32 +462,32 @@
+@@ -451,28 +450,28 @@
        xm2 = obj->poserr_mx2;
        ym2 = obj->poserr_my2;
        xym = obj->poserr_mxy;
@@ -86,16 +85,10 @@ diff -ur sextractor-2.5.0.old/src/analys
 -    obj2->fluxerr_iso = sqrt(obj->fluxerr);
 +    outobj2.flux_iso = obj->flux;
 +    outobj2.fluxerr_iso = sqrt(obj->fluxerr);
-     if (FLAG(obj.flux_prof))
-       {
--      obj2->flux_prof = obj->flux_prof;
--      obj2->fluxerr_prof = sqrt(obj->fluxerr_prof);
-+      outobj2.flux_prof = obj->flux_prof;
-+      outobj2.fluxerr_prof = sqrt(obj->fluxerr_prof);
-       }
  
      if (FLAG(obj2.flux_isocor))
-@@ -526,14 +526,14 @@
+       computeisocorflux(field, obj);
+@@ -510,14 +509,14 @@
  
        if (FLAG(obj2.flux_auto))
          sexellips(check->pix, check->width, check->height,
@@ -114,7 +107,7 @@ diff -ur sextractor-2.5.0.old/src/analys
  	check->overlay, obj->flag&OBJ_CROWDED);
        }
  
-@@ -555,7 +555,7 @@
+@@ -539,7 +538,7 @@
          input[++j] = log10(obj->iso[i]? obj->iso[i]/fac2: 0.01);
        input[++j] = log10(fwhm);
        neurresp(input, &output);
@@ -123,9 +116,9 @@ diff -ur sextractor-2.5.0.old/src/analys
        }
  
  /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
-@@ -604,8 +604,8 @@
+@@ -588,8 +587,8 @@
        som_phot(thesom, obj->bkg, field->backsig,
-         (float)prefs.gain, obj->mx-ix, obj->my-iy,
+         (float)field->gain, obj->mx-ix, obj->my-iy,
          FLAG(obj2.vector_somfit)?outobj2.vector_somfit:NULL, -1.0);
 -      obj2->stderr_somfit = thesom->stderror;
 -      obj2->flux_somfit = thesom->amp;
@@ -134,7 +127,7 @@ diff -ur sextractor-2.5.0.old/src/analys
        outobj2.fluxerr_somfit = thesom->sigamp;
        }
  
-@@ -628,7 +628,7 @@
+@@ -609,7 +608,7 @@
          double_psf_fit(ppsf, field, wfield, obj, thepsf, dfield, dwfield);
        else
          psf_fit(thepsf, field, wfield, obj);
@@ -143,7 +136,7 @@ diff -ur sextractor-2.5.0.old/src/analys
        if (prefs.psfdisplay_type == PSFDISPLAY_SPLIT)
          {
          nsub = thepsfit->npsf;
-@@ -639,18 +639,18 @@
+@@ -620,18 +619,18 @@
          for (j=0; j<thepsfit->npsf; j++)
            {
            if (FLAG(obj2.x_psf) && j<prefs.psf_xsize)
@@ -169,7 +162,16 @@ diff -ur sextractor-2.5.0.old/src/analys
  		prefs.mag_zeropoint -2.5*log10(thepsfit->flux[j]) : 99.0;
            }
        }
-@@ -670,20 +670,20 @@
+@@ -639,7 +638,7 @@
+ /*----------------------------- Profile fitting -----------------------------*/
+     nsub = 1;
+     if (prefs.prof_flag)
+-      profit_fit(theprofit, field, wfield, obj, obj2);
++      profit_fit(theprofit, field, wfield, obj, &outobj2);
+ 
+ /*--- Express everything in magnitude units */
+     computemags(field, obj);
+@@ -659,20 +658,20 @@
        if (prefs.psf_flag && prefs.psfdisplay_type == PSFDISPLAY_SPLIT)
          {
          if (FLAG(obj2.x_psf))
@@ -198,7 +200,7 @@ diff -ur sextractor-2.5.0.old/src/analys
          if (j)
            obj->number = ++thecat.ntotal;
          }
-@@ -714,7 +714,7 @@
+@@ -722,7 +721,7 @@
        {
        if (prefs.somfit_flag && (check=prefs.check[CHECK_MAPSOM]))
          blankcheck(check, obj->blank, obj->subw, obj->subh,
@@ -207,181 +209,261 @@ diff -ur sextractor-2.5.0.old/src/analys
  
        }
      blankimage(field, obj->blank, obj->subw, obj->subh,
-diff -ur sextractor-2.5.0.old/src/astrom.c sextractor-2.5.0/src/astrom.c
---- sextractor-2.5.0.old/src/astrom.c	2006-07-13 19:13:09.000000000 +0200
-+++ sextractor-2.5.0/src/astrom.c	2006-07-25 23:27:21.000000000 +0200
-@@ -29,7 +29,7 @@
- #include	"astrom.h"
+Only in sextractor-2.8.6.new/src: analyse.o
+diff -ur sextractor-2.8.6/src/astrom.c sextractor-2.8.6.new/src/astrom.c
+--- sextractor-2.8.6/src/astrom.c	2009-01-29 14:52:00.000000000 +0100
++++ sextractor-2.8.6.new/src/astrom.c	2009-05-24 00:07:27.000000000 +0200
+@@ -30,7 +30,6 @@
+ #include	"fitswcs.h"
  #include	"wcs/tnx.h"
  
 -static obj2struct	*obj2 = &outobj2;
-+/* static obj2struct	*obj2 = &outobj2; */
  
  /****************************** initastrom **********************************/
  /*
-@@ -169,32 +169,32 @@
-     {
-     if (as->wcs_flag)
+@@ -99,46 +98,46 @@
+ /* If working with WCS, compute WORLD coordinates and local matrix */
+   if (FLAG(obj2.mxw))
+     {
+-    rawpos[0] = obj2->posx;
+-    rawpos[1] = obj2->posy;
++    rawpos[0] = outobj2.posx;
++    rawpos[1] = outobj2.posy;
+     raw_to_wcs(wcs, rawpos, wcspos);
+-    obj2->mxw = wcspos[0];
+-    obj2->myw = wcspos[1];
++    outobj2.mxw = wcspos[0];
++    outobj2.myw = wcspos[1];
+     if (lng != lat)
        {
--      wcspos = compute_wcs(field, obj2->posx, obj2->posy);
--      obj2->alphas = obj2->mxw = wcspos[0];
--      obj2->deltas = obj2->myw = wcspos[1];
-+      wcspos = compute_wcs(field, outobj2.posx, outobj2.posy);
-+      outobj2.alphas = outobj2.mxw = wcspos[0];
-+      outobj2.deltas = outobj2.myw = wcspos[1];
+-      obj2->alphas = lng<lat? obj2->mxw : obj2->myw;
+-      obj2->deltas = lng<lat? obj2->myw : obj2->mxw;
++      outobj2.alphas = lng<lat? outobj2.mxw : outobj2.myw;
++      outobj2.deltas = lng<lat? outobj2.myw : outobj2.mxw;
        if (FLAG(obj2.alpha2000))
          {
-         if (fabs(as->equinox-2000.0)>0.003)
-           precess(as->equinox, wcspos[0], wcspos[1],
+         if (fabs(wcs->equinox-2000.0)>0.003)
+           precess(wcs->equinox, wcspos[lng<lat?0:1], wcspos[lng<lat?1:0],
 -		2000.0, &obj2->alpha2000, &obj2->delta2000);
 +		2000.0, &outobj2.alpha2000, &outobj2.delta2000);
          else
            {
--          obj2->alpha2000 = obj2->mxw;
--          obj2->delta2000 = obj2->myw;
-+          outobj2.alpha2000 = outobj2.mxw;
-+          outobj2.delta2000 = outobj2.myw;
+-          obj2->alpha2000 = lng<lat? obj2->mxw : obj2->myw;
+-          obj2->delta2000 = lng<lat? obj2->myw : obj2->mxw;
++          outobj2.alpha2000 = lng<lat? outobj2.mxw : outobj2.myw;
++          outobj2.delta2000 = lng<lat? outobj2.myw : outobj2.mxw;
+           }
+         if (FLAG(obj2.dtheta2000))
+           {
+-          da = wcs->ap2000 - obj2->alpha2000;
++          da = wcs->ap2000 - outobj2.alpha2000;
+           dd = (sin(wcs->dp2000*DEG)
+-		-sin(obj2->delta2000*DEG)*sin(obj2->deltas*DEG))
+-		/(cos(obj2->delta2000*DEG)*cos(obj2->deltas*DEG));
++		-sin(outobj2.delta2000*DEG)*sin(outobj2.deltas*DEG))
++		/(cos(outobj2.delta2000*DEG)*cos(outobj2.deltas*DEG));
+           dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
+-          obj2->dtheta2000 = (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
++          outobj2.dtheta2000 = (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
            }
          if (FLAG(obj2.alpha1950))
--          j2b(as->equinox, obj2->alpha2000, obj2->delta2000,
+           {
+-          j2b(wcs->equinox, obj2->alpha2000, obj2->delta2000,
 -		&obj2->alpha1950, &obj2->delta1950);
-+          j2b(as->equinox, outobj2.alpha2000, outobj2.delta2000,
++          j2b(wcs->equinox, outobj2.alpha2000, outobj2.delta2000,
 +		&outobj2.alpha1950, &outobj2.delta1950);
+           if (FLAG(obj2.dtheta1950))
+             {
+-            da = wcs->ap1950 - obj2->alpha1950;
++            da = wcs->ap1950 - outobj2.alpha1950;
+             dd = (sin(wcs->dp1950*DEG)
+-		-sin(obj2->delta1950*DEG)*sin(obj2->deltas*DEG))
+-		/(cos(obj2->delta1950*DEG)*cos(obj2->deltas*DEG));
++		-sin(outobj2.delta1950*DEG)*sin(outobj2.deltas*DEG))
++		/(cos(outobj2.delta1950*DEG)*cos(outobj2.deltas*DEG));
+             dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
+-            obj2->dtheta1950 = (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
++            outobj2.dtheta1950 = (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
+            }
+           }
          }
-       }
-     else
+@@ -151,25 +150,25 @@
+     rawpos[0] = obj->peakx;
+     rawpos[1] = obj->peaky;
+     raw_to_wcs(wcs, rawpos, wcspos);
+-    obj2->peakxw = wcspos[0];
+-    obj2->peakyw = wcspos[1];
++    outobj2.peakxw = wcspos[0];
++    outobj2.peakyw = wcspos[1];
+     if (lng != lat)
        {
-        double	dx,dy;
- 
--      dx = obj2->posx - as->crpix[0];
--      dy = obj2->posy - as->crpix[1];
--      obj2->mxw = as->crval[0]+ lm[0]*dx + lm[1]*dy;	/* CDELT included! */
--      obj2->myw = as->crval[1]+ lm[2]*dx + lm[3]*dy;	/* CDELT included! */
-+      dx = outobj2.posx - as->crpix[0];
-+      dy = outobj2.posy - as->crpix[1];
-+      outobj2.mxw = as->crval[0]+ lm[0]*dx + lm[1]*dy;	/* CDELT included! */
-+      outobj2.myw = as->crval[1]+ lm[2]*dx + lm[3]*dy;	/* CDELT included! */
-       }
-     }
- 
-@@ -204,21 +204,21 @@
-     if (as->wcs_flag)
-       {
-       wcspos = compute_wcs(field, (double)obj->peakx, (double)obj->peaky);
--      obj2->peakalphas = obj2->peakxw = wcspos[0];
--      obj2->peakdeltas = obj2->peakyw = wcspos[1];
-+      outobj2.peakalphas = outobj2.peakxw = wcspos[0];
-+      outobj2.peakdeltas = outobj2.peakyw = wcspos[1];
+-      obj2->peakalphas = lng<lat? obj2->peakxw : obj2->peakyw;
+-      obj2->peakdeltas = lng<lat? obj2->peakyw : obj2->peakxw;
++      outobj2.peakalphas = lng<lat? outobj2.peakxw : outobj2.peakyw;
++      outobj2.peakdeltas = lng<lat? outobj2.peakyw : outobj2.peakxw;
        if (FLAG(obj2.peakalpha2000))
          {
-         if (fabs(as->equinox-2000.0)>0.003)
-           precess(as->equinox, wcspos[0], wcspos[1],
+         if (fabs(wcs->equinox-2000.0)>0.003)
+           precess(wcs->equinox, wcspos[lng<lat?0:1], wcspos[lng<lat?1:0],
 -		2000.0, &obj2->peakalpha2000, &obj2->peakdelta2000);
 +		2000.0, &outobj2.peakalpha2000, &outobj2.peakdelta2000);
          else
            {
--          obj2->peakalpha2000 = obj2->peakxw;
--          obj2->peakdelta2000 = obj2->peakyw;
-+          outobj2.peakalpha2000 = outobj2.peakxw;
-+          outobj2.peakdelta2000 = outobj2.peakyw;
+-          obj2->peakalpha2000 = lng<lat? obj2->peakxw : obj2->peakyw;
+-          obj2->peakdelta2000 = lng<lat? obj2->peakyw : obj2->peakxw;
++          outobj2.peakalpha2000 = lng<lat? outobj2.peakxw : outobj2.peakyw;
++          outobj2.peakdelta2000 = lng<lat? outobj2.peakyw : outobj2.peakxw;
            }
          if (FLAG(obj2.peakalpha1950))
--          j2b(as->equinox, obj2->peakalpha2000, obj2->peakdelta2000,
+-          j2b(wcs->equinox, obj2->peakalpha2000, obj2->peakdelta2000,
 -		&obj2->peakalpha1950, &obj2->peakdelta1950);
-+          j2b(as->equinox, outobj2.peakalpha2000, outobj2.peakdelta2000,
++          j2b(wcs->equinox, outobj2.peakalpha2000, outobj2.peakdelta2000,
 +		&outobj2.peakalpha1950, &outobj2.peakdelta1950);
          }
        }
-     else 
-@@ -227,8 +227,8 @@
- 
-       dx = obj->peakx - as->crpix[0];
-       dy = obj->peaky - as->crpix[1];
--      obj2->peakxw = as->crval[0]+ lm[0]*dx + lm[1]*dy;	/* CDELT included! */
--      obj2->peakyw = as->crval[1]+ lm[2]*dx + lm[3]*dy;	/* CDELT included! */
-+      outobj2.peakxw = as->crval[0]+ lm[0]*dx + lm[1]*dy;	/* CDELT included! */
-+      outobj2.peakyw = as->crval[1]+ lm[2]*dx + lm[3]*dy;	/* CDELT included! */
-       }
      }
- 
-@@ -237,32 +237,32 @@
-     {
-     if (as->wcs_flag)
+@@ -177,28 +176,28 @@
+ /* Idem for Windowed positions */
+   if (FLAG(obj2.winpos_xw))
+     {
+-    rawpos[0] = obj2->winpos_x;
+-    rawpos[1] = obj2->winpos_y;
++    rawpos[0] = outobj2.winpos_x;
++    rawpos[1] = outobj2.winpos_y;
+     raw_to_wcs(wcs, rawpos, wcspos);
+-    obj2->winpos_xw = wcspos[0];
+-    obj2->winpos_yw = wcspos[1];
++    outobj2.winpos_xw = wcspos[0];
++    outobj2.winpos_yw = wcspos[1];
+     if (lng != lat)
        {
--      wcspos = compute_wcs(field, obj2->winpos_x, obj2->winpos_y);
--      obj2->winpos_alphas = obj2->winpos_xw = wcspos[0];
--      obj2->winpos_deltas = obj2->winpos_yw = wcspos[1];
-+      wcspos = compute_wcs(field, outobj2.winpos_x, outobj2.winpos_y);
-+      outobj2.winpos_alphas = outobj2.winpos_xw = wcspos[0];
-+      outobj2.winpos_deltas = outobj2.winpos_yw = wcspos[1];
+-      obj2->winpos_alphas = lng<lat? obj2->winpos_xw : obj2->winpos_yw;
+-      obj2->winpos_deltas = lng<lat? obj2->winpos_yw : obj2->winpos_xw;
++      outobj2.winpos_alphas = lng<lat? outobj2.winpos_xw : outobj2.winpos_yw;
++      outobj2.winpos_deltas = lng<lat? outobj2.winpos_yw : outobj2.winpos_xw;
        if (FLAG(obj2.winpos_alpha2000))
          {
-         if (fabs(as->equinox-2000.0)>0.003)
-           precess(as->equinox, wcspos[0], wcspos[1],
+         if (fabs(wcs->equinox-2000.0)>0.003)
+           precess(wcs->equinox, wcspos[0], wcspos[1],
 -		2000.0, &obj2->winpos_alpha2000, &obj2->winpos_delta2000);
 +		2000.0, &outobj2.winpos_alpha2000, &outobj2.winpos_delta2000);
          else
            {
--          obj2->winpos_alpha2000 = obj2->winpos_xw;
--          obj2->winpos_delta2000 = obj2->winpos_yw;
-+          outobj2.winpos_alpha2000 = outobj2.winpos_xw;
-+          outobj2.winpos_delta2000 = outobj2.winpos_yw;
+-          obj2->winpos_alpha2000 = lng<lat? obj2->winpos_xw : obj2->winpos_yw;
+-          obj2->winpos_delta2000 = lng<lat? obj2->winpos_yw : obj2->winpos_xw;
++          outobj2.winpos_alpha2000 = lng<lat? outobj2.winpos_xw : outobj2.winpos_yw;
++          outobj2.winpos_delta2000 = lng<lat? outobj2.winpos_yw : outobj2.winpos_xw;
            }
          if (FLAG(obj2.winpos_alpha1950))
--          j2b(as->equinox, obj2->winpos_alpha2000, obj2->winpos_delta2000,
+-          j2b(wcs->equinox, obj2->winpos_alpha2000, obj2->winpos_delta2000,
 -		&obj2->winpos_alpha1950, &obj2->winpos_delta1950);
-+          j2b(as->equinox, outobj2.winpos_alpha2000, outobj2.winpos_delta2000,
++          j2b(wcs->equinox, outobj2.winpos_alpha2000, outobj2.winpos_delta2000,
 +		&outobj2.winpos_alpha1950, &outobj2.winpos_delta1950);
          }
        }
-     else
+     }
+@@ -206,28 +205,28 @@
+ /* Idem for Model-fitted positions */
+   if (FLAG(obj2.xw_prof))
+     {
+-    rawpos[0] = obj2->x_prof;
+-    rawpos[1] = obj2->y_prof;
++    rawpos[0] = outobj2.x_prof;
++    rawpos[1] = outobj2.y_prof;
+     raw_to_wcs(wcs, rawpos, wcspos);
+-    obj2->xw_prof = wcspos[0];
+-    obj2->yw_prof = wcspos[1];
++    outobj2.xw_prof = wcspos[0];
++    outobj2.yw_prof = wcspos[1];
+     if (lng != lat)
        {
-        double	dx,dy;
- 
--      dx = obj2->winpos_x - as->crpix[0];
--      dy = obj2->winpos_y - as->crpix[1];
--      obj2->winpos_xw = as->crval[0]+ lm[0]*dx + lm[1]*dy;/* CDELT included! */
--      obj2->winpos_yw = as->crval[1]+ lm[2]*dx + lm[3]*dy;/* CDELT included! */
-+      dx = outobj2.winpos_x - as->crpix[0];
-+      dy = outobj2.winpos_y - as->crpix[1];
-+      outobj2.winpos_xw = as->crval[0]+ lm[0]*dx + lm[1]*dy;/* CDELT included! */
-+      outobj2.winpos_yw = as->crval[1]+ lm[2]*dx + lm[3]*dy;/* CDELT included! */
+-      obj2->alphas_prof = lng<lat? obj2->xw_prof : obj2->yw_prof;
+-      obj2->deltas_prof = lng<lat? obj2->yw_prof : obj2->xw_prof;
++      outobj2.alphas_prof = lng<lat? outobj2.xw_prof : outobj2.yw_prof;
++      outobj2.deltas_prof = lng<lat? outobj2.yw_prof : outobj2.xw_prof;
+       if (FLAG(obj2.alpha2000_prof))
+         {
+         if (fabs(wcs->equinox-2000.0)>0.003)
+           precess(wcs->equinox, wcspos[0], wcspos[1],
+-		2000.0, &obj2->alpha2000_prof, &obj2->delta2000_prof);
++		2000.0, &outobj2.alpha2000_prof, &outobj2.delta2000_prof);
+         else
+           {
+-          obj2->alpha2000_prof = lng<lat? obj2->xw_prof : obj2->yw_prof;
+-          obj2->delta2000_prof = lng<lat? obj2->yw_prof : obj2->xw_prof;
++          outobj2.alpha2000_prof = lng<lat? outobj2.xw_prof : outobj2.yw_prof;
++          outobj2.delta2000_prof = lng<lat? outobj2.yw_prof : outobj2.xw_prof;
+           }
+         if (FLAG(obj2.alpha1950_prof))
+-          j2b(wcs->equinox, obj2->alpha2000_prof, obj2->delta2000_prof,
+-		&obj2->alpha1950_prof, &obj2->delta1950_prof);
++          j2b(wcs->equinox, outobj2.alpha2000_prof, outobj2.delta2000_prof,
++		&outobj2.alpha1950_prof, &outobj2.delta1950_prof);
+         }
        }
      }
- 
-@@ -271,11 +271,11 @@
-     {
-      double	dx,dy;
- 
--    dx = obj2->posx - 0.5;
--    dy = obj2->posy - 0.5;
--    obj2->mamaposx = (as->crval[1]+lm[2]*dx+lm[3]*dy)
-+    dx = outobj2.posx - 0.5;
-+    dy = outobj2.posy - 0.5;
-+    outobj2.mamaposx = (as->crval[1]+lm[2]*dx+lm[3]*dy)
- 			*(MAMA_CORFLEX+1.0);		/* CDELT included! */
--    obj2->mamaposy = (as->crval[0]+lm[0]*dx+lm[1]*dy);	/* CDELT included! */
-+    outobj2.mamaposy = (as->crval[0]+lm[0]*dx+lm[1]*dy);	/* CDELT included! */
+@@ -235,11 +234,11 @@
+ /* Custom coordinate system for the MAMA machine */
+   if (FLAG(obj2.mamaposx))
+     {
+-    rawpos[0] = obj2->posx - 0.5;
+-    rawpos[1] = obj2->posy - 0.5;
++    rawpos[0] = outobj2.posx - 0.5;
++    rawpos[1] = outobj2.posy - 0.5;
+     raw_to_wcs(wcs, rawpos, wcspos);
+-    obj2->mamaposx = wcspos[1]*(MAMA_CORFLEX+1.0);
+-    obj2->mamaposy = wcspos[0]*(MAMA_CORFLEX+1.0);
++    outobj2.mamaposx = wcspos[1]*(MAMA_CORFLEX+1.0);
++    outobj2.mamaposy = wcspos[0]*(MAMA_CORFLEX+1.0);
+     }
+ 
+   if (FLAG(obj2.mx2w)
+@@ -252,9 +251,9 @@
+ 		|| FLAG(obj2.fdnpixw)
+ 		|| FLAG(obj2.fwhmw))))
+     {
+-    rawpos[0] = obj2->posx;
+-    rawpos[1] = obj2->posy;
+-    pixscale2 = wcs_jacobian(wcs, rawpos, obj2->jacob);
++    rawpos[0] = outobj2.posx;
++    rawpos[1] = outobj2.posy;
++    pixscale2 = wcs_jacobian(wcs, rawpos, outobj2.jacob);
      }
  
  /* Express shape parameters in WORLD frame */
-@@ -291,12 +291,12 @@
-     astrom_winerrparam(field, obj);
+@@ -274,14 +273,14 @@
+     astrom_proferrparam(field, obj);
  
    if (FLAG(obj2.npixw))
--    obj2->npixw = obj->npix*as->pixscale*as->pixscale;
-+    outobj2.npixw = obj->npix*as->pixscale*as->pixscale;
+-    obj2->npixw = obj->npix * (prefs.pixel_scale?
++    outobj2.npixw = obj->npix * (prefs.pixel_scale?
+ 	field->pixscale/3600.0*field->pixscale/3600.0 : pixscale2);
    if (FLAG(obj2.fdnpixw))
--    obj2->fdnpixw = obj->fdnpix*as->pixscale*as->pixscale;
-+    outobj2.fdnpixw = obj->fdnpix*as->pixscale*as->pixscale;
+-    obj2->fdnpixw = obj->fdnpix * (prefs.pixel_scale?
++    outobj2.fdnpixw = obj->fdnpix * (prefs.pixel_scale?
+ 	field->pixscale/3600.0*field->pixscale/3600.0 : pixscale2);
  
    if (FLAG(obj2.fwhmw))
--    obj2->fwhmw = obj->fwhm*as->pixscale;
-+    outobj2.fwhmw = obj->fwhm*as->pixscale;
+-    obj2->fwhmw = obj->fwhm * (prefs.pixel_scale?
++    outobj2.fwhmw = obj->fwhm * (prefs.pixel_scale?
+ 	field->pixscale/3600.0 : sqrt(pixscale2));
  
    return;
-   }
-@@ -417,15 +417,15 @@
+@@ -307,36 +306,36 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
+ 
+ 
+ /* All WORLD params based on 2nd order moments have to pass through here */
    dx2 = obj->mx2;
    dy2 = obj->my2;
    dxy = obj->mxy;
@@ -394,47 +476,30 @@ diff -ur sextractor-2.5.0.old/src/astrom
    temp=xm2-ym2;
    if (FLAG(obj2.thetaw))
      {
--    obj2->thetaw = (temp == 0.0)? (45.0) : (0.5*atan2(2.0 * xym,temp)/DEG);
-+    outobj2.thetaw = (temp == 0.0)? (45.0) : (0.5*atan2(2.0 * xym,temp)/DEG);
-     if (as->wcs_flag && FLAG(obj2.thetas))
--      obj2->thetas = obj2->thetaw + (obj2->thetaw>0.0?-90:90.0);
-+      outobj2.thetas = outobj2.thetaw + (outobj2.thetaw>0.0?-90:90.0);
+-    obj2->thetaw = fmod_m90_p90((temp == 0.0)?
++    outobj2.thetaw = fmod_m90_p90((temp == 0.0)?
+ 				(45.0) : (0.5*atan2(2.0 * xym,temp)/DEG));
  
  /*-- Compute position angles in J2000 or B1950 reference frame */
-     if (as->wcs_flag)
-@@ -434,23 +434,23 @@
- 
+     if (wcs->lng != wcs->lat)
+       {
+       if (FLAG(obj2.thetas))
+-        obj2->thetas = fmod_m90_p90(lng<lat?
+-				((obj2->thetaw>0.0?90:-90.0) - obj2->thetaw)
+-				: obj2->thetaw);
++        outobj2.thetas = fmod_m90_p90(lng<lat?
++				((outobj2.thetaw>0.0?90:-90.0) - outobj2.thetaw)
++				: outobj2.thetaw);
        if (FLAG(obj2.theta2000))
-         {
--        da = as->ap2000 - obj2->alpha2000;
-+        da = as->ap2000 - outobj2.alpha2000;
-         dd = (sin(as->dp2000*DEG)
--		-sin(obj2->delta2000*DEG)*sin(obj2->deltas*DEG))
--		/(cos(obj2->delta2000*DEG)*cos(obj2->deltas*DEG));
-+		-sin(outobj2.delta2000*DEG)*sin(outobj2.deltas*DEG))
-+		/(cos(outobj2.delta2000*DEG)*cos(outobj2.deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->theta2000 = obj2->thetas
-+        outobj2.theta2000 = outobj2.thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
- 
+-        obj2->theta2000 = fmod_m90_p90(obj2->thetas + obj2->dtheta2000);
++        outobj2.theta2000 = fmod_m90_p90(outobj2.thetas + outobj2.dtheta2000);
        if (FLAG(obj2.theta1950))
-         {
--        da = as->ap1950 - obj2->alpha1950;
-+        da = as->ap1950 - outobj2.alpha1950;
-         dd = (sin(as->dp1950*DEG)
--		-sin(obj2->delta1950*DEG)*sin(obj2->deltas*DEG))
--		/(cos(obj2->delta1950*DEG)*cos(obj2->deltas*DEG));
-+		-sin(outobj2.delta1950*DEG)*sin(outobj2.deltas*DEG))
-+		/(cos(outobj2.delta1950*DEG)*cos(outobj2.deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->theta1950 = obj2->thetas
-+        outobj2.theta1950 = outobj2.thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
+-        obj2->theta1950 = fmod_m90_p90(obj2->thetas + obj2->dtheta1950);
++        outobj2.theta1950 = fmod_m90_p90(outobj2.thetas + outobj2.dtheta1950);
        }
-@@ -460,9 +460,9 @@
+     }
+ 
+@@ -344,9 +343,9 @@
      {
      temp = sqrt(0.25*temp*temp+xym*xym);
      pm2 = 0.5*(xm2+ym2);
@@ -447,7 +512,7 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    if (FLAG(obj2.cxxw))
-@@ -473,9 +473,9 @@
+@@ -357,9 +356,9 @@
        temp = 1e-6;
        xym *= 0.99999;
        }
@@ -460,8 +525,18 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    return;
-@@ -510,19 +510,19 @@
-   lm3 = lm[lat+naxis*lat];
+@@ -385,35 +384,35 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
  
  /* All WORLD params based on 2nd order moments have to pass through here */
 -  dx2 = obj2->win_mx2;
@@ -479,49 +554,30 @@ diff -ur sextractor-2.5.0.old/src/astrom
    temp=xm2-ym2;
    if (FLAG(obj2.win_thetaw))
      {
--    obj2->win_thetaw = (temp == 0.0)? (45.0) : (0.5*atan2(2.0*xym,temp)/DEG);
-+    outobj2.win_thetaw = (temp == 0.0)? (45.0) : (0.5*atan2(2.0*xym,temp)/DEG);
-     if (as->wcs_flag && FLAG(obj2.win_thetas))
--      obj2->win_thetas = obj2->win_thetaw +
--	(obj2->win_thetaw>0.0?-90:90.0);
-+      outobj2.win_thetas = outobj2.win_thetaw +
-+	(outobj2.win_thetaw>0.0?-90:90.0);
+-    obj2->win_thetaw = fmod_m90_p90((temp == 0.0)?
++    outobj2.win_thetaw = fmod_m90_p90((temp == 0.0)?
+ 			(45.0) : (0.5*atan2(2.0*xym,temp)/DEG));
  
  /*-- Compute position angles in J2000 or B1950 reference frame */
-     if (as->wcs_flag)
-@@ -531,23 +531,23 @@
- 
+     if (wcs->lng != wcs->lat)
+       {
+       if (FLAG(obj2.win_thetas))
+-        obj2->win_thetas = fmod_m90_p90(lng<lat?
+-			((obj2->win_thetaw>0.0?90:-90.0) - obj2->win_thetaw)
+-			: obj2->win_thetaw);
++        outobj2.win_thetas = fmod_m90_p90(lng<lat?
++			((outobj2.win_thetaw>0.0?90:-90.0) - outobj2.win_thetaw)
++			: outobj2.win_thetaw);
        if (FLAG(obj2.win_theta2000))
-         {
--        da = as->ap2000 - obj2->winpos_alpha2000;
-+        da = as->ap2000 - outobj2.winpos_alpha2000;
-         dd = (sin(as->dp2000*DEG)
--		-sin(obj2->winpos_delta2000*DEG)*sin(obj2->winpos_deltas*DEG))
--		/(cos(obj2->winpos_delta2000*DEG)*cos(obj2->winpos_deltas*DEG));
-+		-sin(outobj2.winpos_delta2000*DEG)*sin(outobj2.winpos_deltas*DEG))
-+		/(cos(outobj2.winpos_delta2000*DEG)*cos(outobj2.winpos_deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->win_theta2000 = obj2->win_thetas
-+        outobj2.win_theta2000 = outobj2.win_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
- 
+-        obj2->win_theta2000 = fmod_m90_p90(obj2->win_thetas + obj2->dtheta2000);
++        outobj2.win_theta2000 = fmod_m90_p90(outobj2.win_thetas + outobj2.dtheta2000);
        if (FLAG(obj2.win_theta1950))
-         {
--        da = as->ap1950 - obj2->winpos_alpha1950;
-+        da = as->ap1950 - outobj2.winpos_alpha1950;
-         dd = (sin(as->dp1950*DEG)
--		-sin(obj2->winpos_delta1950*DEG)*sin(obj2->winpos_deltas*DEG))
--		/(cos(obj2->winpos_delta1950*DEG)*cos(obj2->winpos_deltas*DEG));
-+		-sin(outobj2.winpos_delta1950*DEG)*sin(outobj2.winpos_deltas*DEG))
-+		/(cos(outobj2.winpos_delta1950*DEG)*cos(outobj2.winpos_deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->win_theta1950 = obj2->win_thetas
-+        outobj2.win_theta1950 = outobj2.win_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
+-        obj2->win_theta1950 = fmod_m90_p90(obj2->win_thetas + obj2->dtheta1950);
++        outobj2.win_theta1950 = fmod_m90_p90(outobj2.win_thetas + outobj2.dtheta1950);
        }
-@@ -557,9 +557,9 @@
+     }
+ 
+@@ -421,9 +420,9 @@
      {
      temp = sqrt(0.25*temp*temp+xym*xym);
      pm2 = 0.5*(xm2+ym2);
@@ -534,7 +590,7 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    if (FLAG(obj2.win_cxxw))
-@@ -570,9 +570,9 @@
+@@ -434,9 +433,9 @@
        temp = 1e-6;
        xym *= 0.99999;
        }
@@ -547,7 +603,20 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    return;
-@@ -610,16 +610,16 @@
+@@ -462,37 +461,37 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
+ 
+ /* All WORLD params based on 2nd order moments have to pass through here */
    dx2 = obj->poserr_mx2;
    dy2 = obj->poserr_my2;
    dxy = obj->poserr_mxy;
@@ -560,49 +629,34 @@ diff -ur sextractor-2.5.0.old/src/astrom
    temp=xm2-ym2;
    if (FLAG(obj2.poserr_thetaw))
      {
--    obj2->poserr_thetaw = (temp==0.0)? (45.0):(0.5*atan2(2.0*xym,temp)/DEG);
-+    outobj2.poserr_thetaw = (temp==0.0)? (45.0):(0.5*atan2(2.0*xym,temp)/DEG);
-     if (as->wcs_flag && FLAG(obj2.poserr_thetas))
--      obj2->poserr_thetas = obj2->poserr_thetaw
--				+ (obj2->poserr_thetaw>0.0? -90:90.0);
-+      outobj2.poserr_thetas = outobj2.poserr_thetaw
-+				+ (outobj2.poserr_thetaw>0.0? -90:90.0);
+-    obj2->poserr_thetaw = fmod_m90_p90((temp==0.0)?
++    outobj2.poserr_thetaw = fmod_m90_p90((temp==0.0)?
+ 				(45.0):(0.5*atan2(2.0*xym,temp)/DEG));
  
  /*-- Compute position angles in J2000 or B1950 reference frame */
-     if (as->wcs_flag)
-@@ -628,23 +628,23 @@
- 
+     if (wcs->lng != wcs->lat)
+       {
+       if (FLAG(obj2.poserr_thetas))
+-        obj2->poserr_thetas = fmod_m90_p90(lng<lat?
+-		((obj2->poserr_thetaw>0.0?90:-90.0) - obj2->poserr_thetaw)
+-		: obj2->poserr_thetaw);
++        outobj2.poserr_thetas = fmod_m90_p90(lng<lat?
++		((outobj2.poserr_thetaw>0.0?90:-90.0) - outobj2.poserr_thetaw)
++		: outobj2.poserr_thetaw);
        if (FLAG(obj2.poserr_theta2000))
-         {
--        da = as->ap2000 - obj2->alpha2000;
-+        da = as->ap2000 - outobj2.alpha2000;
-         dd = (sin(as->dp2000*DEG)
--		-sin(obj2->delta2000*DEG)*sin(obj2->deltas*DEG))
--		/(cos(obj2->delta2000*DEG)*cos(obj2->deltas*DEG));
-+		-sin(outobj2.delta2000*DEG)*sin(outobj2.deltas*DEG))
-+		/(cos(outobj2.delta2000*DEG)*cos(outobj2.deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->poserr_theta2000 = obj2->poserr_thetas
-+        outobj2.poserr_theta2000 = outobj2.poserr_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
- 
+-        obj2->poserr_theta2000 = fmod_m90_p90(obj2->poserr_thetas
+-				+ obj2->dtheta2000);
++        outobj2.poserr_theta2000 = fmod_m90_p90(outobj2.poserr_thetas
++				+ outobj2.dtheta2000);
        if (FLAG(obj2.poserr_theta1950))
-         {
--        da = as->ap1950 - obj2->alpha1950;
-+        da = as->ap1950 - outobj2.alpha1950;
-         dd = (sin(as->dp1950*DEG)
--		-sin(obj2->delta1950*DEG)*sin(obj2->deltas*DEG))
--		/(cos(obj2->delta1950*DEG)*cos(obj2->deltas*DEG));
-+		-sin(outobj2.delta1950*DEG)*sin(outobj2.deltas*DEG))
-+		/(cos(outobj2.delta1950*DEG)*cos(outobj2.deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->poserr_theta1950 = obj2->poserr_thetas
-+        outobj2.poserr_theta1950 = outobj2.poserr_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
+-        obj2->poserr_theta1950 = fmod_m90_p90(obj2->poserr_thetas
+-				+ obj2->dtheta1950);
++        outobj2.poserr_theta1950 = fmod_m90_p90(outobj2.poserr_thetas
++				+ outobj2.dtheta1950);
        }
-@@ -654,8 +654,8 @@
+     }
+ 
+@@ -500,8 +499,8 @@
      {
      temp = sqrt(0.25*temp*temp+xym*xym);
      pm2 = 0.5*(xm2+ym2);
@@ -613,7 +667,7 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    if (FLAG(obj2.poserr_cxxw))
-@@ -666,9 +666,9 @@
+@@ -512,9 +511,9 @@
        temp = 1e-6;
        xym *= 0.99999;
        }
@@ -626,8 +680,18 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    return;
-@@ -703,19 +703,19 @@
-   lm3 = lm[lat+naxis*lat];
+@@ -540,37 +539,37 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
  
  /* All WORLD params based on 2nd order moments have to pass through here */
 -  dx2 = obj2->winposerr_mx2;
@@ -645,49 +709,34 @@ diff -ur sextractor-2.5.0.old/src/astrom
    temp=xm2-ym2;
    if (FLAG(obj2.winposerr_thetaw))
      {
--    obj2->winposerr_thetaw = (temp==0.0)? (45.0):(0.5*atan2(2.0*xym,temp)/DEG);
-+    outobj2.winposerr_thetaw = (temp==0.0)? (45.0):(0.5*atan2(2.0*xym,temp)/DEG);
-     if (as->wcs_flag && FLAG(obj2.winposerr_thetas))
--      obj2->winposerr_thetas = obj2->winposerr_thetaw
--				+ (obj2->winposerr_thetaw>0.0? -90:90.0);
-+      outobj2.winposerr_thetas = outobj2.winposerr_thetaw
-+				+ (outobj2.winposerr_thetaw>0.0? -90:90.0);
+-    obj2->winposerr_thetaw = (fmod_m90_p90(temp==0.0)?
++    outobj2.winposerr_thetaw = (fmod_m90_p90(temp==0.0)?
+ 				(45.0):(0.5*atan2(2.0*xym,temp)/DEG));
  
  /*-- Compute position angles in J2000 or B1950 reference frame */
-     if (as->wcs_flag)
-@@ -724,23 +724,23 @@
- 
+     if (wcs->lng != wcs->lat)
+       {
+       if (FLAG(obj2.winposerr_thetas))
+-        obj2->winposerr_thetas = fmod_m90_p90(lng<lat?
+-		((obj2->winposerr_thetaw>0.0?90:-90.0) - obj2->winposerr_thetaw)
+-		: obj2->winposerr_thetaw);
++        outobj2.winposerr_thetas = fmod_m90_p90(lng<lat?
++		((outobj2.winposerr_thetaw>0.0?90:-90.0) - outobj2.winposerr_thetaw)
++		: outobj2.winposerr_thetaw);
        if (FLAG(obj2.winposerr_theta2000))
-         {
--        da = as->ap2000 - obj2->winpos_alpha2000;
-+        da = as->ap2000 - outobj2.winpos_alpha2000;
-         dd = (sin(as->dp2000*DEG)
--		-sin(obj2->winpos_delta2000*DEG)*sin(obj2->winpos_deltas*DEG))
--		/(cos(obj2->winpos_delta2000*DEG)*cos(obj2->winpos_deltas*DEG));
-+		-sin(outobj2.winpos_delta2000*DEG)*sin(outobj2.winpos_deltas*DEG))
-+		/(cos(outobj2.winpos_delta2000*DEG)*cos(outobj2.winpos_deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->winposerr_theta2000 = obj2->winposerr_thetas
-+        outobj2.winposerr_theta2000 = outobj2.winposerr_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
- 
+-        obj2->winposerr_theta2000 = fmod_m90_p90(obj2->winposerr_thetas
+-				+ obj2->dtheta2000);
++        outobj2.winposerr_theta2000 = fmod_m90_p90(outobj2.winposerr_thetas
++				+ outobj2.dtheta2000);
        if (FLAG(obj2.winposerr_theta1950))
-         {
--        da = as->ap1950 - obj2->winpos_alpha1950;
-+        da = as->ap1950 - outobj2.winpos_alpha1950;
-         dd = (sin(as->dp1950*DEG)
--		-sin(obj2->winpos_delta1950*DEG)*sin(obj2->winpos_deltas*DEG))
--		/(cos(obj2->winpos_delta1950*DEG)*cos(obj2->winpos_deltas*DEG));
-+		-sin(outobj2.winpos_delta1950*DEG)*sin(outobj2.winpos_deltas*DEG))
-+		/(cos(outobj2.winpos_delta1950*DEG)*cos(outobj2.winpos_deltas*DEG));
-         dd = dd<1.0? (dd>-1.0?acos(dd)/DEG:180.0) : 0.0;
--        obj2->winposerr_theta1950 = obj2->winposerr_thetas
-+        outobj2.winposerr_theta1950 = outobj2.winposerr_thetas
- 		+ (((da>0.0 && da<180.0) || da<-180.0)?-dd:dd);
-         }
+-        obj2->winposerr_theta1950 = fmod_m90_p90(obj2->winposerr_thetas
+-				+ obj2->dtheta1950);
++        outobj2.winposerr_theta1950 = fmod_m90_p90(outobj2.winposerr_thetas
++				+ outobj2.dtheta1950);
        }
-@@ -750,8 +750,8 @@
+     }
+ 
+@@ -578,8 +577,8 @@
      {
      temp = sqrt(0.25*temp*temp+xym*xym);
      pm2 = 0.5*(xm2+ym2);
@@ -698,7 +747,7 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    if (FLAG(obj2.winposerr_cxxw))
-@@ -762,9 +762,9 @@
+@@ -590,9 +589,9 @@
        temp = 1e-6;
        xym *= 0.99999;
        }
@@ -711,115 +760,367 @@ diff -ur sextractor-2.5.0.old/src/astrom
      }
  
    return;
-diff -ur sextractor-2.5.0.old/src/fits/fitsmisc.c sextractor-2.5.0/src/fits/fitsmisc.c
---- sextractor-2.5.0.old/src/fits/fitsmisc.c	2006-07-14 19:21:00.000000000 +0200
-+++ sextractor-2.5.0/src/fits/fitsmisc.c	2006-07-25 23:32:17.000000000 +0200
-@@ -114,48 +114,63 @@
- void    swapbytes(void *ptr, int nb, int n)
-   {
-    char *cp;
-+   char t;
-    int  j;
- 
--  cp = (char *)ptr;
-+   cp = (char *)ptr;
- 
--  if (nb&4)
--    {
--    for (j=n; j--; cp+=4)
--      {
--      cp[0] ^= (cp[3]^=(cp[0]^=cp[3]));
--      cp[1] ^= (cp[2]^=(cp[1]^=cp[2]));
--      }
--    return;
--    }
--
--  if (nb&2)
--    {
--    for (j=n; j--; cp+=2)
--      cp[0] ^= (cp[1]^=(cp[0]^=cp[1]));
--    return;
--    }
-+   if (nb == 4)
-+     {
-+      for (j=n; j--; cp+=4)
-+        {
-+         t = cp[0];
-+         cp[0] = cp[3];
-+         cp[3] = t;
-+         t = cp[1];
-+         cp[1] = cp[2];
-+         cp[2] = t;
-+        }
-+     }
-+   else if (nb == 2)
-+     {
-+      for (j=n; j--; cp+=2)
-+        {
-+         t = cp[0];
-+         cp[0] = cp[1];
-+         cp[1] = t;
-+        }
-+     }
-+   else if (nb == 8)
-+     {
-+      for (j=n; j--; cp+=8)
-+        {
-+         t = cp[0];
-+         cp[0] = cp[7];
-+         cp[7] = t;
-+         t = cp[1];
-+         cp[1] = cp[6];
-+         cp[6] = t;
-+         t = cp[2];
-+         cp[2] = cp[5];
-+         cp[5] = t;
-+         t = cp[3];
-+         cp[3] = cp[4];
-+         cp[4] = t;
-+        }
-+     }
-+   else if (nb == 1)
-+     {
-+      /* noop */
-+     }
- 
--  if (nb&1)
--    return;
--
--  if (nb&8)
--    {
--    for (j=n; j--; cp+=8)
--      {
--      cp[0] ^= (cp[7]^=(cp[0]^=cp[7]));
--      cp[1] ^= (cp[6]^=(cp[1]^=cp[6]));
--      cp[2] ^= (cp[5]^=(cp[2]^=cp[5]));
--      cp[3] ^= (cp[4]^=(cp[3]^=cp[4]));
--      }
--    return;
--    }
--
--  error(EXIT_FAILURE, "*Internal Error*: Unknown size in ", "swapbytes()");
-+   else
-+     error(EXIT_FAILURE, "*Internal Error*: Unknown size in ", "swapbytes()");
+@@ -618,37 +617,37 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
+ 
+ /* All WORLD params based on 2nd order moments have to pass through here */
+-  dx2 = obj2->poserrmx2_prof;
+-  dy2 = obj2->poserrmy2_prof;
+-  dxy = obj2->poserrmxy_prof;
+-  obj2->poserrmx2w_prof = xm2 = lm0*lm0*dx2+lm1*lm1*dy2+lm0*lm1*dxy;
+-  obj2->poserrmy2w_prof = ym2 = lm2*lm2*dx2+lm3*lm3*dy2+lm2*lm3*dxy;
+-  obj2->poserrmxyw_prof = xym = lm0*lm2*dx2+lm1*lm3*dy2+(lm0*lm3+lm1*lm2)*dxy;
++  dx2 = outobj2.poserrmx2_prof;
++  dy2 = outobj2.poserrmy2_prof;
++  dxy = outobj2.poserrmxy_prof;
++  outobj2.poserrmx2w_prof = xm2 = lm0*lm0*dx2+lm1*lm1*dy2+lm0*lm1*dxy;
++  outobj2.poserrmy2w_prof = ym2 = lm2*lm2*dx2+lm3*lm3*dy2+lm2*lm3*dxy;
++  outobj2.poserrmxyw_prof = xym = lm0*lm2*dx2+lm1*lm3*dy2+(lm0*lm3+lm1*lm2)*dxy;
+   temp=xm2-ym2;
+   if (FLAG(obj2.poserrthetaw_prof))
+     {
+-    obj2->poserrthetaw_prof = (fmod_m90_p90(temp==0.0)?
++    outobj2.poserrthetaw_prof = (fmod_m90_p90(temp==0.0)?
+ 				(45.0):(0.5*atan2(2.0*xym,temp)/DEG));
+ 
+ /*-- Compute position angles in J2000 or B1950 reference frame */
+     if (wcs->lng != wcs->lat)
+       {
+       if (FLAG(obj2.poserrthetas_prof))
+-        obj2->poserrthetas_prof = fmod_m90_p90(lng<lat?
+-		((obj2->poserrthetaw_prof>0.0?90:-90.0)-obj2->poserrthetaw_prof)
+-		: obj2->poserrthetaw_prof);
++        outobj2.poserrthetas_prof = fmod_m90_p90(lng<lat?
++		((outobj2.poserrthetaw_prof>0.0?90:-90.0)-outobj2.poserrthetaw_prof)
++		: outobj2.poserrthetaw_prof);
+       if (FLAG(obj2.poserrtheta2000_prof))
+-        obj2->poserrtheta2000_prof = fmod_m90_p90(obj2->poserrthetas_prof
+-				+ obj2->dtheta2000);
++        outobj2.poserrtheta2000_prof = fmod_m90_p90(outobj2.poserrthetas_prof
++				+ outobj2.dtheta2000);
+       if (FLAG(obj2.poserrtheta1950_prof))
+-        obj2->poserrtheta1950_prof = fmod_m90_p90(obj2->poserrthetas_prof
+-				+ obj2->dtheta1950);
++        outobj2.poserrtheta1950_prof = fmod_m90_p90(outobj2.poserrthetas_prof
++				+ outobj2.dtheta1950);
+       }
+     }
+ 
+@@ -656,8 +655,8 @@
+     {
+     temp = sqrt(0.25*temp*temp+xym*xym);
+     pm2 = 0.5*(xm2+ym2);
+-    obj2->poserraw_prof = (float)sqrt(pm2+temp);
+-    obj2->poserrbw_prof = (float)sqrt(pm2-temp);
++    outobj2.poserraw_prof = (float)sqrt(pm2+temp);
++    outobj2.poserrbw_prof = (float)sqrt(pm2-temp);
+     }
+ 
+   if (FLAG(obj2.poserrcxxw_prof))
+@@ -668,9 +667,9 @@
+       temp = 1e-6;
+       xym *= 0.99999;
+       }
+-    obj2->poserrcxxw_prof = (float)(ym2/temp);
+-    obj2->poserrcyyw_prof = (float)(xm2/temp);
+-    obj2->poserrcxyw_prof = (float)(-2*xym/temp);
++    outobj2.poserrcxxw_prof = (float)(ym2/temp);
++    outobj2.poserrcyyw_prof = (float)(xm2/temp);
++    outobj2.poserrcxyw_prof = (float)(-2*xym/temp);
+     }
  
    return;
-   }
+@@ -696,178 +695,178 @@
+     lng = 0;
+     lat = 1;
+     }
+-  lm0 = obj2->jacob[lng+naxis*lng];
+-  lm1 = obj2->jacob[lat+naxis*lng];
+-  lm2 = obj2->jacob[lng+naxis*lat];
+-  lm3 = obj2->jacob[lat+naxis*lat];
++  lm0 = outobj2.jacob[lng+naxis*lng];
++  lm1 = outobj2.jacob[lat+naxis*lng];
++  lm2 = outobj2.jacob[lng+naxis*lat];
++  lm3 = outobj2.jacob[lat+naxis*lat];
+ 
+ /* Spheroid World coordinates */
+-  obj2->prof_spheroid_thetaerrw=obj2->prof_spheroid_thetaerr; /* quick & dirty*/
++  outobj2.prof_spheroid_thetaerrw=outobj2.prof_spheroid_thetaerr; /* quick & dirty*/
+   if (FLAG(obj2.prof_spheroid_reffw))
+     {
+-    ct = cos(obj2->prof_spheroid_theta*DEG);
+-    st = sin(obj2->prof_spheroid_theta*DEG);
+-    dx2 = obj2->prof_spheroid_reff*obj2->prof_spheroid_reff * (ct*ct
+-	+ st*st * obj2->prof_spheroid_aspect*obj2->prof_spheroid_aspect);
+-    dy2 = obj2->prof_spheroid_reff*obj2->prof_spheroid_reff * (st*st
+-	+ ct*ct * obj2->prof_spheroid_aspect*obj2->prof_spheroid_aspect);
+-    dxy = ct*st * obj2->prof_spheroid_reff*obj2->prof_spheroid_reff
+-	*(1.0 - obj2->prof_spheroid_aspect*obj2->prof_spheroid_aspect);
++    ct = cos(outobj2.prof_spheroid_theta*DEG);
++    st = sin(outobj2.prof_spheroid_theta*DEG);
++    dx2 = outobj2.prof_spheroid_reff*outobj2.prof_spheroid_reff * (ct*ct
++	+ st*st * outobj2.prof_spheroid_aspect*outobj2.prof_spheroid_aspect);
++    dy2 = outobj2.prof_spheroid_reff*outobj2.prof_spheroid_reff * (st*st
++	+ ct*ct * outobj2.prof_spheroid_aspect*outobj2.prof_spheroid_aspect);
++    dxy = ct*st * outobj2.prof_spheroid_reff*outobj2.prof_spheroid_reff
++	*(1.0 - outobj2.prof_spheroid_aspect*outobj2.prof_spheroid_aspect);
+     xm2 = lm0*lm0*dx2 + lm1*lm1*dy2 + lm0*lm1*dxy;
+     ym2 = lm2*lm2*dx2 + lm3*lm3*dy2 + lm2*lm3*dxy;
+     xym = lm0*lm2*dx2 + lm1*lm3*dy2 + (lm0*lm3+lm1*lm2)*dxy;
+     temp=xm2-ym2;
+     if (FLAG(obj2.prof_spheroid_thetaw))
+       {
+-      obj2->prof_spheroid_thetaw = fmod_m90_p90((temp == 0.0)?
++      outobj2.prof_spheroid_thetaw = fmod_m90_p90((temp == 0.0)?
+ 		(45.0) : (0.5*atan2(2.0 * xym,temp)/DEG));
+ 
+       if (wcs->lng != wcs->lat)
+         {
+         if (FLAG(obj2.prof_spheroid_thetas))
+-          obj2->prof_spheroid_thetas = fmod_m90_p90(lng<lat?
+-			((obj2->prof_spheroid_thetaw>0.0?90:-90.0)
+-				- obj2->prof_spheroid_thetaw)
+-			: obj2->prof_spheroid_thetaw);
++          outobj2.prof_spheroid_thetas = fmod_m90_p90(lng<lat?
++			((outobj2.prof_spheroid_thetaw>0.0?90:-90.0)
++				- outobj2.prof_spheroid_thetaw)
++			: outobj2.prof_spheroid_thetaw);
+         if (FLAG(obj2.prof_spheroid_theta2000))
+-          obj2->prof_spheroid_theta2000=fmod_m90_p90(obj2->prof_spheroid_thetas
+-					+ obj2->dtheta2000);
++          outobj2.prof_spheroid_theta2000=fmod_m90_p90(outobj2.prof_spheroid_thetas
++					+ outobj2.dtheta2000);
+         if (FLAG(obj2.prof_spheroid_theta1950))
+-          obj2->prof_spheroid_theta1950=fmod_m90_p90(obj2->prof_spheroid_thetas
+-					+ obj2->dtheta1950);
++          outobj2.prof_spheroid_theta1950=fmod_m90_p90(outobj2.prof_spheroid_thetas
++					+ outobj2.dtheta1950);
+         }
+       }
+     temp = sqrt(0.25*temp*temp+xym*xym);
+     pm2 = 0.5*(xm2+ym2);
+-    obj2->prof_spheroid_reffw = sqrt(pm2+temp);
+-    obj2->prof_spheroid_refferrw = obj2->prof_spheroid_reff > 0.0?
+-	obj2->prof_spheroid_refferr/obj2->prof_spheroid_reff
+-				*obj2->prof_spheroid_reffw
++    outobj2.prof_spheroid_reffw = sqrt(pm2+temp);
++    outobj2.prof_spheroid_refferrw = outobj2.prof_spheroid_reff > 0.0?
++	outobj2.prof_spheroid_refferr/outobj2.prof_spheroid_reff
++				*outobj2.prof_spheroid_reffw
+ 	: 0.0;
+-    obj2->prof_spheroid_aspectw = obj2->prof_spheroid_reffw>0.0?
+-				  sqrt(pm2-temp) / obj2->prof_spheroid_reffw
+-				: obj2->prof_spheroid_aspect;
+-    obj2->prof_spheroid_aspecterrw = obj2->prof_spheroid_aspect > 0.0?
+-	obj2->prof_spheroid_aspecterr/obj2->prof_spheroid_aspect
+-				*obj2->prof_spheroid_aspectw
++    outobj2.prof_spheroid_aspectw = outobj2.prof_spheroid_reffw>0.0?
++				  sqrt(pm2-temp) / outobj2.prof_spheroid_reffw
++				: outobj2.prof_spheroid_aspect;
++    outobj2.prof_spheroid_aspecterrw = outobj2.prof_spheroid_aspect > 0.0?
++	outobj2.prof_spheroid_aspecterr/outobj2.prof_spheroid_aspect
++				*outobj2.prof_spheroid_aspectw
+ 	: 0.0;
+     }
+ 
+ /* Disk World coordinates */
+-  obj2->prof_disk_thetaerrw = obj2->prof_disk_thetaerr; /* quick & dirty*/
++  outobj2.prof_disk_thetaerrw = outobj2.prof_disk_thetaerr; /* quick & dirty*/
+   if (FLAG(obj2.prof_disk_scalew))
+     {
+-    ct = cos(obj2->prof_disk_theta*DEG);
+-    st = sin(obj2->prof_disk_theta*DEG);
+-    dx2 = obj2->prof_disk_scale*obj2->prof_disk_scale * (ct*ct
+-	+ st*st * obj2->prof_disk_aspect*obj2->prof_disk_aspect);
+-    dy2 = obj2->prof_disk_scale*obj2->prof_disk_scale * (st*st
+-	+ ct*ct * obj2->prof_disk_aspect*obj2->prof_disk_aspect);
+-    dxy = ct*st * obj2->prof_disk_scale*obj2->prof_disk_scale
+-	*(1.0 - obj2->prof_disk_aspect*obj2->prof_disk_aspect);
++    ct = cos(outobj2.prof_disk_theta*DEG);
++    st = sin(outobj2.prof_disk_theta*DEG);
++    dx2 = outobj2.prof_disk_scale*outobj2.prof_disk_scale * (ct*ct
++	+ st*st * outobj2.prof_disk_aspect*outobj2.prof_disk_aspect);
++    dy2 = outobj2.prof_disk_scale*outobj2.prof_disk_scale * (st*st
++	+ ct*ct * outobj2.prof_disk_aspect*outobj2.prof_disk_aspect);
++    dxy = ct*st * outobj2.prof_disk_scale*outobj2.prof_disk_scale
++	*(1.0 - outobj2.prof_disk_aspect*outobj2.prof_disk_aspect);
+     xm2 = lm0*lm0*dx2 + lm1*lm1*dy2 + lm0*lm1*dxy;
+     ym2 = lm2*lm2*dx2 + lm3*lm3*dy2 + lm2*lm3*dxy;
+     xym = lm0*lm2*dx2 + lm1*lm3*dy2 + (lm0*lm3+lm1*lm2)*dxy;
+     temp=xm2-ym2;
+     if (FLAG(obj2.prof_disk_thetaw))
+       {
+-      obj2->prof_disk_thetaw = fmod_m90_p90((temp == 0.0)?
++      outobj2.prof_disk_thetaw = fmod_m90_p90((temp == 0.0)?
+ 		(45.0) : (0.5*atan2(2.0 * xym,temp)/DEG));
  
+ /*---- Compute position angles in J2000 or B1950 reference frame */
+       if (wcs->lng != wcs->lat)
+         {
+         if (FLAG(obj2.prof_disk_thetas))
+-          obj2->prof_disk_thetas = fmod_m90_p90(lng<lat?
+-			((obj2->prof_disk_thetaw>0.0?90:-90.0)
+-				- obj2->prof_disk_thetaw)
+-			: obj2->prof_disk_thetaw);
++          outobj2.prof_disk_thetas = fmod_m90_p90(lng<lat?
++			((outobj2.prof_disk_thetaw>0.0?90:-90.0)
++				- outobj2.prof_disk_thetaw)
++			: outobj2.prof_disk_thetaw);
+         if (FLAG(obj2.prof_disk_theta2000))
+-          obj2->prof_disk_theta2000 = fmod_m90_p90(obj2->prof_disk_thetas
+-					+ obj2->dtheta2000);
++          outobj2.prof_disk_theta2000 = fmod_m90_p90(outobj2.prof_disk_thetas
++					+ outobj2.dtheta2000);
+         if (FLAG(obj2.prof_disk_theta1950))
+-          obj2->prof_disk_theta1950 = fmod_m90_p90(obj2->prof_disk_thetas
+-					+ obj2->dtheta1950);
++          outobj2.prof_disk_theta1950 = fmod_m90_p90(outobj2.prof_disk_thetas
++					+ outobj2.dtheta1950);
+         }
+       }
+     temp = sqrt(0.25*temp*temp+xym*xym);
+     pm2 = 0.5*(xm2+ym2);
+-    obj2->prof_disk_scalew = sqrt(pm2+temp);
+-    obj2->prof_disk_scaleerrw = obj2->prof_disk_scale > 0.0?
+-	obj2->prof_disk_scaleerr/obj2->prof_disk_scale*obj2->prof_disk_scalew
++    outobj2.prof_disk_scalew = sqrt(pm2+temp);
++    outobj2.prof_disk_scaleerrw = outobj2.prof_disk_scale > 0.0?
++	outobj2.prof_disk_scaleerr/outobj2.prof_disk_scale*outobj2.prof_disk_scalew
+ 	: 0.0;
+-    obj2->prof_disk_aspectw = obj2->prof_disk_scalew>0.0?
+-				  sqrt(pm2-temp) / obj2->prof_disk_scalew
+-				: obj2->prof_disk_aspect;
+-    obj2->prof_disk_aspecterrw = obj2->prof_disk_aspect > 0.0?
+-	obj2->prof_disk_aspecterr/obj2->prof_disk_aspect*obj2->prof_disk_aspectw
++    outobj2.prof_disk_aspectw = outobj2.prof_disk_scalew>0.0?
++				  sqrt(pm2-temp) / outobj2.prof_disk_scalew
++				: outobj2.prof_disk_aspect;
++    outobj2.prof_disk_aspecterrw = outobj2.prof_disk_aspect > 0.0?
++	outobj2.prof_disk_aspecterr/outobj2.prof_disk_aspect*outobj2.prof_disk_aspectw
+ 	: 0.0;
+ /*-- Arms World coordinates */
+     if (FLAG(obj2.prof_arms_scalew))
+       {
+-      obj2->prof_arms_scalew = (obj2->prof_disk_scale > 0.0) ?
+-	  obj2->prof_arms_scale*obj2->prof_disk_scalew/obj2->prof_disk_scale
++      outobj2.prof_arms_scalew = (outobj2.prof_disk_scale > 0.0) ?
++	  outobj2.prof_arms_scale*outobj2.prof_disk_scalew/outobj2.prof_disk_scale
+ 	: 0.0;
+-      obj2->prof_arms_scaleerrw = (obj2->prof_arms_scale > 0.0) ?
+-	obj2->prof_arms_scaleerr/obj2->prof_arms_scale*obj2->prof_arms_scalew
++      outobj2.prof_arms_scaleerrw = (outobj2.prof_arms_scale > 0.0) ?
++	outobj2.prof_arms_scaleerr/outobj2.prof_arms_scale*outobj2.prof_arms_scalew
+ 	: 0.0;
+-      obj2->prof_arms_startw = (obj2->prof_disk_scale > 0.0) ?
+-	  obj2->prof_arms_start*obj2->prof_disk_scalew/obj2->prof_disk_scale
++      outobj2.prof_arms_startw = (outobj2.prof_disk_scale > 0.0) ?
++	  outobj2.prof_arms_start*outobj2.prof_disk_scalew/outobj2.prof_disk_scale
+ 	: 0.0;
+-      obj2->prof_arms_starterrw = (obj2->prof_arms_start > 0.0) ?
+-	obj2->prof_arms_starterr/obj2->prof_arms_start*obj2->prof_arms_startw
++      outobj2.prof_arms_starterrw = (outobj2.prof_arms_start > 0.0) ?
++	outobj2.prof_arms_starterr/outobj2.prof_arms_start*outobj2.prof_arms_startw
+ 	: 0.0;
+       }
+     }
  
-+
- /****** wstrncmp ***************************************************************
- PROTO	int wstrncmp(char *cs, char *ct, int n)
- PURPOSE	simple wildcard strcmp.
-diff -ur sextractor-2.5.0.old/src/growth.c sextractor-2.5.0/src/growth.c
---- sextractor-2.5.0.old/src/growth.c	2005-10-24 13:48:52.000000000 +0200
-+++ sextractor-2.5.0/src/growth.c	2006-07-25 23:27:35.000000000 +0200
+ /* Bar World coordinates */
+-  obj2->prof_bar_thetaerrw = obj2->prof_bar_thetaerr;
++  outobj2.prof_bar_thetaerrw = outobj2.prof_bar_thetaerr;
+   if (FLAG(obj2.prof_bar_lengthw))
+     {
+-    ct = cos(obj2->prof_bar_theta*DEG);
+-    st = sin(obj2->prof_bar_theta*DEG);
+-    dx2 = obj2->prof_bar_length*obj2->prof_bar_length * (ct*ct
+-	+ st*st * obj2->prof_bar_aspect*obj2->prof_bar_aspect);
+-    dy2 = obj2->prof_bar_length*obj2->prof_bar_length * (st*st
+-	+ ct*ct * obj2->prof_bar_aspect*obj2->prof_bar_aspect);
+-    dxy = ct*st * obj2->prof_bar_length*obj2->prof_bar_length
+-	*(1.0 - obj2->prof_bar_aspect*obj2->prof_bar_aspect);
++    ct = cos(outobj2.prof_bar_theta*DEG);
++    st = sin(outobj2.prof_bar_theta*DEG);
++    dx2 = outobj2.prof_bar_length*outobj2.prof_bar_length * (ct*ct
++	+ st*st * outobj2.prof_bar_aspect*outobj2.prof_bar_aspect);
++    dy2 = outobj2.prof_bar_length*outobj2.prof_bar_length * (st*st
++	+ ct*ct * outobj2.prof_bar_aspect*outobj2.prof_bar_aspect);
++    dxy = ct*st * outobj2.prof_bar_length*outobj2.prof_bar_length
++	*(1.0 - outobj2.prof_bar_aspect*outobj2.prof_bar_aspect);
+     xm2 = lm0*lm0*dx2 + lm1*lm1*dy2 + lm0*lm1*dxy;
+     ym2 = lm2*lm2*dx2 + lm3*lm3*dy2 + lm2*lm3*dxy;
+     xym = lm0*lm2*dx2 + lm1*lm3*dy2 + (lm0*lm3+lm1*lm2)*dxy;
+     temp=xm2-ym2;
+     if (FLAG(obj2.prof_bar_thetaw))
+       {
+-      obj2->prof_bar_thetaw = fmod_m90_p90((temp == 0.0)?
++      outobj2.prof_bar_thetaw = fmod_m90_p90((temp == 0.0)?
+ 		(45.0) : (0.5*atan2(2.0 * xym,temp)/DEG));
+ 
+ /*---- Compute position angles in J2000 or B1950 reference frame */
+       if (wcs->lng != wcs->lat)
+         {
+         if (FLAG(obj2.prof_bar_thetas))
+-          obj2->prof_bar_thetas = fmod_m90_p90(lng<lat?
+-			((obj2->prof_bar_thetaw>0.0?90:-90.0)
+-				- obj2->prof_bar_thetaw)
+-			: obj2->prof_bar_thetaw);
++          outobj2.prof_bar_thetas = fmod_m90_p90(lng<lat?
++			((outobj2.prof_bar_thetaw>0.0?90:-90.0)
++				- outobj2.prof_bar_thetaw)
++			: outobj2.prof_bar_thetaw);
+         if (FLAG(obj2.prof_bar_theta2000))
+-          obj2->prof_bar_theta2000 = fmod_m90_p90(obj2->prof_bar_thetas
+-					+ obj2->dtheta2000);
++          outobj2.prof_bar_theta2000 = fmod_m90_p90(outobj2.prof_bar_thetas
++					+ outobj2.dtheta2000);
+         if (FLAG(obj2.prof_bar_theta1950))
+-          obj2->prof_bar_theta1950 = fmod_m90_p90(obj2->prof_bar_thetas
+-					+ obj2->dtheta1950);
++          outobj2.prof_bar_theta1950 = fmod_m90_p90(outobj2.prof_bar_thetas
++					+ outobj2.dtheta1950);
+         }
+       }
+     temp = sqrt(0.25*temp*temp+xym*xym);
+     pm2 = 0.5*(xm2+ym2);
+-    obj2->prof_bar_lengthw = sqrt(pm2+temp);
+-    obj2->prof_bar_lengtherrw = obj2->prof_bar_length > 0.0?
+-	obj2->prof_bar_lengtherr/obj2->prof_bar_length*obj2->prof_bar_lengthw
++    outobj2.prof_bar_lengthw = sqrt(pm2+temp);
++    outobj2.prof_bar_lengtherrw = outobj2.prof_bar_length > 0.0?
++	outobj2.prof_bar_lengtherr/outobj2.prof_bar_length*outobj2.prof_bar_lengthw
+ 	: 0.0;
+-    obj2->prof_bar_aspectw = obj2->prof_bar_lengthw>0.0?
+-				  sqrt(pm2-temp) / obj2->prof_bar_lengthw
+-				: obj2->prof_bar_aspect;
+-    obj2->prof_bar_aspecterrw = obj2->prof_bar_aspect > 0.0?
+-	obj2->prof_bar_aspecterr/obj2->prof_bar_aspect*obj2->prof_bar_aspectw
++    outobj2.prof_bar_aspectw = outobj2.prof_bar_lengthw>0.0?
++				  sqrt(pm2-temp) / outobj2.prof_bar_lengthw
++				: outobj2.prof_bar_aspect;
++    outobj2.prof_bar_aspecterrw = outobj2.prof_bar_aspect > 0.0?
++	outobj2.prof_bar_aspecterr/outobj2.prof_bar_aspect*outobj2.prof_bar_aspectw
+ 	: 0.0;
+     }
+ 
+Only in sextractor-2.8.6.new/src: astrom.o
+diff -ur sextractor-2.8.6/src/growth.c sextractor-2.8.6.new/src/growth.c
+--- sextractor-2.8.6/src/growth.c	2009-01-29 14:52:00.000000000 +0100
++++ sextractor-2.8.6.new/src/growth.c	2009-05-24 00:07:56.000000000 +0200
 @@ -32,7 +32,7 @@
  
  static double	*growth;
  static int	ngrowth;
 -static obj2struct	*obj2 = &outobj2;
-+/* static obj2struct	*obj2 = &outobj2; */
++
  
  /******************************** initgrowth *********************************/
  /*
@@ -889,19 +1190,19 @@ diff -ur sextractor-2.5.0.old/src/growth
  		  	i + (tv - *(growtht-1))/dg
  			: i)
  		: (*growth !=0.0 ?tv/(*growth) : 0.0));
-diff -ur sextractor-2.5.0.old/src/pc.c sextractor-2.5.0/src/pc.c
---- sextractor-2.5.0.old/src/pc.c	2005-10-24 13:48:52.000000000 +0200
-+++ sextractor-2.5.0/src/pc.c	2006-07-25 23:27:45.000000000 +0200
-@@ -32,7 +32,7 @@
- #include	"poly.h"
+Only in sextractor-2.8.6.new/src: growth.o
+diff -ur sextractor-2.8.6/src/pc.c sextractor-2.8.6.new/src/pc.c
+--- sextractor-2.8.6/src/pc.c	2009-01-29 14:52:00.000000000 +0100
++++ sextractor-2.8.6.new/src/pc.c	2009-05-24 00:08:06.000000000 +0200
+@@ -32,7 +32,6 @@
+ #include	"wcs/poly.h"
  #include	"psf.h"
  
 -static  obj2struct	*obj2 = &outobj2;
-+/* static  obj2struct	*obj2 = &outobj2; */
  
  /****** pc_end ***************************************************************
  PROTO   void pc_end(pcstruct *pc)
-@@ -361,22 +361,22 @@
+@@ -361,22 +360,22 @@
  
  /*-- Copy the derived physical quantities to output parameters */
  /*-- (subject to changes) */
@@ -936,7 +1237,7 @@ diff -ur sextractor-2.5.0.old/src/pc.c s
        for (c=prefs.pc_vectorsize>npc?npc:prefs.pc_vectorsize; c--;)
          *(ppix++) = *(solt++);
        }
-@@ -397,9 +397,9 @@
+@@ -397,9 +396,9 @@
      xym += val**(mxyt++);
      }
  
@@ -949,7 +1250,7 @@ diff -ur sextractor-2.5.0.old/src/pc.c s
  
    if (FLAG(obj2.a_pc))
      {
-@@ -421,9 +421,9 @@
+@@ -421,9 +420,9 @@
      pmx2 += temp;
      pmy2 -= temp;
  
@@ -962,15 +1263,16 @@ diff -ur sextractor-2.5.0.old/src/pc.c s
      }
  
  /* CHECK-Images */
-diff -ur sextractor-2.5.0.old/src/photom.c sextractor-2.5.0/src/photom.c
---- sextractor-2.5.0.old/src/photom.c	2005-10-24 13:48:52.000000000 +0200
-+++ sextractor-2.5.0/src/photom.c	2006-07-25 23:27:55.000000000 +0200
+Only in sextractor-2.8.6.new/src: pc.o
+diff -ur sextractor-2.8.6/src/photom.c sextractor-2.8.6.new/src/photom.c
+--- sextractor-2.8.6/src/photom.c	2009-01-29 14:51:59.000000000 +0100
++++ sextractor-2.8.6.new/src/photom.c	2009-05-24 00:08:35.000000000 +0200
 @@ -27,7 +27,7 @@
  #include	"photom.h"
  #include	"plist.h"
  
 -static  obj2struct	*obj2 = &outobj2;
-+/* static  obj2struct	*obj2 = &outobj2; */
++
  
  /***************************** computeaperflux********************************/
  /*
@@ -1193,7 +1495,7 @@ diff -ur sextractor-2.5.0.old/src/photom
  			:99.0;
  
  /* Choose the ``best'' flux according to the local crowding */
-@@ -835,63 +835,63 @@
+@@ -835,107 +835,107 @@
      {
      if (obj->flag&OBJ_CROWDED)
        {
@@ -1239,7 +1541,7 @@ diff -ur sextractor-2.5.0.old/src/photom
 +			 1.086*outobj2.fluxerr_somfit/outobj2.flux_somfit
  			:99.0;
  
- /* Mag. PROFILE */
+ /* Mag. models */
    if (FLAG(obj2.mag_prof))
 -    obj2->mag_prof = obj2->flux_prof>0.0?
 -			 -2.5*log10(obj2->flux_prof) + prefs.mag_zeropoint
@@ -1253,6 +1555,70 @@ diff -ur sextractor-2.5.0.old/src/photom
 +			 1.086*outobj2.fluxerr_prof/outobj2.flux_prof
  			:99.0;
  
+   if (FLAG(obj2.prof_spheroid_mag))
+-    obj2->prof_spheroid_mag = obj2->prof_spheroid_flux>0.0?
+-			 -2.5*log10(obj2->prof_spheroid_flux)
++    outobj2.prof_spheroid_mag = outobj2.prof_spheroid_flux>0.0?
++			 -2.5*log10(outobj2.prof_spheroid_flux)
+ 			+ prefs.mag_zeropoint
+ 			:99.0;
+   if (FLAG(obj2.prof_spheroid_magerr))
+-    obj2->prof_spheroid_magerr = obj2->prof_spheroid_flux>0.0?
+-			 1.086*obj2->prof_spheroid_fluxerr
+-				/ obj2->prof_spheroid_flux
++    outobj2.prof_spheroid_magerr = outobj2.prof_spheroid_flux>0.0?
++			 1.086*outobj2.prof_spheroid_fluxerr
++				/ outobj2.prof_spheroid_flux
+ 			:99.0;
+ 
+   if (FLAG(obj2.prof_disk_mag))
+-    obj2->prof_disk_mag = obj2->prof_disk_flux>0.0?
+-			 -2.5*log10(obj2->prof_disk_flux)
++    outobj2.prof_disk_mag = outobj2.prof_disk_flux>0.0?
++			 -2.5*log10(outobj2.prof_disk_flux)
+ 			+ prefs.mag_zeropoint
+ 			:99.0;
+   if (FLAG(obj2.prof_disk_magerr))
+-    obj2->prof_disk_magerr = obj2->prof_disk_flux>0.0?
+-			 1.086*obj2->prof_disk_fluxerr
+-				/ obj2->prof_disk_flux
++    outobj2.prof_disk_magerr = outobj2.prof_disk_flux>0.0?
++			 1.086*outobj2.prof_disk_fluxerr
++				/ outobj2.prof_disk_flux
+ 			:99.0;
+ 
+   if (FLAG(obj2.prof_bar_mag))
+-    obj2->prof_bar_mag = obj2->prof_bar_flux>0.0?
+-			 -2.5*log10(obj2->prof_bar_flux)
++    outobj2.prof_bar_mag = outobj2.prof_bar_flux>0.0?
++			 -2.5*log10(outobj2.prof_bar_flux)
+ 			+ prefs.mag_zeropoint
+ 			:99.0;
+   if (FLAG(obj2.prof_bar_magerr))
+-    obj2->prof_bar_magerr = obj2->prof_bar_flux>0.0?
+-			 1.086*obj2->prof_bar_fluxerr
+-				/obj2->prof_bar_flux
++    outobj2.prof_bar_magerr = outobj2.prof_bar_flux>0.0?
++			 1.086*outobj2.prof_bar_fluxerr
++				/outobj2.prof_bar_flux
+ 			:99.0;
+ 
+   if (FLAG(obj2.prof_arms_mag))
+-    obj2->prof_arms_mag = obj2->prof_arms_flux>0.0?
+-			 -2.5*log10(obj2->prof_arms_flux)
++    outobj2.prof_arms_mag = outobj2.prof_arms_flux>0.0?
++			 -2.5*log10(outobj2.prof_arms_flux)
+ 			+ prefs.mag_zeropoint
+ 			:99.0;
+   if (FLAG(obj2.prof_arms_magerr))
+-    obj2->prof_arms_magerr = obj2->prof_arms_flux>0.0?
+-			 1.086*obj2->prof_arms_fluxerr
+-				/obj2->prof_arms_flux
++    outobj2.prof_arms_magerr = outobj2.prof_arms_flux>0.0?
++			 1.086*outobj2.prof_arms_fluxerr
++				/outobj2.prof_arms_flux
+ 			:99.0;
+ 
  /* Mag. WINdowed */
    if (FLAG(obj2.mag_win))
 -    obj2->mag_win = obj2->flux_win>0.0?
@@ -1281,7 +1647,7 @@ diff -ur sextractor-2.5.0.old/src/photom
  			:99.0;
  
  /* SB units */
-@@ -902,7 +902,7 @@
+@@ -946,7 +946,7 @@
  		: 99.0;
  
    if (FLAG(obj2.threshmu))
@@ -1290,19 +1656,20 @@ diff -ur sextractor-2.5.0.old/src/photom
  		-2.5*log10((obj->thresh)
  		 / (field->pixscale * field->pixscale)) + prefs.mag_zeropoint
  		: 99.0;
-diff -ur sextractor-2.5.0.old/src/psf.c sextractor-2.5.0/src/psf.c
---- sextractor-2.5.0.old/src/psf.c	2006-07-14 20:22:44.000000000 +0200
-+++ sextractor-2.5.0/src/psf.c	2006-07-25 23:36:58.000000000 +0200
-@@ -309,7 +309,7 @@
+Only in sextractor-2.8.6.new/src: photom.o
+diff -ur sextractor-2.8.6/src/psf.c sextractor-2.8.6.new/src/psf.c
+--- sextractor-2.8.6/src/psf.c	2009-01-29 14:52:00.000000000 +0100
++++ sextractor-2.8.6.new/src/psf.c	2009-05-24 00:10:31.000000000 +0200
+@@ -312,7 +312,7 @@
  		objstruct *obj)
  {
    checkstruct		*check;
 -  static obj2struct     *obj2 = &outobj2;
-+  /* static obj2struct     *obj2 = &outobj2; */
++  
    static double		x2[PSF_NPSFMAX],y2[PSF_NPSFMAX],xy[PSF_NPSFMAX],
  			deltax[PSF_NPSFMAX],
  			deltay[PSF_NPSFMAX],flux[PSF_NPSFMAX],
-@@ -349,8 +349,8 @@
+@@ -352,8 +352,8 @@
    thepsfit->npsf = 0;
    for (j=0; j<npsfmax; j++) 
      {
@@ -1313,7 +1680,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
        thepsfit->flux[j] = 0.0;
      }
  
-@@ -377,7 +377,7 @@
+@@ -380,7 +380,7 @@
     if (prefs.psf_flag==1)
        if (prefs.dpsf_flag!=1)
          if(!FLAG(obj2.fluxerr_psf))
@@ -1322,7 +1689,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
  
    QMALLOC(weighth, PIXTYPE, npix);
    QMALLOC(weight, double, npix);
-@@ -556,7 +556,7 @@
+@@ -559,7 +559,7 @@
                deltaxb[j] = deltax[j];
                deltayb[j] = deltay[j];
                fluxb[j] = flux[j];
@@ -1331,7 +1698,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
              }
          }
      }
-@@ -579,7 +579,7 @@
+@@ -582,7 +582,7 @@
  
        if (FLAG(obj2.poserrmx2_psf))
          {
@@ -1340,7 +1707,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
          }
        else
          var += 3*PSF_NA+3;  
-@@ -604,7 +604,7 @@
+@@ -607,7 +607,7 @@
                chi2 += pix*pix;
                if (chi2>1E29) chi2=1E28;
              }
@@ -1349,7 +1716,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
              chi2/((npix - 3*npsf)*obj->sigbkg*obj->sigbkg):999999;
  
          }
-@@ -623,7 +623,7 @@
+@@ -626,7 +626,7 @@
                chi2 += pix*pix;
                if (chi2>1E29) chi2=1E28;
              }
@@ -1358,16 +1725,16 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
  		chi2/((npix - 3*npsf)*obj->sigbkg*obj->sigbkg):999999;
  
          }
-@@ -755,7 +755,7 @@
+@@ -758,7 +758,7 @@
      ival,npsfmax;
    double *pvar;
    
 -    static obj2struct   *obj2 = &outobj2;
-+  /* static obj2struct   *obj2 = &outobj2; */
++  
    checkdata = NULL;                     /* To avoid gcc -Wall warnings */
    pdx = pdy =dx = dy = 0.0;
    ppixstep = 1.0/ppsf->pixstep;
-@@ -773,13 +773,13 @@
+@@ -776,13 +776,13 @@
    ppsfit->niter = 0;
    ppsfit->npsf = 0;
    if(!FLAG(obj2.fluxerr_psf))
@@ -1383,7 +1750,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
        pdeltax[j]= pdeltay[j]=psol[j]=  pwmat[j]=pflux[j]=0.0;
     
      }
-@@ -923,7 +923,7 @@
+@@ -926,7 +926,7 @@
          {
            svdvar(pvmat, pwmat, j, pcovmat);
            pvar = pcovmat;
@@ -1392,7 +1759,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
              sqrt(*pvar):99;
          }
      }
-@@ -940,7 +940,7 @@
+@@ -943,7 +943,7 @@
                chi2 += ppix*ppix;
                if (chi2>1E29) chi2=1E28;
              }
@@ -1401,7 +1768,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
              chi2/((npix - 3*npsf)*obj->sigbkg*obj->sigbkg):999999;
  
          }
-@@ -960,7 +960,7 @@
+@@ -963,7 +963,7 @@
                chi2 += ppix*ppix;
                if (chi2>1E29) chi2=1E28;
              }
@@ -1410,7 +1777,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
  		chi2/((npix - 3*npsf)*obj->sigbkg*obj->sigbkg):999999;
  
          }
-@@ -1192,11 +1192,11 @@
+@@ -1195,11 +1195,11 @@
    covab = *(++var);
    varb = *(var += PSF_NA);
    var += PSF_NA+1;
@@ -1425,7 +1792,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
                           +covab*(x2[j]*y2[j]+xy[j]*xy[j]))
      /(sol[0]*sol[0]);
    
-@@ -1205,19 +1205,19 @@
+@@ -1208,19 +1208,19 @@
      {
        double    pmx2,pmy2,temp,theta;
        
@@ -1452,7 +1819,7 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
      }
    
    /*------ ...Or ellipse parameters */
-@@ -1225,12 +1225,12 @@
+@@ -1228,12 +1228,12 @@
      {
        double    xm2,ym2, xym, temp;
        
@@ -1471,3 +1838,197 @@ diff -ur sextractor-2.5.0.old/src/psf.c 
      }
    return;
  }
+Only in sextractor-2.8.6.new/src: psf.o
+diff -ur sextractor-2.8.6/src/winpos.c sextractor-2.8.6.new/src/winpos.c
+--- sextractor-2.8.6/src/winpos.c	2009-01-29 14:52:00.000000000 +0100
++++ sextractor-2.8.6.new/src/winpos.c	2009-05-24 00:10:49.000000000 +0200
+@@ -26,7 +26,7 @@
+ #include	"prefs.h"
+ #include	"winpos.h"
+ 
+-static  obj2struct	*obj2 = &outobj2;
++
+ 
+ /****** compute_winpos ********************************************************
+ PROTO	void compute_winpos(picstruct *field, picstruct *wfield,
+@@ -71,7 +71,7 @@
+   momentflag = FLAG(obj2.win_mx2) | FLAG(obj2.winposerr_mx2);
+   var = backnoise2 = field->backsig*field->backsig;
+   gain = field->gain;
+-  sig = obj2->hl_radius*2.0/2.35; /* From half-FWHM to sigma */
++  sig = outobj2.hl_radius*2.0/2.35; /* From half-FWHM to sigma */
+   twosig2 = 2.0*sig*sig;
+ 
+ /* Integration radius */
+@@ -99,8 +99,8 @@
+   offsetx = 0.5*(scalex-1.0);
+   offsety = 0.5*(scaley-1.0);
+ /* Use isophotal centroid as a first guess */
+-  mx = obj2->posx - 1.0;
+-  my = obj2->posy - 1.0;
++  mx = outobj2.posx - 1.0;
++  my = outobj2.posy - 1.0;
+ 
+   for (i=0; i<WINPOS_NITERMAX; i++)
+     {
+@@ -241,57 +241,57 @@
+   mx2 = mx2/tv - dxpos*dxpos;
+   my2 = my2/tv - dypos*dypos;
+   mxy = mxy/tv - dxpos*dypos;
+-  obj2->winpos_x = mx + 1.0;	/* The dreaded 1.0 FITS offset */
+-  obj2->winpos_y = my + 1.0; 	/* The dreaded 1.0 FITS offset */
+-  obj2->winpos_niter = i+1;
++  outobj2.winpos_x = mx + 1.0;	/* The dreaded 1.0 FITS offset */
++  outobj2.winpos_y = my + 1.0; 	/* The dreaded 1.0 FITS offset */
++  outobj2.winpos_niter = i+1;
+ 
+ /* WINdowed flux */
+   if (FLAG(obj2.flux_win))
+     {
+-    obj2->flux_win = tv;
+-    obj2->fluxerr_win = sqrt(esum);
++    outobj2.flux_win = tv;
++    outobj2.fluxerr_win = sqrt(esum);
+     }
+   temp2=mx2*my2-mxy*mxy;
+-  obj2->win_flag = (tv <= 0.0)*4 + (mx2 < 0.0 || my2 < 0.0)*2
++  outobj2.win_flag = (tv <= 0.0)*4 + (mx2 < 0.0 || my2 < 0.0)*2
+ 	+ (temp2<0.0);
+-  if (obj2->win_flag)
++  if (outobj2.win_flag)
+     {
+ /*--- Negative values: revert to isophotal estimates */
+     if (errflag)
+       {
+-      obj2->winposerr_mx2 = obj->poserr_mx2;
+-      obj2->winposerr_my2 = obj->poserr_my2;
+-      obj2->winposerr_mxy = obj->poserr_mxy;
++      outobj2.winposerr_mx2 = obj->poserr_mx2;
++      outobj2.winposerr_my2 = obj->poserr_my2;
++      outobj2.winposerr_mxy = obj->poserr_mxy;
+       if (FLAG(obj2.winposerr_a))
+         {
+-        obj2->winposerr_a = obj2->poserr_a;
+-        obj2->winposerr_b = obj2->poserr_b;
+-        obj2->winposerr_theta = obj2->poserr_theta;
++        outobj2.winposerr_a = outobj2.poserr_a;
++        outobj2.winposerr_b = outobj2.poserr_b;
++        outobj2.winposerr_theta = outobj2.poserr_theta;
+         }
+       if (FLAG(obj2.winposerr_cxx))
+         {
+-        obj2->winposerr_cxx = obj2->poserr_cxx;
+-        obj2->winposerr_cyy = obj2->poserr_cyy;
+-        obj2->winposerr_cxy = obj2->poserr_cxy;
++        outobj2.winposerr_cxx = outobj2.poserr_cxx;
++        outobj2.winposerr_cyy = outobj2.poserr_cyy;
++        outobj2.winposerr_cxy = outobj2.poserr_cxy;
+         }
+       }
+     if (momentflag)
+       {
+-      obj2->win_mx2 = obj->mx2;
+-      obj2->win_my2 = obj->my2;
+-      obj2->win_mxy = obj->mxy;
++      outobj2.win_mx2 = obj->mx2;
++      outobj2.win_my2 = obj->my2;
++      outobj2.win_mxy = obj->mxy;
+       if (FLAG(obj2.win_cxx))
+         {
+-        obj2->win_cxx = obj->cxx;
+-        obj2->win_cyy = obj->cyy;
+-        obj2->win_cxy = obj->cxy;
++        outobj2.win_cxx = obj->cxx;
++        outobj2.win_cyy = obj->cyy;
++        outobj2.win_cxy = obj->cxy;
+         }
+       if (FLAG(obj2.win_a))
+         {
+-        obj2->win_a = obj->a;
+-        obj2->win_b = obj->b;
+-        obj2->win_polar = obj2->polar;
+-        obj2->win_theta = obj->theta;
++        outobj2.win_a = obj->a;
++        outobj2.win_b = obj->b;
++        outobj2.win_polar = outobj2.polar;
++        outobj2.win_theta = obj->theta;
+         }
+       }
+     }
+@@ -311,9 +311,9 @@
+         emy2 += esum;
+         }
+ 
+-      obj2->winposerr_mx2 = emx2;
+-      obj2->winposerr_my2 = emy2;
+-      obj2->winposerr_mxy = emxy;
++      outobj2.winposerr_mx2 = emx2;
++      outobj2.winposerr_my2 = emy2;
++      outobj2.winposerr_mxy = emxy;
+ /*---- Error ellipse parameters */
+       if (FLAG(obj2.winposerr_a))
+         {
+@@ -329,18 +329,18 @@
+         pmx2+=temp;
+         pmy2-=temp;
+ 
+-        obj2->winposerr_a = (float)sqrt(pmx2);
+-        obj2->winposerr_b = (float)sqrt(pmy2);
+-        obj2->winposerr_theta = theta*180.0/PI;
++        outobj2.winposerr_a = (float)sqrt(pmx2);
++        outobj2.winposerr_b = (float)sqrt(pmy2);
++        outobj2.winposerr_theta = theta*180.0/PI;
+         }
+ 
+       if (FLAG(obj2.winposerr_cxx))
+         {
+          double	temp;
+ 
+-        obj2->winposerr_cxx = (float)(emy2/(temp=emx2*emy2-emxy*emxy));
+-        obj2->winposerr_cyy = (float)(emx2/temp);
+-        obj2->winposerr_cxy = (float)(-2*emxy/temp);
++        outobj2.winposerr_cxx = (float)(emy2/(temp=emx2*emy2-emxy*emxy));
++        outobj2.winposerr_cyy = (float)(emx2/temp);
++        outobj2.winposerr_cxy = (float)(-2*emxy/temp);
+         }
+       }
+ 
+@@ -353,15 +353,15 @@
+         my2 += 0.0833333;
+         temp2 = mx2*my2-mxy*mxy;
+         }
+-      obj2->win_mx2 = mx2;
+-      obj2->win_my2 = my2;
+-      obj2->win_mxy = mxy;
++      outobj2.win_mx2 = mx2;
++      outobj2.win_my2 = my2;
++      outobj2.win_mxy = mxy;
+ 
+       if (FLAG(obj2.win_cxx))
+         {
+-        obj2->win_cxx = (float)(my2/temp2);
+-        obj2->win_cyy = (float)(mx2/temp2);
+-        obj2->win_cxy = (float)(-2*mxy/temp2);
++        outobj2.win_cxx = (float)(my2/temp2);
++        outobj2.win_cyy = (float)(mx2/temp2);
++        outobj2.win_cxy = (float)(-2*mxy/temp2);
+         }
+ 
+       if (FLAG(obj2.win_a))
+@@ -373,11 +373,11 @@
+ 
+         temp = sqrt(0.25*temp*temp+mxy*mxy);
+         pmx2 = 0.5*(mx2+my2);
+-        obj2->win_a = (float)sqrt(pmx2 + temp);
+-        obj2->win_b = (float)sqrt(pmx2 - temp);
++        outobj2.win_a = (float)sqrt(pmx2 + temp);
++        outobj2.win_b = (float)sqrt(pmx2 - temp);
+         if (FLAG(obj2.win_polar))
+-          obj2->win_polar = temp / pmx2;
+-        obj2->win_theta = theta*180.0/PI;
++          outobj2.win_polar = temp / pmx2;
++        outobj2.win_theta = theta*180.0/PI;
+         }
+       }
+     }
+Only in sextractor-2.8.6.new/src: winpos.o


Index: sextractor.spec
===================================================================
RCS file: /cvs/pkgs/rpms/sextractor/EL-6/sextractor.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- sextractor.spec	27 Jul 2009 04:13:48 -0000	1.12
+++ sextractor.spec	12 Jul 2010 08:26:13 -0000	1.13
@@ -1,14 +1,16 @@
 Name: sextractor
-Version: 2.5.0
-Release: 9%{?dist}
+Version: 2.8.6
+Release: 1%{?dist}
 Summary: Extract catalogs of sources from astronomical images
 
 Group: Applications/Engineering
-License: GPLv2
-URL: http://terapix.iap.fr/soft/%{name}
+License: CeCILL
+URL: http://astromatic.iap.fr/software/%{name}
 Source0: ftp://ftp.iap.fr/pub/from_users/bertin/sextractor/%{name}-%{version}.tar.gz
-Patch0: sextractor-pointer-alias.patch
+Patch0: sextractor-cflags.patch
 Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+BuildRequires: fftw-devel >= 3.1
+BuildRequires: atlas-devel >= 3.6.0
 
 %description
 SExtractor is a program that builds a catalogue of objects from an 
@@ -22,29 +24,30 @@ well on moderately crowded star fields.
 
 %build
 %configure
-
-%{__make} %{?_smp_mflags}
+make %{?_smp_mflags}
 
 %install
-%{__rm} -fr %{buildroot}
-%{__make} DESTDIR=%{buildroot} install
-%{__mkdir_p} %{buildroot}%{_datadir}/%{name}
-%{__install} -m 644 -p config/*.conv %{buildroot}%{_datadir}/%{name}
-%{__install} -m 644 -p config/default.nnw %{buildroot}%{_datadir}/%{name}
-
+rm -rf %{buildroot}
+make DESTDIR=%{buildroot} install
+mkdir -p %{buildroot}%{_datadir}/%{name}
+install -m 644 -p config/*.conv %{buildroot}%{_datadir}/%{name}
+install -m 644 -p config/default.nnw %{buildroot}%{_datadir}/%{name}
 
 %clean
-%{__rm} -fr %{buildroot}
+rm -rf %{buildroot}
 
 %files
 %defattr(-,root,root)
-%doc AUTHORS BUGS COPYING HISTORY README THANKS doc/README.DOC doc/sextractor.pdf config/default.sex config/default.param
+%doc AUTHORS BUGS COPYRIGHT HISTORY README THANKS doc/README.DOC doc/sextractor.pdf config/default.sex config/default.param
 %{_bindir}/*
 %{_mandir}/man1/*
 %{_mandir}/manx/*
 %{_datadir}/%{name}/
 
 %changelog
+* Mon Jul 12 2010 Sergio Pascual <sergiopr at fedoraproject.org> - 2.8.6-1
+- New upstream source
+
 * Sun Jul 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.5.0-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 
@@ -59,21 +62,28 @@ well on moderately crowded star fields.
 
 * Mon Aug 27 2007 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-5.1
 - Rebuild for Fedora 8 to get the build-id
+
 * Tue Sep 12 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-5
 - Rebuilt for FC6.
+
 * Wed Jul 26 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-4
 - Patch to resolve pointer aliasing problems (bug #199700)
 - Removed -DXSL_URL flag, as the file sextractor.xsl does not exist yet
+
 * Mon Jul 24 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-3
 - Reverting optimization to -O2, it breaks debug infos
+
 * Fri Jul 21 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-2
 - fitsconv.c has correct permissions
 - changed optimization from -O2 to -O1 (bug #199700)
 - additional define allows VOTable output
+
 * Wed Jul 19 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.5.0-1
 - New upstream version 2.5.0
+
 * Tue Jun 20 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.4.4-2
 - Fixed executable permission in src/fits/fitsconv.c
 - default.sex and default.param moved to docs
+
 * Mon Jun 19 2006 Sergio Pascual <spr at astrax.fis.ucm.es> 2.4.4-1
 - Initial spec file.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/sextractor/EL-6/sources,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- sources	19 Jul 2006 16:26:07 -0000	1.3
+++ sources	12 Jul 2010 08:26:13 -0000	1.4
@@ -1 +1 @@
-3dede44685b582ad5ee03f5b69423530  sextractor-2.5.0.tar.gz
+6c2fc529cd89bdd11b1fbafc0866131c  sextractor-2.8.6.tar.gz



More information about the scm-commits mailing list