[cig-commits] r7900 - mc/1D/hc/trunk
becker at geodynamics.org
becker at geodynamics.org
Tue Aug 28 15:52:46 PDT 2007
Author: becker
Date: 2007-08-28 15:52:45 -0700 (Tue, 28 Aug 2007)
New Revision: 7900
Modified:
mc/1D/hc/trunk/Makefile
mc/1D/hc/trunk/ggrd.h
mc/1D/hc/trunk/ggrd_grdtrack_util.h
mc/1D/hc/trunk/ggrd_readgrds.c
mc/1D/hc/trunk/ggrd_velinterpol.c
mc/1D/hc/trunk/hc.h
mc/1D/hc/trunk/hc_auto_proto.h
mc/1D/hc/trunk/hc_init.c
mc/1D/hc/trunk/hc_misc.c
mc/1D/hc/trunk/make_tar
mc/1D/hc/trunk/prem.h
mc/1D/hc/trunk/prem_util.c
mc/1D/hc/trunk/rick_sh_c.c
mc/1D/hc/trunk/sh.h
mc/1D/hc/trunk/sh_rick.h
mc/1D/hc/trunk/sh_syn.c
Log:
Minor modifications in build procedure and header files for CitcomC compatibility.
Modified: mc/1D/hc/trunk/Makefile
===================================================================
--- mc/1D/hc/trunk/Makefile 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/Makefile 2007-08-28 22:52:45 UTC (rev 7900)
@@ -75,14 +75,20 @@
PREM_DEFINES = -DPREM_MODEL_FILE=\"$(PWD)/prem/prem.dat\"
PREM_INCS = prem.h
#
-# GMT grd handling
+# GMT grd handling, now includes PREM stuff
#
-GGRD_SRCS = ggrd_velinterpol.c ggrd_readgrds.c ggrd_grdtrack_util.c
-GGRD_OBJS = $(ODIR)/ggrd_velinterpol.o $(ODIR)/ggrd_readgrds.o $(ODIR)/ggrd_grdtrack_util.o
-GGRD_OBJS_DBG = $(ODIR)/ggrd_velinterpol.dbg.o $(ODIR)/ggrd_readgrds.dbg.o $(ODIR)/ggrd_grdtrack_util.dbg.o
-GGRD_DEFINES = -I$(GMTHOME)/include -I$(NETCDFHOME)/include
+GGRD_SRCS = ggrd_velinterpol.c ggrd_readgrds.c ggrd_grdtrack_util.c \
+ $(PREM_SRCS)
+GGRD_OBJS = $(ODIR)/ggrd_velinterpol.o $(ODIR)/ggrd_readgrds.o $(ODIR)/ggrd_grdtrack_util.o \
+ $(PREM_OBJS)
+GGRD_OBJS_DBG = $(ODIR)/ggrd_velinterpol.dbg.o $(ODIR)/ggrd_readgrds.dbg.o $(ODIR)/ggrd_grdtrack_util.dbg.o \
+ $(PREM_OBJS)
+GGRD_DEFINES = -I$(GMTHOME)/include -I$(NETCDFHOME)/include \
+ $(PREM_DEFINES)
GGRD_LIB_FLAGS = -L$(GMTHOME)/lib -L$(NETCDFHOME)/lib
-GGRD_LIBS = $(ODIR)/libggrd.a $(ODIR)/libggrd.dfast.a $(ODIR)/libggrd.dbg.a
+GGRD_LIBS = $(ODIR)/libggrd.a $(ODIR)/libggrd.dfast.a $(ODIR)/libggrd.dbg.a
+GGRD_INCS = $(PREM_INCS)
+
#
#
#
@@ -96,7 +102,7 @@
hc_misc.c hc_extract_sh_layer.c
# all C sources
-C_SOURCES = $(HC_SOURCES) $(RICK_SRCS) $(PREM_SRCS) $(GGRD_SRCS)
+C_SOURCES = $(HC_SOURCES) $(RICK_SRCS) $(GGRD_SRCS)
#
#
# objects for HC library
@@ -104,17 +110,16 @@
HC_OBJS = $(ODIR)/sh_exp.o $(ODIR)/sh_model.o $(ODIR)/hc_input.o \
$(ODIR)/hc_polsol.o $(ODIR)/hc_matrix.o $(ODIR)/hc_torsol.o \
$(ODIR)/hc_misc.o $(ODIR)/hc_init.o $(ODIR)/hc_propagator.o \
- $(ODIR)/hc_output.o $(ODIR)/hc_solve.o \
- $(PREM_OBJS)
+ $(ODIR)/hc_output.o $(ODIR)/hc_solve.o
HC_OBJS_DBG = $(ODIR)/sh_exp.dbg.o $(ODIR)/sh_model.dbg.o $(ODIR)/hc_input.dbg.o \
$(ODIR)/hc_polsol.dbg.o $(ODIR)/hc_matrix.dbg.o $(ODIR)/hc_torsol.dbg.o \
$(ODIR)/hc_misc.dbg.o $(ODIR)/hc_init.dbg.o $(ODIR)/hc_propagator.dbg.o \
- $(ODIR)/hc_output.dbg.o $(ODIR)/hc_solve.dbg.o \
- $(PREM_OBJS)
+ $(ODIR)/hc_output.dbg.o $(ODIR)/hc_solve.dbg.o
-# HC library
-HC_LIBS = $(ODIR)/libhc.a $(ODIR)/libhc.dbg.a
+# HC libraries
+HC_LIBS = $(ODIR)/libhc.a
+HC_LIBS_DEBUG = $(ODIR)/libhc.dbg.a
LIB_FLAGS = -L$(HOME)/progs/lib/$(ARCH)/ \
$(HEAL_LIB_FLAGS) $(RICK_LIB_FLAGS) \
@@ -126,28 +131,27 @@
$(RICK_INC_FLAGS) $(GGRD_INC_FLAGS)
#
# includes
-INCS = hc_auto_proto.h $(HEAL_INCS) $(RICK_INCS) $(PREM_INCS) \
- $(GGRD_INCS) $(OINCS)
+INCS = hc_auto_proto.h $(HEAL_INCS) $(RICK_INCS) $(GGRD_INCS) $(OINCS)
#
# defines
-DEFINES = $(RICK_DEFINES) $(HEAL_DEFINES) $(PREM_DEFINES) \
- $(GGRD_DEFINES)
+DEFINES = $(RICK_DEFINES) $(HEAL_DEFINES) $(GGRD_DEFINES)
#
# libraries
LIBS = $(HC_LIBS) $(GGRD_LIBS) $(HEAL_LIBS) $(RICK_LIB)
-all: dirs libs hc hc.dbg hc_extract_sh_layer \
- sh_syn sh_ana sh_power \
- ggrd_test hcplates
+all: dirs libs hc hc_extract_sh_layer \
+ sh_syn sh_ana sh_power
libs: dirs hc_lib $(HEAL_LIBS) $(RICK_LIB)
hc_lib: $(HC_LIBS) $(GGRD_LIBS)
-really_all: proto all
+debug_libs: $(HC_LIBS_DEBUG)
+really_all: proto all debug_libs hc.dbg hcplates ggrd_test
+
proto: hc_auto_proto.h
hcplates:
Modified: mc/1D/hc/trunk/ggrd.h
===================================================================
--- mc/1D/hc/trunk/ggrd.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/ggrd.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -1,3 +1,5 @@
+#ifndef __READ_GGRD_HEADER__
+
//
// max order of interpolation - 1
// ie. if 3, this means will do fourth order on 0,1,2,GGRD_DEF_ORDER arrays
@@ -14,9 +16,10 @@
#define GGRD_CPREC double
#define GGRD_EPS 5e-15
#define ggrd_boolean unsigned char
-
+#ifndef HC_FLT_FORMAT
#define HC_FLT_FORMAT "%lf"
#endif
+#endif
/* string length */
#define GGRD_STRLEN 300
@@ -27,8 +30,17 @@
/* radius of CMB */
#define GGRD_RCMB_ND 0.546225
+#ifdef M_PI
+#define GGRD_PI M_PI
+#else
#define GGRD_PI 3.1415926535897932384626433832795
+#endif
+#ifndef GGRD_TWOPI
+#define GGRD_TWOPI 6.283185307179586476925286766559005768394
+#endif
+
+
/*
modes
@@ -45,3 +57,7 @@
#define GGRD_VSFILE "vrms.dat" /* vel stat file */
#define GGRD_THFILE "vtimes.dat" /* times for velocities */
#define GGRD_DFILE "vdepth.dat" /* depth layer file */
+
+#define __READ_GGRD_HEADER__
+
+#endif
Modified: mc/1D/hc/trunk/ggrd_grdtrack_util.h
===================================================================
--- mc/1D/hc/trunk/ggrd_grdtrack_util.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/ggrd_grdtrack_util.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -10,7 +10,10 @@
#include <stdio.h>
#include <stdlib.h>
+#ifndef __GGRD_READ_GMT__
#include "gmt.h"
+#define __GGRD_READ_GMT__
+#endif
#include "ggrd.h"
/*
Modified: mc/1D/hc/trunk/ggrd_readgrds.c
===================================================================
--- mc/1D/hc/trunk/ggrd_readgrds.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/ggrd_readgrds.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -284,8 +284,8 @@
if(HC_DIFFERENT(minphi,0.0) ||
HC_DIFFERENT(mintheta,v->dtheta*0.5) ||
HC_DIFFERENT(maxtheta,GGRD_PI - v->dtheta*0.5) ||
- (HC_DIFFERENT(omaxphi,TWOPI) &&
- HC_DIFFERENT(omaxphi,TWOPI - v->dphi))){
+ (HC_DIFFERENT(omaxphi,GGRD_TWOPI) &&
+ HC_DIFFERENT(omaxphi,GGRD_TWOPI - v->dphi))){
fprintf(stderr,"ggrd_read_vel_grids: expecting 0/360(or %g)/%g/%g range, problem with %s\n",
360-RAD2DEG(v->dphi),-90+RAD2DEG(v->dtheta*0.5),
90-RAD2DEG(v->dtheta*0.5),sname);
@@ -301,7 +301,7 @@
}
//
// check if we should throw away double entries at 0 and 360
- if(!HC_DIFFERENT(omaxphi,TWOPI)){
+ if(!HC_DIFFERENT(omaxphi,GGRD_TWOPI)){
v->n[HC_PHI] = header->nx - 1;
wraparound = TRUE;
}else{
@@ -311,10 +311,10 @@
v->n[HC_THETA] = header->ny;
if(HC_DIFFERENT(v->dtheta,GGRD_PI /
((GGRD_CPREC)(v->n[HC_THETA])))||
- HC_DIFFERENT(v->dphi,TWOPI/
+ HC_DIFFERENT(v->dphi,GGRD_TWOPI/
((GGRD_CPREC)(v->n[HC_PHI])))){
fprintf(stderr,"ggrd_read_vel_grids: spacing error: ndx/dx phi: %g/%g theta: %g/%g\n",
- TWOPI/v->n[HC_PHI],v->dphi,
+ GGRD_TWOPI/v->n[HC_PHI],v->dphi,
GGRD_PI/v->n[HC_THETA],v->dtheta);
return(-3);
}
Modified: mc/1D/hc/trunk/ggrd_velinterpol.c
===================================================================
--- mc/1D/hc/trunk/ggrd_velinterpol.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/ggrd_velinterpol.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -139,12 +139,12 @@
check range
*/
if(xloc[HC_PHI]<0)
- xloc[HC_PHI] += TWOPI;
- if(xloc[HC_PHI]>TWOPI)
- xloc[HC_PHI] -= TWOPI;
+ xloc[HC_PHI] += GGRD_TWOPI;
+ if(xloc[HC_PHI]>GGRD_TWOPI)
+ xloc[HC_PHI] -= GGRD_TWOPI;
if((xloc[HC_R]<0) || (xloc[HC_R]>1) || (xloc[HC_THETA]<0) ||
(xloc[HC_THETA] > GGRD_PI) || (xloc[HC_PHI] < 0) ||
- (xloc[HC_PHI] > TWOPI)){
+ (xloc[HC_PHI] > GGRD_TWOPI)){
fprintf(stderr,"ggrd_find_vel_and_der: coordinate x{%g, %g, %g} (lon: %g, lat: %g, z: %g) out of range\n",
xloc[HC_R],xloc[HC_THETA],xloc[HC_PHI],
PHI2LON(xloc[HC_PHI]),THETA2LAT(xloc[HC_THETA]),
@@ -276,7 +276,7 @@
v->vd.ixtracer[HC_THETA],v->n[HC_THETA],
v->vd.ixtracer[HC_PHI],v->n[HC_PHI]);
for(i=0;i < 3;i++){
- rnet = TWOPI;
+ rnet = GGRD_TWOPI;
fprintf(stderr,"ggrd_velinterpol: dim: %i:",i);
for(j=0;j < v->vd.istencil[i];j++){
fprintf(stderr,"%.5f (%3i) ",grid[i*(v->vd.orderp1)+j],igrid[i][j]);
Modified: mc/1D/hc/trunk/hc.h
===================================================================
--- mc/1D/hc/trunk/hc.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/hc.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -7,13 +7,14 @@
$Id: hc.h,v 1.12 2006/05/01 17:46:18 becker Exp becker $
*/
+#ifndef __HC_READ_HEADER_FILE__
+
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
-#include <malloc.h>
#include "hc_filenames.h"
/*
@@ -41,19 +42,23 @@
#define HC_BIN_PREC float /* precision for binary I/O */
-#ifndef DEFINED_MY_COMPLEX
+
+#ifndef __HC_DEF_COMPLEX__
/* complex variables */
-struct scmplx{ /* single precision */
+struct hc_scmplx{ /* single precision */
float dr,di;
};
-struct dcmplx{ /* double precision */
+struct hc_dcmplx{ /* double precision */
double dr,di;
};
-#define DEFINED_MY_COMPLEX
+#define __HC_DEF_COMPLEX__
#endif
+#ifndef M_PI
+#define M_PI 3.1415926535897932384626433832795
+#endif
-#define HC_PI 3.1415926535897932384626433832795
+#define HC_PI M_PI
/*
@@ -327,10 +332,11 @@
trigonometry stuff
*/
#ifndef SQRT_TWO
-#define SQRT_TWO 1.41421356237309504880168872420970
+#ifdef M_SQRT2
+#define SQRT_TWO M_SQRT2
+#else
+#define SQRT_TWO 1.41421356237309504880168872420970
#endif
-#ifndef M_PI
-#define M_PI 3.1415926535897932384626433832795
#endif
#ifndef PIOVERONEEIGHTY
#define PIOVERONEEIGHTY 0.017453292519943295769236907684886
@@ -388,3 +394,5 @@
*/
#define HC_Z_DEPTH(x) ((HC_RE_KM * (1.0-(x))))
+#define __HC_READ_HEADER_FILE__
+#endif
Modified: mc/1D/hc/trunk/hc_auto_proto.h
===================================================================
--- mc/1D/hc/trunk/hc_auto_proto.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/hc_auto_proto.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -51,7 +51,7 @@
void hc_dvecalloc(double **, int, char *);
void hc_svecalloc(float **, int, char *);
void hc_vecalloc(double **, int, char *);
-void hc_scmplx_vecalloc(struct scmplx **, int, char *);
+void hc_scmplx_vecalloc(struct hc_scmplx **, int, char *);
void hc_svecrealloc(float **, int, char *);
void hc_dvecrealloc(double **, int, char *);
void hc_vecrealloc(double **, int, char *);
Modified: mc/1D/hc/trunk/hc_init.c
===================================================================
--- mc/1D/hc/trunk/hc_init.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/hc_init.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -619,7 +619,8 @@
if(lmax != hc->dens_anom[0].lmax)
HC_ERROR("hc_assign_density","lmax changed in file");
if(hc->rden[hc->inho] <= hc->rden[hc->inho-1]){
- fprintf(stderr,"hc_assign_density: %i %g %g\n",hc->inho,hc->rden[hc->inho] <= hc->rden[hc->inho-1]);
+ fprintf(stderr,"hc_assign_density: %i %g %g\n",hc->inho,
+ hc->rden[hc->inho], hc->rden[hc->inho-1]);
HC_ERROR("hc_assign_density","depth should decrease, radius increase (give z[km])");
}
}
@@ -644,7 +645,7 @@
*/
sh_read_coefficients_from_file((hc->dens_anom+hc->inho),1,
lmax,in,density_in_binary,
- dens_scale,verbose);
+ dens_scale,verbose);
hc->inho++;
} /* end actualy read on */
} /* end while */
Modified: mc/1D/hc/trunk/hc_misc.c
===================================================================
--- mc/1D/hc/trunk/hc_misc.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/hc_misc.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -48,9 +48,9 @@
HC_MEMERROR(message);
}
/* single prec complex vector allocation */
-void hc_scmplx_vecalloc(struct scmplx **x,int n,char *message)
+void hc_scmplx_vecalloc(struct hc_scmplx **x,int n,char *message)
{
- *x = (struct scmplx *)malloc(sizeof(struct scmplx)*(size_t)n);
+ *x = (struct hc_scmplx *)malloc(sizeof(struct hc_scmplx)*(size_t)n);
if(! (*x))
HC_MEMERROR(message);
}
Modified: mc/1D/hc/trunk/make_tar
===================================================================
--- mc/1D/hc/trunk/make_tar 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/make_tar 2007-08-28 22:52:45 UTC (rev 7900)
@@ -1,5 +1,22 @@
#!/bin/bash
-cd ..
-tar --create --gzip --verbose --file $HOME/tmp/hc.tgz \
- hc/*.c hc/*.F hc/*.h hc/Makefile hc/bench/ hc/prem/ hc/RCS/
+ver=0.1
+date=`date '+%m-%d-%y'`
+
+rm -rf $HOME/tmp/hc
+mkdir $HOME/tmp/hc
+mkdir $HOME/tmp/hc/example_data
+mkdir $HOME/tmp/hc/prem/
+
+cp *.c *.h Makefile README.TXT INSTALLATION.TXT calc_vel_and_plot \
+ $HOME/tmp/hc
+cp example_data/* $HOME/tmp/hc/example_data/
+cp prem/prem* $HOME/tmp/hc/prem
+
+
+cd $HOME/tmp/
+
+tar --create --gzip --verbose --file $HOME/tmp/hc-$ver.$date.tgz hc/
+
+rm -r hc/
+
cd -
Modified: mc/1D/hc/trunk/prem.h
===================================================================
--- mc/1D/hc/trunk/prem.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/prem.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -6,14 +6,14 @@
*/
+
+#ifndef __READ_PREM_HEADER__
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <string.h>
-#ifndef __READ_PREM_HEADER__
-
#define PREM_F_STRING "%lf"
/* default number of layers */
@@ -25,9 +25,11 @@
#ifndef hc_boolean
#define hc_boolean unsigned short
#endif
+
#ifndef TRUE
#define TRUE 1
#endif
+
#ifndef FALSE
#define FALSE 0
#endif
@@ -55,6 +57,8 @@
double r[PREM_N]; /* non-dimensionalized version */
double r0; /* surface r in meters */
+ char model_filename[2000]; /* model file name */
+
hc_boolean init;
};
/*
Modified: mc/1D/hc/trunk/prem_util.c
===================================================================
--- mc/1D/hc/trunk/prem_util.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/prem_util.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -238,6 +238,8 @@
int i,rcnt;
FILE *in;
rcnt = 0;
+ sprintf(prem->model_filename,filename);
+
in=fopen(filename,"r");
if(!in){
fprintf(stderr,"prem_read_model: error: can't open model file %s\n",filename);
Modified: mc/1D/hc/trunk/rick_sh_c.c
===================================================================
--- mc/1D/hc/trunk/rick_sh_c.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/rick_sh_c.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -733,7 +733,7 @@
//
// for coordinate computations
//
- rick->dphi = TWOPI / (SH_RICK_PREC)(rick->nlon);
+ rick->dphi = RICK_TWOPI / (SH_RICK_PREC)(rick->nlon);
rick->nlonm1 = rick->nlon - 1;
//
// size of tighly packed arrays with l,m indices
Modified: mc/1D/hc/trunk/sh.h
===================================================================
--- mc/1D/hc/trunk/sh.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/sh.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -1,3 +1,5 @@
+#ifndef __SH_HEADER_READ__
+
#ifdef HC_USE_HEALPIX
/*
load definitions for complex variable structures, Healpix structure
@@ -150,3 +152,5 @@
*/
#define LM_INDEX(l,m,a_or_b) ((((l)+1)*(l)/2+(m))*2+(a_or_b))
+#define __SH_HEADER_READ__
+#endif
Modified: mc/1D/hc/trunk/sh_rick.h
===================================================================
--- mc/1D/hc/trunk/sh_rick.h 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/sh_rick.h 2007-08-28 22:52:45 UTC (rev 7900)
@@ -6,15 +6,21 @@
*/
+#ifndef __READ_RICK_SH_HEADER__
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
-#ifndef TWOPI
-#define TWOPI 6.283185307179586476925286766559005768394
+#ifndef RICK_TWOPI
+#define RICK_TWOPI 6.283185307179586476925286766559005768394
#endif
+#ifdef M_PI
+#define RICK_PI M_PI
+#else
#define RICK_PI 3.1415926535897932384626433832795
+#endif
#define SH_RICK_TWO_SQRT_PI 3.5449077018110320545963349666823 /* sqrt(4 pi) */
@@ -130,3 +136,6 @@
extern void rick_f90_ab2cs( SH_RICK_PREC *, int *);
extern void rick_f90_realft(SH_RICK_PREC *,int *,int *);
extern void rick_f90_four1(SH_RICK_PREC *,int *,int *);
+
+#define __READ_RICK_SH_HEADER__
+#endif
Modified: mc/1D/hc/trunk/sh_syn.c
===================================================================
--- mc/1D/hc/trunk/sh_syn.c 2007-08-28 01:10:18 UTC (rev 7899)
+++ mc/1D/hc/trunk/sh_syn.c 2007-08-28 22:52:45 UTC (rev 7900)
@@ -86,7 +86,7 @@
fprintf(stderr,"sh_syn: using regular spaced grid with %g deg spacing\n",dphi);
/* */
dphi = DEG2RAD(dphi);
- nphi = (TWOPI-dphi)/dphi + 1;
+ nphi = (RICK_TWOPI-dphi)/dphi + 1;
ntheta = nphi/2;
npoints = nphi * ntheta;
/* */
More information about the cig-commits
mailing list