[GRASS-SVN] r38061 - in grass/trunk: db/db.columns db/db.connect db/db.copy db/db.createdb db/db.databases db/db.describe db/db.drivers db/db.dropdb db/db.droptable db/db.execute db/db.login db/db.select db/db.tables display/d.barscale display/d.colorlist display/d.colors display/d.colortable display/d.erase display/d.extract display/d.font display/d.fontlist display/d.geodesic display/d.graph display/d.grid display/d.his display/d.histogram display/d.info display/d.labels display/d.legend display/d.linegraph display/d.measure display/d.nviz display/d.path display/d.profile display/d.rast display/d.rast.arrow display/d.rast.num display/d.rgb display/d.rhumbline display/d.text display/d.thematic.area display/d.title display/d.vect display/d.vect.chart display/d.what.rast display/d.what.vect display/d.where display/d.zoom doc/raster/r.example doc/vector/v.example general/g.access general/g.cairocomp general/g.copy general/g.dirseps general/g.filename general/g.findetc general/g.findfile general/g.gisenv general/g.gui general/g.list general/g.mapset general/g.mapsets general/g.message general/g.mkfontcap general/g.mlist general/g.mremove general/g.parser general/g.pnmcomp general/g.proj general/g.region general/g.remove general/g.rename general/g.setproj general/g.tempfile general/g.transform general/g.version imagery/i.albedo imagery/i.biomass imagery/i.cca imagery/i.class imagery/i.cluster imagery/i.eb.eta imagery/i.eb.evapfr imagery/i.eb.h_SEBAL01 imagery/i.eb.soilheatflux imagery/i.emissivity imagery/i.evapo.time_integration imagery/i.fft imagery/i.gensig imagery/i.gensigset imagery/i.group imagery/i.his.rgb imagery/i.ifft imagery/i.latlong imagery/i.maxlik imagery/i.modis.qc imagery/i.pca imagery/i.points imagery/i.rectify imagery/i.rgb.his imagery/i.smap imagery/i.sunhours imagery/i.target imagery/i.vi imagery/i.vpoints imagery/i.zc include lib/gis misc/m.cogo ps/ps.map raster/r.basins.fill raster/r.bitpattern raster/r.buffer raster/r.carve raster/r.category raster/r.circle raster/r.clump raster/r.coin raster/r.colors raster/r.colors.out raster/r.composite raster/r.compress raster/r.contour raster/r.cost raster/r.covar raster/r.cross raster/r.describe raster/r.digit raster/r.distance raster/r.drain raster/r.external raster/r.external.out raster/r.fill.dir raster/r.flow raster/r.grow raster/r.grow.distance raster/r.gwflow raster/r.his raster/r.horizon raster/r.in.arc raster/r.in.ascii raster/r.in.bin raster/r.in.gdal raster/r.in.gridatb raster/r.in.mat raster/r.in.poly raster/r.in.xyz raster/r.info raster/r.kappa raster/r.lake raster/r.le/r.le.patch raster/r.le/r.le.pixel raster/r.le/r.le.setup raster/r.le/r.le.trace raster/r.li/r.li.cwed raster/r.li/r.li.dominance raster/r.li/r.li.edgedensity raster/r.li/r.li.mpa raster/r.li/r.li.mps raster/r.li/r.li.padcv raster/r.li/r.li.padrange raster/r.li/r.li.padsd raster/r.li/r.li.patchdensity raster/r.li/r.li.patchnum raster/r.li/r.li.richness raster/r.li/r.li.shannon raster/r.li/r.li.shape raster/r.li/r.li.simpson raster/r.los raster/r.mapcalc raster/r.mfilter raster/r.mode raster/r.neighbors raster/r.null raster/r.out.arc raster/r.out.ascii raster/r.out.bin raster/r.out.gdal raster/r.out.gridatb raster/r.out.mat raster/r.out.mpeg raster/r.out.png raster/r.out.pov raster/r.out.ppm raster/r.out.ppm3 raster/r.out.tiff raster/r.out.vrml raster/r.out.vtk raster/r.param.scale raster/r.patch raster/r.profile raster/r.proj raster/r.quant raster/r.quantile raster/r.random raster/r.random.cells raster/r.random.surface raster/r.reclass raster/r.recode raster/r.region raster/r.report raster/r.resamp.interp raster/r.resamp.rst raster/r.resamp.stats raster/r.resample raster/r.rescale raster/r.rescale.eq raster/r.ros raster/r.series raster/r.slope.aspect raster/r.spread raster/r.spreadpath raster/r.statistics raster/r.statistics2 raster/r.statistics3 raster/r.stats raster/r.sun raster/r.sun2 raster/r.sunmask raster/r.support raster/r.support.stats raster/r.surf.area raster/r.surf.contour raster/r.surf.fractal raster/r.surf.gauss raster/r.surf.idw raster/r.surf.idw2 raster/r.surf.random raster/r.texture raster/r.thin raster/r.timestamp raster/r.to.rast3 raster/r.to.rast3elev raster/r.to.vect raster/r.topidx raster/r.topmodel raster/r.transect raster/r.univar raster/r.uslek raster/r.usler raster/r.volume raster/r.walk raster/r.water.outlet raster/r.watershed/front raster/r.what raster/r.what.color raster/simwe/r.sim.sediment raster/simwe/r.sim.water raster3d/base raster3d/r3.cross.rast raster3d/r3.gwflow raster3d/r3.in.ascii raster3d/r3.in.v5d raster3d/r3.info raster3d/r3.mkdspf raster3d/r3.out.ascii raster3d/r3.out.v5d raster3d/r3.out.vtk raster3d/r3.stats raster3d/r3.timestamp raster3d/r3.to.rast sites/s.in.ascii sites/s.out.ascii swig/perl/R_slope_aspect/r_slope_aspect vector/lidar/v.lidar.correction vector/lidar/v.lidar.edgedetection vector/lidar/v.lidar.growing vector/lidar/v.outlier vector/lidar/v.surf.bspline vector/v.buffer vector/v.build vector/v.build.polylines vector/v.category vector/v.class vector/v.clean vector/v.clean/test vector/v.convert vector/v.db.connect vector/v.db.select vector/v.delaunay vector/v.distance vector/v.drape vector/v.edit vector/v.external vector/v.extract vector/v.extrude vector/v.generalize vector/v.hull vector/v.in.ascii vector/v.in.db vector/v.in.dwg vector/v.in.dxf vector/v.in.ogr vector/v.in.region vector/v.in.sites vector/v.info vector/v.kcv vector/v.kernel vector/v.label vector/v.label.sa vector/v.lrs/v.lrs.create vector/v.lrs/v.lrs.label vector/v.lrs/v.lrs.segment vector/v.lrs/v.lrs.where vector/v.mkgrid vector/v.neighbors vector/v.net vector/v.net.alloc vector/v.net.iso vector/v.net.path vector/v.net.salesman vector/v.net.steiner vector/v.net.visibility vector/v.normal vector/v.out.ascii vector/v.out.dxf vector/v.out.ogr vector/v.out.pov vector/v.out.svg vector/v.out.vtk vector/v.overlay vector/v.parallel vector/v.patch vector/v.perturb vector/v.proj vector/v.qcount vector/v.random vector/v.reclass vector/v.sample vector/v.segment vector/v.select vector/v.split vector/v.support vector/v.surf.idw vector/v.surf.rst vector/v.to.3d vector/v.to.db vector/v.to.points vector/v.to.rast vector/v.to.rast3 vector/v.transform vector/v.type vector/v.univar vector/v.vol.rst vector/v.voronoi vector/v.what vector/v.what.rast visualization/nviz/src visualization/nviz2/cmd visualization/ximgview

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Jun 24 12:57:00 EDT 2009


Author: martinl
Date: 2009-06-24 12:56:59 -0400 (Wed, 24 Jun 2009)
New Revision: 38061

Modified:
   grass/trunk/db/db.columns/main.c
   grass/trunk/db/db.connect/main.c
   grass/trunk/db/db.copy/main.c
   grass/trunk/db/db.createdb/main.c
   grass/trunk/db/db.databases/main.c
   grass/trunk/db/db.describe/main.c
   grass/trunk/db/db.drivers/main.c
   grass/trunk/db/db.dropdb/main.c
   grass/trunk/db/db.droptable/main.c
   grass/trunk/db/db.execute/main.c
   grass/trunk/db/db.login/main.c
   grass/trunk/db/db.select/main.c
   grass/trunk/db/db.tables/main.c
   grass/trunk/display/d.barscale/main.c
   grass/trunk/display/d.colorlist/main.c
   grass/trunk/display/d.colors/main.c
   grass/trunk/display/d.colortable/main.c
   grass/trunk/display/d.erase/main.c
   grass/trunk/display/d.extract/main.c
   grass/trunk/display/d.font/main.c
   grass/trunk/display/d.fontlist/main.c
   grass/trunk/display/d.geodesic/main.c
   grass/trunk/display/d.graph/main.c
   grass/trunk/display/d.grid/main.c
   grass/trunk/display/d.his/main.c
   grass/trunk/display/d.histogram/main.c
   grass/trunk/display/d.info/main.c
   grass/trunk/display/d.labels/main.c
   grass/trunk/display/d.legend/main.c
   grass/trunk/display/d.linegraph/main.c
   grass/trunk/display/d.measure/main.c
   grass/trunk/display/d.nviz/main.c
   grass/trunk/display/d.path/main.c
   grass/trunk/display/d.profile/main.c
   grass/trunk/display/d.rast.arrow/main.c
   grass/trunk/display/d.rast.num/main.c
   grass/trunk/display/d.rast/main.c
   grass/trunk/display/d.rgb/main.c
   grass/trunk/display/d.rhumbline/main.c
   grass/trunk/display/d.text/main.c
   grass/trunk/display/d.thematic.area/main.c
   grass/trunk/display/d.title/main.c
   grass/trunk/display/d.vect.chart/main.c
   grass/trunk/display/d.vect/main.c
   grass/trunk/display/d.what.rast/main.c
   grass/trunk/display/d.what.vect/main.c
   grass/trunk/display/d.where/main.c
   grass/trunk/display/d.zoom/main.c
   grass/trunk/doc/raster/r.example/main.c
   grass/trunk/doc/vector/v.example/main.c
   grass/trunk/general/g.access/main.c
   grass/trunk/general/g.cairocomp/main.c
   grass/trunk/general/g.copy/main.c
   grass/trunk/general/g.dirseps/main.c
   grass/trunk/general/g.filename/main.c
   grass/trunk/general/g.findetc/main.c
   grass/trunk/general/g.findfile/main.c
   grass/trunk/general/g.gisenv/main.c
   grass/trunk/general/g.gui/main.c
   grass/trunk/general/g.list/main.c
   grass/trunk/general/g.mapset/main.c
   grass/trunk/general/g.mapsets/main.c
   grass/trunk/general/g.message/main.c
   grass/trunk/general/g.mkfontcap/main.c
   grass/trunk/general/g.mlist/main.c
   grass/trunk/general/g.mremove/main.c
   grass/trunk/general/g.parser/main.c
   grass/trunk/general/g.pnmcomp/main.c
   grass/trunk/general/g.proj/main.c
   grass/trunk/general/g.region/main.c
   grass/trunk/general/g.remove/main.c
   grass/trunk/general/g.rename/main.c
   grass/trunk/general/g.setproj/main.c
   grass/trunk/general/g.tempfile/main.c
   grass/trunk/general/g.transform/main.c
   grass/trunk/general/g.version/main.c
   grass/trunk/imagery/i.albedo/main.c
   grass/trunk/imagery/i.biomass/main.c
   grass/trunk/imagery/i.cca/main.c
   grass/trunk/imagery/i.class/main.c
   grass/trunk/imagery/i.cluster/main.c
   grass/trunk/imagery/i.eb.eta/main.c
   grass/trunk/imagery/i.eb.evapfr/main.c
   grass/trunk/imagery/i.eb.h_SEBAL01/main.c
   grass/trunk/imagery/i.eb.soilheatflux/main.c
   grass/trunk/imagery/i.emissivity/main.c
   grass/trunk/imagery/i.evapo.time_integration/main.c
   grass/trunk/imagery/i.fft/main.c
   grass/trunk/imagery/i.gensig/main.c
   grass/trunk/imagery/i.gensigset/main.c
   grass/trunk/imagery/i.group/main.c
   grass/trunk/imagery/i.his.rgb/main.c
   grass/trunk/imagery/i.ifft/main.c
   grass/trunk/imagery/i.latlong/main.c
   grass/trunk/imagery/i.maxlik/main.c
   grass/trunk/imagery/i.modis.qc/main.c
   grass/trunk/imagery/i.pca/main.c
   grass/trunk/imagery/i.points/main.c
   grass/trunk/imagery/i.rectify/main.c
   grass/trunk/imagery/i.rgb.his/main.c
   grass/trunk/imagery/i.smap/main.c
   grass/trunk/imagery/i.sunhours/main.c
   grass/trunk/imagery/i.target/main.c
   grass/trunk/imagery/i.vi/main.c
   grass/trunk/imagery/i.vpoints/main.c
   grass/trunk/imagery/i.zc/main.c
   grass/trunk/include/gis.h
   grass/trunk/include/gisdefs.h
   grass/trunk/lib/gis/parser.c
   grass/trunk/misc/m.cogo/main.c
   grass/trunk/ps/ps.map/main.c
   grass/trunk/raster/r.basins.fill/main.c
   grass/trunk/raster/r.bitpattern/main.c
   grass/trunk/raster/r.buffer/main.c
   grass/trunk/raster/r.carve/main.c
   grass/trunk/raster/r.category/main.c
   grass/trunk/raster/r.circle/main.c
   grass/trunk/raster/r.clump/main.c
   grass/trunk/raster/r.coin/main.c
   grass/trunk/raster/r.colors.out/main.c
   grass/trunk/raster/r.colors/main.c
   grass/trunk/raster/r.composite/main.c
   grass/trunk/raster/r.compress/main.c
   grass/trunk/raster/r.contour/main.c
   grass/trunk/raster/r.cost/main.c
   grass/trunk/raster/r.covar/main.c
   grass/trunk/raster/r.cross/main.c
   grass/trunk/raster/r.describe/main.c
   grass/trunk/raster/r.digit/main.c
   grass/trunk/raster/r.distance/main.c
   grass/trunk/raster/r.drain/main.c
   grass/trunk/raster/r.external.out/main.c
   grass/trunk/raster/r.external/main.c
   grass/trunk/raster/r.fill.dir/main.c
   grass/trunk/raster/r.flow/main.c
   grass/trunk/raster/r.grow.distance/main.c
   grass/trunk/raster/r.grow/main.c
   grass/trunk/raster/r.gwflow/main.c
   grass/trunk/raster/r.his/main.c
   grass/trunk/raster/r.horizon/main.c
   grass/trunk/raster/r.in.arc/main.c
   grass/trunk/raster/r.in.ascii/main.c
   grass/trunk/raster/r.in.bin/main.c
   grass/trunk/raster/r.in.gdal/main.c
   grass/trunk/raster/r.in.gridatb/main.c
   grass/trunk/raster/r.in.mat/main.c
   grass/trunk/raster/r.in.poly/main.c
   grass/trunk/raster/r.in.xyz/main.c
   grass/trunk/raster/r.info/main.c
   grass/trunk/raster/r.kappa/main.c
   grass/trunk/raster/r.lake/main.c
   grass/trunk/raster/r.le/r.le.patch/main.c
   grass/trunk/raster/r.le/r.le.pixel/main.c
   grass/trunk/raster/r.le/r.le.setup/main.c
   grass/trunk/raster/r.le/r.le.trace/main.c
   grass/trunk/raster/r.li/r.li.cwed/cwed.c
   grass/trunk/raster/r.li/r.li.dominance/dominance.c
   grass/trunk/raster/r.li/r.li.edgedensity/edgedensity.c
   grass/trunk/raster/r.li/r.li.mpa/mpa.c
   grass/trunk/raster/r.li/r.li.mps/mps.c
   grass/trunk/raster/r.li/r.li.padcv/padcv.c
   grass/trunk/raster/r.li/r.li.padrange/padrange.c
   grass/trunk/raster/r.li/r.li.padsd/padsd.c
   grass/trunk/raster/r.li/r.li.patchdensity/main.c
   grass/trunk/raster/r.li/r.li.patchnum/main.c
   grass/trunk/raster/r.li/r.li.richness/richness.c
   grass/trunk/raster/r.li/r.li.shannon/shannon.c
   grass/trunk/raster/r.li/r.li.shape/main.c
   grass/trunk/raster/r.li/r.li.simpson/simpson.c
   grass/trunk/raster/r.los/main.c
   grass/trunk/raster/r.mapcalc/main.c
   grass/trunk/raster/r.mfilter/main.c
   grass/trunk/raster/r.mode/main.c
   grass/trunk/raster/r.neighbors/main.c
   grass/trunk/raster/r.null/main.c
   grass/trunk/raster/r.out.arc/main.c
   grass/trunk/raster/r.out.ascii/main.c
   grass/trunk/raster/r.out.bin/main.c
   grass/trunk/raster/r.out.gdal/main.c
   grass/trunk/raster/r.out.gridatb/main.c
   grass/trunk/raster/r.out.mat/main.c
   grass/trunk/raster/r.out.mpeg/main.c
   grass/trunk/raster/r.out.png/main.c
   grass/trunk/raster/r.out.pov/main.c
   grass/trunk/raster/r.out.ppm/main.c
   grass/trunk/raster/r.out.ppm3/main.c
   grass/trunk/raster/r.out.tiff/main.c
   grass/trunk/raster/r.out.vrml/main.c
   grass/trunk/raster/r.out.vtk/main.c
   grass/trunk/raster/r.param.scale/interface.c
   grass/trunk/raster/r.patch/main.c
   grass/trunk/raster/r.profile/main.c
   grass/trunk/raster/r.proj/main.c
   grass/trunk/raster/r.quant/main.c
   grass/trunk/raster/r.quantile/main.c
   grass/trunk/raster/r.random.cells/main.c
   grass/trunk/raster/r.random.surface/main.c
   grass/trunk/raster/r.random/main.c
   grass/trunk/raster/r.reclass/main.c
   grass/trunk/raster/r.recode/main.c
   grass/trunk/raster/r.region/main.c
   grass/trunk/raster/r.report/main.c
   grass/trunk/raster/r.resamp.interp/main.c
   grass/trunk/raster/r.resamp.rst/main.c
   grass/trunk/raster/r.resamp.stats/main.c
   grass/trunk/raster/r.resample/main.c
   grass/trunk/raster/r.rescale.eq/main.c
   grass/trunk/raster/r.rescale/main.c
   grass/trunk/raster/r.ros/main.c
   grass/trunk/raster/r.series/main.c
   grass/trunk/raster/r.slope.aspect/main.c
   grass/trunk/raster/r.spread/main.c
   grass/trunk/raster/r.spreadpath/main.c
   grass/trunk/raster/r.statistics/main.c
   grass/trunk/raster/r.statistics2/main.c
   grass/trunk/raster/r.statistics3/main.c
   grass/trunk/raster/r.stats/main.c
   grass/trunk/raster/r.sun/main.c
   grass/trunk/raster/r.sun2/main.c
   grass/trunk/raster/r.sunmask/main.c
   grass/trunk/raster/r.support.stats/main.c
   grass/trunk/raster/r.support/main.c
   grass/trunk/raster/r.surf.area/main.c
   grass/trunk/raster/r.surf.contour/main.c
   grass/trunk/raster/r.surf.fractal/main.c
   grass/trunk/raster/r.surf.gauss/main.c
   grass/trunk/raster/r.surf.idw/main.c
   grass/trunk/raster/r.surf.idw2/main.c
   grass/trunk/raster/r.surf.random/main.c
   grass/trunk/raster/r.texture/main.c
   grass/trunk/raster/r.thin/main.c
   grass/trunk/raster/r.timestamp/main.c
   grass/trunk/raster/r.to.rast3/main.c
   grass/trunk/raster/r.to.rast3elev/main.c
   grass/trunk/raster/r.to.vect/main.c
   grass/trunk/raster/r.topidx/main.c
   grass/trunk/raster/r.topmodel/main.c
   grass/trunk/raster/r.transect/main.c
   grass/trunk/raster/r.univar/r.univar_main.c
   grass/trunk/raster/r.univar/r3.univar_main.c
   grass/trunk/raster/r.uslek/main.c
   grass/trunk/raster/r.usler/main.c
   grass/trunk/raster/r.volume/main.c
   grass/trunk/raster/r.walk/main.c
   grass/trunk/raster/r.water.outlet/main.c
   grass/trunk/raster/r.watershed/front/main.c
   grass/trunk/raster/r.what.color/main.c
   grass/trunk/raster/r.what/main.c
   grass/trunk/raster/simwe/r.sim.sediment/main.c
   grass/trunk/raster/simwe/r.sim.water/main.c
   grass/trunk/raster3d/base/r3.mask.main.c
   grass/trunk/raster3d/base/r3.null.main.c
   grass/trunk/raster3d/r3.cross.rast/main.c
   grass/trunk/raster3d/r3.gwflow/main.c
   grass/trunk/raster3d/r3.in.ascii/main.c
   grass/trunk/raster3d/r3.in.v5d/main.c
   grass/trunk/raster3d/r3.info/r3.info.main.c
   grass/trunk/raster3d/r3.mkdspf/main.c
   grass/trunk/raster3d/r3.out.ascii/main.c
   grass/trunk/raster3d/r3.out.v5d/main.c
   grass/trunk/raster3d/r3.out.vtk/main.c
   grass/trunk/raster3d/r3.stats/main.c
   grass/trunk/raster3d/r3.timestamp/r3.timestamp.main.c
   grass/trunk/raster3d/r3.to.rast/main.c
   grass/trunk/sites/s.in.ascii/main.c
   grass/trunk/sites/s.out.ascii/main.c
   grass/trunk/swig/perl/R_slope_aspect/r_slope_aspect/r_slope_aspect.c
   grass/trunk/vector/lidar/v.lidar.correction/main.c
   grass/trunk/vector/lidar/v.lidar.edgedetection/main.c
   grass/trunk/vector/lidar/v.lidar.growing/main.c
   grass/trunk/vector/lidar/v.outlier/main.c
   grass/trunk/vector/lidar/v.surf.bspline/main.c
   grass/trunk/vector/v.buffer/main.c
   grass/trunk/vector/v.build.polylines/main.c
   grass/trunk/vector/v.build/main.c
   grass/trunk/vector/v.category/main.c
   grass/trunk/vector/v.class/main.c
   grass/trunk/vector/v.clean/main.c
   grass/trunk/vector/v.clean/test/topocheck.c
   grass/trunk/vector/v.convert/main.c
   grass/trunk/vector/v.db.connect/main.c
   grass/trunk/vector/v.db.select/main.c
   grass/trunk/vector/v.delaunay/main.c
   grass/trunk/vector/v.distance/main.c
   grass/trunk/vector/v.drape/main.c
   grass/trunk/vector/v.edit/main.c
   grass/trunk/vector/v.external/main.c
   grass/trunk/vector/v.extract/main.c
   grass/trunk/vector/v.extrude/main.c
   grass/trunk/vector/v.generalize/main.c
   grass/trunk/vector/v.hull/main.c
   grass/trunk/vector/v.in.ascii/main.c
   grass/trunk/vector/v.in.db/main.c
   grass/trunk/vector/v.in.dwg/main.c
   grass/trunk/vector/v.in.dxf/main.c
   grass/trunk/vector/v.in.ogr/main.c
   grass/trunk/vector/v.in.region/main.c
   grass/trunk/vector/v.in.sites/main.c
   grass/trunk/vector/v.info/main.c
   grass/trunk/vector/v.kcv/main.c
   grass/trunk/vector/v.kernel/main.c
   grass/trunk/vector/v.label.sa/main.c
   grass/trunk/vector/v.label/main.c
   grass/trunk/vector/v.lrs/v.lrs.create/main.c
   grass/trunk/vector/v.lrs/v.lrs.label/main.c
   grass/trunk/vector/v.lrs/v.lrs.segment/main.c
   grass/trunk/vector/v.lrs/v.lrs.where/main.c
   grass/trunk/vector/v.mkgrid/main.c
   grass/trunk/vector/v.neighbors/main.c
   grass/trunk/vector/v.net.alloc/main.c
   grass/trunk/vector/v.net.iso/main.c
   grass/trunk/vector/v.net.path/main.c
   grass/trunk/vector/v.net.salesman/main.c
   grass/trunk/vector/v.net.steiner/main.c
   grass/trunk/vector/v.net.visibility/main.c
   grass/trunk/vector/v.net/main.c
   grass/trunk/vector/v.normal/main.c
   grass/trunk/vector/v.out.ascii/main.c
   grass/trunk/vector/v.out.dxf/main.c
   grass/trunk/vector/v.out.ogr/main.c
   grass/trunk/vector/v.out.pov/main.c
   grass/trunk/vector/v.out.svg/main.c
   grass/trunk/vector/v.out.vtk/main.c
   grass/trunk/vector/v.overlay/main.c
   grass/trunk/vector/v.parallel/main.c
   grass/trunk/vector/v.patch/main.c
   grass/trunk/vector/v.perturb/main.c
   grass/trunk/vector/v.proj/main.c
   grass/trunk/vector/v.qcount/main.c
   grass/trunk/vector/v.random/main.c
   grass/trunk/vector/v.reclass/main.c
   grass/trunk/vector/v.sample/main.c
   grass/trunk/vector/v.segment/main.c
   grass/trunk/vector/v.select/main.c
   grass/trunk/vector/v.split/main.c
   grass/trunk/vector/v.support/main.c
   grass/trunk/vector/v.surf.idw/main.c
   grass/trunk/vector/v.surf.rst/main.c
   grass/trunk/vector/v.to.3d/main.c
   grass/trunk/vector/v.to.db/main.c
   grass/trunk/vector/v.to.points/main.c
   grass/trunk/vector/v.to.rast/main.c
   grass/trunk/vector/v.to.rast3/main.c
   grass/trunk/vector/v.transform/main.c
   grass/trunk/vector/v.type/main.c
   grass/trunk/vector/v.univar/main.c
   grass/trunk/vector/v.vol.rst/main.c
   grass/trunk/vector/v.voronoi/main.c
   grass/trunk/vector/v.what.rast/main.c
   grass/trunk/vector/v.what/main.c
   grass/trunk/visualization/nviz/src/nviz_init.c
   grass/trunk/visualization/nviz2/cmd/main.c
   grass/trunk/visualization/ximgview/main.c
Log:
use array for keywords (to avoid duplicate locales)
G_add_keyword() and G_set_keywords() added to gislib
modules updated


Modified: grass/trunk/db/db.columns/main.c
===================================================================
--- grass/trunk/db/db.columns/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.columns/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -89,7 +89,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("List all columns for a given table.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.connect/main.c
===================================================================
--- grass/trunk/db/db.connect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.connect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description =
 	_("Prints/sets general DB connection for current mapset and exits.");
 

Modified: grass/trunk/db/db.copy/main.c
===================================================================
--- grass/trunk/db/db.copy/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.copy/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -31,7 +31,9 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
+    G_add_keyword(_("SQL"));
     module->label = _("Copy a table.");
     module->description =
 	_("Either 'from_table' (optionally with 'where') can be used "

Modified: grass/trunk/db/db.createdb/main.c
===================================================================
--- grass/trunk/db/db.createdb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.createdb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -68,7 +68,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("SQL"));
     module->description = _("Creates an empty database.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.databases/main.c
===================================================================
--- grass/trunk/db/db.databases/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.databases/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -87,7 +87,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("SQL"));
     module->description =
 	_("List all databases for a given driver and location.");
 

Modified: grass/trunk/db/db.describe/main.c
===================================================================
--- grass/trunk/db/db.describe/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.describe/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -122,7 +122,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("Describes a table in detail.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.drivers/main.c
===================================================================
--- grass/trunk/db/db.drivers/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.drivers/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -71,7 +71,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("List all database drivers.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.dropdb/main.c
===================================================================
--- grass/trunk/db/db.dropdb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.dropdb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -68,7 +68,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("SQL"));
     module->description = _("Removes a database.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.droptable/main.c
===================================================================
--- grass/trunk/db/db.droptable/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.droptable/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("SQL"));
     module->description = _("Removes a table from database.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.execute/main.c
===================================================================
--- grass/trunk/db/db.execute/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.execute/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -103,7 +103,9 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
+    G_add_keyword(_("SQL"));
     module->description = _("Executes any SQL statement.");
 
     input = G_define_standard_option(G_OPT_F_INPUT);

Modified: grass/trunk/db/db.login/main.c
===================================================================
--- grass/trunk/db/db.login/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.login/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("database, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("SQL"));
     module->description = _("Sets user/password for driver/database.");
 
     driver = G_define_standard_option(G_OPT_DB_DRIVER);

Modified: grass/trunk/db/db.select/main.c
===================================================================
--- grass/trunk/db/db.select/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.select/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -232,7 +232,9 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table, SQL");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
+    G_add_keyword(_("SQL"));
     module->description = _("Selects data from table.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/db/db.tables/main.c
===================================================================
--- grass/trunk/db/db.tables/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/db/db.tables/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -92,7 +92,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("database, attribute table");
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("Lists all tables for a given database.");
 
     if (G_parser(argc, argv))

Modified: grass/trunk/display/d.barscale/main.c
===================================================================
--- grass/trunk/display/d.barscale/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.barscale/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, cartography");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
     module->description = _("Displays a barscale on the graphics monitor.");
 
     feet = G_define_flag();

Modified: grass/trunk/display/d.colorlist/main.c
===================================================================
--- grass/trunk/display/d.colorlist/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.colorlist/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -32,7 +32,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	"Output a list of all available display colors with a configurable "
 	"separator (default is comma).";

Modified: grass/trunk/display/d.colors/main.c
===================================================================
--- grass/trunk/display/d.colors/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.colors/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	"Allows the user to interactively change the color table "
 	"of a raster map layer displayed on the graphics monitor.";

Modified: grass/trunk/display/d.colortable/main.c
===================================================================
--- grass/trunk/display/d.colortable/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.colortable/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, setup");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("setup"));
     module->description =
 	_("Displays the color table associated with a raster map layer.");
 

Modified: grass/trunk/display/d.erase/main.c
===================================================================
--- grass/trunk/display/d.erase/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.erase/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -26,7 +26,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Erase the contents of the active display frame with user defined color");
 

Modified: grass/trunk/display/d.extract/main.c
===================================================================
--- grass/trunk/display/d.extract/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.extract/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -46,7 +46,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Selects and extracts vectors with mouse into new vector map.");
 

Modified: grass/trunk/display/d.font/main.c
===================================================================
--- grass/trunk/display/d.font/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.font/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Selects the font in which text will be displayed "
 	  "on the user's graphics monitor.");

Modified: grass/trunk/display/d.fontlist/main.c
===================================================================
--- grass/trunk/display/d.fontlist/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.fontlist/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description = _("Lists the available fonts.");
 
     flagl = G_define_flag();

Modified: grass/trunk/display/d.geodesic/main.c
===================================================================
--- grass/trunk/display/d.geodesic/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.geodesic/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays a geodesic line, tracing the shortest distance "
 	"between two geographic points along a great circle, in "

Modified: grass/trunk/display/d.graph/main.c
===================================================================
--- grass/trunk/display/d.graph/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.graph/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -54,7 +54,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, cartography");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
     module->description =
 	_("Program for generating and displaying simple graphics on the "
 	  "display monitor.");

Modified: grass/trunk/display/d.grid/main.c
===================================================================
--- grass/trunk/display/d.grid/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.grid/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, cartography");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
     module->description =
 	_("Overlays a user-specified grid "
 	  "in the active display frame on the graphics monitor.");

Modified: grass/trunk/display/d.his/main.c
===================================================================
--- grass/trunk/display/d.his/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.his/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays the result obtained by combining "
 	  "hue, intensity, and saturation (his) values "

Modified: grass/trunk/display/d.histogram/main.c
===================================================================
--- grass/trunk/display/d.histogram/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.histogram/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -81,7 +81,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays a histogram in the form of a pie or bar chart "
 	  "for a user-specified raster map.");

Modified: grass/trunk/display/d.info/main.c
===================================================================
--- grass/trunk/display/d.info/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.info/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -28,7 +28,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Display information about the active display monitor");
 

Modified: grass/trunk/display/d.labels/main.c
===================================================================
--- grass/trunk/display/d.labels/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.labels/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays text labels (created with v.label) "
 	  "to the active frame on the graphics monitor.");

Modified: grass/trunk/display/d.legend/main.c
===================================================================
--- grass/trunk/display/d.legend/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.legend/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -81,7 +81,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, cartography");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
     module->description =
 	_("Displays a legend for a raster map in the active frame "
 	  "of the graphics monitor.");

Modified: grass/trunk/display/d.linegraph/main.c
===================================================================
--- grass/trunk/display/d.linegraph/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.linegraph/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -116,7 +116,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Generates and displays simple line graphs in the active graphics monitor display frame.");
 

Modified: grass/trunk/display/d.measure/main.c
===================================================================
--- grass/trunk/display/d.measure/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.measure/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Measures the lengths and areas of features drawn "
 	  "by the user in the active display frame on the "

Modified: grass/trunk/display/d.nviz/main.c
===================================================================
--- grass/trunk/display/d.nviz/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.nviz/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -65,7 +65,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description = _("Creates fly-through script to run in NVIZ.");
 
     parm.opt1 = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/display/d.path/main.c
===================================================================
--- grass/trunk/display/d.path/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.path/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, networking");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("networking"));
     module->description =
 	_("Finds shortest path for selected starting and ending node.");
 

Modified: grass/trunk/display/d.profile/main.c
===================================================================
--- grass/trunk/display/d.profile/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.profile/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -187,7 +187,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description = _("Plots profile of a transect.");
 
     /* set up command line */

Modified: grass/trunk/display/d.rast/main.c
===================================================================
--- grass/trunk/display/d.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, raster");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("raster"));
     module->description =
 	_("Displays and overlays raster map layers "
 	  "in the active display frame on the graphics monitor.");

Modified: grass/trunk/display/d.rast.arrow/main.c
===================================================================
--- grass/trunk/display/d.rast.arrow/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.rast.arrow/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -92,7 +92,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Draws arrows representing cell aspect direction "
 	  "for a raster map containing aspect data.");

Modified: grass/trunk/display/d.rast.num/main.c
===================================================================
--- grass/trunk/display/d.rast.num/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.rast.num/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -68,7 +68,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Overlays cell category values on a raster map layer "
 	  "displayed to the graphics monitor.");

Modified: grass/trunk/display/d.rgb/main.c
===================================================================
--- grass/trunk/display/d.rgb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.rgb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays three user-specified raster map layers "
 	  "as red, green, and blue overlays in the active graphics frame.");

Modified: grass/trunk/display/d.rhumbline/main.c
===================================================================
--- grass/trunk/display/d.rhumbline/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.rhumbline/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays the rhumbline joining two longitude/latitude coordinates.");
 

Modified: grass/trunk/display/d.text/main.c
===================================================================
--- grass/trunk/display/d.text/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.text/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -133,7 +133,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Draws text in the active display frame on the graphics monitor using the current font.");
 

Modified: grass/trunk/display/d.thematic.area/main.c
===================================================================
--- grass/trunk/display/d.thematic.area/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.thematic.area/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -73,7 +73,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Displays a thematic vector area map in the active "
 	  "frame on the graphics monitor.");

Modified: grass/trunk/display/d.title/main.c
===================================================================
--- grass/trunk/display/d.title/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.title/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -46,7 +46,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Create a TITLE for a raster map in a form suitable "
 	  "for display with d.text.");

Modified: grass/trunk/display/d.vect/main.c
===================================================================
--- grass/trunk/display/d.vect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.vect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -118,7 +118,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display, vector");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("vector"));
     module->description =
 	_("Displays vector data in the active "
 	  "frame on the graphics monitor.");

Modified: grass/trunk/display/d.vect.chart/main.c
===================================================================
--- grass/trunk/display/d.vect.chart/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.vect.chart/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,8 @@
     };
 
     module = G_define_module();
-    module->keywords = _("display, cartography");
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
     module->description =
 	_("Displays charts of vector data in the active frame "
 	  "on the graphics monitor.");

Modified: grass/trunk/display/d.what.rast/main.c
===================================================================
--- grass/trunk/display/d.what.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.what.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Allows the user to interactively query the category contents "
 	  "of multiple raster map layers at user specified locations "

Modified: grass/trunk/display/d.what.vect/main.c
===================================================================
--- grass/trunk/display/d.what.vect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.what.vect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Allows the user to interactively query a vector map layer "
 	  "at user-selected locations within the current geographic region.");

Modified: grass/trunk/display/d.where/main.c
===================================================================
--- grass/trunk/display/d.where/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.where/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Identifies the geographic coordinates associated with "
 	  "point locations given in display coordinates.");

Modified: grass/trunk/display/d.zoom/main.c
===================================================================
--- grass/trunk/display/d.zoom/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/display/d.zoom/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -58,7 +58,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description =
 	_("Allows the user to change the current geographic "
 	  "region settings interactively, with a mouse.");

Modified: grass/trunk/doc/raster/r.example/main.c
===================================================================
--- grass/trunk/doc/raster/r.example/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/doc/raster/r.example/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -82,7 +82,9 @@
 
     /* initialize module */
     module = G_define_module();
-    module->keywords = _("raster, keyword2, keyword3");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("keyword2"));
+    G_add_keyword(_("keyword3"));
     module->description = _("My first raster module");
 
     /* Define the different options as defined in gis.h */

Modified: grass/trunk/doc/vector/v.example/main.c
===================================================================
--- grass/trunk/doc/vector/v.example/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/doc/vector/v.example/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,9 @@
 
     /* initialize module */
     module = G_define_module();
-    module->keywords = _("vector, keyword2, keyword3");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("keyword2"));
+    G_add_keyword(_("keyword3"));
     module->description = _("My first vector module");
 
     /* Define the different options as defined in gis.h */

Modified: grass/trunk/general/g.access/main.c
===================================================================
--- grass/trunk/general/g.access/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.access/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -34,7 +34,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 	_("Controls access to the current mapset for other users on the system.");
 

Modified: grass/trunk/general/g.cairocomp/main.c
===================================================================
--- grass/trunk/general/g.cairocomp/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.cairocomp/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -190,7 +190,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description = _("Overlays multiple X Pixmaps");
 
     opt.in = G_define_option();

Modified: grass/trunk/general/g.copy/main.c
===================================================================
--- grass/trunk/general/g.copy/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.copy/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,8 @@
     read_list(0);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Copies available data files in the user's current mapset "
 	  "search path and location to the appropriate element "

Modified: grass/trunk/general/g.dirseps/main.c
===================================================================
--- grass/trunk/general/g.dirseps/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.dirseps/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -30,7 +30,7 @@
     G_no_gisinit();
 
     module = G_define_module();
-    module->keywords = "general";
+    G_add_keyword(_("general"));
     module->label =
 	_("Internal GRASS utility for converting directory separator characters.");
     module->description =

Modified: grass/trunk/general/g.filename/main.c
===================================================================
--- grass/trunk/general/g.filename/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.filename/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description = _("Prints GRASS data base file names.");
 
     /* Define the different options */

Modified: grass/trunk/general/g.findetc/main.c
===================================================================
--- grass/trunk/general/g.findetc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.findetc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -25,7 +25,7 @@
     struct Option *opt1;
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description = "Searches for GRASS support files.";
 
     G_gisinit(argv[0]);

Modified: grass/trunk/general/g.findfile/main.c
===================================================================
--- grass/trunk/general/g.findfile/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.findfile/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -32,7 +32,7 @@
     struct Flag *n_flag;
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 	_("Searches for GRASS data base files "
 	  "and sets variables for the shell.");

Modified: grass/trunk/general/g.gisenv/main.c
===================================================================
--- grass/trunk/general/g.gisenv/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.gisenv/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,7 @@
     G_no_gisinit();
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 	_("Outputs and modifies the user's current GRASS variable settings.");
 

Modified: grass/trunk/general/g.gui/main.c
===================================================================
--- grass/trunk/general/g.gui/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.gui/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, gui");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("gui"));
     module->description =
 	_("Launches a GRASS graphical user interface (GUI) session.");
 

Modified: grass/trunk/general/g.list/main.c
===================================================================
--- grass/trunk/general/g.list/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.list/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -41,7 +41,8 @@
     read_list(0);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Lists available GRASS data base files "
 	  "of the user-specified data type to standard output.");

Modified: grass/trunk/general/g.mapset/main.c
===================================================================
--- grass/trunk/general/g.mapset/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.mapset/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, settings");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("settings"));
     module->description = _("Change current mapset.");
 
     mapset_opt = G_define_option();

Modified: grass/trunk/general/g.mapsets/main.c
===================================================================
--- grass/trunk/general/g.mapsets/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.mapsets/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -56,7 +56,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, settings");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("settings"));
     module->description =
 	_("Modifies the user's current mapset "
 	  "search path, affecting the user's access to data existing "

Modified: grass/trunk/general/g.message/main.c
===================================================================
--- grass/trunk/general/g.message/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.message/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -29,7 +29,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->label =
 	_("Prints a message, warning, or fatal error the GRASS way.");
     module->description =

Modified: grass/trunk/general/g.mkfontcap/main.c
===================================================================
--- grass/trunk/general/g.mkfontcap/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.mkfontcap/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -24,6 +24,7 @@
 
 #include <grass/gis.h>
 #include <grass/fontcap.h>
+#include <grass/glocale.h>
 
 #include "local_proto.h"
 
@@ -66,29 +67,29 @@
     G_no_gisinit();
 
     module = G_define_module();
-    module->keywords = "general";
+    G_add_keyword(_("general"));
     module->description =
-	"Generates the font configuration file by scanning various directories "
-	"for fonts";
+	_("Generates the font configuration file by scanning various directories "
+	  "for fonts");
 
     overwrite = G_define_flag();
     overwrite->key = 'o';
     overwrite->description =
-	"Overwrite font configuration file if already existing";
+	_("Overwrite font configuration file if already existing");
 
     tostdout = G_define_flag();
     tostdout->key = 's';
     tostdout->description =
-	"Write font configuration file to standard output instead of "
-	"$GISBASE/etc";
+	_("Write font configuration file to standard output instead of "
+	  "$GISBASE/etc");
 
     extradirs = G_define_option();
     extradirs->key = "extradirs";
     extradirs->type = TYPE_STRING;
     extradirs->required = NO;
     extradirs->description =
-	"Comma-separated list of extra directories to scan for "
-	"Freetype-compatible fonts as well as the defaults (see documentation)";
+	_("Comma-separated list of extra directories to scan for "
+	  "Freetype-compatible fonts as well as the defaults (see documentation)");
 
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
@@ -104,9 +105,9 @@
 
 	if (!stat(fontcapfile, &status)) {	/* File exists? */
 	    if (!overwrite->answer)
-		G_fatal_error
-		    ("Fontcap file %s already exists; use -%c flag if you "
-		     "wish to overwrite it", fontcapfile, overwrite->key);
+		G_fatal_error(_("Fontcap file %s already exists; use -%c flag if you "
+				"wish to overwrite it"),
+			      fontcapfile, overwrite->key);
 	}
     }
 
@@ -116,7 +117,8 @@
     /* Prepare list of directories to search */
     if (extradirs->answer) {
 #ifndef HAVE_FT2BUILD_H
-	G_warning("This GRASS installation was compiled without Freetype support, extradirs parameter ignored");
+	G_warning(_("This GRASS installation was compiled without "
+		    "Freetype support, extradirs parameter ignored"));
 #endif
 	char *str = G_store(extradirs->answer);
 
@@ -142,7 +144,7 @@
     else {
 	outstream = fopen(fontcapfile, "w");
 	if (outstream == NULL)
-	    G_fatal_error("Cannot open %s for writing: %s", fontcapfile,
+	    G_fatal_error(_("Cannot open %s for writing: %s"), fontcapfile,
 			  strerror(errno));
     }
 

Modified: grass/trunk/general/g.mlist/main.c
===================================================================
--- grass/trunk/general/g.mlist/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.mlist/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -62,7 +62,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Lists available GRASS data base files "
 	  "of the user-specified data type to standard output.");

Modified: grass/trunk/general/g.mremove/main.c
===================================================================
--- grass/trunk/general/g.mremove/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.mremove/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Removes data base element files from "
 	  "the user's current mapset.");

Modified: grass/trunk/general/g.parser/main.c
===================================================================
--- grass/trunk/general/g.parser/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.parser/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -102,7 +102,7 @@
     }
 
     if (strcasecmp(cmd, "keywords") == 0) {
-	ctx->module->keywords = translate(strdup(arg));
+	G_set_keywords(translate(strdup(arg)));
 	return;
     }
 

Modified: grass/trunk/general/g.pnmcomp/main.c
===================================================================
--- grass/trunk/general/g.pnmcomp/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.pnmcomp/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -278,7 +278,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description = "Overlays multiple PPM image files";
 
     opt.in = G_define_option();

Modified: grass/trunk/general/g.proj/main.c
===================================================================
--- grass/trunk/general/g.proj/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.proj/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,7 @@
 				 * (to create a new location) when none exists */
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 #ifdef HAVE_OGR
 	_("Converts co-ordinate system descriptions (i.e. projection "

Modified: grass/trunk/general/g.region/main.c
===================================================================
--- grass/trunk/general/g.region/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.region/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -58,7 +58,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 	_("Manages the boundary definitions for the " "geographic region.");
 

Modified: grass/trunk/general/g.remove/main.c
===================================================================
--- grass/trunk/general/g.remove/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.remove/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -98,7 +98,8 @@
     read_list(0);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Removes data base element files from "
 	  "the user's current mapset.");

Modified: grass/trunk/general/g.rename/main.c
===================================================================
--- grass/trunk/general/g.rename/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.rename/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,8 @@
     read_list(0);
 
     module = G_define_module();
-    module->keywords = _("general, map management");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("map management"));
     module->description =
 	_("Renames data base element files in the user's current mapset.");
 

Modified: grass/trunk/general/g.setproj/main.c
===================================================================
--- grass/trunk/general/g.setproj/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.setproj/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general, projection");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("projection"));
     module->description =
 	_("Interactively reset the location's projection settings.");
 

Modified: grass/trunk/general/g.tempfile/main.c
===================================================================
--- grass/trunk/general/g.tempfile/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.tempfile/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description =
 	"Creates a temporary file and prints the file name.";
 

Modified: grass/trunk/general/g.transform/main.c
===================================================================
--- grass/trunk/general/g.transform/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.transform/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -246,7 +246,9 @@
 
     /* Get Args */
     module = G_define_module();
-    module->keywords = _("general, transformation, GCP");
+    G_add_keyword(_("general"));
+    G_add_keyword(_("transformation"));
+    G_add_keyword(_("GCP"));
     module->description =
 	_("Computes a coordinate transformation based on the control points.");
 

Modified: grass/trunk/general/g.version/main.c
===================================================================
--- grass/trunk/general/g.version/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/general/g.version/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -31,7 +31,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("general");
+    G_add_keyword(_("general"));
     module->description = _("Displays version and copyright information.");
 
     copyright = G_define_flag();

Modified: grass/trunk/imagery/i.albedo/main.c
===================================================================
--- grass/trunk/imagery/i.albedo/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.albedo/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -84,7 +84,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, albedo, surface reflectance");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("albedo"));
+    G_add_keyword(_("surface reflectance"));
     module->description = _("Broad Band Albedo from Surface Reflectance.");
 
     /* Define the different options */

Modified: grass/trunk/imagery/i.biomass/main.c
===================================================================
--- grass/trunk/imagery/i.biomass/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.biomass/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,10 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("imagery, biomass, fpar, yield");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("biomass"));
+    G_add_keyword(_("fpar"));
+    G_add_keyword(_("yield"));
     module->description =
 	_("Computes biomass growth, precursor of crop yield calculation");
     

Modified: grass/trunk/imagery/i.cca/main.c
===================================================================
--- grass/trunk/imagery/i.cca/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.cca/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -81,7 +81,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Canonical components analysis (cca) "
 	  "program for image processing.");

Modified: grass/trunk/imagery/i.class/main.c
===================================================================
--- grass/trunk/imagery/i.class/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.class/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -88,7 +88,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->label =
 	_("Generates spectral signatures for an image by allowing the user "
 	  "to outline regions of interest.");

Modified: grass/trunk/imagery/i.cluster/main.c
===================================================================
--- grass/trunk/imagery/i.cluster/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.cluster/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -72,7 +72,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, classification, signatures");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("classification"));
+    G_add_keyword(_("signatures"));
     module->label =
 	_("Generates spectral signatures for land cover "
 	  "types in an image using a clustering algorithm.");

Modified: grass/trunk/imagery/i.eb.eta/main.c
===================================================================
--- grass/trunk/imagery/i.eb.eta/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.eb.eta/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, actual evapotranspiration, energy balance, SEBAL");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("actual evapotranspiration"));
+    G_add_keyword(_("energy balance"));
+    G_add_keyword(_("SEBAL"));
     module->description =
 	_("actual evapotranspiration for diurnal period (Bastiaanssen, 1995)");
     

Modified: grass/trunk/imagery/i.eb.evapfr/main.c
===================================================================
--- grass/trunk/imagery/i.eb.evapfr/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.eb.evapfr/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -46,7 +46,7 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords =
+    G_add_keyword(_(""));
 	_("imagery, evaporative fraction, soil moisture, energy balance, SEBAL");
     module->description =
 	_("Computes evaporative fraction (Bastiaanssen, 1995) and "

Modified: grass/trunk/imagery/i.eb.h_SEBAL01/main.c
===================================================================
--- grass/trunk/imagery/i.eb.h_SEBAL01/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.eb.h_SEBAL01/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -82,7 +82,11 @@
 
     module = G_define_module();
     module->description = _("Computes sensible Heat Flux iteration SEBAL 01");
-    module->keywords = _("imagery, evaporative fraction, soil moisture, energy balance, SEBAL");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("evaporative fraction"));
+    G_add_keyword(_("soil moisture"));
+    G_add_keyword(_("energy balance"));
+    G_add_keyword(_("SEBAL"));
 
     /* Define different options */
     input_Rn = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/imagery/i.eb.soilheatflux/main.c
===================================================================
--- grass/trunk/imagery/i.eb.soilheatflux/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.eb.soilheatflux/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -46,7 +46,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, soil heat flux, energy balance, SEBAL");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("soil heat flux"));
+    G_add_keyword(_("energy balance"));
+    G_add_keyword(_("SEBAL"));
     module->description = _("Soil heat flux approximation (Bastiaanssen, 1995)");
     
     /* Define the different options */ 

Modified: grass/trunk/imagery/i.emissivity/main.c
===================================================================
--- grass/trunk/imagery/i.emissivity/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.emissivity/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -41,7 +41,9 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("emissivity, land flux, energy balance");
+    G_add_keyword(_("emissivity"));
+    G_add_keyword(_("land flux"));
+    G_add_keyword(_("energy balance"));
     module->description =
 	_("Emissivity from NDVI, generic method for spares land.");
     

Modified: grass/trunk/imagery/i.evapo.time_integration/main.c
===================================================================
--- grass/trunk/imagery/i.evapo.time_integration/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.evapo.time_integration/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -76,7 +76,10 @@
     module->description =_("Computes temporal integration of satellite "
 			   "ET actual (ETa) following the daily ET reference "
 			   "(ETo) from meteorological station(s)");
-    module->keywords = _("imagery, evapotranspiration, temporal, integration");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("evapotranspiration"));
+    G_add_keyword(_("temporal"));
+    G_add_keyword(_("integration"));
 
     /* Define the different options */
     input = G_define_standard_option(G_OPT_R_INPUTS);

Modified: grass/trunk/imagery/i.fft/main.c
===================================================================
--- grass/trunk/imagery/i.fft/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.fft/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, FFT");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("FFT"));
     module->description =
 	_("Fast Fourier Transform (FFT) for image processing.");
 

Modified: grass/trunk/imagery/i.gensig/main.c
===================================================================
--- grass/trunk/imagery/i.gensig/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.gensig/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, classification, supervised, MLC");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("classification"));
+    G_add_keyword(_("supervised"));
+    G_add_keyword(_("MLC"));
     module->description =
 	_("Generates statistics for i.maxlik from raster map.");
 

Modified: grass/trunk/imagery/i.gensigset/main.c
===================================================================
--- grass/trunk/imagery/i.gensigset/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.gensigset/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, classification, supervised, SMAP");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("classification"));
+    G_add_keyword(_("supervised"));
+    G_add_keyword(_("SMAP"));
     module->description =
 	_("Generates statistics for i.smap from raster map.");
 

Modified: grass/trunk/imagery/i.group/main.c
===================================================================
--- grass/trunk/imagery/i.group/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.group/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Creates, edits, and lists groups and subgroups of imagery files.");
 

Modified: grass/trunk/imagery/i.his.rgb/main.c
===================================================================
--- grass/trunk/imagery/i.his.rgb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.his.rgb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,10 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("imagery, color transformation, RGB, HIS");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("color transformation"));
+    G_add_keyword(_("RGB"));
+    G_add_keyword(_("HIS"));
     module->description =
 	_("Transforms raster maps from HIS (Hue-Intensity-Saturation) color space to "
 	  "RGB (Red-Green-Blue) color space.");

Modified: grass/trunk/imagery/i.ifft/main.c
===================================================================
--- grass/trunk/imagery/i.ifft/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.ifft/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -74,7 +74,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("imagery, FFT");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("FFT"));
     module->description =
 	_("Inverse Fast Fourier Transform (IFFT) for image processing.");
 

Modified: grass/trunk/imagery/i.latlong/main.c
===================================================================
--- grass/trunk/imagery/i.latlong/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.latlong/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, latitude, longitude, projection");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("latitude"));
+    G_add_keyword(_("longitude"));
+    G_add_keyword(_("projection"));
     module->description = _("creates a latitude/longitude map");
     
     /* Define the different options */ 

Modified: grass/trunk/imagery/i.maxlik/main.c
===================================================================
--- grass/trunk/imagery/i.maxlik/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.maxlik/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, classification, MLC");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("classification"));
+    G_add_keyword(_("MLC"));
     module->label =
 	_("Classifies the cell spectral reflectances in imagery data.");
     module->description =

Modified: grass/trunk/imagery/i.modis.qc/main.c
===================================================================
--- grass/trunk/imagery/i.modis.qc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.modis.qc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -81,7 +81,10 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("QC, Quality Control, surface reflectance, Modis");
+    G_add_keyword(_("QC"));
+    G_add_keyword(_("Quality Control"));
+    G_add_keyword(_("surface reflectance"));
+    G_add_keyword(_("Modis"));
     module->description =
 	_("Extract quality control parameters from Modis QC layers");
 

Modified: grass/trunk/imagery/i.pca/main.c
===================================================================
--- grass/trunk/imagery/i.pca/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.pca/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, image transformation, PCA");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("image transformation"));
+    G_add_keyword(_("PCA"));
     module->description = _("Principal components analysis (pca) program "
 			    "for image processing.");
 

Modified: grass/trunk/imagery/i.points/main.c
===================================================================
--- grass/trunk/imagery/i.points/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.points/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -93,7 +93,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Mark ground control points on image to be rectified.");
 

Modified: grass/trunk/imagery/i.rectify/main.c
===================================================================
--- grass/trunk/imagery/i.rectify/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.rectify/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -84,7 +84,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, rectify");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("rectify"));
     module->description =
 	_("Rectifies an image by computing a coordinate "
 	  "transformation for each pixel in the image based on the "

Modified: grass/trunk/imagery/i.rgb.his/main.c
===================================================================
--- grass/trunk/imagery/i.rgb.his/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.rgb.his/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,10 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("imagery, color transformation, RGB, HIS");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("color transformation"));
+    G_add_keyword(_("RGB"));
+    G_add_keyword(_("HIS"));
     module->description =
 	_("Transforms raster maps from RGB (Red-Green-Blue) color space to "
 	  "HIS (Hue-Intensity-Saturation) color space.");

Modified: grass/trunk/imagery/i.smap/main.c
===================================================================
--- grass/trunk/imagery/i.smap/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.smap/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, classification, supervised, SMAP");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("classification"));
+    G_add_keyword(_("supervised"));
+    G_add_keyword(_("SMAP"));
     module->description =
 	_("Performs contextual image classification "
 	  "using sequential maximum a posteriori (SMAP) estimation.");

Modified: grass/trunk/imagery/i.sunhours/main.c
===================================================================
--- grass/trunk/imagery/i.sunhours/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.sunhours/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,9 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("sunshine, hours, daytime");
+    G_add_keyword(_("sunshine"));
+    G_add_keyword(_("hours"));
+    G_add_keyword(_("daytime"));
     module->description = _("creates a sunshine hours map");
     
     /* Define the different options */ 

Modified: grass/trunk/imagery/i.target/main.c
===================================================================
--- grass/trunk/imagery/i.target/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.target/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Targets an imagery group to a GRASS location and mapset.");
 

Modified: grass/trunk/imagery/i.vi/main.c
===================================================================
--- grass/trunk/imagery/i.vi/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.vi/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -73,7 +73,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery, vegetation index, biophysical parameters");
+    G_add_keyword(_("imagery"));
+    G_add_keyword(_("vegetation index"));
+    G_add_keyword(_("biophysical parameters"));
     module->label =
 	_("Calculates different types of vegetation indices.");
     module->description = _("Uses red and nir bands mostly, "

Modified: grass/trunk/imagery/i.vpoints/main.c
===================================================================
--- grass/trunk/imagery/i.vpoints/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.vpoints/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -91,7 +91,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Set registration points for an imagery group from a vector map "
 	  "or keyboard entry.");

Modified: grass/trunk/imagery/i.zc/main.c
===================================================================
--- grass/trunk/imagery/i.zc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/imagery/i.zc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("imagery");
+    G_add_keyword(_("imagery"));
     module->description =
 	_("Zero-crossing \"edge detection\" raster "
 	  "function for image processing.");

Modified: grass/trunk/include/gis.h
===================================================================
--- grass/trunk/include/gis.h	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/include/gis.h	2009-06-24 16:56:59 UTC (rev 38061)
@@ -625,7 +625,7 @@
 {
     const char *label;		/* Optional short description for GUI */
     const char *description;	/* String describing module */
-    const char *keywords;	/* Keywords describing module */
+    const char **keywords;	/* Keywords describing module */
     /* further items are possible: author(s), version */
     int overwrite;		/* overwrite old files */
     int verbose;		/* print all informations about progress and so on */

Modified: grass/trunk/include/gisdefs.h
===================================================================
--- grass/trunk/include/gisdefs.h	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/include/gisdefs.h	2009-06-24 16:56:59 UTC (rev 38061)
@@ -442,6 +442,8 @@
 int G_parser(int, char **);
 void G_usage(void);
 char *G_recreate_command(void);
+void G_add_keyword(const char *);
+void G_set_keywords(const char *);
 
 /* paths.c */
 int G_mkdir(const char *);

Modified: grass/trunk/lib/gis/parser.c
===================================================================
--- grass/trunk/lib/gis/parser.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/lib/gis/parser.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -108,6 +108,8 @@
     int no_interactive;
     int n_opts;
     int n_flags;
+    int n_keys;
+    int n_keys_alloc;
     int overwrite;
     int quiet;
     int has_required;
@@ -145,6 +147,8 @@
 static int check_multiple_opts(void);
 static int check_overwrite(void);
 static void split_gisprompt(const char *, char *, char *, char *);
+static void define_keywords(void);
+static void print_keywords(FILE *, void (*)(FILE *, const char *));
 
 static void G_gui(void);
 static void G_usage_xml(void);
@@ -699,13 +703,14 @@
     struct GModule *module;
 
     /* Allocate memory */
-
     module = &st->module_info;
 
     /* Zero structure */
-
     G_zero((char *)module, sizeof(struct GModule));
 
+    /* Allocate keywords array */
+    define_keywords();
+    
     return (module);
 }
 
@@ -1065,8 +1070,9 @@
 	    fprintf(stderr, " %s\n", st->module_info.description);
     }
     if (st->module_info.keywords) {
-	fprintf(stderr, _("\nKeywords:\n"));
-	fprintf(stderr, " %s\n", st->module_info.keywords);
+	fprintf(stderr, _("\nKeywords:\n "));
+	print_keywords(stderr, NULL);
+	fprintf(stderr, "\n");
     }
 
     fprintf(stderr, _("\nUsage:\n "));
@@ -1309,7 +1315,7 @@
 
     if (st->module_info.keywords) {
 	fprintf(stdout, "\t<keywords>\n\t\t");
-	print_escaped_for_xml(stdout, st->module_info.keywords);
+	print_keywords(stdout, print_escaped_for_xml);
 	fprintf(stdout, "\n\t</keywords>\n");
     }
 
@@ -1541,7 +1547,7 @@
 
     fprintf(stdout, "<h2>%s</h2>\n", _("KEYWORDS"));
     if (st->module_info.keywords) {
-	fprintf(stdout, "%s", st->module_info.keywords);
+	print_keywords(stdout, NULL);
 	fprintf(stdout, "\n");
     }
     fprintf(stdout, "<h2>%s</h2>\n", _("SYNOPSIS"));
@@ -1767,8 +1773,11 @@
 	fprintf(fp, "#%% label: %s\n", st->module_info.label);
     if (st->module_info.description)
 	fprintf(fp, "#%% description: %s\n", st->module_info.description);
-    if (st->module_info.keywords)
-	fprintf(fp, "#%% keywords: %s\n", st->module_info.keywords);
+    if (st->module_info.keywords) {
+	fprintf(fp, "#%% keywords: ");
+	print_keywords(fp, NULL);
+	fprintf(fp, "\n");
+    }
     fprintf(fp, "#%%End\n");
 
     if (st->n_flags) {
@@ -2579,3 +2588,55 @@
 
     return (buff);
 }
+
+void define_keywords(void)
+{
+    st->n_keys = 0;
+    st->n_keys_alloc = 0;
+}
+
+/*!
+  \brief Add keyword to the list
+
+  \param module pointer to GModule structure
+  \param keyword keyword string
+*/
+void G_add_keyword(const char *keyword)
+{
+    if (st->n_keys >= st->n_keys_alloc) {
+	st->n_keys_alloc += 10;
+	st->module_info.keywords = (const char **) G_realloc(st->module_info.keywords,
+							     st->n_keys_alloc * sizeof(char *));
+    }
+    
+    st->module_info.keywords[st->n_keys++] = G_store(keyword);
+}
+
+void print_keywords(FILE *fd, void (*format)(FILE *, const char *))
+{
+    int i;
+    
+    for(i = 0; i < st->n_keys; i++) {
+	if (!format) {
+	    fprintf(fd, "%s", st->module_info.keywords[i]);
+	}
+	else {
+	    format(fd, st->module_info.keywords[i]);
+	}
+	if (i < st->n_keys - 1)
+	    fprintf(fd, ", ");
+    }
+    
+    fflush(fd);
+}
+
+/*!
+  \brief Set keywords from the string
+
+  \param keywords keywords separated by commas
+*/
+void G_set_keywords(const char *keywords)
+{
+    st->module_info.keywords = (const char**)G_tokenize(keywords, ",");
+    st->n_keys = st->n_keys_alloc = G_number_of_tokens((char **)st->module_info.keywords);
+}

Modified: grass/trunk/misc/m.cogo/main.c
===================================================================
--- grass/trunk/misc/m.cogo/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/misc/m.cogo/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -222,7 +222,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("miscellaneous");
+    G_add_keyword(_("miscellaneous"));
     module->label = _("A simple utility for converting bearing and "
 		      "distance measurements to coordinates and vice versa.");
     module->description = _("It assumes a cartesian coordinate system");

Modified: grass/trunk/ps/ps.map/main.c
===================================================================
--- grass/trunk/ps/ps.map/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/ps/ps.map/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -113,7 +113,9 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("postscript, map, printing");
+    G_add_keyword(_("postscript"));
+    G_add_keyword(_("map"));
+    G_add_keyword(_("printing"));
     module->description = _("Hardcopy PostScript map output utility.");
 
     rflag = G_define_flag();

Modified: grass/trunk/raster/r.basins.fill/main.c
===================================================================
--- grass/trunk/raster/r.basins.fill/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.basins.fill/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates a raster map layer showing " "watershed subbasins.");
 

Modified: grass/trunk/raster/r.bitpattern/main.c
===================================================================
--- grass/trunk/raster/r.bitpattern/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.bitpattern/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Compares bit patterns with a raster map.");
 
     /* Define the different options */

Modified: grass/trunk/raster/r.buffer/main.c
===================================================================
--- grass/trunk/raster/r.buffer/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.buffer/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -63,7 +63,8 @@
     pgm_name = argv[0];
 
     module = G_define_module();
-    module->keywords = _("raster, buffer");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("buffer"));
     module->description =
 	_("Creates a raster map layer showing buffer zones "
 	  "surrounding cells that contain non-NULL category values.");

Modified: grass/trunk/raster/r.carve/main.c
===================================================================
--- grass/trunk/raster/r.carve/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.carve/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -71,7 +71,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Takes vector stream data, transforms it "
 			    "to raster and subtracts depth from the output DEM.");
 

Modified: grass/trunk/raster/r.category/main.c
===================================================================
--- grass/trunk/raster/r.category/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.category/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Manages category values and labels associated "
 	  "with user-specified raster map layers.");

Modified: grass/trunk/raster/r.circle/main.c
===================================================================
--- grass/trunk/raster/r.circle/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.circle/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates a raster map containing concentric "
 	  "rings around a given point.");

Modified: grass/trunk/raster/r.clump/main.c
===================================================================
--- grass/trunk/raster/r.clump/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.clump/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,9 @@
     /* Define the different options */
 
     module = G_define_module();
-    module->keywords = _("raster, statistics, reclass");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
+    G_add_keyword(_("reclass"));
     module->description =
 	_("Recategorizes data in a raster map by grouping cells "
 	  "that form physically discrete areas into unique categories.");

Modified: grass/trunk/raster/r.coin/main.c
===================================================================
--- grass/trunk/raster/r.coin/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.coin/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -63,7 +63,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Tabulates the mutual occurrence (coincidence) "
 	  "of categories for two raster map layers.");

Modified: grass/trunk/raster/r.colors/main.c
===================================================================
--- grass/trunk/raster/r.colors/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.colors/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -162,7 +162,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, color table");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("color table"));
     module->description =
 	_("Creates/modifies the color table associated with a raster map layer.");
 

Modified: grass/trunk/raster/r.colors.out/main.c
===================================================================
--- grass/trunk/raster/r.colors.out/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.colors.out/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, color table");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("color table"));
     module->description =
 	_("Exports the color table associated with a raster map layer.");
 

Modified: grass/trunk/raster/r.composite/main.c
===================================================================
--- grass/trunk/raster/r.composite/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.composite/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -69,7 +69,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, composite");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("composite"));
     module->description =
 	_("Combines red, green and blue raster maps into "
 	  "a single composite raster map.");

Modified: grass/trunk/raster/r.compress/main.c
===================================================================
--- grass/trunk/raster/r.compress/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.compress/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Compresses and decompresses raster maps.");
 
     map = G_define_option();

Modified: grass/trunk/raster/r.contour/main.c
===================================================================
--- grass/trunk/raster/r.contour/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.contour/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -83,7 +83,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, DEM, contours, vector");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("DEM"));
+    G_add_keyword(_("contours"));
+    G_add_keyword(_("vector"));
     module->description = _("Produces a vector map of specified "
 			    "contours from a raster map.");
 

Modified: grass/trunk/raster/r.cost/main.c
===================================================================
--- grass/trunk/raster/r.cost/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.cost/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -137,7 +137,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, cost surface, cumulative costs");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("cost surface"));
+    G_add_keyword(_("cumulative costs"));
     module->description =
 	_("Creates a raster map showing the "
 	  "cumulative cost of moving between different "

Modified: grass/trunk/raster/r.covar/main.c
===================================================================
--- grass/trunk/raster/r.covar/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.covar/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Outputs a covariance/correlation matrix "
 	  "for user-specified raster map layer(s).");

Modified: grass/trunk/raster/r.cross/main.c
===================================================================
--- grass/trunk/raster/r.cross/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.cross/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -70,7 +70,7 @@
     /* Define the different options */
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates a cross product of the category values from "
 	  "multiple raster map layers.");

Modified: grass/trunk/raster/r.describe/main.c
===================================================================
--- grass/trunk/raster/r.describe/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.describe/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Prints terse list of category values found in a raster map layer.");
 

Modified: grass/trunk/raster/r.digit/main.c
===================================================================
--- grass/trunk/raster/r.digit/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.digit/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -41,7 +41,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Interactive tool used to draw and save vector features on a graphics"
 	 " monitor using a pointing device (mouse) and save to a raster map.");

Modified: grass/trunk/raster/r.distance/main.c
===================================================================
--- grass/trunk/raster/r.distance/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.distance/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Locates the closest points between objects in two raster maps.");
 

Modified: grass/trunk/raster/r.drain/main.c
===================================================================
--- grass/trunk/raster/r.drain/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.drain/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -103,7 +103,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Traces a flow through an elevation model on a raster map.");
 

Modified: grass/trunk/raster/r.external/main.c
===================================================================
--- grass/trunk/raster/r.external/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.external/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -520,7 +520,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, import");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Link GDAL supported raster file to a binary raster map layer.");
 

Modified: grass/trunk/raster/r.external.out/main.c
===================================================================
--- grass/trunk/raster/r.external.out/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.external.out/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -179,7 +179,8 @@
     GDALAllRegister();
 
     module = G_define_module();
-    module->keywords = _("raster, import");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Link GDAL supported raster file to a binary raster map layer.");
 

Modified: grass/trunk/raster/r.fill.dir/main.c
===================================================================
--- grass/trunk/raster/r.fill.dir/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.fill.dir/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -83,7 +83,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Filters and generates a depressionless elevation map and a flow "
 	  "direction map from a given elevation layer.");

Modified: grass/trunk/raster/r.flow/main.c
===================================================================
--- grass/trunk/raster/r.flow/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.flow/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -418,7 +418,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = "raster";
+    G_add_keyword(_("raster"));
     module->description =
 	_("Construction of slope curves (flowlines), flowpath lengths, "
 	  "and flowline densities (upslope areas) from a raster "

Modified: grass/trunk/raster/r.grow/main.c
===================================================================
--- grass/trunk/raster/r.grow/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.grow/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -119,7 +119,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates a raster map layer "
 	  "with contiguous areas grown by one cell.");

Modified: grass/trunk/raster/r.grow.distance/main.c
===================================================================
--- grass/trunk/raster/r.grow.distance/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.grow.distance/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -146,7 +146,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates a raster map layer of distance to features in input layer.");
 

Modified: grass/trunk/raster/r.gwflow/main.c
===================================================================
--- grass/trunk/raster/r.gwflow/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.gwflow/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -221,7 +221,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Numerical calculation program for transient, confined and unconfined groundwater flow in two dimensions.");
 

Modified: grass/trunk/raster/r.his/main.c
===================================================================
--- grass/trunk/raster/r.his/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.his/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates red, green and blue raster map layers "
 	  "combining hue, intensity and saturation (HIS) "

Modified: grass/trunk/raster/r.horizon/main.c
===================================================================
--- grass/trunk/raster/r.horizon/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.horizon/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -176,7 +176,7 @@
     G_gisinit(argv[0]);
     module = G_define_module();
 
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->label =
 	_("Horizon angle computation from a digital elevation model.");
     module->description =

Modified: grass/trunk/raster/r.in.arc/main.c
===================================================================
--- grass/trunk/raster/r.in.arc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.arc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Converts an ESRI ARC/INFO ascii raster file (GRID) "
 	  "into a (binary) raster map layer.");

Modified: grass/trunk/raster/r.in.ascii/main.c
===================================================================
--- grass/trunk/raster/r.in.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -66,7 +66,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, import, conversion");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
+    G_add_keyword(_("conversion"));
     module->description =
 	_("Converts ASCII raster file to binary raster map layer.");
 

Modified: grass/trunk/raster/r.in.bin/main.c
===================================================================
--- grass/trunk/raster/r.in.bin/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.bin/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -120,7 +120,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster, import");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Import a binary raster file into a GRASS raster map layer.");
 

Modified: grass/trunk/raster/r.in.gdal/main.c
===================================================================
--- grass/trunk/raster/r.in.gdal/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.gdal/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -77,7 +77,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, import");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Import GDAL supported raster file into a binary raster map layer.");
 

Modified: grass/trunk/raster/r.in.gridatb/main.c
===================================================================
--- grass/trunk/raster/r.in.gridatb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.gridatb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Imports GRIDATB.FOR map file (TOPMODEL) into GRASS raster map");
 

Modified: grass/trunk/raster/r.in.mat/main.c
===================================================================
--- grass/trunk/raster/r.in.mat/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.mat/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -89,7 +89,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Imports a binary MAT-File(v4) to a GRASS raster.");
 

Modified: grass/trunk/raster/r.in.poly/main.c
===================================================================
--- grass/trunk/raster/r.in.poly/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.poly/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -26,7 +26,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, import");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Creates raster maps from ASCII polygon/line/point data files.");
 

Modified: grass/trunk/raster/r.in.xyz/main.c
===================================================================
--- grass/trunk/raster/r.in.xyz/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.in.xyz/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -157,7 +157,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, import, LIDAR");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("import"));
+    G_add_keyword(_("LIDAR"));
     module->description =
 	_("Create a raster map from an assemblage of many coordinates using univariate statistics.");
 

Modified: grass/trunk/raster/r.info/main.c
===================================================================
--- grass/trunk/raster/r.info/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.info/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -67,7 +67,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("metadata"));
     module->description =
 	_("Output basic information about a raster map layer.");
 

Modified: grass/trunk/raster/r.kappa/main.c
===================================================================
--- grass/trunk/raster/r.kappa/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.kappa/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -65,7 +65,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Calculate error matrix and kappa "
 	  "parameter for accuracy assessment of classification " "result.");

Modified: grass/trunk/raster/r.lake/main.c
===================================================================
--- grass/trunk/raster/r.lake/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.lake/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -148,7 +148,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Fills lake from seed at given level.");
 
     tmap_opt = G_define_standard_option(G_OPT_R_ELEV);

Modified: grass/trunk/raster/r.le/r.le.patch/main.c
===================================================================
--- grass/trunk/raster/r.le/r.le.patch/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.le/r.le.patch/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,7 @@
     choice = (struct CHOICE *)G_calloc(1, sizeof(struct CHOICE));
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Calculates attribute, patch size, core (interior) size, shape, "
 	  "fractal dimension, and perimeter measures for sets of patches "

Modified: grass/trunk/raster/r.le/r.le.pixel/main.c
===================================================================
--- grass/trunk/raster/r.le/r.le.pixel/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.le/r.le.pixel/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,7 @@
     choice = (struct CHOICE *)G_calloc(1, sizeof(struct CHOICE));
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Contains a set of measures for attributes, diversity, texture, "
 	  "juxtaposition, and edge.");

Modified: grass/trunk/raster/r.le/r.le.setup/main.c
===================================================================
--- grass/trunk/raster/r.le/r.le.setup/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.le/r.le.setup/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -54,7 +54,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Interactive tool used to setup the sampling and analysis framework "
 	 "that will be used by the other r.le programs.");

Modified: grass/trunk/raster/r.le/r.le.trace/main.c
===================================================================
--- grass/trunk/raster/r.le/r.le.trace/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.le/r.le.trace/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,7 @@
     choice = (struct CHOICE *)G_calloc(1, sizeof(struct CHOICE));
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Displays the boundary of each r.le patch and shows how the boundary "
 	 "is traced, displays the attribute, size, perimeter and shape "

Modified: grass/trunk/raster/r.li/r.li.cwed/cwed.c
===================================================================
--- grass/trunk/raster/r.li/r.li.cwed/cwed.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.cwed/cwed.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates contrast weighted edge density index on a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
 

Modified: grass/trunk/raster/r.li/r.li.dominance/dominance.c
===================================================================
--- grass/trunk/raster/r.li/r.li.dominance/dominance.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.dominance/dominance.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
     module = G_define_module();
     module->description =
 	_("Calculates dominance's diversity index on a raster map");
-    module->keywords =
+    G_add_keyword(_(""));
 	_("raster, landscape structure analysis, diversity index");
 
     /* define options */

Modified: grass/trunk/raster/r.li/r.li.edgedensity/edgedensity.c
===================================================================
--- grass/trunk/raster/r.li/r.li.edgedensity/edgedensity.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.edgedensity/edgedensity.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates edge density index on a raster map, using a 4 neighbour algorithm");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
 

Modified: grass/trunk/raster/r.li/r.li.mpa/mpa.c
===================================================================
--- grass/trunk/raster/r.li/r.li.mpa/mpa.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.mpa/mpa.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -38,7 +38,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates mean pixel attribute index on a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
     /* define options */
 
     raster = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.li/r.li.mps/mps.c
===================================================================
--- grass/trunk/raster/r.li/r.li.mps/mps.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.mps/mps.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -39,7 +39,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates mean patch size index on a raster map, using a 4 neighbour algorithm");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
     /* define options */
 
     raster = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.li/r.li.padcv/padcv.c
===================================================================
--- grass/trunk/raster/r.li/r.li.padcv/padcv.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.padcv/padcv.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates coefficient of variation of patch area on a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
     raster = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.li/r.li.padrange/padrange.c
===================================================================
--- grass/trunk/raster/r.li/r.li.padrange/padrange.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.padrange/padrange.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -38,7 +38,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates range of patch area size on a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
     raster = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.li/r.li.padsd/padsd.c
===================================================================
--- grass/trunk/raster/r.li/r.li.padsd/padsd.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.padsd/padsd.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates standard deviation of patch area a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
     raster = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.li/r.li.patchdensity/main.c
===================================================================
--- grass/trunk/raster/r.li/r.li.patchdensity/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.patchdensity/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -31,7 +31,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates patch density index on a raster map, using a 4 neighbour algorithm");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
 

Modified: grass/trunk/raster/r.li/r.li.patchnum/main.c
===================================================================
--- grass/trunk/raster/r.li/r.li.patchnum/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.patchnum/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -32,7 +32,9 @@
     module = G_define_module();
     module->description =
 	_("Calculates patch number index on a raster map, using a 4 neighbour algorithm.");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
 

Modified: grass/trunk/raster/r.li/r.li.richness/richness.c
===================================================================
--- grass/trunk/raster/r.li/r.li.richness/richness.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.richness/richness.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -38,7 +38,7 @@
     module = G_define_module();
     module->description =
 	_("Calculates dominance's diversity index on a raster map");
-    module->keywords =
+    G_add_keyword(_(""));
 	_("raster, landscape structure analysis, dominance index");
 
     /* define options */

Modified: grass/trunk/raster/r.li/r.li.shannon/shannon.c
===================================================================
--- grass/trunk/raster/r.li/r.li.shannon/shannon.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.shannon/shannon.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,7 @@
     module = G_define_module();
     module->description =
 	_("Calculates Shannon's diversity index on a raster map");
-    module->keywords =
+    G_add_keyword(_(""));
 	_("raster, landscape structure analysis, diversity index");
 
     /* define options */

Modified: grass/trunk/raster/r.li/r.li.shape/main.c
===================================================================
--- grass/trunk/raster/r.li/r.li.shape/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.shape/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -32,7 +32,9 @@
     G_gisinit(argv[0]);
     module = G_define_module();
     module->description = _("Calculates shape index on a raster map");
-    module->keywords = _("raster, landscape structure analysis, patch index");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("landscape structure analysis"));
+    G_add_keyword(_("patch index"));
 
     /* define options */
 

Modified: grass/trunk/raster/r.li/r.li.simpson/simpson.c
===================================================================
--- grass/trunk/raster/r.li/r.li.simpson/simpson.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.li/r.li.simpson/simpson.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -38,7 +38,7 @@
     module = G_define_module();
     module->description =
 	_("Calculates Simpson's diversity index on a raster map");
-    module->keywords =
+    G_add_keyword(_(""));
 	_("raster, landscape structure analysis, diversity index");
 
     /* define options */

Modified: grass/trunk/raster/r.los/main.c
===================================================================
--- grass/trunk/raster/r.los/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.los/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -90,7 +90,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Line-of-sight raster analysis program.");
 
     /* Define the different options */

Modified: grass/trunk/raster/r.mapcalc/main.c
===================================================================
--- grass/trunk/raster/r.mapcalc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.mapcalc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -108,7 +108,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Raster map calculator.");
     module->overwrite = 1;
 

Modified: grass/trunk/raster/r.mfilter/main.c
===================================================================
--- grass/trunk/raster/r.mfilter/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.mfilter/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, map algebra");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("map algebra"));
     module->description = _("Raster map matrix filter.");
 
     /* Define the different options */

Modified: grass/trunk/raster/r.mode/main.c
===================================================================
--- grass/trunk/raster/r.mode/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.mode/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Finds the mode of values in a cover map within "
 	  "areas assigned the same category value in a "

Modified: grass/trunk/raster/r.neighbors/main.c
===================================================================
--- grass/trunk/raster/r.neighbors/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.neighbors/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -111,7 +111,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Makes each cell category value a "
 	  "function of the category values assigned to the cells "

Modified: grass/trunk/raster/r.null/main.c
===================================================================
--- grass/trunk/raster/r.null/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.null/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -56,7 +56,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, null data");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("null data"));
     module->description = _("Manages NULL-values of given raster map.");
 
     parms.map = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.out.arc/main.c
===================================================================
--- grass/trunk/raster/r.out.arc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.arc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Converts a raster map layer into an ESRI ARCGRID file.");
 

Modified: grass/trunk/raster/r.out.ascii/main.c
===================================================================
--- grass/trunk/raster/r.out.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -56,7 +56,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, export");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Converts a raster map layer into an ASCII text file.");
 

Modified: grass/trunk/raster/r.out.bin/main.c
===================================================================
--- grass/trunk/raster/r.out.bin/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.bin/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Exports a GRASS raster to a binary array.");
 
     /* Define the different options */

Modified: grass/trunk/raster/r.out.gdal/main.c
===================================================================
--- grass/trunk/raster/r.out.gdal/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.gdal/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -126,7 +126,8 @@
     module = G_define_module();
     module->description =
 	_("Exports GRASS raster maps into GDAL supported formats.");
-    module->keywords = _("raster, export");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
 
     flag_l = G_define_flag();
     flag_l->key = 'l';

Modified: grass/trunk/raster/r.out.gridatb/main.c
===================================================================
--- grass/trunk/raster/r.out.gridatb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.gridatb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Exports GRASS raster map to GRIDATB.FOR map file (TOPMODEL)");
 

Modified: grass/trunk/raster/r.out.mat/main.c
===================================================================
--- grass/trunk/raster/r.out.mat/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.mat/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, export");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
     module->description = _("Exports a GRASS raster to a binary MAT-File.");
 
     /* Define the different options */

Modified: grass/trunk/raster/r.out.mpeg/main.c
===================================================================
--- grass/trunk/raster/r.out.mpeg/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.mpeg/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -83,7 +83,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Raster File Series to MPEG Conversion Program.");
 
     for (i = 0; i < MAXVIEWS; i++) {

Modified: grass/trunk/raster/r.out.png/main.c
===================================================================
--- grass/trunk/raster/r.out.png/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.png/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -125,7 +125,7 @@
      */
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	"Export GRASS raster as non-georeferenced PNG image format.";
 

Modified: grass/trunk/raster/r.out.pov/main.c
===================================================================
--- grass/trunk/raster/r.out.pov/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.pov/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -118,7 +118,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Converts a raster map layer into a height-field file for POVRAY.");
 

Modified: grass/trunk/raster/r.out.ppm/main.c
===================================================================
--- grass/trunk/raster/r.out.ppm/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.ppm/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, export");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Converts a GRASS raster map to a PPM image file "
 	  "at the pixel resolution of the currently defined region.");

Modified: grass/trunk/raster/r.out.ppm3/main.c
===================================================================
--- grass/trunk/raster/r.out.ppm3/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.ppm3/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Converts 3 GRASS raster layers (R,G,B) to a PPM image file "
 	  "at the pixel resolution of the CURRENTLY DEFINED REGION.");

Modified: grass/trunk/raster/r.out.tiff/main.c
===================================================================
--- grass/trunk/raster/r.out.tiff/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.tiff/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -89,7 +89,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster, export");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Exports a GRASS raster map to a 8/24bit TIFF image file "
 	  "at the pixel resolution of the currently defined region.");

Modified: grass/trunk/raster/r.out.vrml/main.c
===================================================================
--- grass/trunk/raster/r.out.vrml/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.vrml/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,9 @@
     shh = color_ok = 0;
 
     module = G_define_module();
-    module->keywords = _("raster, export, VRML");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("export"));
+    G_add_keyword(_("VRML"));
     module->description =
 	_("Export a raster map to the Virtual Reality Modeling Language (VRML)");
 

Modified: grass/trunk/raster/r.out.vtk/main.c
===================================================================
--- grass/trunk/raster/r.out.vtk/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.out.vtk/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -56,7 +56,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Converts raster maps into the VTK-Ascii format");
 
     /* Get parameters from user */

Modified: grass/trunk/raster/r.param.scale/interface.c
===================================================================
--- grass/trunk/raster/r.param.scale/interface.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.param.scale/interface.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,8 @@
     /*--------------------------------------------------------------------------*/
 
     module = G_define_module();
-    module->keywords = _("raster, geomorphology");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("geomorphology"));
     module->label = _("Extracts terrain parameters from a DEM.");
     module->description = _("Uses a multi-scale approach"
 			    " by taking fitting quadratic parameters to any size window (via least squares).");

Modified: grass/trunk/raster/r.patch/main.c
===================================================================
--- grass/trunk/raster/r.patch/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.patch/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates a composite raster map layer by using "
 	  "known category values from one (or more) map layer(s) "

Modified: grass/trunk/raster/r.profile/main.c
===================================================================
--- grass/trunk/raster/r.profile/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.profile/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Outputs the raster map layer values lying on user-defined line(s).");
 

Modified: grass/trunk/raster/r.proj/main.c
===================================================================
--- grass/trunk/raster/r.proj/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.proj/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -135,7 +135,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, projection");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("projection"));
     module->description =
 	_("Re-projects a raster map from one location to the current location.");
 

Modified: grass/trunk/raster/r.quant/main.c
===================================================================
--- grass/trunk/raster/r.quant/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.quant/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Produces the quantization file for a floating-point map.");
 

Modified: grass/trunk/raster/r.quantile/main.c
===================================================================
--- grass/trunk/raster/r.quantile/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.quantile/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -252,7 +252,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description = _("Compute quantiles using two passes.");
 
     opt.input = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/raster/r.random/main.c
===================================================================
--- grass/trunk/raster/r.random/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.random/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates a raster map layer and vector point map "
 	  "containing randomly located points.");

Modified: grass/trunk/raster/r.random.cells/main.c
===================================================================
--- grass/trunk/raster/r.random.cells/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.random.cells/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,9 @@
     G_gisinit(argv[0]);
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster, random, cell");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("random"));
+    G_add_keyword(_("cell"));
     module->description =
 	_("Generates random cell values with spatial dependence.");
 

Modified: grass/trunk/raster/r.random.surface/main.c
===================================================================
--- grass/trunk/raster/r.random.surface/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.random.surface/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -54,7 +54,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, random, surface");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("random"));
+    G_add_keyword(_("surface"));
     module->description =
 	_("Generates random surface(s) with spatial dependence.");
 

Modified: grass/trunk/raster/r.reclass/main.c
===================================================================
--- grass/trunk/raster/r.reclass/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.reclass/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates a new map layer whose category values are based "
 	  "upon a reclassification of the categories in an existing "

Modified: grass/trunk/raster/r.recode/main.c
===================================================================
--- grass/trunk/raster/r.recode/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.recode/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Recodes categorical raster maps.");
 
     parm.input = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/raster/r.region/main.c
===================================================================
--- grass/trunk/raster/r.region/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.region/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Sets the boundary definitions for a raster map.");
 

Modified: grass/trunk/raster/r.report/main.c
===================================================================
--- grass/trunk/raster/r.report/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.report/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description = _("Reports statistics for raster map layers.");
 
     parse_command_line(argc, argv);

Modified: grass/trunk/raster/r.resamp.interp/main.c
===================================================================
--- grass/trunk/raster/r.resamp.interp/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.resamp.interp/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -69,7 +69,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, resample");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("resample"));
     module->description =
 	_("Resamples raster map layers to a finer grid using interpolation.");
 

Modified: grass/trunk/raster/r.resamp.rst/main.c
===================================================================
--- grass/trunk/raster/r.resamp.rst/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.resamp.rst/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -145,7 +145,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Reinterpolates and optionally computes topographic analysis from "
 	  "input raster map to a new raster map (possibly with "

Modified: grass/trunk/raster/r.resamp.stats/main.c
===================================================================
--- grass/trunk/raster/r.resamp.stats/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.resamp.stats/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -259,7 +259,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, resample");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("resample"));
     module->description =
 	_("Resamples raster map layers to a coarser grid using aggregation.");
 

Modified: grass/trunk/raster/r.resample/main.c
===================================================================
--- grass/trunk/raster/r.resample/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.resample/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("GRASS raster map layer data resampling capability.");
 

Modified: grass/trunk/raster/r.rescale/main.c
===================================================================
--- grass/trunk/raster/r.rescale/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.rescale/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Rescales the range of category values " "in a raster map layer.");
 

Modified: grass/trunk/raster/r.rescale.eq/main.c
===================================================================
--- grass/trunk/raster/r.rescale.eq/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.rescale.eq/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Rescales histogram equalized the range of category "
 	  "values in a raster map layer.");

Modified: grass/trunk/raster/r.ros/main.c
===================================================================
--- grass/trunk/raster/r.ros/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.ros/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -210,7 +210,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates three, or four raster map layers showing 1) the base "
 	  "(perpendicular) rate of spread (ROS), 2) the maximum (forward) ROS, "

Modified: grass/trunk/raster/r.series/main.c
===================================================================
--- grass/trunk/raster/r.series/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.series/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -127,7 +127,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, series");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("series"));
     module->description =
 	_("Makes each output cell value a "
 	  "function of the values assigned to the corresponding cells "

Modified: grass/trunk/raster/r.slope.aspect/main.c
===================================================================
--- grass/trunk/raster/r.slope.aspect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.slope.aspect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -148,7 +148,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, terrain analysis");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("terrain analysis"));
     module->description =
 	_("Generates raster map layers of slope, aspect, curvatures and "
 	  "partial derivatives from a raster map layer of true elevation "

Modified: grass/trunk/raster/r.spread/main.c
===================================================================
--- grass/trunk/raster/r.spread/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.spread/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -99,7 +99,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->label =
 	_("Simulates elliptically anisotropic spread on a graphics window and "
 	 "generates a raster map of the cumulative time of spread, "

Modified: grass/trunk/raster/r.spreadpath/main.c
===================================================================
--- grass/trunk/raster/r.spreadpath/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.spreadpath/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -86,7 +86,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Recursively traces the least cost path backwards to "
 	  "cells from which the cumulative cost was determined.");

Modified: grass/trunk/raster/r.statistics/main.c
===================================================================
--- grass/trunk/raster/r.statistics/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.statistics/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Calculates category or object oriented statistics.");
 

Modified: grass/trunk/raster/r.statistics2/main.c
===================================================================
--- grass/trunk/raster/r.statistics2/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.statistics2/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -98,7 +98,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Calculates category or object oriented statistics.");
 

Modified: grass/trunk/raster/r.statistics3/main.c
===================================================================
--- grass/trunk/raster/r.statistics3/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.statistics3/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -388,7 +388,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description = _("Compute category quantiles using two passes.");
 
     opt.basemap = G_define_standard_option(G_OPT_R_BASE);

Modified: grass/trunk/raster/r.stats/main.c
===================================================================
--- grass/trunk/raster/r.stats/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.stats/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -99,7 +99,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Generates area statistics for raster map layers.");
 

Modified: grass/trunk/raster/r.sun/main.c
===================================================================
--- grass/trunk/raster/r.sun/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.sun/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -170,7 +170,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->label = _("Solar irradiance and irradiation model.");
     module->description =
 	_("Computes direct (beam), diffuse and reflected solar irradiation raster "

Modified: grass/trunk/raster/r.sun2/main.c
===================================================================
--- grass/trunk/raster/r.sun2/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.sun2/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -224,7 +224,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->label = _("Solar irradiance and irradiation model.");
     module->description =
 	_("Computes direct (beam), diffuse and reflected solar irradiation raster "

Modified: grass/trunk/raster/r.sunmask/main.c
===================================================================
--- grass/trunk/raster/r.sunmask/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.sunmask/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -123,7 +123,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Calculates cast shadow areas from sun position and DEM. Either "
 	  "A: exact sun position is specified, or B: date/time to calculate "

Modified: grass/trunk/raster/r.support/main.c
===================================================================
--- grass/trunk/raster/r.support/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.support/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, metadata");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("metadata"));
     module->description = _("Allows creation and/or modification of "
 			    "raster map layer support files.");
 

Modified: grass/trunk/raster/r.support.stats/main.c
===================================================================
--- grass/trunk/raster/r.support.stats/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.support.stats/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,8 @@
 
     module = G_define_module();
     module->description = _("Update raster map statistics");
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
 
     parm.raster = G_define_standard_option(G_OPT_R_MAP);
 

Modified: grass/trunk/raster/r.surf.area/main.c
===================================================================
--- grass/trunk/raster/r.surf.area/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.area/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -85,7 +85,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Surface area estimation for rasters.");
 
     surf = G_define_option();

Modified: grass/trunk/raster/r.surf.contour/main.c
===================================================================
--- grass/trunk/raster/r.surf.contour/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.contour/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -58,7 +58,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Surface generation program from rasterized contours.");
 

Modified: grass/trunk/raster/r.surf.fractal/main.c
===================================================================
--- grass/trunk/raster/r.surf.fractal/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.fractal/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,9 @@
     G_gisinit(argv[0]);		/* Link with GRASS interface.      */
 
     module = G_define_module();
-    module->keywords = _("raster, DEM, fractal");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("DEM"));
+    G_add_keyword(_("fractal"));
     module->description =
 	_("Creates a fractal surface of a given fractal dimension.");
 

Modified: grass/trunk/raster/r.surf.gauss/main.c
===================================================================
--- grass/trunk/raster/r.surf.gauss/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.gauss/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("GRASS module to produce a raster map layer of "
 	  "gaussian deviates whose mean and standard deviation "

Modified: grass/trunk/raster/r.surf.idw/main.c
===================================================================
--- grass/trunk/raster/r.surf.idw/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.idw/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -100,7 +100,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, interpolation");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("interpolation"));
     module->description =
 	_("Surface interpolation utility for raster map.");
 

Modified: grass/trunk/raster/r.surf.idw2/main.c
===================================================================
--- grass/trunk/raster/r.surf.idw2/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.idw2/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -58,7 +58,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Surface generation program.");
 
     parm.input = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/raster/r.surf.random/main.c
===================================================================
--- grass/trunk/raster/r.surf.random/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.surf.random/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Produces a raster map layer of uniform random "
 	  "deviates whose range can be expressed by the user.");

Modified: grass/trunk/raster/r.texture/main.c
===================================================================
--- grass/trunk/raster/r.texture/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.texture/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -72,7 +72,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generate images with textural features from a raster map.");
 

Modified: grass/trunk/raster/r.thin/main.c
===================================================================
--- grass/trunk/raster/r.thin/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.thin/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Thins non-zero cells that denote linear "
 	  "features in a raster map layer.");

Modified: grass/trunk/raster/r.timestamp/main.c
===================================================================
--- grass/trunk/raster/r.timestamp/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.timestamp/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -31,7 +31,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Print/add/remove a timestamp for a raster map.");
 
     map = G_define_standard_option(G_OPT_R_MAP);

Modified: grass/trunk/raster/r.to.rast3/main.c
===================================================================
--- grass/trunk/raster/r.to.rast3/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.to.rast3/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -191,7 +191,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, volume, conversion");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("volume"));
+    G_add_keyword(_("conversion"));
     module->description =
 	_("Converts 2D raster map slices to one 3D raster volume map.");
 

Modified: grass/trunk/raster/r.to.rast3elev/main.c
===================================================================
--- grass/trunk/raster/r.to.rast3elev/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.to.rast3elev/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -355,7 +355,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, raster3d, voxel, conversion");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
+    G_add_keyword(_("conversion"));
     module->description =
 	_("Creates a 3D volume map based on 2D elevation and value raster maps.");
 

Modified: grass/trunk/raster/r.to.vect/main.c
===================================================================
--- grass/trunk/raster/r.to.vect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.to.vect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -68,7 +68,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Converts a raster map into a vector map layer.");
 
     in_opt = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/raster/r.topidx/main.c
===================================================================
--- grass/trunk/raster/r.topidx/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.topidx/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Creates topographic index [ln(a/tan(beta))] map from elevation map.");
 

Modified: grass/trunk/raster/r.topmodel/main.c
===================================================================
--- grass/trunk/raster/r.topmodel/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.topmodel/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Simulates TOPMODEL which is a physically based hydrologic model.");
 

Modified: grass/trunk/raster/r.transect/main.c
===================================================================
--- grass/trunk/raster/r.transect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.transect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Outputs raster map layer values lying along "
 	  "user defined transect line(s).");

Modified: grass/trunk/raster/r.univar/r.univar_main.c
===================================================================
--- grass/trunk/raster/r.univar/r.univar_main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.univar/r.univar_main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -70,7 +70,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, statistics");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Calculates univariate statistics from the non-null cells of a raster map.");
 

Modified: grass/trunk/raster/r.univar/r3.univar_main.c
===================================================================
--- grass/trunk/raster/r.univar/r3.univar_main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.univar/r3.univar_main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -74,7 +74,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, statistics");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Calculates univariate statistics from the non-null 3d cells of a raster3d map.");
 

Modified: grass/trunk/raster/r.uslek/main.c
===================================================================
--- grass/trunk/raster/r.uslek/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.uslek/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,10 @@
     /************************************/ 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster, soil, erosion, USLE");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("soil"));
+    G_add_keyword(_("erosion"));
+    G_add_keyword(_("USLE"));
     module->description = _("USLE Soil Erodibility Factor (K)");
     
     /* Define the different options */ 

Modified: grass/trunk/raster/r.usler/main.c
===================================================================
--- grass/trunk/raster/r.usler/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.usler/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, rainfall, erosion, USLE");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("rainfall"));
+    G_add_keyword(_("erosion"));
+    G_add_keyword(_("USLE"));
     module->description = _("Computes USLE R factor, Rainfall erosivity index.");
     
     input2 = G_define_standard_option(G_OPT_R_INPUT);

Modified: grass/trunk/raster/r.volume/main.c
===================================================================
--- grass/trunk/raster/r.volume/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.volume/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -55,7 +55,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Calculates the volume of data \"clumps\", "
 	  "and (optionally) produces a GRASS vector points map "

Modified: grass/trunk/raster/r.walk/main.c
===================================================================
--- grass/trunk/raster/r.walk/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.walk/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -185,7 +185,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Outputs a raster map layer showing the "
 	  "anisotropic cumulative cost of moving between different "

Modified: grass/trunk/raster/r.water.outlet/main.c
===================================================================
--- grass/trunk/raster/r.water.outlet/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.water.outlet/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -62,7 +62,7 @@
 
     module = G_define_module();
     module->description = _("Watershed basin creation program.");
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     
     opt1 = G_define_option();
     opt1->key = "drainage";

Modified: grass/trunk/raster/r.watershed/front/main.c
===================================================================
--- grass/trunk/raster/r.watershed/front/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.watershed/front/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -53,7 +53,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Watershed basin analysis program.");
 
     opt1 = G_define_standard_option(G_OPT_R_ELEV);

Modified: grass/trunk/raster/r.what/main.c
===================================================================
--- grass/trunk/raster/r.what/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.what/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -89,7 +89,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Queries raster map layers on their category values and category labels.");
 

Modified: grass/trunk/raster/r.what.color/main.c
===================================================================
--- grass/trunk/raster/r.what.color/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/r.what.color/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -85,7 +85,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description = _("Queries colors for a raster map layer.");
 
     opt.input = G_define_option();

Modified: grass/trunk/raster/simwe/r.sim.sediment/main.c
===================================================================
--- grass/trunk/raster/simwe/r.sim.sediment/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/simwe/r.sim.sediment/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -108,7 +108,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, sediment flow, erosion, deposition");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("sediment flow"));
+    G_add_keyword(_("erosion"));
+    G_add_keyword(_("deposition"));
     module->description =
 	_("Sediment transport and erosion/deposition simulation "
 	  "using path sampling method (SIMWE)");

Modified: grass/trunk/raster/simwe/r.sim.water/main.c
===================================================================
--- grass/trunk/raster/simwe/r.sim.water/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster/simwe/r.sim.water/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -115,7 +115,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster, flow, hydrology");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("flow"));
+    G_add_keyword(_("hydrology"));
     module->description =
 	_("Overland flow hydrologic simulation using "
 	  "path sampling method (SIMWE)");

Modified: grass/trunk/raster3d/base/r3.mask.main.c
===================================================================
--- grass/trunk/raster3d/base/r3.mask.main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/base/r3.mask.main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -130,7 +130,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Establishes the current working 3D raster mask.");
 

Modified: grass/trunk/raster3d/base/r3.null.main.c
===================================================================
--- grass/trunk/raster3d/base/r3.null.main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/base/r3.null.main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -199,7 +199,8 @@
 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Explicitly create the 3D NULL-value bitmap file.");
 

Modified: grass/trunk/raster3d/r3.cross.rast/main.c
===================================================================
--- grass/trunk/raster3d/r3.cross.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.cross.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -267,7 +267,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Creates cross section 2D raster map from 3d raster map based on 2D elevation map");
 

Modified: grass/trunk/raster3d/r3.gwflow/main.c
===================================================================
--- grass/trunk/raster3d/r3.gwflow/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.gwflow/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -165,7 +165,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Numerical calculation program for transient, confined groundwater flow in three dimensions");
 

Modified: grass/trunk/raster3d/r3.in.ascii/main.c
===================================================================
--- grass/trunk/raster3d/r3.in.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.in.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -237,7 +237,9 @@
 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster3d, voxel, import");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Convert a 3D ASCII raster text file into a (binary) 3D raster map layer");
 

Modified: grass/trunk/raster3d/r3.in.v5d/main.c
===================================================================
--- grass/trunk/raster3d/r3.in.v5d/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.in.v5d/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -190,7 +190,8 @@
 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	"  import of 3-dimensional Vis5D files (i.e. the v5d file with 1 variable and 1 time step)";
 

Modified: grass/trunk/raster3d/r3.info/r3.info.main.c
===================================================================
--- grass/trunk/raster3d/r3.info/r3.info.main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.info/r3.info.main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Outputs basic information about a user-specified 3D raster map layer.");
 

Modified: grass/trunk/raster3d/r3.mkdspf/main.c
===================================================================
--- grass/trunk/raster3d/r3.mkdspf/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.mkdspf/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -76,7 +76,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Creates a display file from an existing grid3 file according to specified threshold levels.");
 

Modified: grass/trunk/raster3d/r3.out.ascii/main.c
===================================================================
--- grass/trunk/raster3d/r3.out.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.out.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -241,7 +241,9 @@
     /* Initialize GRASS */
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster3d, voxel, export");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Converts a 3D raster map layer into an ASCII text file");
 

Modified: grass/trunk/raster3d/r3.out.v5d/main.c
===================================================================
--- grass/trunk/raster3d/r3.out.v5d/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.out.v5d/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -286,7 +286,8 @@
     /* Initialize GRASS */
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Export of GRASS 3D raster map to 3-dimensional Vis5D file.");
 

Modified: grass/trunk/raster3d/r3.out.vtk/main.c
===================================================================
--- grass/trunk/raster3d/r3.out.vtk/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.out.vtk/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -378,7 +378,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Converts 3D raster maps (G3D) into the VTK-Ascii format");
 

Modified: grass/trunk/raster3d/r3.stats/main.c
===================================================================
--- grass/trunk/raster3d/r3.stats/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.stats/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -565,7 +565,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, statistics");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("statistics"));
     module->description = _("Generates volume statistics for raster3d maps.");
 
     /* Define the different options */

Modified: grass/trunk/raster3d/r3.timestamp/r3.timestamp.main.c
===================================================================
--- grass/trunk/raster3d/r3.timestamp/r3.timestamp.main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.timestamp/r3.timestamp.main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description =
 	_("Print/add/remove a timestamp for a 3D raster map");
 

Modified: grass/trunk/raster3d/r3.to.rast/main.c
===================================================================
--- grass/trunk/raster3d/r3.to.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/raster3d/r3.to.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -213,7 +213,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster3d, voxel");
+    G_add_keyword(_("raster3d"));
+    G_add_keyword(_("voxel"));
     module->description = _("Converts 3D raster maps to 2D raster maps");
 
     /* Get parameters from user */

Modified: grass/trunk/sites/s.in.ascii/main.c
===================================================================
--- grass/trunk/sites/s.in.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/sites/s.in.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,7 @@
     G_gisinit(me = argv[0]);
 
     module = G_define_module();
-    module->keywords = _("sites");
+    G_add_keyword(_("sites"));
     module->description =
 	"Convert an ASCII listing of site locations "
 	"into a GRASS site list file.";

Modified: grass/trunk/sites/s.out.ascii/main.c
===================================================================
--- grass/trunk/sites/s.out.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/sites/s.out.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("sites");
+    G_add_keyword(_("sites"));
     module->description =
 	"Converts a GRASS site list file into an ASCII listing of "
 	"site locations and their descriptions.";

Modified: grass/trunk/swig/perl/R_slope_aspect/r_slope_aspect/r_slope_aspect.c
===================================================================
--- grass/trunk/swig/perl/R_slope_aspect/r_slope_aspect/r_slope_aspect.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/swig/perl/R_slope_aspect/r_slope_aspect/r_slope_aspect.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -150,7 +150,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("raster");
+    G_add_keyword(_("raster"));
     module->description =
 	_("Generates raster map layers of slope, aspect, curvatures and "
 	  "partial derivatives from a raster map layer of true elevation "

Modified: grass/trunk/vector/lidar/v.lidar.correction/main.c
===================================================================
--- grass/trunk/vector/lidar/v.lidar.correction/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/lidar/v.lidar.correction/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -63,7 +63,8 @@
 /*----------------------------------------------------------------------------------------------------------*/
     /* Options' declaration */
     module = G_define_module();
-    module->keywords = _("vector, LIDAR");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LIDAR"));
     module->description =
 	_("Correction of the v.lidar.growing output. It is the last of the three algorithms for LIDAR filtering.");
 

Modified: grass/trunk/vector/lidar/v.lidar.edgedetection/main.c
===================================================================
--- grass/trunk/vector/lidar/v.lidar.edgedetection/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/lidar/v.lidar.edgedetection/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -71,7 +71,9 @@
 /*------------------------------------------------------------------------------------------*/
     /* Options' declaration */
     module = G_define_module();
-    module->keywords = _("vector, LIDAR, edges");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LIDAR"));
+    G_add_keyword(_("edges"));
     module->description =
 	_("Detects the object's edges from a LIDAR data set.");
 

Modified: grass/trunk/vector/lidar/v.lidar.growing/main.c
===================================================================
--- grass/trunk/vector/lidar/v.lidar.growing/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/lidar/v.lidar.growing/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -74,7 +74,8 @@
 /*------------------------------------------------------------------------------------------*/
     /* Options' declaration */ ;
     module = G_define_module();
-    module->keywords = _("vector, LIDAR");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LIDAR"));
     module->description =
 	_("Building contour determination and Region Growing "
 	  "algorithm for determining the building inside");

Modified: grass/trunk/vector/lidar/v.outlier/main.c
===================================================================
--- grass/trunk/vector/lidar/v.outlier/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/lidar/v.outlier/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -65,7 +65,8 @@
     /*------------------------------------------------------------------------------------------*/
     /* Options' declaration */
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description = _("Removes outliers from vector point data.");
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/lidar/v.surf.bspline/main.c
===================================================================
--- grass/trunk/vector/lidar/v.surf.bspline/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/lidar/v.surf.bspline/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -79,7 +79,8 @@
     /*-------------------------------------------------------------------------------------------*/
     /* Options' declaration */
     module = G_define_module(); {
-	module->keywords = _("vector, interpolation");
+G_add_keyword(_("vector"));
+G_add_keyword(_("interpolation"));
 	module->description =
 	    _("Bicubic or bilinear spline interpolation with Tykhonov regularization.");
     }

Modified: grass/trunk/vector/v.buffer/main.c
===================================================================
--- grass/trunk/vector/v.buffer/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.buffer/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -142,7 +142,8 @@
 
 
     module = G_define_module();
-    module->keywords = _("vector, buffer");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("buffer"));
     module->description =
 	_("Creates a buffer around features of given type (areas must contain centroid).");
 

Modified: grass/trunk/vector/v.build/main.c
===================================================================
--- grass/trunk/vector/v.build/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.build/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -31,7 +31,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, topology");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("topology"));
     module->description = _("Creates topology for GRASS vector map.");
 
     map_opt = G_define_standard_option(G_OPT_V_MAP);

Modified: grass/trunk/vector/v.build.polylines/main.c
===================================================================
--- grass/trunk/vector/v.build.polylines/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.build.polylines/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -106,7 +106,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry, topology");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
+    G_add_keyword(_("topology"));
     module->description = _("Builds polylines from lines or boundaries.");
 
     /* Define the options */

Modified: grass/trunk/vector/v.category/main.c
===================================================================
--- grass/trunk/vector/v.category/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.category/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -64,7 +64,8 @@
     int nfreps, rtype, fld;
 
     module = G_define_module();
-    module->keywords = _("vector, category");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("category"));
     module->description =
 	_("Attach, delete or report vector categories to map geometry.");
 

Modified: grass/trunk/vector/v.class/main.c
===================================================================
--- grass/trunk/vector/v.class/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.class/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -41,7 +41,8 @@
     struct GASTATS stats;
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Classifies attribute data, e.g. for thematic mapping");
 

Modified: grass/trunk/vector/v.clean/main.c
===================================================================
--- grass/trunk/vector/v.clean/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.clean/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -39,7 +39,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, topology");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("topology"));
     module->description = _("Toolset for cleaning topology of vector map.");
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.clean/test/topocheck.c
===================================================================
--- grass/trunk/vector/v.clean/test/topocheck.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.clean/test/topocheck.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -39,7 +39,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description = "Break lines at intersections.";
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.convert/main.c
===================================================================
--- grass/trunk/vector/v.convert/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.convert/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,9 @@
     struct GModule *module;
 
     module = G_define_module();
-    module->keywords = _("vector, import, conversion");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
+    G_add_keyword(_("conversion"));
     module->description = _("Imports older versions of GRASS vector maps.");
 
     /* input vector map */

Modified: grass/trunk/vector/v.db.connect/main.c
===================================================================
--- grass/trunk/vector/v.db.connect/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.db.connect/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -46,7 +46,9 @@
     /* set up the options and flags for the command line parser */
 
     module = G_define_module();
-    module->keywords = _("vector, database, attribute table");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description =
 	_("Prints/sets DB connection for a vector map to attribute table.");
 

Modified: grass/trunk/vector/v.db.select/main.c
===================================================================
--- grass/trunk/vector/v.db.select/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.db.select/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -48,7 +48,9 @@
     int i, line, area, init_box, cat;
 
     module = G_define_module();
-    module->keywords = _("vector, database, attribute table");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("Prints vector map attributes.");
 
     map_opt = G_define_standard_option(G_OPT_V_MAP);

Modified: grass/trunk/vector/v.delaunay/main.c
===================================================================
--- grass/trunk/vector/v.delaunay/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.delaunay/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
     /* GRASS related manipulations */
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description = _("Creates a Delaunay triangulation from an input "
 			    "vector map containing points or centroids.");
 

Modified: grass/trunk/vector/v.distance/main.c
===================================================================
--- grass/trunk/vector/v.distance/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.distance/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -111,7 +111,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, database, attribute table");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description =
 	_("Finds the nearest element in vector map 'to' for elements in vector map 'from'.");
 

Modified: grass/trunk/vector/v.drape/main.c
===================================================================
--- grass/trunk/vector/v.drape/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.drape/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -146,7 +146,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry, sampling");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
+    G_add_keyword(_("sampling"));
     module->description =
 	_("Converts vector map to 3D by sampling of elevation raster map.");
 

Modified: grass/trunk/vector/v.edit/main.c
===================================================================
--- grass/trunk/vector/v.edit/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.edit/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, editing, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("editing"));
+    G_add_keyword(_("geometry"));
     module->description = _("Edits a vector map, allows adding, deleting "
 			    "and modifying selected vector features.");
 

Modified: grass/trunk/vector/v.external/main.c
===================================================================
--- grass/trunk/vector/v.external/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.external/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -55,7 +55,7 @@
 	    sprintf(buf, "%s,%s", buf, OGR_Dr_GetName(Ogr_driver));
     }
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->label =
 	_("Creates a new vector as a read-only link to OGR layer.");
     module->description = G_store(buf);

Modified: grass/trunk/vector/v.extract/main.c
===================================================================
--- grass/trunk/vector/v.extract/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.extract/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -88,7 +88,8 @@
 
     /* set up the options and flags for the command line parser */
     module = G_define_module();
-    module->keywords = _("vector, extract");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("extract"));
     module->description =
 	_("Selects vector objects from an existing vector map and "
 	  "creates a new map containing only the selected objects.");

Modified: grass/trunk/vector/v.extrude/main.c
===================================================================
--- grass/trunk/vector/v.extrude/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.extrude/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -65,7 +65,9 @@
     char *comment;
 
     module = G_define_module();
-    module->keywords = _("vector, geometry, 3D");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
+    G_add_keyword(_("3D"));
     module->description =
 	_("Extrudes flat vector object to 3D with defined height.");
 

Modified: grass/trunk/vector/v.generalize/main.c
===================================================================
--- grass/trunk/vector/v.generalize/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.generalize/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,7 @@
 
     /* initialize module */
     module = G_define_module();
-    module->keywords =
+    G_add_keyword(_(""));
 	_("vector, generalization, simplification, smoothing, displacement, network generalization");
     module->description = _("Vector based generalization.");
 

Modified: grass/trunk/vector/v.hull/main.c
===================================================================
--- grass/trunk/vector/v.hull/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.hull/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -284,7 +284,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description =
 	_("Uses a GRASS vector points map to produce a convex hull vector map.");
 

Modified: grass/trunk/vector/v.in.ascii/main.c
===================================================================
--- grass/trunk/vector/v.in.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Creates a vector map from ASCII points file or ASCII vector file.");
 

Modified: grass/trunk/vector/v.in.db/main.c
===================================================================
--- grass/trunk/vector/v.in.db/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.db/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import, database, points");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
+    G_add_keyword(_("database"));
+    G_add_keyword(_("points"));
     module->description =
 	_("Creates new vector (points) map from database table containing coordinates.");
 

Modified: grass/trunk/vector/v.in.dwg/main.c
===================================================================
--- grass/trunk/vector/v.in.dwg/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.dwg/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -79,7 +79,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
     module->description = _("Converts DWG/DXF to GRASS vector map");
 
     in_opt = G_define_standard_option(G_OPT_F_INPUT);

Modified: grass/trunk/vector/v.in.dxf/main.c
===================================================================
--- grass/trunk/vector/v.in.dxf/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.dxf/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
     module->description =
 	_("Converts files in DXF format to GRASS vector map format.");
 

Modified: grass/trunk/vector/v.in.ogr/main.c
===================================================================
--- grass/trunk/vector/v.in.ogr/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.ogr/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -100,7 +100,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
     module->description = _("Convert OGR vector layers to GRASS vector map.");
 
     dsn_opt = G_define_option();

Modified: grass/trunk/vector/v.in.region/main.c
===================================================================
--- grass/trunk/vector/v.in.region/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.region/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description = _("Create a new vector from the current region.");
 
     out_opt = G_define_standard_option(G_OPT_V_OUTPUT);

Modified: grass/trunk/vector/v.in.sites/main.c
===================================================================
--- grass/trunk/vector/v.in.sites/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.in.sites/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -54,7 +54,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, import, sites");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("import"));
+    G_add_keyword(_("sites"));
     module->description =
 	_("Converts a GRASS site_lists file into a vector map.");
 

Modified: grass/trunk/vector/v.info/main.c
===================================================================
--- grass/trunk/vector/v.info/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.info/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, metadata, history");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("metadata"));
+    G_add_keyword(_("history"));
     module->description =
 	_("Outputs basic information about a user-specified vector map.");
 

Modified: grass/trunk/vector/v.kcv/main.c
===================================================================
--- grass/trunk/vector/v.kcv/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.kcv/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -72,7 +72,8 @@
     dbString sql;
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Randomly partition points into test/train sets.");
 

Modified: grass/trunk/vector/v.kernel/main.c
===================================================================
--- grass/trunk/vector/v.kernel/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.kernel/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -105,7 +105,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, kernel density");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("kernel density"));
     module->description =
 	_("Generates a raster density map from vector points data using a moving 2D isotropic Gaussian kernel or "
 	 "optionally generates a vector density map on vector network with a 1D kernel.");

Modified: grass/trunk/vector/v.label/main.c
===================================================================
--- grass/trunk/vector/v.label/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.label/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -56,7 +56,8 @@
 
     G_gisinit(argv[0]);
     module = G_define_module();
-    module->keywords = _("vector, paint labels");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("paint labels"));
     module->description =
 	_("Creates paint labels for a vector map from attached attributes.");
 

Modified: grass/trunk/vector/v.label.sa/main.c
===================================================================
--- grass/trunk/vector/v.label.sa/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.label.sa/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -35,7 +35,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, paint labels");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("paint labels"));
     module->description =
 	_("Create optimally placed labels for vector map(s)");
 

Modified: grass/trunk/vector/v.lrs/v.lrs.create/main.c
===================================================================
--- grass/trunk/vector/v.lrs/v.lrs.create/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.lrs/v.lrs.create/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -118,7 +118,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, LRS, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LRS"));
+    G_add_keyword(_("networking"));
     module->description = _("Create Linear Reference System");
 
     in_lines_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.lrs/v.lrs.label/main.c
===================================================================
--- grass/trunk/vector/v.lrs/v.lrs.label/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.lrs/v.lrs.label/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -99,7 +99,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, LRS, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LRS"));
+    G_add_keyword(_("networking"));
     module->description = _("Create stationing from input lines, "
 			    "and linear reference system");
 

Modified: grass/trunk/vector/v.lrs/v.lrs.segment/main.c
===================================================================
--- grass/trunk/vector/v.lrs/v.lrs.segment/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.lrs/v.lrs.segment/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -67,7 +67,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, LRS, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LRS"));
+    G_add_keyword(_("networking"));
     module->description =
 	_("Creates points/segments from input lines, linear reference "
 	  "system and positions read from stdin or a file.");

Modified: grass/trunk/vector/v.lrs/v.lrs.where/main.c
===================================================================
--- grass/trunk/vector/v.lrs/v.lrs.where/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.lrs/v.lrs.where/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -54,7 +54,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, LRS, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("LRS"));
+    G_add_keyword(_("networking"));
     module->description =
 	_("Finds line id and real km+offset for given points in vector map "
 	  "using linear reference system.");

Modified: grass/trunk/vector/v.mkgrid/main.c
===================================================================
--- grass/trunk/vector/v.mkgrid/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.mkgrid/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -59,7 +59,7 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Creates a GRASS vector map of a user-defined grid.");
 

Modified: grass/trunk/vector/v.neighbors/main.c
===================================================================
--- grass/trunk/vector/v.neighbors/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.neighbors/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -45,7 +45,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, raster, aggregation");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("aggregation"));
     module->description = "Makes each cell value a "
 	"function of the attribute values assigned to the vector points or centroids "
 	"around it, and stores new cell values in an output raster map layer.";

Modified: grass/trunk/vector/v.net/main.c
===================================================================
--- grass/trunk/vector/v.net/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->description = _("Performs network maintenance.");
 
     define_options(&opt);

Modified: grass/trunk/vector/v.net.alloc/main.c
===================================================================
--- grass/trunk/vector/v.net.alloc/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.alloc/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -57,7 +57,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->label =
 	_("Allocate subnets for nearest centres (direction from centre).");
     module->description =

Modified: grass/trunk/vector/v.net.iso/main.c
===================================================================
--- grass/trunk/vector/v.net.iso/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.iso/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -69,7 +69,8 @@
 
     module = G_define_module();
     module->label = _("Splits net by cost isolines.");
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->description =
 	_("Splits net to bands between cost isolines (direction from centre). "
 	 "Centre node must be opened (costs >= 0). "

Modified: grass/trunk/vector/v.net.path/main.c
===================================================================
--- grass/trunk/vector/v.net.path/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.path/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -37,7 +37,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->description = _("Finds shortest path on vector network.");
 
     input_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.net.salesman/main.c
===================================================================
--- grass/trunk/vector/v.net.salesman/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.salesman/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -93,7 +93,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->label =
 	_("Creates a cycle connecting given nodes (Traveling salesman problem).");
     module->description =

Modified: grass/trunk/vector/v.net.steiner/main.c
===================================================================
--- grass/trunk/vector/v.net.steiner/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.steiner/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -341,7 +341,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, networking");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("networking"));
     module->label =
 	_("Create Steiner tree for the network and given terminals");
     module->description =

Modified: grass/trunk/vector/v.net.visibility/main.c
===================================================================
--- grass/trunk/vector/v.net.visibility/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.net.visibility/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,9 @@
 
     /* initialize module */
     module = G_define_module();
-    module->keywords = _("vector, path, visibility");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("path"));
+    G_add_keyword(_("visibility"));
     module->description = _("Visibility graph construction.");
 
     /* define the arguments needed */

Modified: grass/trunk/vector/v.normal/main.c
===================================================================
--- grass/trunk/vector/v.normal/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.normal/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -75,7 +75,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description = _("Tests for normality for points.");
     parm.input = G_define_option();
     parm.input->key = "map";

Modified: grass/trunk/vector/v.out.ascii/main.c
===================================================================
--- grass/trunk/vector/v.out.ascii/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.ascii/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, export");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Converts a GRASS binary vector map to a GRASS ASCII vector map.");
 

Modified: grass/trunk/vector/v.out.dxf/main.c
===================================================================
--- grass/trunk/vector/v.out.dxf/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.dxf/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -47,7 +47,8 @@
 
     /* Set description */
     module = G_define_module();
-    module->keywords = _("vector, export");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Exports GRASS vector map layers to DXF file format.");
 

Modified: grass/trunk/vector/v.out.ogr/main.c
===================================================================
--- grass/trunk/vector/v.out.ogr/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.ogr/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -82,7 +82,8 @@
 
     /* Module options */
     module = G_define_module();
-    module->keywords = _("vector, export");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("export"));
     module->description =
 	_("Converts to one of the supported OGR vector formats.");
 

Modified: grass/trunk/vector/v.out.pov/main.c
===================================================================
--- grass/trunk/vector/v.out.pov/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.pov/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -39,7 +39,8 @@
 
     /* Module options */
     module = G_define_module();
-    module->keywords = _("vector, export");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("export"));
     module->description =
 	"Converts to POV-Ray format, GRASS x,y,z -> POV-Ray x,z,y";
 

Modified: grass/trunk/vector/v.out.svg/main.c
===================================================================
--- grass/trunk/vector/v.out.svg/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.svg/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -69,7 +69,8 @@
     /* parse command-line */
     module = G_define_module();
     module->description = _("Exports a GRASS vector map to SVG.");
-    module->keywords = _("vector, export");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("export"));
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);
 

Modified: grass/trunk/vector/v.out.vtk/main.c
===================================================================
--- grass/trunk/vector/v.out.vtk/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.out.vtk/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -44,7 +44,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Converts a GRASS binary vector map to VTK ASCII output.");
 

Modified: grass/trunk/vector/v.overlay/main.c
===================================================================
--- grass/trunk/vector/v.overlay/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.overlay/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -51,7 +51,8 @@
     pre[1] = "b";
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description = _("Overlays two vector maps.");
 
     in_opt[0] = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.parallel/main.c
===================================================================
--- grass/trunk/vector/v.parallel/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.parallel/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -40,7 +40,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description = _("Creates parallel line to input vector lines.");
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.patch/main.c
===================================================================
--- grass/trunk/vector/v.patch/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.patch/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -65,7 +65,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description = _("Create a new vector map layer "
 			    "by combining other vector map layers.");
 

Modified: grass/trunk/vector/v.perturb/main.c
===================================================================
--- grass/trunk/vector/v.perturb/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.perturb/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -69,7 +69,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Random location perturbations of GRASS vector points");
 

Modified: grass/trunk/vector/v.proj/main.c
===================================================================
--- grass/trunk/vector/v.proj/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.proj/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -60,7 +60,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, projection");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("projection"));
     module->description = _("Allows projection conversion of vector maps.");
 
     /* set up the options and flags for the command line parser */

Modified: grass/trunk/vector/v.qcount/main.c
===================================================================
--- grass/trunk/vector/v.qcount/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.qcount/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -64,7 +64,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description = _("Indices for quadrat counts of sites lists.");
 
     parm.input = G_define_option();

Modified: grass/trunk/vector/v.random/main.c
===================================================================
--- grass/trunk/vector/v.random/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.random/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -81,7 +81,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description = _("Randomly generate a 2D/3D vector points map.");
 
     parm.output = G_define_standard_option(G_OPT_V_OUTPUT);

Modified: grass/trunk/vector/v.reclass/main.c
===================================================================
--- grass/trunk/vector/v.reclass/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.reclass/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, reclass, attributes");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("reclass"));
+    G_add_keyword(_("attributes"));
     module->description =
 	_("Changes vector category values for an existing vector map "
 	  "according to results of SQL queries or a value in attribute table column.");

Modified: grass/trunk/vector/v.sample/main.c
===================================================================
--- grass/trunk/vector/v.sample/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.sample/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -83,7 +83,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Samples a raster map at vector point locations.");
 

Modified: grass/trunk/vector/v.segment/main.c
===================================================================
--- grass/trunk/vector/v.segment/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.segment/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description =
 	_("Creates points/segments from input vector lines and positions.");
 

Modified: grass/trunk/vector/v.select/main.c
===================================================================
--- grass/trunk/vector/v.select/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.select/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -49,7 +49,8 @@
     pre[1] = "b";
 
     module = G_define_module();
-    module->keywords = _("vector, spatial query");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("spatial query"));
     module->description =
 	_("Selects features from vector map (A) by features from other vector map (B).");
 

Modified: grass/trunk/vector/v.split/main.c
===================================================================
--- grass/trunk/vector/v.split/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.split/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -39,7 +39,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description = "Split lines to shorter segments.";
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.support/main.c
===================================================================
--- grass/trunk/vector/v.support/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.support/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,8 @@
 
     /* initialize module */
     module = G_define_module();
-    module->keywords = _("vector, metadata");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("metadata"));
     module->description = _("Updates vector map metadata.");
 
     /* Define the different options as defined in gis.h */

Modified: grass/trunk/vector/v.surf.idw/main.c
===================================================================
--- grass/trunk/vector/v.surf.idw/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.surf.idw/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -84,7 +84,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, interpolation");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("interpolation"));
     module->description =
 	_("Surface interpolation from vector point data by Inverse "
 	  "Distance Squared Weighting.");

Modified: grass/trunk/vector/v.surf.rst/main.c
===================================================================
--- grass/trunk/vector/v.surf.rst/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.surf.rst/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -145,7 +145,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Spatial approximation and topographic analysis from given "
 	  "point or isoline data in vector format to floating point "

Modified: grass/trunk/vector/v.to.3d/main.c
===================================================================
--- grass/trunk/vector/v.to.3d/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.to.3d/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, transformation, 3D");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("transformation"));
+    G_add_keyword(_("3D"));
     module->description =
 	_("Performs transformation of 2D vector features to 3D.");
 

Modified: grass/trunk/vector/v.to.db/main.c
===================================================================
--- grass/trunk/vector/v.to.db/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.to.db/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -33,7 +33,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, database, attribute table");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("database"));
+    G_add_keyword(_("attribute table"));
     module->description = _("Populates database values from vector features.");
 
     parse_command_line(argc, argv);

Modified: grass/trunk/vector/v.to.points/main.c
===================================================================
--- grass/trunk/vector/v.to.points/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.to.points/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -169,7 +169,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description =
 	_("Create points along input lines in new vector with 2 layers.");
 

Modified: grass/trunk/vector/v.to.rast/main.c
===================================================================
--- grass/trunk/vector/v.to.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.to.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -36,7 +36,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, raster, conversion");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("conversion"));
     module->description = _("Converts a binary GRASS vector map "
 			    "into a GRASS raster map .");
 

Modified: grass/trunk/vector/v.to.rast3/main.c
===================================================================
--- grass/trunk/vector/v.to.rast3/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.to.rast3/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -42,7 +42,9 @@
     dbCatValArray cvarr;
 
     module = G_define_module();
-    module->keywords = _("vector, volume, conversion");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("volume"));
+    G_add_keyword(_("conversion"));
     module->description = _("Converts a binary GRASS vector map "
 			    "(only points) layer into a 3D GRASS raster map layer.");
 

Modified: grass/trunk/vector/v.transform/main.c
===================================================================
--- grass/trunk/vector/v.transform/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.transform/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -80,7 +80,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, transformation");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("transformation"));
     module->description =
 	_("Performs an affine transformation (shift, scale and rotate, "
 	  "or GPCs) on vector map.");

Modified: grass/trunk/vector/v.type/main.c
===================================================================
--- grass/trunk/vector/v.type/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.type/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,8 @@
 #endif
 
     module = G_define_module();
-    module->keywords = _("vector, geometry");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("geometry"));
     module->description = _("Change the type of geometry elements.");
 
     in_opt = G_define_standard_option(G_OPT_V_INPUT);

Modified: grass/trunk/vector/v.univar/main.c
===================================================================
--- grass/trunk/vector/v.univar/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.univar/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -61,7 +61,8 @@
     int perc;
 
     module = G_define_module();
-    module->keywords = _("vector, statistics");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("statistics"));
     module->description =
 	_("Calculates univariate statistics for attribute. Variance and standard "
 	 "deviation is calculated only for points if specified.");

Modified: grass/trunk/vector/v.vol.rst/main.c
===================================================================
--- grass/trunk/vector/v.vol.rst/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.vol.rst/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -237,7 +237,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description =
 	_("Interpolates point data to a G3D grid volume using "
 	  "regularized spline with tension (RST) algorithm.");

Modified: grass/trunk/vector/v.voronoi/main.c
===================================================================
--- grass/trunk/vector/v.voronoi/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.voronoi/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -114,7 +114,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector");
+    G_add_keyword(_("vector"));
     module->description = _("Creates a Voronoi diagram from an input vector "
 			    "map containing points or centroids.");
 

Modified: grass/trunk/vector/v.what/main.c
===================================================================
--- grass/trunk/vector/v.what/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.what/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,8 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, querying");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("querying"));
     module->description = _("Queries a vector map layer at given locations.");
 
     opt1 = G_define_standard_option(G_OPT_V_MAP);

Modified: grass/trunk/vector/v.what.rast/main.c
===================================================================
--- grass/trunk/vector/v.what.rast/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/vector/v.what.rast/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -77,7 +77,9 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("vector, raster, attribute table");
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("attribute table"));
     module->description =
 	_("Uploads raster values at positions of vector points to the table.");
 

Modified: grass/trunk/visualization/nviz/src/nviz_init.c
===================================================================
--- grass/trunk/visualization/nviz/src/nviz_init.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/visualization/nviz/src/nviz_init.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -50,7 +50,9 @@
      */
 
     module = G_define_module();
-    module->keywords = _("raster, vector, visualization");
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("visualization"));
     module->description =
 	_("nviz - Visualization and animation tool for GRASS data.");
 

Modified: grass/trunk/visualization/nviz2/cmd/main.c
===================================================================
--- grass/trunk/visualization/nviz2/cmd/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/visualization/nviz2/cmd/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -43,7 +43,10 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("visualization, raster, vector, raster3d");
+    G_add_keyword(_("visualization"));
+    G_add_keyword(_("raster"));
+    G_add_keyword(_("vector"));
+    G_add_keyword(_("raster3d"));
     module->description = _("Experimental NVIZ CLI prototype.");
 
     params = (struct GParams *)G_malloc(sizeof(struct GParams));

Modified: grass/trunk/visualization/ximgview/main.c
===================================================================
--- grass/trunk/visualization/ximgview/main.c	2009-06-24 16:38:17 UTC (rev 38060)
+++ grass/trunk/visualization/ximgview/main.c	2009-06-24 16:56:59 UTC (rev 38061)
@@ -287,7 +287,7 @@
     G_gisinit(argv[0]);
 
     module = G_define_module();
-    module->keywords = _("display");
+    G_add_keyword(_("display"));
     module->description = _("View BMP images from the PNG driver.");
 
     opt.image = G_define_option();



More information about the grass-commit mailing list