[packages/grass] - updated to 6.4.3 - updated ncurses,ffmpeg,ac patches - added format patch (massive -Werror=format-

qboosh qboosh at pld-linux.org
Fri Jun 13 20:49:07 CEST 2014


commit d62d471aa20cfc9694daf77dacf2bfdd7349d5fb
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Fri Jun 13 20:52:47 2014 +0200

    - updated to 6.4.3
    - updated ncurses,ffmpeg,ac patches
    - added format patch (massive -Werror=format-security fixes and workarounds)

 grass-ac.patch     |    11 +
 grass-ffmpeg.patch |   124 +-
 grass-format.patch | 24363 +++++++++++++++++++++++++++++++++++++++++++++++++++
 grass.spec         |    60 +-
 ncurses.patch      |    16 +-
 5 files changed, 24435 insertions(+), 139 deletions(-)
---
diff --git a/grass.spec b/grass.spec
index 329bd5f..84d8c9e 100644
--- a/grass.spec
+++ b/grass.spec
@@ -1,37 +1,41 @@
 # TODO
 # - use system tk-BWidget instead of bundled 1.2.1 (lib/external/bwidget)
+# - openDWG
 #
 # Conditional build, see http://grass.itc.it/grass61/source/REQUIREMENTS.html
 # for description of optional requirements.
-%bcond_without	tcl	# disable gui and nviz
-%bcond_without	mysql	# disable MySQL support
-%bcond_without	odbc	# disable unixODBC support
-%bcond_without	xanim	# disable xanim module
+%bcond_without	tcl	# GUI and nviz
+%bcond_without	mysql	# MySQL support
+%bcond_without	odbc	# unixODBC support
+%bcond_without	glw	# GLw interface
+%bcond_without	xanim	# xanim module
 
 Summary:	The Geographic Resources Analysis Support System
 Summary(pl.UTF-8):	System obsługujący analizę zasobów geograficznych
 Name:		grass
-Version:	6.4.2
+Version:	6.4.3
 Release:	1
 Epoch:		1
 License:	GPL v2+
 Group:		X11/Applications
 Source0:	http://grass.osgeo.org/grass64/source/%{name}-%{version}.tar.gz
-# Source0-md5:	d3398d6b1e3a2ef19cfb6e39a5ae9919
+# Source0-md5:	d82d11b96e1ca1e23078b7657293bf22
 Patch0:		%{name}-soname.patch
 Patch1:		ncurses.patch
 Patch2:		%{name}-ffmpeg.patch
 Patch3:		%{name}-ac.patch
+Patch4:		%{name}-format.patch
 URL:		http://grass.osgeo.org/
 %{?with_tcl:BuildRequires:	OpenGL-GLU-devel}
-BuildRequires:	OpenGL-GLw-devel
+%{?with_glw:BuildRequires:	OpenGL-GLw-devel}
 BuildRequires:	autoconf >= 2.13
 BuildRequires:	automake
 BuildRequires:	bison
 BuildRequires:	blas-devel
 BuildRequires:	cairo-devel
+# libavcodec libavformat libavutil libswscale
 BuildRequires:	ffmpeg-devel
-BuildRequires:	fftw3-devel
+BuildRequires:	fftw3-devel >= 3
 BuildRequires:	flex
 BuildRequires:	freetype-devel >= 2.0.0
 BuildRequires:	gcc-fortran
@@ -44,22 +48,28 @@ BuildRequires:	libjpeg-devel
 BuildRequires:	libpng-devel
 BuildRequires:	libstdc++-devel
 BuildRequires:	libtiff-devel
-BuildRequires:	man
+# man or man-db
+BuildRequires:	/usr/bin/man
 %{?with_xanim:BuildRequires:	motif-devel}
 %{?with_mysql:BuildRequires:	mysql-devel}
 BuildRequires:	ncurses-devel
+BuildRequires:	pkgconfig
 BuildRequires:	postgresql-backend-devel
 BuildRequires:	postgresql-devel
 BuildRequires:	proj-devel >= 4.4.6
 BuildRequires:	proj-progs
 BuildRequires:	python-devel >= 1:2.3
+BuildRequires:	python-wxPython
 BuildRequires:	readline-devel
 BuildRequires:	sed >= 4.0
 BuildRequires:	sqlite3-devel >= 3.0
 %{?with_tcl:BuildRequires:	tcl-devel >= 8.4}
 %{?with_tcl:BuildRequires:	tk-devel >= 8.4}
 %{?with_odbc:BuildRequires:	unixODBC-devel}
-BuildRequires:	wxGTK2-unicode-devel
+BuildRequires:	wxGTK2-unicode-devel >= 2.8.1
+BuildRequires:	xorg-lib-libX11-devel
+BuildRequires:	xorg-lib-libXext-devel
+BuildRequires:	xorg-lib-libXt-devel
 BuildRequires:	zlib-devel
 # R language?
 Requires:	proj >= 4.4.6
@@ -153,6 +163,7 @@ Pliki nagłówkowe i biblioteki statyczne systemu GRASS.
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
+%patch4 -p1
 
 cp -f lib/external/bwidget/CHANGES.txt bwidget.CHANGES.TXT
 cp -f lib/external/bwidget/README.grass bwidget.README.grass
@@ -176,6 +187,8 @@ CPPFLAGS="-I/usr/include/ncurses"
 	--with-ffmpeg-includes='/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale' \
 	--with-freetype \
 	--with-freetype-includes=/usr/include/freetype2 \
+	--with-geos=/usr/bin/geos-config \
+	%{?with_glw:--with-glw} \
 	--with-lapack \
 	%{?with_xanim:--with-motif} \
 	%{?with_mysql:--with-mysql} \
@@ -191,7 +204,7 @@ CPPFLAGS="-I/usr/include/ncurses"
 	--with-sqlite \
 	--with%{!?with_tcl:out}-tcltk \
 	--with-wxwidgets=/usr/bin/wx-gtk2-unicode-config
-# --with-glw requires Motif parts in -lGLw or -lGLwM
+
 %{__make}
 
 %install
@@ -312,6 +325,7 @@ rm -rf $RPM_BUILD_ROOT
 %lang(ko) %{_libdir}/grass-%{gver}/etc/msgs/ko.msg
 %lang(lv) %{_libdir}/grass-%{gver}/etc/msgs/lv.msg
 %lang(mr) %{_libdir}/grass-%{gver}/etc/msgs/mr.msg
+%lang(nl) %{_libdir}/grass-%{gver}/etc/msgs/nl.msg
 %lang(pl) %{_libdir}/grass-%{gver}/etc/msgs/pl.msg
 %lang(pt) %{_libdir}/grass-%{gver}/etc/msgs/pt.msg
 %lang(pt_BR) %{_libdir}/grass-%{gver}/etc/msgs/pt_br.msg
@@ -348,18 +362,30 @@ rm -rf $RPM_BUILD_ROOT
 %dir %{_libdir}/grass-%{gver}/etc/wxpython
 %{_libdir}/grass-%{gver}/etc/wxpython/README
 %{_libdir}/grass-%{gver}/etc/wxpython/compat
-%{_libdir}/grass-%{gver}/etc/wxpython/gis_set.py*
-%{_libdir}/grass-%{gver}/etc/wxpython/gui_modules
+%{_libdir}/grass-%{gver}/etc/wxpython/core
+%{_libdir}/grass-%{gver}/etc/wxpython/dbmgr
+%{_libdir}/grass-%{gver}/etc/wxpython/gcp
+%{_libdir}/grass-%{gver}/etc/wxpython/gmodeler
+%{_libdir}/grass-%{gver}/etc/wxpython/gui_core
 %{_libdir}/grass-%{gver}/etc/wxpython/icons
+%{_libdir}/grass-%{gver}/etc/wxpython/lmgr
+%{_libdir}/grass-%{gver}/etc/wxpython/location_wizard
+%{_libdir}/grass-%{gver}/etc/wxpython/mapdisp
+%{_libdir}/grass-%{gver}/etc/wxpython/modules
+%{_libdir}/grass-%{gver}/etc/wxpython/nviz
+%{_libdir}/grass-%{gver}/etc/wxpython/psmap
 %attr(755,root,root) %{_libdir}/grass-%{gver}/etc/wxpython/scripts
-%{_libdir}/grass-%{gver}/etc/wxpython/wxgui.py*
+%{_libdir}/grass-%{gver}/etc/wxpython/vdigit
+%{_libdir}/grass-%{gver}/etc/wxpython/wxplot
 %{_libdir}/grass-%{gver}/etc/wxpython/xml
+%{_libdir}/grass-%{gver}/etc/wxpython/gis_set.py*
+%{_libdir}/grass-%{gver}/etc/wxpython/wxgui.py*
 %{_libdir}/grass-%{gver}/fonts
 %attr(755,root,root) %{_libdir}/grass-%{gver}/scripts
 %dir %{_libdir}/grass-%{gver}/tools
+%attr(755,root,root) %{_libdir}/grass-%{gver}/tools/g.echo
+%attr(755,root,root) %{_libdir}/grass-%{gver}/tools/g.html2man
 %attr(755,root,root) %{_libdir}/grass-%{gver}/tools/mkhtml.sh
-%dir %{_libdir}/grass-%{gver}/tools/g.html2man
-%attr(755,root,root) %{_libdir}/grass-%{gver}/tools/g.html2man/g.html2man
 %{_mandir}/man1/cairodriver.1*
 %{_mandir}/man1/d.*.1*
 %{_mandir}/man1/databaseintro.1*
@@ -418,9 +444,11 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_libdir}/grass-%{gver}/etc/nviz2.2/nviz
 %dir %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs
 %lang(de) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/de.msg
+%lang(fr) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/fr.msg
 %lang(it) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/it.msg
 %lang(ja) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/ja.msg
 %lang(lv) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/lv.msg
+%lang(nl) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/nl.msg
 %lang(pl) %{_libdir}/grass-%{gver}/etc/nviz2.2/msgs/pl.msg
 %dir %{_libdir}/grass-%{gver}/etc/nviz2.2/scripts
 %attr(755,root,root) %{_libdir}/grass-%{gver}/etc/nviz2.2/scripts/*
diff --git a/grass-ac.patch b/grass-ac.patch
index e93f4b1..a1c9699 100644
--- a/grass-ac.patch
+++ b/grass-ac.patch
@@ -195,6 +195,17 @@
  SCRIPT_ACTIONS += $(BIN)/$(PGM).bat
  endif
  
+--- grass-6.4.3/include/Make/Rules.make.orig	2013-03-02 11:52:07.000000000 +0100
++++ grass-6.4.3/include/Make/Rules.make	2014-06-11 21:22:16.080021691 +0200
+@@ -66,7 +66,7 @@
+ %.tab.h %.tab.c: %.y
+ 	$(YACC) -b$* -p$* $(YACCFLAGS) $<
+ 
+-ifneq ($(MINGW),)
++ifeq ($(MINGW),yes)
+ mkpath = $(shell $(TOOLSDIR)/g.echo$(EXE) $(1));$(2)
+ else
+ mkpath = $(1):$(2)
 --- grass-6.4.2/general/g.version/Makefile.orig	2011-04-18 20:13:39.000000000 +0200
 +++ grass-6.4.2/general/g.version/Makefile	2012-10-21 08:48:28.460856763 +0200
 @@ -29,4 +29,4 @@
diff --git a/grass-ffmpeg.patch b/grass-ffmpeg.patch
index 905bef0..4b80df7 100644
--- a/grass-ffmpeg.patch
+++ b/grass-ffmpeg.patch
@@ -1,117 +1,11 @@
---- grass-6.4.2/configure.in.orig	2012-10-20 12:50:17.287207081 +0200
-+++ grass-6.4.2/configure.in	2012-10-20 13:02:02.273844162 +0200
-@@ -1125,7 +1125,7 @@
- LOC_CHECK_LIB_PATH(ffmpeg, FFMPEG, FFMPEGLIBPATH)
- 
- LOC_CHECK_LIBS(avutil, av_free, FFMPEG, $FFMPEGLIBPATH, FFMPEGLIB,,,,$MATHLIB)
--LOC_CHECK_LIBS(avcodec, avcodec_init, FFMPEG, $FFMPEGLIBPATH, FFMPEGLIB, $FFMPEGLIB,,,$MATHLIB)
--LOC_CHECK_LIBS(avformat, av_set_parameters, FFMPEG, $FFMPEGLIBPATH, FFMPEGLIB, $FFMPEGLIB,,,$MATHLIB)
-+LOC_CHECK_LIBS(avcodec, avcodec_register_all, FFMPEG, $FFMPEGLIBPATH, FFMPEGLIB, $FFMPEGLIB,,,$MATHLIB)
-+LOC_CHECK_LIBS(avformat, avformat_write_header, FFMPEG, $FFMPEGLIBPATH, FFMPEGLIB, $FFMPEGLIB,,,$MATHLIB)
- 
- fi # $USE_FFMPEG
---- grass-6.4.2/lib/ogsf/gsd_img_mpeg.c.orig	2009-01-12 08:46:29.000000000 +0100
-+++ grass-6.4.2/lib/ogsf/gsd_img_mpeg.c	2012-10-21 11:07:46.300506016 +0200
-@@ -66,7 +66,7 @@
- 
-     c = st->codec;
-     c->codec_id = codec_id;
--    c->codec_type = CODEC_TYPE_VIDEO;
-+    c->codec_type = AVMEDIA_TYPE_VIDEO;
- 
-     /* put sample parameters */
-     c->bit_rate = 400000;
-@@ -97,7 +97,7 @@
- 	c->flags |= CODEC_FLAG_GLOBAL_HEADER;
- 
-     c->flags |= CODEC_FLAG_QSCALE;
--    c->global_quality = st->quality = FF_QP2LAMBDA * 10;
-+    c->global_quality = FF_QP2LAMBDA * 10;
- 
-     return st;
- }
-@@ -215,7 +215,7 @@
- 
- 	av_init_packet(&pkt);
- 
--	pkt.flags |= PKT_FLAG_KEY;
-+	pkt.flags |= AV_PKT_FLAG_KEY;
- 	pkt.stream_index = st->index;
- 	pkt.data = (uint8_t *) picture;
- 	pkt.size = sizeof(AVPicture);
-@@ -236,7 +236,7 @@
- 		av_rescale_q(c->coded_frame->pts, c->time_base,
- 			     st->time_base);
- 	    if (c->coded_frame->key_frame)
--		pkt.flags |= PKT_FLAG_KEY;
-+		pkt.flags |= AV_PKT_FLAG_KEY;
- 	    pkt.stream_index = st->index;
- 	    pkt.data = video_outbuf;
- 	    pkt.size = out_size;
-@@ -301,10 +301,10 @@
-     av_register_all();
- 
-     /* auto detect the output format from the name. default is mpeg. */
--    fmt = guess_format(NULL, filename, NULL);
-+    fmt = av_guess_format(NULL, filename, NULL);
-     if (!fmt) {
- 	G_warning(_("Unable to deduce output format from file extension: using MPEG"));
--	fmt = guess_format("mpeg", NULL, NULL);
-+	fmt = av_guess_format("mpeg", NULL, NULL);
-     }
-     if (!fmt) {
- 	G_warning(_("Unable to find suitable output format"));
-@@ -312,7 +312,7 @@
-     }
- 
-     /* allocate the output media context */
--    oc = av_alloc_format_context();
-+    oc = avformat_alloc_context();
-     if (!oc) {
- 	G_warning(_("Out of memory"));
- 	return (-1);
-@@ -332,13 +332,7 @@
- 	    add_video_stream(oc, fmt->video_codec, (r - l + 1), (t - b + 1));
-     }
- 
--    /* set the output parameters (must be done even if no parameters). */
--    if (av_set_parameters(oc, NULL) < 0) {
--	G_warning(_("Invalid output format parameters"));
--	return (-1);
--    }
--
--    dump_format(oc, 0, filename, 1);
-+    av_dump_format(oc, 0, filename, 1);
- 
-     /* now that all the parameters are set, we can open the audio and
-        video codecs and allocate the necessary encode buffers */
-@@ -347,14 +341,14 @@
- 
-     /* open the output file, if needed */
-     if (!(fmt->flags & AVFMT_NOFILE)) {
--	if (url_fopen(&oc->pb, filename, URL_WRONLY) < 0) {
-+	if (avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) < 0) {
- 	    G_warning(_("Unable to open <%s>"), filename);
- 	    return (-1);
- 	}
-     }
- 
-     /* write the stream header, if any */
--    av_write_header(oc);
-+    avformat_write_header(oc, NULL);
- 
- 
+--- grass-6.4.3/lib/ogsf/gsd_img_mpeg.c.orig	2013-07-09 21:05:44.000000000 +0200
++++ grass-6.4.3/lib/ogsf/gsd_img_mpeg.c	2014-06-10 21:53:30.055116809 +0200
+@@ -31,7 +31,7 @@
+ #include <avutil.h>
  #else
-@@ -436,11 +430,7 @@
- 
-     if (!(fmt->flags & AVFMT_NOFILE)) {
- 	/* close the output file */
--#if (LIBAVFORMAT_VERSION_INT>>16) < 52
--	url_fclose(&oc->pb);
--#else
--	url_fclose(oc->pb);
--#endif
-+	avio_close(oc->pb);
-     }
+ /* libavutil 51.22.1's avutil.h doesn't include libavutil/mathematics.h */
+-#include <mathematics.h>
++#include <libavutil/mathematics.h>
+ #endif
  
-     /* free the stream */
+ /* 5 seconds stream duration */
diff --git a/grass-format.patch b/grass-format.patch
new file mode 100644
index 0000000..a104dca
--- /dev/null
+++ b/grass-format.patch
@@ -0,0 +1,24363 @@
+--- grass-6.4.3/lib/gis/datum.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/datum.c	2014-05-18 20:07:10.986669222 +0200
+@@ -110,12 +110,12 @@
+     int returnval = -1;
+ 
+     if (NULL != G_find_key_value("datum", projinfo)) {
+-	sprintf(datumname, G_find_key_value("datum", projinfo));
++	strcpy(datumname, G_find_key_value("datum", projinfo));
+ 	returnval = 1;
+     }
+ 
+     if (G_find_key_value("datumparams", projinfo) != NULL) {
+-	sprintf(params, G_find_key_value("datumparams", projinfo));
++	strcpy(params, G_find_key_value("datumparams", projinfo));
+ 	returnval = 2;
+     }
+     else if (G_find_key_value("nadgrids", projinfo) != NULL) {
+--- grass-6.4.3/lib/gis/get_cellhd.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/get_cellhd.c	2014-05-18 20:40:43.373293949 +0200
+@@ -75,10 +75,10 @@
+ 		    real_name, real_mapset);
+ 	    tail = buf + strlen(buf);
+ 	    if (!G_find_cell(real_name, real_mapset))
+-		sprintf(tail, _("which is missing."));
++		strcpy(tail, _("which is missing."));
+ 	    else
+-		sprintf(tail, _("whose header file can't be opened."));
+-	    G_warning(buf);
++		strcpy(tail, _("whose header file can't be opened."));
++	    G_warning("%s", buf);
+ 	    return -1;
+ 	}
+     }
+@@ -106,12 +106,12 @@
+ 		real_name, real_mapset);
+     }
+     else
+-	sprintf(tail, _(" Invalid format."));
++	strcpy(tail, _(" Invalid format."));
+     tail = buf + strlen(buf);
+     strcpy(tail, err);
+ 
+     G_free(err);
+ 
+-    G_warning(buf);
++    G_warning("%s", buf);
+     return -1;
+ }
+--- grass-6.4.3/lib/gis/parser.c.orig	2012-09-22 11:52:12.000000000 +0200
++++ grass-6.4.3/lib/gis/parser.c	2014-06-03 17:43:11.091369108 +0200
+@@ -923,7 +923,7 @@
+ 		sprintf(buff, "GRASS_VERBOSE=%d", G_verbose_max());
+ 		putenv(G_store(buff));
+ 		if (quiet == 1) {
+-		    G_warning(_("Use either --quiet or --verbose flag, not both. Assuming --verbose."));
++		    G_warning("%s", _("Use either --quiet or --verbose flag, not both. Assuming --verbose."));
+ 		}
+ 		quiet = -1;
+ 	    }
+@@ -937,7 +937,7 @@
+ 		sprintf(buff, "GRASS_VERBOSE=%d", G_verbose_min());
+ 		putenv(G_store(buff));
+ 		if (quiet == -1) {
+-		    G_warning(_("Use either --quiet or --verbose flag, not both. Assuming --quiet."));
++		    G_warning("%s", _("Use either --quiet or --verbose flag, not both. Assuming --quiet."));
+ 		}
+ 		quiet = 1;	/* for passing to gui init */
+ 	    }
+@@ -1072,18 +1072,18 @@
+ 	pgm_name = "??";
+ 
+     if (module_info.label || module_info.description) {
+-	fprintf(stderr, _("\nDescription:\n"));
++	fputs(_("\nDescription:\n"), stderr);
+ 	if (module_info.label)
+ 	    fprintf(stderr, " %s\n", module_info.label);
+ 	if (module_info.description)
+ 	    fprintf(stderr, " %s\n", module_info.description);
+     }
+     if (module_info.keywords) {
+-	fprintf(stderr, _("\nKeywords:\n"));
++	fputs(_("\nKeywords:\n"), stderr);
+ 	fprintf(stderr, " %s\n", module_info.keywords);
+     }
+ 
+-    fprintf(stderr, _("\nUsage:\n "));
++    fputs(_("\nUsage:\n "), stderr);
+ 
+     len = show(pgm_name, 1);
+ 
+@@ -1151,7 +1151,7 @@
+ 
+     /* Print help info for flags */
+ 
+-    fprintf(stderr, _("\nFlags:\n"));
++    fputs(_("\nFlags:\n"), stderr);
+ 
+     if (n_flags) {
+ 	flag = &first_flag;
+@@ -1182,7 +1182,7 @@
+     /* Print help info for options */
+ 
+     if (n_opts) {
+-	fprintf(stderr, _("\nParameters:\n"));
++	fputs(_("\nParameters:\n"), stderr);
+ 	opt = &first_option;
+ 	while (opt != NULL) {
+ 	    fprintf(stderr, "  %*s   ", maxlen, opt->key);
+@@ -1991,7 +1991,7 @@
+ #endif
+ 
+     if (!fp)
+-	G_fatal_error(_("Unable to spawn the 'wish' program"));
++	G_fatal_error("%s", _("Unable to spawn the 'wish' program"));
+ 
+     fprintf(fp, "source $env(GISBASE)/etc/gui.tcl\n");
+ 
+@@ -2010,7 +2010,7 @@
+     if (!pgm_name)
+ 	pgm_name = G_program_name();
+     if (!pgm_name)
+-	G_fatal_error(_("Unable to determine program name"));
++	G_fatal_error("%s", _("Unable to determine program name"));
+ 
+     sprintf(script, "%s/etc/wxpython/gui_core/forms.py",
+ 	    getenv("GISBASE"));
+@@ -2650,7 +2650,7 @@
+ {
+     char buff[1024];
+ 
+-    fprintf(stderr, _("\nFLAG: Set the following flag?\n"));
++    fputs(_("\nFLAG: Set the following flag?\n"), stderr);
+     sprintf(buff, "    %s?", flag->description);
+     flag->answer = G_yes(buff, 0);
+ 
+@@ -2687,7 +2687,7 @@
+ 	else
+ 	    no_prompt = -1;
+ 	if (no_prompt) {
+-	    fprintf(stderr, _("enter option > "));
++	    fputs(_("enter option > "), stderr);
+ 	    if (fgets(buff, 1024, stdin) == 0)
+ 		exit(EXIT_SUCCESS);;
+ 	    bptr = buff;	/* strip newline  */
+--- grass-6.4.3/lib/gis/put_title.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/put_title.c	2014-06-05 21:08:22.787510801 +0200
+@@ -25,10 +25,9 @@
+     in = out = 0;
+     in = G_fopen_old("cats", name, mapset);
+     if (!in) {
+-	sprintf(buf,
++	G_warning(
+ 		_("category information for [%s] in [%s] missing or invalid"),
+ 		name, mapset);
+-	G_warning(buf);
+ 	return -1;
+     }
+ 
+@@ -36,8 +35,7 @@
+     out = fopen(tempfile, "w");
+     if (!out) {
+ 	fclose(in);
+-	sprintf(buf, _("G_put_title - can't create a temp file"));
+-	G_warning(buf);
++	G_warning("%s", _("G_put_title - can't create a temp file"));
+ 	return -1;
+     }
+ 
+@@ -53,25 +51,22 @@
+ 
+     /* must be #cats line, title line, and label for cat 0 */
+     if (line < 3) {
+-	sprintf(buf, _("category information for [%s] in [%s] invalid"), name,
++	G_warning(_("category information for [%s] in [%s] invalid"), name,
+ 		mapset);
+-	G_warning(buf);
+ 	return -1;
+     }
+ 
+     in = fopen(tempfile, "r");
+     if (!in) {
+-	sprintf(buf, _("G_put_title - can't reopen temp file"));
+-	G_warning(buf);
++	G_warning("%s", _("G_put_title - can't reopen temp file"));
+ 	return -1;
+     }
+ 
+     out = G_fopen_new("cats", name);
+     if (!out) {
+ 	fclose(in);
+-	sprintf(buf, _("can't write category information for [%s] in [%s]"),
++	G_warning(_("can't write category information for [%s] in [%s]"),
+ 		name, mapset);
+-	G_warning(buf);
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/gis/legal_name.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/legal_name.c	2014-06-07 22:14:57.910492506 +0200
+@@ -36,7 +36,7 @@
+ int G_legal_filename(const char *s)
+ {
+     if (*s == '.' || *s == 0) {
+-	fprintf(stderr, _("Illegal filename.  Cannot be '.' or 'NULL'\n"));
++	fputs(_("Illegal filename.  Cannot be '.' or 'NULL'\n"), stderr);
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/gis/closecell.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/closecell.c	2014-06-08 08:29:43.166390368 +0200
+@@ -352,7 +352,7 @@
+ 	     */
+ 	    G_quant_round(&fcb->quant);
+ 	    if (G_write_quant(fcb->name, fcb->mapset, &fcb->quant) < 0)
+-		G_warning(_("unable to write quant file!"));
++		G_warning("%s", _("unable to write quant file!"));
+ 	}
+ 	else {
+ 	    /* remove cell_misc/name/f_quant */
+@@ -403,7 +403,7 @@
+     int stat;
+ 
+     if (fcb->map_type == CELL_TYPE) {
+-	G_warning(_("unable to write f_format file for CELL maps"));
++	G_warning("%s", _("unable to write f_format file for CELL maps"));
+ 	return 0;
+     }
+     format_kv = G_create_key_value();
+--- grass-6.4.3/lib/gis/opencell.c.orig	2009-03-07 11:45:23.000000000 +0100
++++ grass-6.4.3/lib/gis/opencell.c	2014-06-08 10:07:35.232934640 +0200
+@@ -663,7 +663,7 @@
+     tempname = G_tempfile();
+     fd = creat(tempname, 0666);
+     if (fd < 0) {
+-	G_warning(_("G__open_raster_new(): no temp files available"));
++	G_warning("%s", _("G__open_raster_new(): no temp files available"));
+ 	G_free(tempname);
+ 	G_free(map);
+ 	G_free(mapset);
+@@ -733,7 +733,7 @@
+ 	}
+ 
+ 	if (open_mode == OPEN_NEW_RANDOM) {
+-	    G_warning(_("Unable to write embedded null values "
++	    G_warning("%s", _("Unable to write embedded null values "
+ 			"for raster map open for random access"));
+ 	    if (fcb->map_type == CELL_TYPE)
+ 		G_write_zeros(fd,
+@@ -764,7 +764,7 @@
+     tempname = G_tempfile();
+     null_fd = creat(tempname, 0666);
+     if (null_fd < 0) {
+-	G_warning(_("G__open_raster_new(): no temp files available"));
++	G_warning("%s", _("G__open_raster_new(): no temp files available"));
+ 	G_free(tempname);
+ 	G_free(fcb->name);
+ 	G_free(fcb->mapset);
+@@ -938,7 +938,7 @@
+ {
+     FP_TYPE_SET = 1;
+     if (map_type != FCELL_TYPE && map_type != DCELL_TYPE) {
+-	G_warning(_("G_set_fp_type(): can only be called with FCELL_TYPE or DCELL_TYPE"));
++	G_warning("%s", _("G_set_fp_type(): can only be called with FCELL_TYPE or DCELL_TYPE"));
+ 	return -1;
+     }
+     FP_TYPE = map_type;
+@@ -1176,7 +1176,7 @@
+     struct Quant_table *p;
+ 
+     if (fcb->open_mode != OPEN_OLD) {
+-	G_warning(_("G_set_quant_rules() can be called only for "
++	G_warning("%s", _("G_set_quant_rules() can be called only for "
+ 		    "raster maps opened for reading"));
+ 	return -1;
+     }
+--- grass-6.4.3/lib/gis/seek.c.orig	2013-06-08 11:52:06.000000000 +0200
++++ grass-6.4.3/lib/gis/seek.c	2014-06-08 10:48:30.582883465 +0200
+@@ -49,12 +49,12 @@
+ {
+ #ifdef HAVE_FSEEKO
+     if (fseeko(fp, offset, whence) != 0)
+-	G_fatal_error(_("Unable to seek"));
++	G_fatal_error("%s", _("Unable to seek"));
+ #else
+     long loff = (long) offset;
+     if ((off_t) loff != offset)
+-	G_fatal_error(_("Seek offset out of range"));
++	G_fatal_error("%s", _("Seek offset out of range"));
+     if (fseek(fp, loff, whence) != 0)
+-	G_fatal_error(_("Unable to seek"));
++	G_fatal_error("%s", _("Unable to seek"));
+ #endif     
+ }
+--- grass-6.4.3/lib/gis/history.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/history.c	2014-06-08 11:45:56.506144976 +0200
+@@ -260,7 +260,7 @@
+     cmdlen = strlen(cmdlin);
+ 
+     if (hist->edlinecnt > MAXEDLINES - 2) {
+-	G_warning(_("Not enough room in history file to record command line."));
++	G_warning("%s", _("Not enough room in history file to record command line."));
+ 	return 1;
+     }
+ 
+@@ -270,7 +270,7 @@
+     }
+ 
+     if (cmdlen < 70) {		/* ie if it will fit on a single line */
+-	sprintf(hist->edhist[hist->edlinecnt], G_recreate_command());
++	strcpy(hist->edhist[hist->edlinecnt], G_recreate_command());
+ 	hist->edlinecnt++;
+     }
+     else {			/* multi-line required */
+@@ -282,7 +282,7 @@
+ 	    j += 68;
+ 	    hist->edlinecnt++;
+ 	    if (hist->edlinecnt > MAXEDLINES - 2) {
+-		G_warning(_("Not enough room in history file for command line (truncated)."));
++		G_warning("%s", _("Not enough room in history file for command line (truncated)."));
+ 		return 2;
+ 	    }
+ 	}
+--- grass-6.4.3/lib/gis/null_val.c.orig	2009-03-29 09:47:50.000000000 +0200
++++ grass-6.4.3/lib/gis/null_val.c	2014-06-08 12:35:42.399416072 +0200
+@@ -88,7 +88,7 @@
+ 		break;
+ 
+ 	    default:
+-		G_warning(_("EmbedGivenNulls: wrong data type!"));
++		G_warning("%s", _("EmbedGivenNulls: wrong data type!"));
+ 	    }
+ 	}
+     }
+@@ -112,7 +112,7 @@
+     strcpy(errMsg, _("Null values have not been initialized. "));
+     strcat(errMsg, _("G_gisinit() must be called first. "));
+     strcat(errMsg, _("Please advise GRASS developers of this error.\n"));
+-    G_fatal_error(errMsg);
++    G_fatal_error("%s", errMsg);
+ 
+     return;
+ }
+@@ -220,7 +220,7 @@
+ 	break;
+ 
+     default:
+-	G_warning(_("G_set_null_value: wrong data type!"));
++	G_warning("%s", _("G_set_null_value: wrong data type!"));
+     }
+ 
+     return;
+--- grass-6.4.3/lib/gis/put_cellhd.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/put_cellhd.c	2014-06-08 14:58:10.822571230 +0200
+@@ -21,10 +21,7 @@
+     FILE *fd;
+ 
+     if (!(fd = G_fopen_new("cellhd", name))) {
+-	char buf[1024];
+-
+-	sprintf(buf, _("Unable to create header file for [%s]"), name);
+-	G_warning(buf);
++	G_warning(_("Unable to create header file for [%s]"), name);
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/gis/quant_rw.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/quant_rw.c	2014-06-08 15:53:15.159169025 +0200
+@@ -63,16 +63,14 @@
+ 
+ int G_truncate_fp_map(const char *name, const char *mapset)
+ {
+-    char buf[300];
+     struct Quant quant;
+ 
+     G_quant_init(&quant);
+     G_quant_truncate(&quant);
+     /* quantize the map */
+     if (G_write_quant(name, mapset, &quant) < 0) {
+-	sprintf(buf, "G_truncate_fp_map: can't write quant rules for map %s",
++	G_warning("G_truncate_fp_map: can't write quant rules for map %s",
+ 		name);
+-	G_warning(buf);
+ 	return -1;
+     }
+     return 1;
+@@ -80,16 +78,14 @@
+ 
+ int G_round_fp_map(const char *name, const char *mapset)
+ {
+-    char buf[300];
+     struct Quant quant;
+ 
+     G_quant_init(&quant);
+     G_quant_round(&quant);
+     /* round the map */
+     if (G_write_quant(name, mapset, &quant) < 0) {
+-	sprintf(buf, "G_truncate_fp_map: can't write quant rules for map %s",
++	G_warning("G_truncate_fp_map: can't write quant rules for map %s",
+ 		name);
+-	G_warning(buf);
+ 	return -1;
+     }
+     return 1;
+@@ -113,20 +109,17 @@
+ int G_quantize_fp_map(const char *name, const char *mapset,
+ 		      CELL min, CELL max)
+ {
+-    char buf[300];
+     DCELL d_min, d_max;
+     struct FPRange fp_range;
+ 
+     if (G_read_fp_range(name, mapset, &fp_range) < 0) {
+-	sprintf(buf, "G_quantize_fp_map: can't read fp range for map %s",
++	G_warning("G_quantize_fp_map: can't read fp range for map %s",
+ 		name);
+-	G_warning(buf);
+ 	return -1;
+     }
+     G_get_fp_range_min_max(&fp_range, &d_min, &d_max);
+     if (G_is_d_null_value(&d_min) || G_is_d_null_value(&d_max)) {
+-	sprintf(buf, "G_quantize_fp_map: raster map %s is empty", name);
+-	G_warning(buf);
++	G_warning("G_quantize_fp_map: raster map %s is empty", name);
+ 	return -1;
+     }
+     return G_quantize_fp_map_range(name, mapset, d_min, d_max, min, max);
+@@ -159,17 +152,15 @@
+ int G_quantize_fp_map_range(const char *name, const char *mapset,
+ 			    DCELL d_min, DCELL d_max, CELL min, CELL max)
+ {
+-    char buf[300];
+     struct Quant quant;
+ 
+     G_quant_init(&quant);
+     G_quant_add_rule(&quant, d_min, d_max, min, max);
+     /* quantize the map */
+     if (G_write_quant(name, mapset, &quant) < 0) {
+-	sprintf(buf,
++	G_warning(
+ 		"G_quantize_fp_map_range: can't write quant rules for map %s",
+ 		name);
+-	G_warning(buf);
+ 	return -1;
+     }
+     return 1;
+@@ -200,11 +191,9 @@
+ {
+     CELL cell_min, cell_max;
+     DCELL d_min, d_max;
+-    char buf[300];
+ 
+     if (G_raster_map_type(name, mapset) == CELL_TYPE) {
+-	sprintf(buf, _("Cannot write quant rules: map %s is integer"), name);
+-	G_warning(buf);
++	G_warning(_("Cannot write quant rules: map %s is integer"), name);
+ 	return -1;
+     }
+ 
+@@ -212,8 +201,7 @@
+ 
+     /* first actually write the rules */
+     if (G__quant_export(name, mapset, quant) < 0) {
+-	sprintf(buf, _("Cannot write quant rules for map %s"), name);
+-	G_warning(buf);
++	G_warning(_("Cannot write quant rules for map %s"), name);
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/gis/make_colr.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/make_colr.c	2014-06-08 18:07:36.062334343 +0200
+@@ -37,8 +37,7 @@
+ 	return -1;
+     G_get_fp_range_min_max(&range, &min, &max);
+     if (G_is_d_null_value(&min) || G_is_d_null_value(&max)) {
+-	sprintf(buff, _(" The raster map %s@%s is empty"), name, mapset);
+-	G_warning(buff);
++	G_warning(_(" The raster map %s@%s is empty"), name, mapset);
+ 	return -1;
+     }
+ 
+@@ -49,17 +48,17 @@
+ 	    _("\n\nColor table needed for file [%s] in mapset [%s].\n"), name,
+ 	    mapset);
+ 
+-    fprintf(stderr, _("\nPlease identify the type desired:\n"));
+-    fprintf(stderr, _("    1:  Random colors\n"));
+-    fprintf(stderr, _("    2:  Red, green, and blue color ramps\n"));
+-    fprintf(stderr, _("    3:  Color wave\n"));
+-    fprintf(stderr, _("    4:  Gray scale\n"));
+-    fprintf(stderr, _("    5:  Aspect\n"));
+-    fprintf(stderr, _("    6:  Rainbow colors\n"));
+-    fprintf(stderr, _("    7:  Red through yellow to green\n"));
+-    fprintf(stderr, _("    8:  Green through yellow to red\n"));
+-    fprintf(stderr, _("RETURN  quit\n"));
+-    fprintf(stderr, "\n> ");
++    fputs(_("\nPlease identify the type desired:\n"), stderr);
++    fputs(_("    1:  Random colors\n"), stderr);
++    fputs(_("    2:  Red, green, and blue color ramps\n"), stderr);
++    fputs(_("    3:  Color wave\n"), stderr);
++    fputs(_("    4:  Gray scale\n"), stderr);
++    fputs(_("    5:  Aspect\n"), stderr);
++    fputs(_("    6:  Rainbow colors\n"), stderr);
++    fputs(_("    7:  Red through yellow to green\n"), stderr);
++    fputs(_("    8:  Green through yellow to red\n"), stderr);
++    fputs(_("RETURN  quit\n"), stderr);
++    fputs("\n> ", stderr);
+ 
+     for (;;) {
+ 	if (!G_gets(buff))
+--- grass-6.4.3/lib/gis/auto_mask.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/auto_mask.c	2014-06-08 18:46:56.845618470 +0200
+@@ -61,7 +61,7 @@
+     G__.mask_fd = G__open_cell_old("MASK", G_mapset());
+     if (G__.mask_fd < 0) {
+ 	G__.auto_mask = 0;
+-	G_warning(_("Unable to open automatic MASK file"));
++	G_warning("%s", _("Unable to open automatic MASK file"));
+ 	return 0;
+     }
+ 
+--- grass-6.4.3/lib/gis/get_datum_name.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/get_datum_name.c	2014-06-08 19:37:45.288888264 +0200
+@@ -50,13 +50,13 @@
+ 
+     for (;;) {
+ 	do {
+-	    fprintf(stderr, _("\nPlease specify datum name\n"));
+-	    fprintf(stderr,
+-		    _("Enter 'list' for the list of available datums\n"));
+-	    fprintf(stderr,
+-		    _("or 'custom' if you wish to enter custom parameters\n"));
+-	    fprintf(stderr, _("Hit RETURN to cancel request\n"));
+-	    fprintf(stderr, ">");
++	    fputs(_("\nPlease specify datum name\n"), stderr);
++	    fputs(
++		    _("Enter 'list' for the list of available datums\n"), stderr);
++	    fputs(
++		    _("or 'custom' if you wish to enter custom parameters\n"), stderr);
++	    fputs(_("Hit RETURN to cancel request\n"), stderr);
++	    fputs(">", stderr);
+ 	} while (!G_gets(answer));
+ 	G_strip(answer);
+ 
+@@ -66,7 +66,7 @@
+ 	if (strcmp(answer, "list") == 0) {
+ 	    Tmp_file = G_tempfile();
+ 	    if (NULL == (Tmp_fd = fopen(Tmp_file, "w")))
+-		G_warning(_("Cannot open temp file"));
++		G_warning("%s", _("Cannot open temp file"));
+ 	    else {
+ 		char *pager;
+ 
+@@ -94,7 +94,7 @@
+ 		break;
+ 
+ 	    if (G_get_datum_by_name(answer) < 0) {
+-		fprintf(stderr, _("\ninvalid datum\n"));
++		fputs(_("\ninvalid datum\n"), stderr);
+ 	    }
+ 	    else
+ 		break;
+@@ -106,15 +106,15 @@
+ 	/* For a custom datum we need to interactively ask for the ellipsoid */
+ 	if (G_ask_ellipse_name(ellipse) < 0)
+ 	    return -1;
+-	sprintf(ellpsname, ellipse);
++	strcpy(ellpsname, ellipse);
+ 	sprintf(datumname, "custom");
+     }
+     else {
+ 	/* else can look it up from datum.table */
+ 	if ((i = G_get_datum_by_name(answer)) < 0)
+ 	    return -1;
+-	sprintf(ellpsname, G_datum_ellipsoid(i));
+-	sprintf(datumname, G_datum_name(i));
++	strcpy(ellpsname, G_datum_ellipsoid(i));
++	strcpy(datumname, G_datum_name(i));
+     }
+ 
+     return 1;
+--- grass-6.4.3/lib/gis/ask.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/ask.c	2014-06-08 20:22:29.815498977 +0200
+@@ -421,11 +421,11 @@
+ 			_("Enter 'list' for a list of existing %s files\n"),
+ 			desc);
+ 	    if (lister) {
+-		fprintf(stderr, _("Enter 'list -f' for "));
++		fputs(_("Enter 'list -f' for "), stderr);
+ 		if (option && *option)
+ 		    fprintf(stderr, _("a list %s"), option);
+ 		else
+-		    fprintf(stderr, _("an extended list"));
++		    fputs(_("an extended list"), stderr);
+ 		fprintf(stderr, "\n");
+ 	    }
+ 
+@@ -558,7 +558,7 @@
+ 		break;
+ 
+ 	    default:
+-		G_fatal_error(_("ask: can't happen"));
++		G_fatal_error("%s", _("ask: can't happen"));
+ 	    }
+ 	}
+ 	/*
+--- grass-6.4.3/lib/gis/gishelp.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/gishelp.c	2014-06-08 21:19:52.288760558 +0200
+@@ -42,7 +42,7 @@
+     sprintf(file, "%s/txt/%s/%s", G_getenv("GISBASE"), helpfile, request);
+ 
+     if (!access(file, 04)) {
+-	fprintf(stderr, _("one moment...\n"));
++	fputs(_("one moment...\n"), stderr);
+ 	G_spawn(getenv("GRASS_PAGER"), getenv("GRASS_PAGER"), file, NULL);
+     }
+     else {
+--- grass-6.4.3/lib/gis/quant_io.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/quant_io.c	2014-06-09 17:59:11.167210690 +0200
+@@ -121,10 +121,9 @@
+     G_quant_free(quant);
+ 
+     if (G_raster_map_type(name, mapset) == CELL_TYPE) {
+-	sprintf(buf,
++	G_warning(
+ 		"G__quant_import: attempt to open quantization table for CELL_TYPE file [%s] in mapset {%s]",
+ 		name, mapset);
+-	G_warning(buf);
+ 	return -2;
+     }
+ 
+@@ -164,9 +163,8 @@
+ 	err = "empty";
+     }
+ 
+-    sprintf(buf,
++    G_warning(
+ 	    _("quantization file [%s] in mapset [%s] %s"), name, mapset, err);
+-    G_warning(buf);
+ 
+     return 0;
+ }
+--- grass-6.4.3/lib/gis/reclass.c.orig	2011-03-19 10:52:09.000000000 +0100
++++ grass-6.4.3/lib/gis/reclass.c	2014-06-09 18:26:30.657176515 +0200
+@@ -235,12 +235,12 @@
+     switch (reclass->type) {
+     case RECLASS_TABLE:
+ 	if (reclass->min > reclass->max || reclass->num <= 0) {
+-	    G_fatal_error(_("Illegal reclass request"));
++	    G_fatal_error("%s", _("Illegal reclass request"));
+ 	    return -1;
+ 	}
+ 	break;
+     default:
+-	G_fatal_error(_("Illegal reclass type"));
++	G_fatal_error("%s", _("Illegal reclass type"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/gis/sample.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/sample.c	2014-06-09 19:30:09.097096927 +0200
+@@ -281,7 +281,7 @@
+     if (strcmp(str, "no data") != 0)
+ 	sscanf(str, "%lf", &val);
+     else {
+-	G_warning(_("\"no data\" label found; setting to zero"));
++	G_warning("%s", _("\"no data\" label found; setting to zero"));
+ 	val = 0.0;
+     }
+ 
+@@ -296,5 +296,5 @@
+ 	    window->north, window->south, window->east, window->west);
+     G_debug(3, "      \tData point is north=%g east=%g", north, east);
+ 
+-    G_fatal_error(_("Problem reading raster map"));
++    G_fatal_error("%s", _("Problem reading raster map"));
+ }
+--- grass-6.4.3/lib/gis/gisinit.c.orig	2013-03-02 11:52:07.000000000 +0100
++++ grass-6.4.3/lib/gis/gisinit.c	2014-06-09 21:33:39.050275815 +0200
+@@ -51,7 +51,7 @@
+     G_set_program_name(pgm);
+ 
+     if (strcmp(version, GIS_H_VERSION) != 0)
+-	G_fatal_error(_("Incompatible library version for module. "
++	G_fatal_error("%s", _("Incompatible library version for module. "
+ 			"You need to rebuild GRASS or untangle multiple installations."));
+ 
+     /* Make sure location and mapset are set */
+@@ -87,7 +87,7 @@
+ 	return 0;
+ 
+     if (strcmp(version, GIS_H_VERSION) != 0)
+-	G_fatal_error(_("Incompatible library version for module. "
++	G_fatal_error("%s", _("Incompatible library version for module. "
+ 			"You need to rebuild GRASS or untangle multiple installations."));
+ 
+     gisinit();
+@@ -107,7 +107,7 @@
+ {
+     if (initialized)
+ 	return 1;
+-    G_warning(_("System not initialized. Programmer forgot to call G_gisinit()."));
++    G_warning("%s", _("System not initialized. Programmer forgot to call G_gisinit()."));
+     G_sleep(3);
+     exit(EXIT_FAILURE);
+ }
+--- grass-6.4.3/lib/gis/spawn.c.orig	2011-09-03 11:52:05.000000000 +0200
++++ grass-6.4.3/lib/gis/spawn.c	2014-06-09 21:58:46.510244393 +0200
+@@ -653,7 +653,7 @@
+ 
+     pid = fork();
+     if (pid < 0) {
+-	G_warning(_("Unable to create a new process"));
++	G_warning("%s", _("Unable to create a new process"));
+ 	undo_signals(sp->signals, sp->num_signals, SST_PRE);
+ 
+ 	return status;
+@@ -676,7 +676,7 @@
+ 	do_bindings(sp->bindings, sp->num_bindings);
+ 
+ 	execvp(command, (char **)sp->args);
+-	G_warning(_("Unable to execute command"));
++	G_warning("%s", _("Unable to execute command"));
+ 	_exit(127);
+     }
+ 
+--- grass-6.4.3/lib/gis/get_projname.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/get_projname.c	2014-06-10 16:03:36.718887711 +0200
+@@ -35,7 +35,7 @@
+     npr = in_proj_keys->nitems;
+     Tmp_file = G_tempfile();
+     if (NULL == (Tmp_fd = fopen(Tmp_file, "w"))) {
+-	G_fatal_error(_("Cannot open temp file"));
++	G_fatal_error("%s", _("Cannot open temp file"));
+     }
+     for (i = 0; i < npr; i++) {
+ 	fprintf(Tmp_fd, "%s -- %s\n", in_proj_keys->key[i],
+@@ -46,11 +46,11 @@
+     for (;;) {
+ 
+ 	do {
+-	    fprintf(stderr, _("\n\nPlease specify projection name\n"));
+-	    fprintf(stderr,
+-		    _("Enter 'list' for the list of available projections\n"));
+-	    fprintf(stderr, _("Hit RETURN to cancel request\n"));
+-	    fprintf(stderr, ">");
++	    fputs(_("\n\nPlease specify projection name\n"), stderr);
++	    fputs(
++		    _("Enter 'list' for the list of available projections\n"), stderr);
++	    fputs(_("Hit RETURN to cancel request\n"), stderr);
++	    fputs(">", stderr);
+ 	} while (!G_gets(answer));
+ 
+ 	G_strip(answer);
+@@ -71,7 +71,7 @@
+ 	else {
+ 	    a = G_find_key_value(answer, in_proj_keys);
+ 	    if (a == NULL) {
+-		fprintf(stderr, _("\ninvalid projection\n"));
++		fputs(_("\ninvalid projection\n"), stderr);
+ 	    }
+ 	    else
+ 		break;
+--- grass-6.4.3/lib/gis/unix_socks.c.orig	2012-03-03 11:52:06.000000000 +0100
++++ grass-6.4.3/lib/gis/unix_socks.c	2014-06-10 16:34:33.565515675 +0200
+@@ -99,7 +99,7 @@
+     }
+ 
+     if ((lock = getenv("GIS_LOCK")) == NULL)
+-	G_fatal_error(_("Unable to get GIS_LOCK environment variable value"));
++	G_fatal_error("%s", _("Unable to get GIS_LOCK environment variable value"));
+ 
+     len = strlen(prefix) + strlen(user) + strlen(lock) + 3;
+     path = G_malloc(len);
+--- grass-6.4.3/lib/gis/range.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/range.c	2014-06-10 18:26:09.748709439 +0200
+@@ -141,7 +141,7 @@
+ {
+     struct Range range;
+     int fd;
+-    char buf[200], xdr_buf[100];
++    char xdr_buf[100];
+     DCELL dcell1, dcell2;
+     XDR xdr_str;
+ 
+@@ -189,8 +189,7 @@
+   error:
+     if (fd > 0)
+ 	close(fd);
+-    sprintf(buf, _("can't read f_range file for [%s in %s]"), name, mapset);
+-    G_warning(buf);
++    G_warning(_("can't read f_range file for [%s in %s]"), name, mapset);
+     return -1;
+ }
+ 
+@@ -240,10 +239,9 @@
+ 	DCELL dmin, dmax;
+ 
+ 	if (G_read_quant(name, mapset, &quant) < 0) {
+-	    sprintf(buf,
++	    G_warning(
+ 		    "G_read_range(): can't read quant rules for fp map %s@%s",
+ 		    name, mapset);
+-	    G_warning(buf);
+ 	    return -1;
+ 	}
+ 	if (G_quant_is_truncate(&quant) || G_quant_is_round(&quant)) {
+@@ -305,8 +303,7 @@
+   error:
+     if (fd)
+ 	fclose(fd);
+-    sprintf(buf, _("can't read range file for [%s in %s]"), name, mapset);
+-    G_warning(buf);
++    G_warning(_("can't read range file for [%s in %s]"), name, mapset);
+     return -1;
+ }
+ 
+@@ -334,10 +331,9 @@
+ int G_write_range(const char *name, const struct Range *range)
+ {
+     FILE *fd;
+-    char buf[200];
+ 
+     if (G_raster_map_type(name, G_mapset()) != CELL_TYPE) {
+-	sprintf(buf, "G_write_range(): the map is floating point!");
++	G_warning("G_write_range(): the map is floating point!");
+ 	goto error;
+     }
+     fd = G_fopen_new_misc("cell_misc", "range", name);
+@@ -356,9 +352,8 @@
+ 
+   error:
+     G_remove_misc("cell_misc", "range", name);	/* remove the old file with this name */
+-    sprintf(buf, _("can't write range file for [%s in %s]"),
++    G_warning(_("can't write range file for [%s in %s]"),
+ 	    name, G_mapset());
+-    G_warning(buf);
+     return -1;
+ }
+ 
+@@ -409,9 +404,8 @@
+ 
+   error:
+     G_remove(buf, "f_range");	/* remove the old file with this name */
+-    sprintf(buf, _("can't write range file for [%s in %s]"),
++    G_warning(_("can't write range file for [%s in %s]"),
+ 	    name, G_mapset());
+-    G_warning(buf);
+     return -1;
+ }
+ 
+--- grass-6.4.3/lib/gis/view.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/view.c	2014-06-10 20:15:33.278572634 +0200
+@@ -463,7 +463,7 @@
+ 	if (!Suppress_warn) {
+ 	    if (95 > (lap = compare_wind(&(View->vwin), &curwin))) {
+ 
+-		fprintf(stderr, _("GRASS window when view was saved:\n"));
++		fputs(_("GRASS window when view was saved:\n"), stderr);
+ 		G_format_northing(View->vwin.north, nbuf, G_projection());
+ 		fprintf(stderr, "north:   %s\n", nbuf);
+ 		G_format_northing(View->vwin.south, nbuf, G_projection());
+--- grass-6.4.3/lib/gis/get_ellipse.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/get_ellipse.c	2014-06-10 20:16:14.578571773 +0200
+@@ -281,7 +281,7 @@
+     if (fd == NULL) {
+ 	perror(file);
+ 	sprintf(buf, _("Unable to open ellipsoid table file <%s>"), file);
+-	fatal ? G_fatal_error(buf) : G_warning(buf);
++	fatal ? G_fatal_error("%s", buf) : G_warning("%s", buf);
+ 	return 0;
+     }
+ 
+--- grass-6.4.3/lib/gis/system.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/system.c	2014-06-10 20:16:32.605238063 +0200
+@@ -82,7 +82,7 @@
+     }
+ 
+     if (pid < 0) {
+-	G_warning(_("Can not create a new process!"));
++	G_warning("%s", _("Can not create a new process!"));
+ 	status = -1;
+     }
+     else {
+--- grass-6.4.3/lib/gis/mapset.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/mapset.c	2014-06-10 20:16:46.681904435 +0200
+@@ -36,7 +36,7 @@
+ 
+     m = G__mapset();
+     if (m == NULL)
+-	G_fatal_error(_("MAPSET is not set"));
++	G_fatal_error("%s", _("MAPSET is not set"));
+ 
+     if (first)
+ 	first = 0;
+--- grass-6.4.3/lib/gis/gdal.c.orig	2012-02-04 11:52:07.000000000 +0100
++++ grass-6.4.3/lib/gis/gdal.c	2014-06-10 20:17:08.445237319 +0200
+@@ -111,7 +111,7 @@
+ 	    return;
+     }
+ 
+-    G_fatal_error(_("Unable to load GDAL library"));
++    G_fatal_error("%s", _("Unable to load GDAL library"));
+ }
+ 
+ static void init_gdal(void)
+--- grass-6.4.3/lib/gis/home.c.orig	2009-05-16 11:52:30.000000000 +0200
++++ grass-6.4.3/lib/gis/home.c	2014-06-10 20:17:23.165237010 +0200
+@@ -36,7 +36,7 @@
+     if (home)
+ 	return home;
+ 
+-    G_fatal_error(_("unable to determine user's home directory"));
++    G_fatal_error("%s", _("unable to determine user's home directory"));
+     return NULL;
+ }
+ 
+--- grass-6.4.3/lib/gis/list.c.orig	2013-07-09 21:05:44.000000000 +0200
++++ grass-6.4.3/lib/gis/list.c	2014-06-10 20:17:51.285236424 +0200
+@@ -129,7 +129,7 @@
+     signal(SIGPIPE, sigpipe);
+ #endif
+     if (hit_return && isatty(1)) {
+-	fprintf(stderr, _("hit RETURN to continue -->"));
++	fputs(_("hit RETURN to continue -->"), stderr);
+ 	while (getchar() != '\n') ;
+     }
+ 
+@@ -251,7 +251,7 @@
+ 	break;
+ 
+     default:
+-	G_fatal_error(_("G_list: Unknown element type"));
++	G_fatal_error("%s", _("G_list: Unknown element type"));
+     }
+ 
+     buf = (char *)G_malloc(strlen(gisbase) + strlen(location)
+--- grass-6.4.3/lib/gis/set_window.c.orig	2014-06-10 20:18:23.221902425 +0200
++++ grass-6.4.3/lib/gis/set_window.c	2014-06-10 20:18:26.311902360 +0200
+@@ -73,7 +73,7 @@
+ 		G__.fileinfo[i].cellhd.proj == window->proj)
+ 		continue;
+ 	    if (i != maskfd) {
+-		G_warning(_("G_set_window(): projection/zone differs from that of "
++		G_warning("%s", _("G_set_window(): projection/zone differs from that of "
+ 			   "currently open raster maps"));
+ 		return -1;
+ 	    }
+--- grass-6.4.3/lib/gis/get_ell_name.c.orig	2008-11-25 02:31:13.000000000 +0100
++++ grass-6.4.3/lib/gis/get_ell_name.c	2014-06-10 20:39:34.461875928 +0200
+@@ -28,7 +28,7 @@
+ 
+     Tmp_file = G_tempfile();
+     if (NULL == (Tmp_fd = fopen(Tmp_file, "w"))) {
+-	G_fatal_error(_("Cannot open temp file"));
++	G_fatal_error("%s", _("Cannot open temp file"));
+     }
+     fprintf(Tmp_fd, "sphere\n");
+     for (i = 0; (sph = G_ellipsoid_name(i)); i++) {
+@@ -39,11 +39,11 @@
+ 
+     for (;;) {
+ 	do {
+-	    fprintf(stderr, _("\nPlease specify ellipsoid name\n"));
+-	    fprintf(stderr,
+-		    _("Enter 'list' for the list of available ellipsoids\n"));
+-	    fprintf(stderr, _("Hit RETURN to cancel request\n"));
+-	    fprintf(stderr, ">");
++	    fputs(_("\nPlease specify ellipsoid name\n"), stderr);
++	    fputs(
++		    _("Enter 'list' for the list of available ellipsoids\n"), stderr);
++	    fputs(_("Hit RETURN to cancel request\n"), stderr);
++	    fputs(">", stderr);
+ 	} while (!G_gets(answer));
+ 	G_strip(answer);
+ 	if (strlen(answer) == 0)
+@@ -64,7 +64,7 @@
+ 	    if (strcmp(answer, "sphere") == 0)
+ 		break;
+ 	    if (G_get_ellipsoid_by_name(answer, &aa, &e2) == 0) {
+-		fprintf(stderr, _("\ninvalid ellipsoid\n"));
++		fputs(_("\ninvalid ellipsoid\n"), stderr);
+ 	    }
+ 	    else
+ 		break;
+--- grass-6.4.3/lib/gis/env.c.orig	2008-11-25 02:31:14.000000000 +0100
++++ grass-6.4.3/lib/gis/env.c	2014-06-10 20:39:55.635208821 +0200
+@@ -239,7 +239,7 @@
+ 	    gisrc = getenv("GISRC");
+ 
+ 	if (!gisrc) {
+-	    G_fatal_error(_("GISRC - variable not set"));
++	    G_fatal_error("%s", _("GISRC - variable not set"));
+ 	    return (NULL);
+ 	}
+ 	strcpy(buf, gisrc);
+--- grass-6.4.3/lib/gmath/la.c.orig	2012-12-08 11:52:05.000000000 +0100
++++ grass-6.4.3/lib/gmath/la.c	2014-05-18 20:10:44.099998101 +0200
+@@ -57,7 +57,7 @@
+     mat_struct *tmp_arry;
+ 
+     if (rows < 1 || cols < 1 || ldim < rows) {
+-	G_warning(_("Matrix dimensions out of range"));
++	G_warning("%s", _("Matrix dimensions out of range"));
+ 	return NULL;
+     }
+ 
+@@ -113,7 +113,7 @@
+ int G_matrix_set(mat_struct * A, int rows, int cols, int ldim)
+ {
+     if (rows < 1 || cols < 1 || ldim < 0) {
+-	G_warning(_("Matrix dimensions out of range"));
++	G_warning("%s", _("Matrix dimensions out of range"));
+ 	return -1;
+     }
+ 
+@@ -146,12 +146,12 @@
+     mat_struct *B;
+ 
+     if (!A->is_init) {
+-	G_warning(_("Matrix is not initialised fully."));
++	G_warning("%s", _("Matrix is not initialised fully."));
+ 	return NULL;
+     }
+ 
+     if ((B = G_matrix_init(A->rows, A->cols, A->ldim)) == NULL) {
+-	G_warning(_("Unable to allocate space for matrix copy"));
++	G_warning("%s", _("Unable to allocate space for matrix copy"));
+ 	return NULL;
+     }
+ 
+@@ -240,13 +240,13 @@
+     int i, j;			/* loop variables */
+ 
+     if (c1 == 0) {
+-	G_warning(_("First scalar multiplier must be non-zero"));
++	G_warning("%s", _("First scalar multiplier must be non-zero"));
+ 	return NULL;
+     }
+ 
+     if (c2 == 0) {
+ 	if (!mt1->is_init) {
+-	    G_warning(_("One or both input matrices uninitialised"));
++	    G_warning("%s", _("One or both input matrices uninitialised"));
+ 	    return NULL;
+ 	}
+     }
+@@ -254,18 +254,18 @@
+     else {
+ 
+ 	if (!((mt1->is_init) && (mt2->is_init))) {
+-	    G_warning(_("One or both input matrices uninitialised"));
++	    G_warning("%s", _("One or both input matrices uninitialised"));
+ 	    return NULL;
+ 	}
+ 
+ 	if (mt1->rows != mt2->rows || mt1->cols != mt2->cols) {
+-	    G_warning(_("Matrix order does not match"));
++	    G_warning("%s", _("Matrix order does not match"));
+ 	    return NULL;
+ 	}
+     }
+ 
+     if ((mt3 = G_matrix_init(mt1->rows, mt1->cols, mt1->ldim)) == NULL) {
+-	G_warning(_("Unable to allocate space for matrix sum"));
++	G_warning("%s", _("Unable to allocate space for matrix sum"));
+ 	return NULL;
+     }
+ 
+@@ -319,17 +319,17 @@
+     integer1 no_trans = 'n';
+ 
+     if (!((mt1->is_init) || (mt2->is_init))) {
+-	G_warning(_("One or both input matrices uninitialised"));
++	G_warning("%s", _("One or both input matrices uninitialised"));
+ 	return NULL;
+     }
+ 
+     if (mt1->cols != mt2->rows) {
+-	G_warning(_("Matrix order does not match"));
++	G_warning("%s", _("Matrix order does not match"));
+ 	return NULL;
+     }
+ 
+     if ((mt3 = G_matrix_init(mt1->rows, mt2->cols, mt1->ldim)) == NULL) {
+-	G_warning(_("Unable to allocate space for matrix product"));
++	G_warning("%s", _("Unable to allocate space for matrix product"));
+ 	return NULL;
+     }
+ 
+@@ -441,29 +441,29 @@
+     mat_struct *wmat, *xmat, *mtx;
+ 
+     if (mt1->is_init == 0 || bmat->is_init == 0) {
+-	G_warning(_("Input: one or both data matrices uninitialised"));
++	G_warning("%s", _("Input: one or both data matrices uninitialised"));
+ 	return -1;
+     }
+ 
+     if (mt1->rows != mt1->cols || mt1->rows < 1) {
+-	G_warning(_("Principal matrix is not properly dimensioned"));
++	G_warning("%s", _("Principal matrix is not properly dimensioned"));
+ 	return -1;
+     }
+ 
+     if (bmat->cols < 1) {
+-	G_warning(_("Input: you must have at least one array to solve"));
++	G_warning("%s", _("Input: you must have at least one array to solve"));
+ 	return -1;
+     }
+ 
+     /* Now create solution matrix by copying the original coefficient matrix */
+     if ((xmat = G_matrix_copy(bmat)) == NULL) {
+-	G_warning(_("Could not allocate space for solution matrix"));
++	G_warning("%s", _("Could not allocate space for solution matrix"));
+ 	return -1;
+     }
+ 
+     /* Create working matrix for the coefficient array */
+     if ((mtx = G_matrix_copy(mt1)) == NULL) {
+-	G_warning(_("Could not allocate space for working matrix"));
++	G_warning("%s", _("Could not allocate space for working matrix"));
+ 	return -1;
+     }
+ 
+@@ -471,7 +471,7 @@
+        original information 
+      */
+     if ((wmat = G_matrix_copy(bmat)) == NULL) {
+-	G_warning(_("Could not allocate space for working matrix"));
++	G_warning("%s", _("Could not allocate space for working matrix"));
+ 	return -1;
+     }
+ 
+@@ -524,18 +524,18 @@
+ 	    G_matrix_free(mtx);
+ 
+ 	    if (res_info > 0) {
+-		G_warning(_("Matrix (or submatrix is singular). Solution undetermined"));
++		G_warning("%s", _("Matrix (or submatrix is singular). Solution undetermined"));
+ 		return 1;
+ 	    }
+ 	    else if (res_info < 0) {
+-		G_warning(_("Problem in LA routine."));
++		G_warning("%s", _("Problem in LA routine."));
+ 		return -1;
+ 	    }
+ 	    break;
+ 	}
+     default:
+ 	{
+-	    G_warning(_("Procedure not yet available for selected matrix type"));
++	    G_warning("%s", _("Procedure not yet available for selected matrix type"));
+ 	    return -1;
+ 	}
+     }				/* end switch */
+@@ -569,12 +569,12 @@
+     int i, j, k;		/* loop */
+ 
+     if (mt->rows != mt->cols) {
+-	G_warning(_("Matrix is not square. Cannot determine inverse"));
++	G_warning("%s", _("Matrix is not square. Cannot determine inverse"));
+ 	return NULL;
+     }
+ 
+     if ((mt0 = G_matrix_init(mt->rows, mt->rows, mt->ldim)) == NULL) {
+-	G_warning(_("Unable to allocate space for matrix"));
++	G_warning("%s", _("Unable to allocate space for matrix"));
+ 	return NULL;
+     }
+ 
+@@ -591,12 +591,12 @@
+ 
+     /* Solve system */
+     if ((k = G_matrix_LU_solve(mt, &res, mt0, NONSYM)) == 1) {
+-	G_warning(_("Matrix is singular"));
++	G_warning("%s", _("Matrix is singular"));
+ 	G_matrix_free(mt0);
+ 	return NULL;
+     }
+     else if (k < 0) {
+-	G_warning(_("Problem in LA procedure."));
++	G_warning("%s", _("Problem in LA procedure."));
+ 	G_matrix_free(mt0);
+ 	return NULL;
+     }
+@@ -684,12 +684,12 @@
+ int G_matrix_set_element(mat_struct * mt, int rowval, int colval, double val)
+ {
+     if (!mt->is_init) {
+-	G_warning(_("Element array has not been allocated"));
++	G_warning("%s", _("Element array has not been allocated"));
+ 	return -1;
+     }
+ 
+     if (rowval >= mt->rows || colval >= mt->cols || rowval < 0 || colval < 0) {
+-	G_warning(_("Specified element is outside array bounds"));
++	G_warning("%s", _("Specified element is outside array bounds"));
+ 	return -1;
+     }
+ 
+@@ -743,17 +743,17 @@
+     vec_struct *vc1;
+ 
+     if (col < 0 || col >= mt->cols) {
+-	G_warning(_("Specified matrix column index is outside range"));
++	G_warning("%s", _("Specified matrix column index is outside range"));
+ 	return NULL;
+     }
+ 
+     if (!mt->is_init) {
+-	G_warning(_("Matrix is not initialised"));
++	G_warning("%s", _("Matrix is not initialised"));
+ 	return NULL;
+     }
+ 
+     if ((vc1 = G_vector_init(mt->rows, mt->ldim, CVEC)) == NULL) {
+-	G_warning(_("Could not allocate space for vector structure"));
++	G_warning("%s", _("Could not allocate space for vector structure"));
+ 	return NULL;
+     }
+ 
+@@ -784,17 +784,17 @@
+     vec_struct *vc1;
+ 
+     if (row < 0 || row >= mt->cols) {
+-	G_warning(_("Specified matrix row index is outside range"));
++	G_warning("%s", _("Specified matrix row index is outside range"));
+ 	return NULL;
+     }
+ 
+     if (!mt->is_init) {
+-	G_warning(_("Matrix is not initialised"));
++	G_warning("%s", _("Matrix is not initialised"));
+ 	return NULL;
+     }
+ 
+     if ((vc1 = G_vector_init(mt->cols, mt->ldim, RVEC)) == NULL) {
+-	G_warning(_("Could not allocate space for vector structure"));
++	G_warning("%s", _("Could not allocate space for vector structure"));
+ 	return NULL;
+     }
+ 
+@@ -824,12 +824,12 @@
+ int G_matvect_extract_vector(mat_struct * mt, vtype vt, int indx)
+ {
+     if (vt == RVEC && indx >= mt->rows) {
+-	G_warning(_("Specified row index is outside range"));
++	G_warning("%s", _("Specified row index is outside range"));
+ 	return -1;
+     }
+ 
+     else if (vt == CVEC && indx >= mt->cols) {
+-	G_warning(_("Specified column index is outside range"));
++	G_warning("%s", _("Specified column index is outside range"));
+ 	return -1;
+     }
+ 
+@@ -849,7 +849,7 @@
+ 
+     default:
+ 	{
+-	    G_warning(_("Unknown vector type."));
++	    G_warning("%s", _("Unknown vector type."));
+ 	    return -1;
+ 	}
+ 
+@@ -974,34 +974,34 @@
+     int i;
+ 
+     if (!out->is_init) {
+-	G_warning(_("Output vector is uninitialized"));
++	G_warning("%s", _("Output vector is uninitialized"));
+ 	return NULL;
+     }
+ 
+     if (v1->type != v2->type) {
+-	G_warning(_("Vectors are not of the same type"));
++	G_warning("%s", _("Vectors are not of the same type"));
+ 	return NULL;
+     }
+ 
+     if (v1->type != out->type) {
+-	G_warning(_("Output vector is of incorrect type"));
++	G_warning("%s", _("Output vector is of incorrect type"));
+ 	return NULL;
+     }
+ 
+     if (v1->type == MATRIX_) {
+-	G_warning(_("Matrices not allowed"));
++	G_warning("%s", _("Matrices not allowed"));
+ 	return NULL;
+     }
+ 
+     if ((v1->type == ROWVEC_ && v1->cols != v2->cols) ||
+ 	(v1->type == COLVEC_ && v1->rows != v2->rows)) {
+-	G_warning(_("Vectors have differing dimensions"));
++	G_warning("%s", _("Vectors have differing dimensions"));
+ 	return NULL;
+     }
+ 
+     if ((v1->type == ROWVEC_ && v1->cols != out->cols) ||
+ 	(v1->type == COLVEC_ && v1->rows != out->rows)) {
+-	G_warning(_("Output vector has incorrect dimension"));
++	G_warning("%s", _("Output vector has incorrect dimension"));
+ 	return NULL;
+     }
+ 
+@@ -1047,12 +1047,12 @@
+ {
+     if ((cells < 1) || (vt == RVEC && ldim < 1)
+ 	|| (vt == CVEC && ldim < cells) || ldim < 0) {
+-	G_warning(_("Vector dimensions out of range"));
++	G_warning("%s", _("Vector dimensions out of range"));
+ 	return -1;
+     }
+ 
+     if ((vt == RVEC && vindx >= A->cols) || (vt == CVEC && vindx >= A->rows)) {
+-	G_warning(_("Row/column out of range"));
++	G_warning("%s", _("Row/column out of range"));
+ 	return -1;
+     }
+ 
+@@ -1102,7 +1102,7 @@
+     doublereal *startpt;
+ 
+     if (!vc->is_init)
+-	G_fatal_error(_("Matrix is not initialised"));
++	G_fatal_error("%s", _("Matrix is not initialised"));
+ 
+     if (vc->type == ROWVEC_) {
+ 	Nval = (integer) vc->cols;
+@@ -1154,7 +1154,7 @@
+     int ncells, incr;
+ 
+     if (!vc->is_init)
+-	G_fatal_error(_("Matrix is not initialised"));
++	G_fatal_error("%s", _("Matrix is not initialised"));
+ 
+     if (vc->type == ROWVEC_) {
+ 	ncells = (integer) vc->cols;
+@@ -1229,7 +1229,7 @@
+     int i;
+ 
+     if (!vc->is_init) {
+-	G_warning(_("Matrix is not initialised"));
++	G_warning("%s", _("Matrix is not initialised"));
+ 	return 0.0 / 0.0;	/* NaN */
+     }
+ 
+@@ -1267,7 +1267,7 @@
+     int cnt;
+ 
+     if (!vc1->is_init) {
+-	G_warning(_("Vector structure is not initialised"));
++	G_warning("%s", _("Vector structure is not initialised"));
+ 	return NULL;
+     }
+ 
+@@ -1388,7 +1388,7 @@
+     }
+ 
+     if (sscanf(buff, "Matrix: %d by %d", &rows, &cols) != 2) {
+-	G_warning(_("Input format error"));
++	G_warning("%s", _("Input format error"));
+ 	return -1;
+     }
+ 
+@@ -1396,12 +1396,12 @@
+ 
+     for (i = 0; i < rows; i++) {
+ 	if (fscanf(fp, "row%d:", &row) != 1 || row != i) {
+-	    G_warning(_("Input format error"));
++	    G_warning("%s", _("Input format error"));
+ 	    return -1;
+ 	}
+ 	for (j = 0; j < cols; j++) {
+ 	    if (fscanf(fp, "%lf:", &val) != 1) {
+-		G_warning(_("Input format error"));
++		G_warning("%s", _("Input format error"));
+ 		return -1;
+ 	    }
+ 
+--- grass-6.4.3/lib/gmath/del2g.c.orig	2008-11-25 02:31:17.000000000 +0100
++++ grass-6.4.3/lib/gmath/del2g.c	2014-06-03 17:58:09.694683711 +0200
+@@ -47,23 +47,23 @@
+ {
+     double *g[2];		/* the filter function */
+ 
+-    G_message(_("    taking FFT of image..."));
++    G_message("%s", _("    taking FFT of image..."));
+     fft(FORWARD, img, size * size, size, size);
+ 
+     g[0] = (double *)G_malloc(size * size * sizeof(double));
+     g[1] = (double *)G_malloc(size * size * sizeof(double));
+ 
+-    G_message(_("    computing del**2 g..."));
++    G_message("%s", _("    computing del**2 g..."));
+     getg(w, g, size);
+ 
+-    G_message(_("    taking FFT of del**2 g..."));
++    G_message("%s", _("    taking FFT of del**2 g..."));
+     fft(FORWARD, g, size * size, size, size);
+ 
+     /* multiply the complex vectors img and g, each of length size*size */
+-    G_message(_("    multiplying transforms..."));
++    G_message("%s", _("    multiplying transforms..."));
+     mult(img, size * size, g, size * size, img, size * size);
+ 
+-    G_message(_("    taking inverse FFT..."));
++    G_message("%s", _("    taking inverse FFT..."));
+     fft(INVERSE, img, size * size, size, size);
+ 
+     return 0;
+--- grass-6.4.3/lib/driver/command.c.orig	2008-11-25 02:31:03.000000000 +0100
++++ grass-6.4.3/lib/driver/command.c	2014-05-18 20:11:13.783330836 +0200
+@@ -544,7 +544,7 @@
+ 	    continue;
+ 	while (*c == COMMAND_ESC)
+ 	    if (read1(c) != 0) {
+-		G_warning(_("Monitor: get_command: Premature EOF"));
++		G_warning("%s", _("Monitor: get_command: Premature EOF"));
+ 		return 1;	/* EOF */
+ 	    }
+ 	if (*c)
+--- grass-6.4.3/lib/raster/io_sock.c.orig	2008-11-25 02:31:03.000000000 +0100
++++ grass-6.4.3/lib/raster/io_sock.c	2014-05-18 20:44:59.189955276 +0200
+@@ -60,8 +60,8 @@
+ 
+     if (!name) {
+ 	if (verbose) {
+-	    G_warning(_("No graphics monitor has been selected for output."));
+-	    G_warning(_("Please run \"d.mon\" to select a graphics monitor."));
++	    G_warning("%s", _("No graphics monitor has been selected for output."));
++	    G_warning("%s", _("Please run \"d.mon\" to select a graphics monitor."));
+ 	}
+ 	return (NO_MON);
+     }
+@@ -95,21 +95,21 @@
+     case ECONNREFUSED:
+     case EADDRINUSE:
+ 	if (verbose) {
+-	    G_warning(_("Socket is already in use or not accepting connections."));
+-	    G_warning(_("Use d.mon to select a monitor"));
++	    G_warning("%s", _("Socket is already in use or not accepting connections."));
++	    G_warning("%s", _("Use d.mon to select a monitor"));
+ 	}
+ 	return (NO_RUN);
+     case EBADF:
+     case ENOTSOCK:
+ 	if (verbose) {
+-	    G_warning(_("Trying to connect to something not a socket."));
+-	    G_warning(_("Probably program error."));
++	    G_warning("%s", _("Trying to connect to something not a socket."));
++	    G_warning("%s", _("Probably program error."));
+ 	}
+ 	return (NO_RUN);
+     case ETIMEDOUT:
+ 	if (verbose) {
+-	    G_warning(_("Connect attempt timed out."));
+-	    G_warning(_("Probably an error with the server."));
++	    G_warning("%s", _("Connect attempt timed out."));
++	    G_warning("%s", _("Probably an error with the server."));
+ 	}
+ 	return (NO_RUN);
+     default:
+@@ -117,7 +117,7 @@
+     }
+ 
+     if (verbose)
+-	G_warning(_("Connection failed."));
++	G_warning("%s", _("Connection failed."));
+ 
+     /* We couldn't connect... */
+     return (NO_RUN);
+--- grass-6.4.3/lib/raster/rem_io.c.orig	2009-06-06 11:52:39.000000000 +0200
++++ grass-6.4.3/lib/raster/rem_io.c	2014-06-03 18:56:58.717943488 +0200
+@@ -164,7 +164,7 @@
+ 	    len += 1000;
+ 	    buf = G_realloc(buf, len);
+ 	    if (!buf) {
+-		fprintf(stderr, _("Unable to allocate memory\n"));
++		fputs(_("Unable to allocate memory\n"), stderr);
+ 		exit(1);
+ 	    }
+ 	}
+@@ -214,7 +214,7 @@
+ 	    if (read(_rfd, &c, (size_t) 1) != 1) {
+ 		if (no_mon)
+ 		    break;	/* from while */
+-		fprintf(stderr, _("ERROR - eof from graphics monitor.\n"));
++		fputs(_("ERROR - eof from graphics monitor.\n"), stderr);
+ 		exit(-1);
+ 	    }
+ 	    if (c == 0)
+@@ -236,7 +236,7 @@
+ 	fprintf(stderr,
+ 		_("Warning - no response from graphics monitor <%s>.\n"),
+ 		name);
+-	fprintf(stderr, _("Check to see if the mouse is still active.\n"));
++	fputs(_("Check to see if the mouse is still active.\n"), stderr);
+ #ifndef __MINGW32__
+ 	signal(SIGALRM, dead);
+ #endif
+--- grass-6.4.3/lib/db/dbmi_base/default_name.c.orig	2010-03-13 11:52:46.000000000 +0100
++++ grass-6.4.3/lib/db/dbmi_base/default_name.c	2014-05-18 20:45:39.236621115 +0200
+@@ -124,7 +124,7 @@
+ 	db_set_connection(&connection);
+     }
+     else
+-	G_fatal_error(_("Programmer error"));
++	G_fatal_error("%s", _("Programmer error"));
+ 
+     return DB_OK;
+ }
+--- grass-6.4.3/lib/db/dbmi_base/login.c.orig	2010-01-16 11:52:48.000000000 +0100
++++ grass-6.4.3/lib/db/dbmi_base/login.c	2014-06-03 18:57:20.664609698 +0200
+@@ -95,7 +95,7 @@
+ 		ret, dr, db, usr, pwd);
+ 
+ 	if (ret < 2) {
+-	    G_warning(_("Login file corrupted"));
++	    G_warning("%s", _("Login file corrupted"));
+ 	    continue;
+ 	}
+ 
+--- grass-6.4.3/lib/db/dbmi_client/delete_tab.c.orig	2008-11-25 02:31:02.000000000 +0100
++++ grass-6.4.3/lib/db/dbmi_client/delete_tab.c	2014-05-18 20:46:11.883287099 +0200
+@@ -56,7 +56,7 @@
+     /* TODO test if the tables exist */
+     db_set_string(&sql, "drop table ");
+     db_append_string(&sql, tblname);
+-    G_debug(3, db_get_string(&sql));
++    G_debug(3, "%s", db_get_string(&sql));
+ 
+     if (db_execute_immediate(driver, &sql) != DB_OK) {
+ 	G_warning(_("Unable to drop table: '%s'"),
+--- grass-6.4.3/lib/db/dbmi_client/copy_tab.c.orig	2011-05-21 11:52:09.000000000 +0200
++++ grass-6.4.3/lib/db/dbmi_client/copy_tab.c	2014-06-03 19:03:35.834601878 +0200
+@@ -193,7 +193,7 @@
+ 	db_append_string(&sql, " where 0 = 1");	/* to get no data */
+     }
+ 
+-    G_debug(3, db_get_string(&sql));
++    G_debug(3, "%s", db_get_string(&sql));
+     if (db_open_select_cursor(from_driver, &sql, &cursor, DB_SEQUENTIAL) !=
+ 	DB_OK) {
+ 	G_warning(_("Unable to open select cursor: '%s'"),
+@@ -270,7 +270,7 @@
+ 	}
+     }
+ 
+-    G_debug(3, db_get_string(&sql));
++    G_debug(3, "%s", db_get_string(&sql));
+     if (db_open_select_cursor(from_driver, &sql, &cursor, DB_SEQUENTIAL) !=
+ 	DB_OK) {
+ 	G_warning(_("Unable to open select cursor: '%s'"),
+@@ -361,7 +361,7 @@
+ 	if (!select)
+ 	    continue;
+ 	db_append_string(&sql, ")");
+-	G_debug(3, db_get_string(&sql));
++	G_debug(3, "%s", db_get_string(&sql));
+ 	if (db_execute_immediate(to_driver, &sql) != DB_OK) {
+ 	    G_warning("Unable to insert new record: '%s'",
+ 		      db_get_string(&sql));
+--- grass-6.4.3/lib/db/dbmi_client/select.c.orig	2012-09-08 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/db/dbmi_client/select.c	2014-06-05 21:09:22.834176216 +0200
+@@ -116,7 +116,7 @@
+     G_debug(3, "db_select_int()");
+ 
+     if (col == NULL || strlen(col) == 0) {
+-	G_warning(_("Missing column name"));
++	G_warning("%s", _("Missing column name"));
+ 	return -1;
+     }
+ 
+@@ -213,12 +213,12 @@
+     dbTable *table;
+ 
+     if (key == NULL || strlen(key) == 0) {
+-	G_warning(_("Missing key column name"));
++	G_warning("%s", _("Missing key column name"));
+ 	return -1;
+     }
+ 
+     if (col == NULL || strlen(col) == 0) {
+-	G_warning(_("Missing column name"));
++	G_warning("%s", _("Missing column name"));
+ 	return -1;
+     }
+ 
+@@ -280,12 +280,12 @@
+     G_debug(3, "db_select_CatValArray ()");
+ 
+     if (key == NULL || strlen(key) == 0) {
+-	G_warning(_("Missing key column name"));
++	G_warning("%s", _("Missing key column name"));
+ 	return -1;
+     }
+ 
+     if (col == NULL || strlen(col) == 0) {
+-	G_warning(_("Missing column name"));
++	G_warning("%s", _("Missing column name"));
+ 	return -1;
+     }
+     db_init_string(&stmt);
+@@ -330,7 +330,7 @@
+     G_debug(3, "  key type = %d", type);
+ 
+     if (type != DB_C_TYPE_INT) {
+-	G_warning(_("Key column type is not integer"));
++	G_warning("%s", _("Key column type is not integer"));
+ 	db_close_cursor(&cursor);
+ 	db_free_string(&stmt);
+ 	return -1;
+--- grass-6.4.3/lib/proj/get_proj.c.orig	2009-09-05 11:53:13.000000000 +0200
++++ grass-6.4.3/lib/proj/get_proj.c	2014-05-18 20:48:09.059951319 +0200
+@@ -135,7 +135,7 @@
+ 	     * key needs to be passed on. */
+ 	}
+ 	else if (strcmp(in_proj_keys->value[i], "defined") == 0)
+-	    sprintf(buffa, in_proj_keys->key[i]);
++	    strcpy(buffa, in_proj_keys->key[i]);
+ 
+ 	else
+ 	    sprintf(buffa, "%s=%s",
+@@ -192,7 +192,7 @@
+ 
+     /* If datum parameters are present in the PROJ_INFO keys, pass them on */
+     if (GPJ__get_datum_params(in_proj_keys, &datum, &params) == 2) {
+-	sprintf(buffa, params);
++	strcpy(buffa, params);
+ 	alloc_options(buffa);
+ 	G_free(params);
+ 
+@@ -202,7 +202,7 @@
+     else if (datum != NULL) {
+ 
+ 	if (GPJ_get_default_datum_params_by_name(datum, &params) > 0) {
+-	    sprintf(buffa, params);
++	    strcpy(buffa, params);
+ 	    alloc_options(buffa);
+ 	    returnval = 2;
+ 	    G_free(params);
+@@ -234,7 +234,7 @@
+ 	    sprintf(err, " +%s", opt_in[i]);
+ 	    strcat(buffa, err);
+ 	}
+-	G_warning(buffa);
++	G_warning("%s", buffa);
+ 	G_warning(_("The error message: %s"), pj_strerrno(pj_errno));
+ 	return -1;
+     }
+@@ -249,7 +249,7 @@
+ 
+     nsize = strlen(buffa);
+     opt_in[nopt1++] = (char *)G_malloc(nsize + 1);
+-    sprintf(opt_in[nopt1 - 1], buffa);
++    strcpy(opt_in[nopt1 - 1], buffa);
+     return;
+ }
+ 
+@@ -274,7 +274,7 @@
+ 	sprintf(buffa, "proj=latlong ellps=WGS84");
+ 	nsize = strlen(buffa);
+ 	opt_in[nopt] = (char *)G_malloc(nsize + 1);
+-	sprintf(opt_in[nopt++], buffa);
++	strcpy(opt_in[nopt++], buffa);
+     }
+     else {
+ 	/* Parameters have been provided; parse through them but don't
+@@ -293,7 +293,7 @@
+ 		if (nsize = strlen(s), nsize) {
+ 		    if (nopt >= MAX_PARGS) {
+ 			fprintf(stderr, "nopt = %d, s=%s\n", nopt, str);
+-			G_fatal_error(_("Option input overflowed option table"));
++			G_fatal_error("%s", _("Option input overflowed option table"));
+ 		    }
+ 
+ 		    if (strncmp("zone=", s, 5) == 0) {
+@@ -306,14 +306,14 @@
+ 			if (strcmp(info->proj, "ll") == 0)
+ 			    sprintf(buffa, "proj=latlong");
+ 			else
+-			    sprintf(buffa, s);
++			    strcpy(buffa, s);
+ 		    }
+ 		    else {
+-			sprintf(buffa, s);
++			strcpy(buffa, s);
+ 		    }
+ 		    nsize = strlen(buffa);
+ 		    opt_in[nopt] = (char *)G_malloc(nsize + 1);
+-		    sprintf(opt_in[nopt++], buffa);
++		    strcpy(opt_in[nopt++], buffa);
+ 		}
+ 	    }
+ 	    s = 0;
+--- grass-6.4.3/lib/proj/convert.c.orig	2012-09-22 11:52:12.000000000 +0200
++++ grass-6.4.3/lib/proj/convert.c	2014-06-03 20:10:21.741185052 +0200
+@@ -107,12 +107,12 @@
+     hSRS = OSRNewSpatialReference(NULL);
+ 
+     if (pj_get_kv(&pjinfo, proj_info, proj_units) < 0) {
+-	G_warning(_("Unable parse GRASS PROJ_INFO file"));
++	G_warning("%s", _("Unable parse GRASS PROJ_INFO file"));
+ 	return NULL;
+     }
+ 
+     if ((proj4 = pj_get_def(pjinfo.pj, 0)) == NULL) {
+-	G_warning(_("Unable get PROJ.4-style parameter string"));
++	G_warning("%s", _("Unable get PROJ.4-style parameter string"));
+ 	return NULL;
+     }
+ 
+@@ -387,7 +387,7 @@
+ 	G_set_key_value("proj", pszProj, *projinfo);
+     }
+     else
+-	G_warning(_("No projection name! Projection parameters likely to be meaningless."));
++	G_warning("%s", _("No projection name! Projection parameters likely to be meaningless."));
+ 
+ 
+     /* -------------------------------------------------------------------- */
+--- grass-6.4.3/lib/proj/datum.c.orig	2012-10-20 11:52:06.000000000 +0200
++++ grass-6.4.3/lib/proj/datum.c	2014-06-05 21:11:03.100840793 +0200
+@@ -247,7 +247,7 @@
+     if (G_strcasecmp(datumname, "custom") != 0) {
+ 	Tmp_file = G_tempfile();
+ 	if (NULL == (Tmp_fd = fopen(Tmp_file, "w"))) {
+-	    G_warning(_("Unable to open temporary file"));
++	    G_warning("%s", _("Unable to open temporary file"));
+ 	}
+ 
+ 	fprintf(Tmp_fd, "Number\tDetails\t\n---\n");
+@@ -320,7 +320,7 @@
+ 	    /* Search through the linked list to find the parameter string
+ 	     * that corresponds to the number entered */
+ 	    if (list->count == currenttransform)
+-		G_asprintf(params, list->params);
++		G_asprintf(params, "%s", list->params);
+ 
+ 	    /* Continue to end of list even after we find it, to free all
+ 	     * the memory used */
+@@ -341,13 +341,13 @@
+ 			("\ttowgs84=dx,dy,dz,rx,ry,rz,m\t(7-parameter transformation)\n"));
+ 		fprintf(stderr,
+ 			("\tnadgrids=alaska\t(Tables-based grid-shifting transformation)\n"));
+-		fprintf(stderr, _("Hit RETURN to cancel request\n"));
++		fputs(_("Hit RETURN to cancel request\n"), stderr);
+ 		fprintf(stderr, ">");
+ 	    } while (!G_gets(answer));
+ 	    G_strip(answer);
+ 	    if (strlen(answer) == 0)
+ 		return -1;
+-	    G_asprintf(params, answer);
++	    G_asprintf(params, "%s", answer);
+ 	    sprintf(buff,
+ 		    "Parameters to be used are:\n\"%s\"\nIs this correct?",
+ 		    *params);
+--- grass-6.4.3/lib/proj/ellipse.c.orig	2008-11-29 11:45:17.000000000 +0100
++++ grass-6.4.3/lib/proj/ellipse.c	2014-06-07 22:15:36.510491701 +0200
+@@ -95,11 +95,11 @@
+ 	    else if ((str3 = G_find_key_value("b", proj_keys)) != NULL)
+ 		G_asprintf(&str1, "b=%s", str3);
+ 	    else
+-		G_fatal_error(_("No secondary ellipsoid descriptor "
++		G_fatal_error("%s", _("No secondary ellipsoid descriptor "
+ 				"(rf, es or b) in file"));
+ 
+ 	    if (get_a_e2_rf(str, str1, a, e2, rf) == 0)
+-		G_fatal_error(_("Invalid ellipsoid descriptors "
++		G_fatal_error("%s", _("Invalid ellipsoid descriptors "
+ 				"(a, rf, es or b) in file"));
+ 	    return 1;
+ 	}
+@@ -112,7 +112,7 @@
+ 		return 0;
+ 	    }
+ 	    else {
+-		G_fatal_error(_("No ellipsoid info given in file"));
++		G_fatal_error("%s", _("No ellipsoid info given in file"));
+ 	    }
+ 	}
+     }
+--- grass-6.4.3/lib/vector/diglib/file.c.orig	2009-05-23 11:53:10.000000000 +0200
++++ grass-6.4.3/lib/vector/diglib/file.c	2014-05-18 20:48:39.883284014 +0200
+@@ -154,7 +154,7 @@
+ size_t dig_fwrite(void *ptr, size_t size, size_t nmemb, GVFILE *file)
+ {
+     if (file->loaded) {	/* using memory */
+-	G_fatal_error(_("Writing to file loaded to memory not supported"));
++	G_fatal_error("%s", _("Writing to file loaded to memory not supported"));
+     }
+ 
+     return fwrite(ptr, size, nmemb, file->file);
+@@ -197,7 +197,7 @@
+     G_debug(2, "dig_file_load ()");
+ 
+     if (file->file == NULL) {
+-	G_warning(_("Unable to load file to memory, file not open"));
++	G_warning("%s", _("Unable to load file to memory, file not open"));
+ 	return -1;
+     }
+ 
+@@ -212,7 +212,7 @@
+ 	else if (G_strcasecmp(cmode, "AUTO") == 0)
+ 	    mode = GV_MEMORY_AUTO;
+ 	else
+-	    G_warning(_("Vector memory mode not supported, using 'AUTO'"));
++	    G_warning("%s", _("Vector memory mode not supported, using 'AUTO'"));
+     }
+     G_debug(2, "  requested mode = %d", mode);
+ 
+--- grass-6.4.3/lib/vector/diglib/plus.c.orig	2009-04-25 11:52:31.000000000 +0200
++++ grass-6.4.3/lib/vector/diglib/plus.c	2014-06-03 20:31:35.081158510 +0200
+@@ -285,7 +285,7 @@
+ 
+     /* Nodes */
+     if (dig_fseek(plus, Plus->Node_offset, 0) == -1)
+-	G_fatal_error(_("Unable read topology for nodes"));
++	G_fatal_error("%s", _("Unable read topology for nodes"));
+ 
+     dig_alloc_nodes(Plus, Plus->n_nodes);
+     for (i = 1; i <= Plus->n_nodes; i++) {
+@@ -295,7 +295,7 @@
+ 
+     /* Lines */
+     if (dig_fseek(plus, Plus->Line_offset, 0) == -1)
+-	G_fatal_error(_("Unable read topology for lines"));
++	G_fatal_error("%s", _("Unable read topology for lines"));
+ 
+     dig_alloc_lines(Plus, Plus->n_lines);
+     for (i = 1; i <= Plus->n_lines; i++) {
+@@ -305,7 +305,7 @@
+ 
+     /* Areas */
+     if (dig_fseek(plus, Plus->Area_offset, 0) == -1)
+-	G_fatal_error(_("Unable to read topo for areas"));
++	G_fatal_error("%s", _("Unable to read topo for areas"));
+ 
+     dig_alloc_areas(Plus, Plus->n_areas);
+     for (i = 1; i <= Plus->n_areas; i++) {
+@@ -315,7 +315,7 @@
+ 
+     /* Isles */
+     if (dig_fseek(plus, Plus->Isle_offset, 0) == -1)
+-	G_fatal_error(_("Unable to read topology for isles"));
++	G_fatal_error("%s", _("Unable to read topology for isles"));
+ 
+     dig_alloc_isles(Plus, Plus->n_isles);
+     for (i = 1; i <= Plus->n_isles; i++) {
+@@ -342,33 +342,33 @@
+     dig_rewind(fp_plus);
+ 
+     if (dig_Wr_Plus_head(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write head to plus file"));
++	G_warning("%s", _("Unable to write head to plus file"));
+ 	return (-1);
+     }
+ 
+     if (dig_write_nodes(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write nodes to plus file"));
++	G_warning("%s", _("Unable to write nodes to plus file"));
+ 	return (-1);
+     }
+ 
+     if (dig_write_lines(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write lines to plus file"));
++	G_warning("%s", _("Unable to write lines to plus file"));
+ 	return (-1);
+     }
+ 
+     if (dig_write_areas(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write areas to plus file"));
++	G_warning("%s", _("Unable to write areas to plus file"));
+ 	return (-1);
+     }
+ 
+     if (dig_write_isles(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write isles to plus file"));
++	G_warning("%s", _("Unable to write isles to plus file"));
+ 	return (-1);
+     }
+ 
+     dig_rewind(fp_plus);
+     if (dig_Wr_Plus_head(fp_plus, Plus) < 0) {
+-	G_warning(_("Unable to write head to plus file"));
++	G_warning("%s", _("Unable to write head to plus file"));
+ 	return (-1);
+     }
+ 
+--- grass-6.4.3/lib/vector/diglib/plus_area.c.orig	2011-06-11 11:52:07.000000000 +0200
++++ grass-6.4.3/lib/vector/diglib/plus_area.c	2014-06-05 21:11:27.164173625 +0200
+@@ -296,7 +296,7 @@
+ 
+     Area = plus->Area[area];
+     if (Area == NULL)
+-	G_fatal_error(_("Attempt to delete isle from dead area"));
++	G_fatal_error("%s", _("Attempt to delete isle from dead area"));
+ 
+     mv = 0;
+     for (i = 0; i < Area->n_isles; i++) {
+@@ -351,7 +351,7 @@
+     Area = plus->Area[area];
+ 
+     if (Area == NULL) {
+-	G_warning(_("Attempt to delete dead area"));
++	G_warning("%s", _("Attempt to delete dead area"));
+ 	return 0;
+     }
+ 
+--- grass-6.4.3/lib/vector/diglib/spindex.c.orig	2008-11-25 02:31:04.000000000 +0100
++++ grass-6.4.3/lib/vector/diglib/spindex.c	2014-06-07 22:15:52.310491374 +0200
+@@ -311,7 +311,7 @@
+     Area = Plus->Area[area];
+ 
+     if (Area == NULL) {
+-	G_fatal_error(_("Attempt to delete sidx for dead area"));
++	G_fatal_error("%s", _("Attempt to delete sidx for dead area"));
+     }
+ 
+     rect.boundary[0] = Area->W;
+--- grass-6.4.3/lib/vector/Vlib/sindex.c.orig	2009-02-21 11:45:17.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/sindex.c	2014-05-18 20:56:53.723273715 +0200
+@@ -124,7 +124,7 @@
+ int Vect_build_spatial_index(struct Map_info *Map)
+ {
+     if (Map->level < 2) {
+-	G_fatal_error(_("Unable to build spatial index from topology, "
++	G_fatal_error("%s", _("Unable to build spatial index from topology, "
+ 			"vector map is not opened at topo level 2"));
+     }
+     if (!(Map->plus.Spidx_built)) {
+@@ -165,7 +165,7 @@
+ 
+ 	Node = plus->Node[i];
+ 	if (!Node)
+-	    G_fatal_error(_("BUG (Vect_build_sidx_from_topo): node does not exist"));
++	    G_fatal_error("%s", _("BUG (Vect_build_sidx_from_topo): node does not exist"));
+ 
+ 	dig_spidx_add_node(plus, i, Node->x, Node->y, Node->z);
+     }
+@@ -177,7 +177,7 @@
+ 
+ 	Line = plus->Line[i];
+ 	if (!Line)
+-	    G_fatal_error(_("BUG (Vect_build_sidx_from_topo): line does not exist"));
++	    G_fatal_error("%s", _("BUG (Vect_build_sidx_from_topo): line does not exist"));
+ 
+ 	box.N = Line->N;
+ 	box.S = Line->S;
+@@ -196,7 +196,7 @@
+ 
+ 	Area = plus->Area[i];
+ 	if (!Area)
+-	    G_fatal_error(_("BUG (Vect_build_sidx_from_topo): area does not exist"));
++	    G_fatal_error("%s", _("BUG (Vect_build_sidx_from_topo): area does not exist"));
+ 
+ 	box.N = Area->N;
+ 	box.S = Area->S;
+@@ -215,7 +215,7 @@
+ 
+ 	Isle = plus->Isle[i];
+ 	if (!Isle)
+-	    G_fatal_error(_("BUG (Vect_build_sidx_from_topo): isle does not exist"));
++	    G_fatal_error("%s", _("BUG (Vect_build_sidx_from_topo): isle does not exist"));
+ 
+ 	box.N = Isle->N;
+ 	box.S = Isle->S;
+--- grass-6.4.3/lib/vector/Vlib/build_ogr.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/build_ogr.c	2014-06-03 20:39:59.871147991 +0200
+@@ -330,7 +330,7 @@
+     OGRGeometryH hGeom;
+ 
+     if (build != GV_BUILD_ALL)
+-	G_fatal_error(_("Partial build for OGR is not supported"));
++	G_fatal_error("%s", _("Partial build for OGR is not supported"));
+ 
+     /* TODO move this init to better place (Vect_open_ ?), because in theory build may be reused on level2 */
+     Map->fInfo.ogr.offset = NULL;
+@@ -339,14 +339,14 @@
+ 
+     /* test layer capabilities */
+     if (!OGR_L_TestCapability(Map->fInfo.ogr.layer, OLCRandomRead)) {
+-	G_warning(_("Random read is not supported by OGR for this layer, cannot build support"));
++	G_warning("%s", _("Random read is not supported by OGR for this layer, cannot build support"));
+ 	return 0;
+     }
+ 
+     init_parts(&parts);
+ 
+     /* Note: Do not use OGR_L_GetFeatureCount (it may scan all features)!!! */
+-    G_verbose_message(_("Feature: "));
++    G_verbose_message("%s", _("Feature: "));
+ 
+     OGR_L_ResetReading(Map->fInfo.ogr.layer);
+     count = iFeature = 0;
+@@ -365,7 +365,7 @@
+ 
+ 	FID = (int)OGR_F_GetFID(hFeature);
+ 	if (FID == OGRNullFID) {
+-	    G_warning(_("OGR feature without ID ignored"));
++	    G_warning("%s", _("OGR feature without ID ignored"));
+ 	    OGR_F_Destroy(hFeature);
+ 	    continue;
+ 	}
+--- grass-6.4.3/lib/vector/Vlib/remove_areas.c.orig	2012-10-27 11:52:09.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/remove_areas.c	2014-06-05 21:11:39.454173369 +0200
+@@ -93,7 +93,7 @@
+ 	    line = List->value[i];
+ 
+ 	    if (!Vect_line_alive(Map, abs(line)))	/* Should not happen */
+-		G_fatal_error(_("Area is composed of dead boundary"));
++		G_fatal_error("%s", _("Area is composed of dead boundary"));
+ 
+ 	    Vect_get_line_areas(Map, abs(line), &left, &right);
+ 	    if (line > 0)
+--- grass-6.4.3/lib/vector/Vlib/net.c.orig	2013-07-09 21:05:44.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/net.c	2014-06-07 22:16:43.640490303 +0200
+@@ -119,7 +119,7 @@
+ 	    ltype, afield, nfield);
+     G_debug(1, "    afcol = %s, abcol = %s, ncol = %s", afcol, abcol, ncol);
+ 
+-    G_message(_("Building graph..."));
++    G_message("%s", _("Building graph..."));
+ 
+     Map->graph_line_type = ltype;
+ 
+@@ -161,20 +161,20 @@
+ 		      opaqueset);
+ 
+     if (gr == NULL)
+-	G_fatal_error(_("Unable to build network graph"));
++	G_fatal_error("%s", _("Unable to build network graph"));
+ 
+     db_init_handle(&handle);
+     db_init_string(&stmt);
+ 
+     if (abcol != NULL && afcol == NULL)
+-	G_fatal_error(_("Forward costs column not specified"));
++	G_fatal_error("%s", _("Forward costs column not specified"));
+ 
+     /* --- Add arcs --- */
+     /* Open db connection */
+     if (afcol != NULL) {
+ 	/* Get field info */
+ 	if (afield < 1)
+-	    G_fatal_error(_("Arc field < 1"));
++	    G_fatal_error("%s", _("Arc field < 1"));
+ 	Fi = Vect_get_field(Map, afield);
+ 	if (Fi == NULL)
+ 	    G_fatal_error(_("Database connection not defined for layer %d"),
+@@ -224,7 +224,7 @@
+ 
+     skipped = 0;
+ 
+-    G_message(_("Registering arcs..."));
++    G_message("%s", _("Registering arcs..."));
+ 
+     for (i = 1; i <= nlines; i++) {
+ 	G_percent(i, nlines, 1);	/* must be before any continue */
+@@ -320,7 +320,7 @@
+ 			   (dglInt32_t) bcost, (dglInt32_t) - i);
+ 	    Map->edge_bcosts[i] = bdcost;
+ 	    if (ret < 0)
+-		G_fatal_error(_("Cannot add network arc"));
++		G_fatal_error("%s", _("Cannot add network arc"));
+ 	}
+     }
+ 
+@@ -344,7 +344,7 @@
+ 	if (nfield < 1)
+ 	    G_fatal_error("Node field < 1");
+ 
+-	G_message(_("Setting node costs..."));
++	G_message("%s", _("Setting node costs..."));
+ 
+ 	Fi = Vect_get_field(Map, nfield);
+ 	if (Fi == NULL)
+@@ -427,16 +427,16 @@
+ 	db_CatValArray_free(&fvarr);
+     }
+ 
+-    G_message(_("Flattening the graph..."));
++    G_message("%s", _("Flattening the graph..."));
+     ret = dglFlatten(gr);
+     if (ret < 0)
+-	G_fatal_error(_("GngFlatten error"));
++	G_fatal_error("%s", _("GngFlatten error"));
+ 
+     /* init SP cache */
+     /* disable to debug dglib cache */
+     dglInitializeSPCache(gr, &(Map->spCache));
+ 
+-    G_message(_("Graph was built"));
++    G_message("%s", _("Graph was built"));
+ 
+     return 0;
+ }
+@@ -600,7 +600,7 @@
+ 		Map->edge_bcosts[line]);
+     }
+     else {
+-	G_fatal_error(_("Wrong line direction in Vect_net_get_line_cost()"));
++	G_fatal_error("%s", _("Wrong line direction in Vect_net_get_line_cost()"));
+     }
+ 
+     return 1;
+--- grass-6.4.3/lib/vector/Vlib/area.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/area.c	2014-06-08 08:30:14.713056377 +0200
+@@ -50,7 +50,7 @@
+     Area = Plus->Area[area];
+ 
+     if (Area == NULL) {		/* dead area */
+-	G_warning(_("Attempt to read points of nonexistent area"));
++	G_warning("%s", _("Attempt to read points of nonexistent area"));
+ 	return -1;		/* error , because we should not read dead areas */
+     }
+ 
+--- grass-6.4.3/lib/vector/Vlib/open_ogr.c.orig	2012-12-01 11:52:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/open_ogr.c	2014-06-08 10:08:12.776267196 +0200
+@@ -51,7 +51,7 @@
+     OGRwkbGeometryType Ogr_geom_type;
+     
+     if (update) {
+-	G_fatal_error(_("OGR format cannot be updated"));
++	G_fatal_error("%s", _("OGR format cannot be updated"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/vector/Vlib/cindex.c.orig	2013-04-20 11:52:15.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/cindex.c	2014-06-08 10:49:55.882881687 +0200
+@@ -28,7 +28,7 @@
+ static void check_status(struct Map_info *Map)
+ {
+     if (!Map->plus.cidx_up_to_date)
+-	G_fatal_error(_("Category index is not up to date"));
++	G_fatal_error("%s", _("Category index is not up to date"));
+ }
+ 
+ /*!
+@@ -58,7 +58,7 @@
+     check_status(Map);
+ 
+     if (index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Invalid layer index (index >= number of layers)"));
++	G_fatal_error("%s", _("Invalid layer index (index >= number of layers)"));
+ 
+     return (Map->plus.cidx[index].field);
+ }
+@@ -104,7 +104,7 @@
+     check_status(Map);
+ 
+     if (index < 0 || index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Invalid layer index (index < 0 or index >= number of layers)"));
++	G_fatal_error("%s", _("Invalid layer index (index < 0 or index >= number of layers)"));
+ 
+     return (Map->plus.cidx[index].n_ucats);
+ }
+@@ -122,7 +122,7 @@
+ {
+     check_status(Map);
+     if (index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Invalid layer index (index >= number of layers)"));
++	G_fatal_error("%s", _("Invalid layer index (index >= number of layers)"));
+ 
+     return (Map->plus.cidx[index].n_cats);
+ }
+@@ -140,7 +140,7 @@
+ {
+     check_status(Map);
+     if (field_index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Invalid layer index (index >= number of layers)"));
++	G_fatal_error("%s", _("Invalid layer index (index >= number of layers)"));
+ 
+     return (Map->plus.cidx[field_index].n_types);
+ }
+@@ -163,7 +163,7 @@
+ {
+     check_status(Map);
+     if (field_index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Invalid layer index (index >= number of layers)"));
++	G_fatal_error("%s", _("Invalid layer index (index >= number of layers)"));
+ 
+     *type = Map->plus.cidx[field_index].type[type_index][0];
+     *count = Map->plus.cidx[field_index].type[type_index][1];
+@@ -229,7 +229,7 @@
+ 
+     if (field_index >= Map->plus.n_cidx || field_index < 0 ||
+ 	cat_index >= Map->plus.cidx[field_index].n_cats)
+-	G_fatal_error(_("Layer or category index out of range"));
++	G_fatal_error("%s", _("Layer or category index out of range"));
+ 
+     *cat = Map->plus.cidx[field_index].cat[cat_index][0];
+     *type = Map->plus.cidx[field_index].cat[cat_index][1];
+@@ -280,7 +280,7 @@
+     *type = *id = 0;
+ 
+     if (field_index >= Map->plus.n_cidx)
+-	G_fatal_error(_("Layer index out of range"));
++	G_fatal_error("%s", _("Layer index out of range"));
+ 
+     if (start_index < 0)
+ 	start_index = 0;
+--- grass-6.4.3/lib/vector/Vlib/hist.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/hist.c	2014-06-08 11:46:30.799477593 +0200
+@@ -64,7 +64,7 @@
+     int ret;
+ 
+     G_debug(5, "Vect_hist_write()");
+-    ret = fprintf(Map->hist_fp, str);
++    ret = fprintf(Map->hist_fp, "%s", str);
+     fflush(Map->hist_fp);
+ 
+     return (ret);
+--- grass-6.4.3/lib/vector/Vlib/cats.c.orig	2012-08-25 11:52:04.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/cats.c	2014-06-08 12:36:57.609414505 +0200
+@@ -44,7 +44,7 @@
+     struct line_cats *p;
+ 
+     if (NULL == (p = Vect__new_cats_struct()))
+-	G_fatal_error(_("Vect_new_cats_struct(): Out of memory"));
++	G_fatal_error("%s", _("Vect_new_cats_struct(): Out of memory"));
+ 
+     return p;
+ }
+--- grass-6.4.3/lib/vector/Vlib/open.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/open.c	2014-06-08 15:06:15.125894469 +0200
+@@ -60,10 +60,10 @@
+ {
+     switch (ferror) {
+     case GV_FATAL_EXIT:
+-	G_fatal_error(errmsg);
++	G_fatal_error("%s", errmsg);
+ 	break;
+     case GV_FATAL_PRINT:
+-	G_warning(errmsg);
++	G_warning("%s", errmsg);
+ 	break;
+     case GV_FATAL_RETURN:
+ 	break;
+@@ -176,7 +176,7 @@
+     Map->gisdbase = G_store(G_gisdbase());
+ 
+     if (update && (0 != strcmp(Map->mapset, G_mapset()))) {
+-	G_warning(_("Vector map which is not in the current mapset cannot be opened for update"));
++	G_warning("%s", _("Vector map which is not in the current mapset cannot be opened for update"));
+ 	return -1;
+     }
+ 
+@@ -211,7 +211,7 @@
+ 		_("Unable to open vector map <%s> on level %d. "
+ 		  "Try to rebuild vector topology by v.build."),
+ 		Vect_get_full_name(Map), level_request);
+-	G_warning(_("Unable to read head file"));
++	G_warning("%s", _("Unable to read head file"));
+     }
+ 
+     G_debug(1, "Level request = %d", level_request);
+@@ -537,8 +537,7 @@
+ 
+     /* check for [A-Za-z][A-Za-z0-9_]* in name */
+     if (Vect_legal_filename(name) < 0) {
+-	sprintf(errmsg, _("Vector map name is not SQL compliant"));
+-	fatal_error(ferror, errmsg);
++	fatal_error(ferror, _("Vector map name is not SQL compliant"));
+ 	return (-1);
+     }
+ 
+@@ -728,7 +727,7 @@
+     /* do checks */
+     err = 0;
+     if (CInfo.size != Plus->coor_size) {
+-	G_warning(_("Size of 'coor' file differs from value saved in topology file"));
++	G_warning("%s", _("Size of 'coor' file differs from value saved in topology file"));
+ 	err = 1;
+     }
+     /* Do not check mtime because mtime is changed by copy */
+--- grass-6.4.3/lib/vector/Vlib/build_nat.c.orig	2010-11-13 11:52:06.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/build_nat.c	2014-06-08 16:08:51.295816179 +0200
+@@ -90,7 +90,7 @@
+ 	area = dig_add_area(plus, n_lines, lines);
+ 	if (area == -1) {	/* error */
+ 	    Vect_close(Map);
+-	    G_fatal_error(_("Unable to add area (map closed, topo saved)"));
++	    G_fatal_error("%s", _("Unable to add area (map closed, topo saved)"));
+ 	}
+ 	G_debug(3, "  -> area %d", area);
+ 	return area;
+@@ -99,7 +99,7 @@
+ 	isle = dig_add_isle(plus, n_lines, lines);
+ 	if (isle == -1) {	/* error */
+ 	    Vect_close(Map);
+-	    G_fatal_error(_("Unable to add isle (map closed, topo saved)"));
++	    G_fatal_error("%s", _("Unable to add isle (map closed, topo saved)"));
+ 	}
+ 	G_debug(3, "  -> isle %d", isle);
+ 	return -isle;
+@@ -109,7 +109,7 @@
+ 	 *        so that may be found and cleaned by some utility
+ 	 *  Note: it would be useful for vertical closed polygons, but such would be added twice
+ 	 *        as area */
+-	G_warning(_("Area of size = 0.0 ignored"));
++	G_warning("%s", _("Area of size = 0.0 ignored"));
+     }
+     return 0;
+ }
+@@ -145,7 +145,7 @@
+     plus = &(Map->plus);
+ 
+     if (plus->Isle[isle] == NULL) {
+-	G_warning(_("Request to find area outside nonexistent isle"));
++	G_warning("%s", _("Request to find area outside nonexistent isle"));
+ 	return 0;
+     }
+ 
+@@ -513,7 +513,7 @@
+ 
+ 	/* register lines, create nodes */
+ 	Vect_rewind(Map);
+-	G_message(_("Registering primitives..."));
++	G_message("%s", _("Registering primitives..."));
+ 	i = 1;
+ 	npoints = 0;
+ 	while (1) {
+@@ -522,7 +522,7 @@
+ 
+ 	    /* Note: check for dead lines is not needed, because they are skipped by V1_read_next_line_nat() */
+ 	    if (type == -1) {
+-		G_warning(_("Unable to read vector map"));
++		G_warning("%s", _("Unable to read vector map"));
+ 		return 0;
+ 	    }
+ 	    else if (type == -2) {
+@@ -578,7 +578,7 @@
+     if (plus->built < GV_BUILD_AREAS) {
+ 	/* Build areas */
+ 	/* Go through all bundaries and try to build area for both sides */
+-	G_important_message(_("Building areas..."));
++	G_important_message("%s", _("Building areas..."));
+ 	for (i = 1; i <= plus->n_lines; i++) {
+ 	    G_percent(i, plus->n_lines, 1);
+ 
+@@ -611,7 +611,7 @@
+ 
+     /* Attach isles to areas */
+     if (plus->built < GV_BUILD_ATTACH_ISLES) {
+-	G_important_message(_("Attaching islands..."));
++	G_important_message("%s", _("Attaching islands..."));
+ 	for (i = 1; i <= plus->n_isles; i++) {
+ 	    G_percent(i, plus->n_isles, 1);
+ 	    Vect_attach_isle(Map, i);
+@@ -626,7 +626,7 @@
+     if (plus->built < GV_BUILD_CENTROIDS) {
+ 	int nlines;
+ 
+-	G_important_message(_("Attaching centroids..."));
++	G_important_message("%s", _("Attaching centroids..."));
+ 
+ 	nlines = Vect_get_num_lines(Map);
+ 	for (line = 1; line <= nlines; line++) {
+--- grass-6.4.3/lib/vector/Vlib/buffer2.c.orig	2011-04-23 11:52:12.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/buffer2.c	2014-06-08 18:14:32.325659000 +0200
+@@ -361,7 +361,7 @@
+     if ((np == 0) || (np == 1))
+ 	return;
+     if ((x[0] != x[np - 1]) || (y[0] != y[np - 1])) {
+-	G_fatal_error(_("Line is not looped"));
++	G_fatal_error("%s", _("Line is not looped"));
+ 	return;
+     }
+ 
+@@ -595,7 +595,7 @@
+ 	    break;
+ 	if (opt_side == 1) {
+ 	    if (vert->edges[opt_j]->visited_right) {
+-		G_warning(_("Next edge was visited but it is not the first one !!! breaking loop"));
++		G_warning("%s", _("Next edge was visited but it is not the first one !!! breaking loop"));
+ 		G_debug(4,
+ 			"ec: v0=%d, v=%d, eside=%d, edge->v1=%d, edge->v2=%d",
+ 			v, (edge->v1 == v) ? (edge->v2) : (edge->v1),
+@@ -606,7 +606,7 @@
+ 	}
+ 	else {
+ 	    if (vert->edges[opt_j]->visited_left) {
+-		G_warning(_("Next edge was visited but it is not the first one !!! breaking loop"));
++		G_warning("%s", _("Next edge was visited but it is not the first one !!! breaking loop"));
+ 		G_debug(4,
+ 			"ec: v0=%d, v=%d, eside=%d, edge->v1=%d, edge->v2=%d",
+ 			v, (edge->v1 == v) ? (edge->v2) : (edge->v1),
+@@ -654,7 +654,7 @@
+     G_debug(3, "extract_outer_contour()");
+ 
+     if (side != 0) {
+-	G_fatal_error(_("side != 0 feature not implemented"));
++	G_fatal_error("%s", _("side != 0 feature not implemented"));
+ 	return;
+     }
+ 
+@@ -896,13 +896,13 @@
+ 
+ 	    dig_find_area_poly(cPoints, &area_size);
+ 	    if (area_size == 0) {
+-		G_warning(_("zero area size"));
++		G_warning("%s", _("zero area size"));
+ 		check_poly = 0;
+ 	    }
+ 	    if (cPoints->x[0] != cPoints->x[cPoints->n_points - 1] ||
+ 		cPoints->y[0] != cPoints->y[cPoints->n_points - 1]) {
+ 
+-		G_warning(_("Line was not closed"));
++		G_warning("%s", _("Line was not closed"));
+ 		check_poly = 0;
+ 	    }
+ 
+@@ -915,7 +915,7 @@
+ 		    }
+ 		}
+ 		else {
+-		    G_warning(_("Vect_get_point_in_poly() failed"));
++		    G_warning("%s", _("Vect_get_point_in_poly() failed"));
+ 		}
+ 	    }
+ 	}
+@@ -943,13 +943,13 @@
+ 
+ 		dig_find_area_poly(cPoints, &area_size);
+ 		if (area_size == 0) {
+-		    G_warning(_("zero area size"));
++		    G_warning("%s", _("zero area size"));
+ 		    check_poly = 0;
+ 		}
+ 		if (cPoints->x[0] != cPoints->x[cPoints->n_points - 1] ||
+ 		    cPoints->y[0] != cPoints->y[cPoints->n_points - 1]) {
+ 
+-		    G_warning(_("Line was not closed"));
++		    G_warning("%s", _("Line was not closed"));
+ 		    check_poly = 0;
+ 		}
+ 
+@@ -966,7 +966,7 @@
+ 			}
+ 		    }
+ 		    else {
+-			G_warning(_("Vect_get_point_in_poly() failed"));
++			G_warning("%s", _("Vect_get_point_in_poly() failed"));
+ 		    }
+ 		}
+ 	    }
+--- grass-6.4.3/lib/vector/Vlib/build.c.orig	2010-10-23 11:52:06.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/build.c	2014-06-08 18:48:59.472282583 +0200
+@@ -138,7 +138,7 @@
+     }
+ 
+     if (build > GV_BUILD_NONE) {
+-	G_verbose_message(_("Topology was built"));
++	G_verbose_message("%s", _("Topology was built"));
+     }
+ 
+     Map->level = LEVEL_2;
+@@ -223,8 +223,8 @@
+ 
+     }
+     else if (build > GV_BUILD_NONE) {
+-	G_message(_("Number of areas: -"));
+-	G_message(_("Number of isles: -"));
++	G_message("%s", _("Number of areas: -"));
++	G_message("%s", _("Number of isles: -"));
+     }
+     return 1;
+ }
+@@ -261,7 +261,7 @@
+     dig_init_portable(&(plus->port), dig__byte_order_out());
+ 
+     if (0 > dig_write_plus_file(&fp, plus)) {
+-	G_warning(_("Error writing out topo file"));
++	G_warning("%s", _("Error writing out topo file"));
+ 	return 0;
+     }
+ 
+@@ -412,7 +412,7 @@
+     dig_init_portable(&(plus->spidx_port), dig__byte_order_out());
+ 
+     if (0 > dig_write_spidx(&fp, plus)) {
+-	G_warning(_("Error writing out spatial index file"));
++	G_warning("%s", _("Error writing out spatial index file"));
+ 	return 0;
+     }
+ 
+--- grass-6.4.3/lib/vector/Vlib/graph.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/graph.c	2014-06-08 19:38:13.865554335 +0200
+@@ -107,7 +107,7 @@
+ 
+     ret = dglFlatten(graph);
+     if (ret < 0)
+-	G_fatal_error(_("GngFlatten error"));
++	G_fatal_error("%s", _("GngFlatten error"));
+ }
+ 
+ /*!
+@@ -140,7 +140,7 @@
+ 	dglAddEdge(graph, (dglInt32_t) from, (dglInt32_t) to, dglcosts,
+ 		   (dglInt32_t) id);
+     if (ret < 0)
+-	G_fatal_error(_("Unable to add network arc"));
++	G_fatal_error("%s", _("Unable to add network arc"));
+ }
+ 
+ /*!
+--- grass-6.4.3/lib/vector/Vlib/field.c.orig	2011-03-05 11:52:08.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/field.c	2014-06-08 20:23:13.888831392 +0200
+@@ -90,24 +90,24 @@
+     int ret;
+ 
+     if (number == 0) {
+-	G_warning(_("Layer number must be 1 or greater"));
++	G_warning("%s", _("Layer number must be 1 or greater"));
+ 	return -1;
+     }
+ 
+     if (Map->mode != GV_MODE_WRITE && Map->mode != GV_MODE_RW) {
+-	G_warning(_("Unable to add database link, map is not opened in WRITE mode"));
++	G_warning("%s", _("Unable to add database link, map is not opened in WRITE mode"));
+ 	return -1;
+     }
+ 
+     ret = Vect_add_dblink(Map->dblnk, number, name, table, key, db, driver);
+     if (ret == -1) {
+-	G_warning(_("Unable to add database link"));
++	G_warning("%s", _("Unable to add database link"));
+ 	return -1;
+     }
+     /* write it immediately otherwise it is lost if module crashes */
+     ret = Vect_write_dblinks(Map);
+     if (ret == -1) {
+-	G_warning(_("Unable to write database links"));
++	G_warning("%s", _("Unable to write database links"));
+ 	return -1;
+     }
+     return 0;
+@@ -152,7 +152,7 @@
+     /* write it immediately otherwise it is lost if module crashes */
+     ret = Vect_write_dblinks(Map);
+     if (ret == -1) {
+-	G_warning(_("Unable to write database links"));
++	G_warning("%s", _("Unable to write database links"));
+ 	return -1;
+     }
+ 
+@@ -306,10 +306,10 @@
+     /* they must be a matched pair, so if one is set but not the other
+        then give up and let the user figure it out */
+     else if (!connection.driverName) {
+-	G_fatal_error(_("Default driver is not set"));
++	G_fatal_error("%s", _("Default driver is not set"));
+     }
+     else if (!connection.databaseName) {
+-	G_fatal_error(_("Default database is not set"));
++	G_fatal_error("%s", _("Default database is not set"));
+     }
+ 
+     drv = connection.driverName;
+@@ -801,7 +801,7 @@
+ void Vect_set_db_updated(struct Map_info *Map)
+ {
+     if (strcmp(Map->mapset, G_mapset()) != 0) {
+-	G_fatal_error(_("Bug: attempt to update map which is not in current mapset"));
++	G_fatal_error("%s", _("Bug: attempt to update map which is not in current mapset"));
+     }
+ 
+     Vect_write_dblinks(Map);
+--- grass-6.4.3/lib/vector/Vlib/write_nat.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/write_nat.c	2014-06-08 21:20:10.248760184 +0200
+@@ -637,7 +637,7 @@
+ 	Line = Map->plus.Line[line];
+ 
+ 	if (Line == NULL)
+-	    G_fatal_error(_("Attempt to delete dead feature"));
++	    G_fatal_error("%s", _("Attempt to delete dead feature"));
+ 	type = Line->type;
+     }
+ 
+@@ -882,7 +882,7 @@
+ 	Line = Map->plus.Line[line];
+ 
+ 	if (Line != NULL)
+-	    G_fatal_error(_("Attempt to restore alive feature"));
++	    G_fatal_error("%s", _("Attempt to restore alive feature"));
+     }
+ 
+     if (!points) {
+--- grass-6.4.3/lib/vector/Vlib/write.c.orig	2011-02-05 11:52:09.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/write.c	2014-06-09 17:59:48.780543237 +0200
+@@ -132,7 +132,7 @@
+ 	    Map->name, Map->format, Map->level);
+ 
+     if (!VECT_OPEN(Map))
+-	G_fatal_error(_("Unable to write feature, vector map is not opened"));
++	G_fatal_error("%s", _("Unable to write feature, vector map is not opened"));
+ 
+     dig_line_reset_updated(&(Map->plus));
+     dig_node_reset_updated(&(Map->plus));
+@@ -145,7 +145,7 @@
+ 						      cats);
+ 
+     if (offset == -1)
+-	G_fatal_error(_("Unable to write feature (negative offset)"));
++	G_fatal_error("%s", _("Unable to write feature (negative offset)"));
+ 
+     return offset;
+ }
+@@ -178,7 +178,7 @@
+     G_debug(3, "Vect_rewrite_line(): name = %s, line = %d", Map->name, line);
+ 
+     if (!VECT_OPEN(Map))
+-	G_fatal_error(_("Unable to rewrite feature, vector map is not opened"));
++	G_fatal_error("%s", _("Unable to rewrite feature, vector map is not opened"));
+ 
+     dig_line_reset_updated(&(Map->plus));
+     dig_node_reset_updated(&(Map->plus));
+--- grass-6.4.3/lib/vector/Vlib/line.c.orig	2012-07-14 11:52:05.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/line.c	2014-06-09 18:26:50.190509441 +0200
+@@ -526,7 +526,7 @@
+     G_debug(3, "  -> seg1 = %d seg2 = %d", seg1, seg2);
+ 
+     if (seg1 == 0 || seg2 == 0) {
+-	G_warning(_("Segment outside line, no segment created"));
++	G_warning("%s", _("Segment outside line, no segment created"));
+ 	return 0;
+     }
+ 
+--- grass-6.4.3/lib/vector/Vlib/snap.c.orig	2012-12-08 11:52:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/snap.c	2014-06-09 19:30:30.180429821 +0200
+@@ -145,7 +145,7 @@
+     nvertices = 0;
+     XPnts = NULL;
+ 
+-    G_verbose_message(_("Snap vertices Pass 1: select points"));
++    G_verbose_message("%s", _("Snap vertices Pass 1: select points"));
+     for (line_idx = 0; line_idx < List_lines->n_values; line_idx++) {
+ 	int v;
+ 
+@@ -199,7 +199,7 @@
+     /* Go through all registered points and if not yet marked mark it as anchor and assign this anchor
+      * to all not yet marked points in threshold */
+ 
+-    G_verbose_message(_("Snap vertices Pass 2: assign anchor vertices"));
++    G_verbose_message("%s", _("Snap vertices Pass 2: assign anchor vertices"));
+ 
+     nanchors = ntosnap = 0;
+     for (point = 1; point <= npoints; point++) {
+@@ -268,7 +268,7 @@
+ 
+     nsnapped = ncreated = 0;
+ 
+-    G_verbose_message(_("Snap vertices Pass 3: snap to assigned points"));
++    G_verbose_message("%s", _("Snap vertices Pass 3: snap to assigned points"));
+ 
+     for (line_idx = 0; line_idx < List_lines->n_values; line_idx++) {
+ 	int v, spoint, anchor;
+--- grass-6.4.3/lib/vector/Vlib/intersect.c.orig	2013-04-20 11:52:15.000000000 +0200
++++ grass-6.4.3/lib/vector/Vlib/intersect.c	2014-06-09 21:34:55.590274220 +0200
+@@ -124,7 +124,7 @@
+ 
+     /* TODO 3D */
+     if (with_z && first_3d) {
+-	G_warning(_("3D not supported by Vect_segment_intersection()"));
++	G_warning("%s", _("3D not supported by Vect_segment_intersection()"));
+ 	first_3d = 0;
+     }
+ 
+@@ -310,7 +310,7 @@
+ 	}
+ 
+ 	/* should not be reached */
+-	G_warning(_("Vect_segment_intersection() ERROR (collinear vertical segments)"));
++	G_warning("%s", _("Vect_segment_intersection() ERROR (collinear vertical segments)"));
+ 	G_warning("a");
+ 	G_warning("%.15g %.15g", ax1, ay1);
+ 	G_warning("%.15g %.15g", ax2, ay2);
+@@ -404,7 +404,7 @@
+     }
+ 
+     /* should not be reached */
+-    G_warning(_("Vect_segment_intersection() ERROR (collinear non vertical segments)"));
++    G_warning("%s", _("Vect_segment_intersection() ERROR (collinear non vertical segments)"));
+     G_warning("a");
+     G_warning("%.15g %.15g", ax1, ay1);
+     G_warning("%.15g %.15g", ax2, ay2);
+@@ -1056,15 +1056,15 @@
+ 	break;
+     case 1:
+ 	if (0 > Vect_copy_xyz_to_pnts(IPnts, &x1, &y1, &z1, 1))
+-	    G_warning(_("Error while adding point to array. Out of memory"));
++	    G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 	break;
+     case 2:
+     case 3:
+     case 4:
+ 	if (0 > Vect_copy_xyz_to_pnts(IPnts, &x1, &y1, &z1, 1))
+-	    G_warning(_("Error while adding point to array. Out of memory"));
++	    G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 	if (0 > Vect_copy_xyz_to_pnts(IPnts, &x2, &y2, &z2, 1))
+-	    G_warning(_("Error while adding point to array. Out of memory"));
++	    G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 	break;
+     }
+     /* add ALL (including end points and duplicates), clean later */
+@@ -1112,7 +1112,7 @@
+ 		if (0 >
+ 		    Vect_copy_xyz_to_pnts(IPnts, &APoints->x[0],
+ 					  &APoints->y[0], NULL, 1))
+-		    G_warning(_("Error while adding point to array. Out of memory"));
++		    G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 		return 1;
+ 	    }
+ 	    else {
+@@ -1121,7 +1121,7 @@
+ 			Vect_copy_xyz_to_pnts(IPnts, &APoints->x[0],
+ 					      &APoints->y[0], &APoints->z[0],
+ 					      1))
+-			G_warning(_("Error while adding point to array. Out of memory"));
++			G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 		    return 1;
+ 		}
+ 		else
+@@ -1142,7 +1142,7 @@
+ 	    if (0 >
+ 		Vect_copy_xyz_to_pnts(IPnts, &APoints->x[0], &APoints->y[0],
+ 				      &APoints->z[0], 1))
+-		G_warning(_("Error while adding point to array. Out of memory"));
++		G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 	    return 1;
+ 	}
+ 	else {
+@@ -1159,7 +1159,7 @@
+ 	    if (0 >
+ 		Vect_copy_xyz_to_pnts(IPnts, &BPoints->x[0], &BPoints->y[0],
+ 				      &BPoints->z[0], 1))
+-		G_warning(_("Error while adding point to array. Out of memory"));
++		G_warning("%s", _("Error while adding point to array. Out of memory"));
+ 	    return 1;
+ 	}
+ 	else
+--- grass-6.4.3/lib/vector/Vlib/map.c.orig	2010-01-16 11:52:49.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/map.c	2014-06-09 21:59:06.410243979 +0200
+@@ -175,7 +175,7 @@
+     G_debug(2, "Copy vector '%s' in '%s' to '%s'", in, mapset, out);
+     /* check for [A-Za-z][A-Za-z0-9_]* in name */
+     if (Vect_legal_filename(out) < 0)
+-	G_fatal_error(_("Vector map name is not SQL compliant"));
++	G_fatal_error("%s", _("Vector map name is not SQL compliant"));
+ 
+     xmapset = G_find_vector2(in, mapset);
+     if (!xmapset) {
+@@ -311,7 +311,7 @@
+     G_debug(2, "Rename vector '%s' to '%s'", in, out);
+     /* check for [A-Za-z][A-Za-z0-9_]* in name */
+     if (Vect_legal_filename(out) < 0)
+-	G_fatal_error(_("Vector map name is not SQL compliant"));
++	G_fatal_error("%s", _("Vector map name is not SQL compliant"));
+ 
+     /* Delete old vector if it exists */
+     if (G_find_vector2(out, G_mapset())) {
+--- grass-6.4.3/lib/vector/Vlib/read_ogr.c.orig	2009-11-28 11:52:54.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/read_ogr.c	2014-06-10 16:04:20.162220145 +0200
+@@ -175,7 +175,7 @@
+ 
+ 	    Map->fInfo.ogr.feature_cache_id = (int)OGR_F_GetFID(hFeature);
+ 	    if (Map->fInfo.ogr.feature_cache_id == OGRNullFID) {
+-		G_warning(_("OGR feature without ID"));
++		G_warning("%s", _("OGR feature without ID"));
+ 	    }
+ 
+ 	    /* Cache the feature */
+--- grass-6.4.3/lib/vector/Vlib/array.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/array.c	2014-06-10 16:35:35.955514373 +0200
+@@ -142,7 +142,7 @@
+ 
+     /* Check type */
+     if ((type & GV_AREA) && (type & (GV_POINTS | GV_LINES))) {
+-	G_warning(_("Mixed area and other type requested for vector array"));
++	G_warning("%s", _("Mixed area and other type requested for vector array"));
+ 	return 0;
+     }
+ 
+@@ -152,7 +152,7 @@
+ 	n = Vect_get_num_areas(Map);
+ 
+ 	if (n > varray->size) {	/* not enough space */
+-	    G_warning(_("Not enough space in vector array"));
++	    G_warning("%s", _("Not enough space in vector array"));
+ 	    return 0;
+ 	}
+ 
+@@ -175,7 +175,7 @@
+ 	n = Vect_get_num_lines(Map);
+ 
+ 	if (n > varray->size) {	/* not enough space */
+-	    G_warning(_("Not enough space in vector array"));
++	    G_warning("%s", _("Not enough space in vector array"));
+ 	    return 0;
+ 	}
+ 
+@@ -266,7 +266,7 @@
+ 
+     /* Check type */
+     if ((type & GV_AREA) && (type & (GV_POINTS | GV_LINES))) {
+-	G_warning(_("Mixed area and other type requested for vector array"));
++	G_warning("%s", _("Mixed area and other type requested for vector array"));
+ 	return 0;
+     }
+ 
+@@ -303,7 +303,7 @@
+         as WHERE will create a small subset of all vector features and thus on large datasets
+         it's waste of memory to allocate it for all features. */
+ 	if (n > varray->size) {	/* not enough space */
+-	    G_warning(_("Not enough space in vector array"));
++	    G_warning("%s", _("Not enough space in vector array"));
+ 	    return 0;
+ 	}
+ 
+@@ -336,7 +336,7 @@
+ 	n = Vect_get_num_lines(Map);
+ 
+ 	if (n > varray->size) {	/* not enough space */
+-	    G_warning(_("Not enough space in vector array"));
++	    G_warning("%s", _("Not enough space in vector array"));
+ 	    return 0;
+ 	}
+ 
+--- grass-6.4.3/lib/vector/Vlib/overlay.c.orig	2008-11-25 02:31:05.000000000 +0100
++++ grass-6.4.3/lib/vector/Vlib/overlay.c	2014-06-10 18:26:35.605375566 +0200
+@@ -120,10 +120,10 @@
+ 
+     /* TODO: support all types; at present only point x point, area x point and point x area supported  */
+     if ((atype & GV_LINES) || (btype & GV_LINES))
+-	G_warning(_("Overlay: line/boundary types not supported by AND operator"));
++	G_warning("%s", _("Overlay: line/boundary types not supported by AND operator"));
+ 
+     if ((atype & GV_AREA) && (btype & GV_AREA))
+-	G_warning(_("Overlay: area x area types not supported by AND operator"));
++	G_warning("%s", _("Overlay: area x area types not supported by AND operator"));
+ 
+     /* TODO: more points in one node in one map */
+ 
+--- grass-6.4.3/lib/vector/neta/centrality.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/centrality.c	2014-05-18 20:57:22.929939803 +0200
+@@ -60,7 +60,7 @@
+     nnodes = dglGet_NodeCount(graph);
+     tmp = (double *)G_calloc(nnodes + 1, sizeof(double));
+     if (!tmp) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+@@ -142,7 +142,7 @@
+     delta = (dglInt32_t *) G_calloc(nnodes + 1, sizeof(dglInt32_t));
+ 
+     if (!dst || !prev || !stack || !cnt || !delta) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/vector/neta/allpairs.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/allpairs.c	2014-06-03 20:40:49.881146947 +0200
+@@ -47,10 +47,10 @@
+ 
+     node_indices = (dglInt32_t *) G_calloc(nnodes, sizeof(dglInt32_t));
+     if (!node_indices) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+-    G_message(_("Computing all pairs shortest paths..."));
++    G_message("%s", _("Computing all pairs shortest paths..."));
+     G_percent_reset();
+     for (i = 0; i <= nnodes; i++)
+ 	for (j = 0; j <= nnodes; j++)
+--- grass-6.4.3/lib/vector/neta/timetables.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/timetables.c	2014-06-05 21:12:19.967505858 +0200
+@@ -66,7 +66,7 @@
+     *lengths = (int *)G_calloc(count, sizeof(int));
+     *ids = (int *)G_calloc(count, sizeof(int));
+     if (!*lengths || !*ids) {
+-	G_warning(_("Out of memory"));
++	G_warning("%s", _("Out of memory"));
+ 	return -1;
+     }
+     db_open_select_cursor(driver, sql, &cursor, DB_SEQUENTIAL);
+@@ -165,7 +165,7 @@
+     if (!timetable->route_stops || !timetable->route_times ||
+ 	!timetable->stop_routes || !timetable->stop_times ||
+ 	!timetable->walk_length) {
+-	G_warning(_("Out of memory"));
++	G_warning("%s", _("Out of memory"));
+ 	return 2;
+     }
+ 
+@@ -175,7 +175,7 @@
+ 	timetable->route_times[i] =
+ 	    (int *)G_calloc(timetable->route_length[i], sizeof(int));
+ 	if (!timetable->route_stops[i] || !timetable->route_times[i]) {
+-	    G_warning(_("Out of memory"));
++	    G_warning("%s", _("Out of memory"));
+ 	    return 2;
+ 	}
+ 
+@@ -188,7 +188,7 @@
+ 	timetable->stop_times[i] =
+ 	    (int *)G_calloc(timetable->stop_length[i], sizeof(int));
+ 	if (!timetable->stop_routes[i] || !timetable->stop_times[i]) {
+-	    G_warning(_("Out of memory"));
++	    G_warning("%s", _("Out of memory"));
+ 	    return 2;
+ 	}
+ 	timetable->walk_length[i] = 0;
+@@ -275,7 +275,7 @@
+ 	    timetable->walk_times[i] =
+ 		(int *)G_calloc(timetable->walk_length[i], sizeof(int));
+ 	    if (!timetable->walk_stops[i] || !timetable->walk_times[i]) {
+-		G_warning(_("Out of memory"));
++		G_warning("%s", _("Out of memory"));
+ 		return 2;
+ 	    }
+ 	    timetable->walk_length[i] = 0;
+@@ -410,7 +410,7 @@
+ 
+     if (!result->dst || !result->prev_stop || !result->prev_route ||
+ 	!result->prev_conn) {
+-	G_warning(_("Out of memory"));
++	G_warning("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+@@ -422,7 +422,7 @@
+ 	result->prev_conn[i] = (int *)G_calloc(timetable->stops, sizeof(int));
+ 	if (!result->dst[i] || !result->prev_stop[i] || !result->prev_route[i]
+ 	    || !result->prev_conn[i]) {
+-	    G_warning(_("Out of memory"));
++	    G_warning("%s", _("Out of memory"));
+ 	    return -1;
+ 	}
+     }
+--- grass-6.4.3/lib/vector/neta/flow.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/flow.c	2014-06-07 22:17:06.710489822 +0200
+@@ -61,7 +61,7 @@
+     is_source = (char *)G_calloc(nnodes + 3, sizeof(char));
+     is_sink = (char *)G_calloc(nnodes + 3, sizeof(char));
+     if (!queue || !prev || !is_source || !is_sink) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+@@ -175,7 +175,7 @@
+     queue = (dglInt32_t *) G_calloc(nnodes + 3, sizeof(dglInt32_t));
+     visited = (char *)G_calloc(nnodes + 3, sizeof(char));
+     if (!queue || !visited) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+@@ -306,6 +306,6 @@
+     }
+     dglNode_T_Release(&nt);
+     if (dglFlatten(out) < 0)
+-	G_fatal_error(_("GngFlatten error"));
++	G_fatal_error("%s", _("GngFlatten error"));
+     return edge_cnt;
+ }
+--- grass-6.4.3/lib/vector/neta/bridge.c.orig	2013-03-23 10:52:05.000000000 +0100
++++ grass-6.4.3/lib/vector/neta/bridge.c	2014-06-08 08:30:29.389722738 +0200
+@@ -56,7 +56,7 @@
+     stack = (dglInt32_t **) G_calloc(nnodes + 1, sizeof(dglInt32_t *));
+     current_edge = (dglInt32_t **) G_calloc(nnodes + 1, sizeof(dglInt32_t *));
+     if (!tin || !min_tin || !parent || !stack || !current) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/vector/neta/spanningtree.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/spanningtree.c	2014-06-08 10:08:46.199599831 +0200
+@@ -96,12 +96,12 @@
+     nedges = dglGet_EdgeCount(graph);
+     perm = (edge_cost_pair *) G_calloc(nedges, sizeof(edge_cost_pair));
+     if (!perm || !uf_initialize(&uf, nnodes + 1)) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+     /*for some obscure reasons, dglGetEdge always returns NULL. Therefore this complicated enumeration of the edges... */
+     index = 0;
+-    G_message(_("Computing minimum spanning tree..."));
++    G_message("%s", _("Computing minimum spanning tree..."));
+     G_percent_reset();
+     for (i = 1; i <= nnodes; i++) {
+ 	G_percent(i, nnodes + nedges, 1);
+--- grass-6.4.3/lib/vector/neta/path.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/path.c	2014-06-08 11:46:44.989477298 +0200
+@@ -131,7 +131,7 @@
+     queue = (dglInt32_t *) G_calloc(nnodes + 1, sizeof(dglInt32_t));
+     vis = (char *)G_calloc(nnodes + 1, sizeof(char));
+     if (!prev || !queue || !vis) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+     Vect_reset_list(list);
+--- grass-6.4.3/lib/vector/neta/articulation_point.c.orig	2013-03-23 10:52:05.000000000 +0100
++++ grass-6.4.3/lib/vector/neta/articulation_point.c	2014-06-08 12:37:28.682747190 +0200
+@@ -57,7 +57,7 @@
+     current_edge = (dglInt32_t **) G_calloc(nnodes + 1, sizeof(dglInt32_t *));
+     mark = (int *)G_calloc(nnodes + 1, sizeof(int));
+     if (!tin || !min_tin || !parent || !stack || !current || !mark) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/vector/neta/utils.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/utils.c	2014-06-08 15:06:40.995893931 +0200
+@@ -218,11 +218,11 @@
+ 	if (layer < 1)
+ 	    G_fatal_error(_("'%s' must be > 0 for '%s'"), "layer", "where");
+ 	if (cat)
+-	    G_warning(_("'where' and 'cats' parameters were supplied, cat will be ignored"));
++	    G_warning("%s", _("'where' and 'cats' parameters were supplied, cat will be ignored"));
+ 	*varray = Vect_new_varray(Vect_get_num_lines(In));
+ 	if (Vect_set_varray_from_db
+ 	    (In, layer, where, mask_type, 1, *varray) == -1) {
+-	    G_warning(_("Unable to load data from database"));
++	    G_warning("%s", _("Unable to load data from database"));
+ 	    return 0;
+ 	}
+ 	return 1;
+@@ -233,7 +233,7 @@
+ 	*varray = Vect_new_varray(Vect_get_num_lines(In));
+ 	if (Vect_set_varray_from_cat_string
+ 	    (In, layer, cat, mask_type, 1, *varray) == -1) {
+-	    G_warning(_("Problem loading category values"));
++	    G_warning("%s", _("Problem loading category values"));
+ 	    return 0;
+ 	}
+ 	return 1;
+--- grass-6.4.3/lib/vector/neta/components.c.orig	2011-04-16 11:52:08.000000000 +0200
++++ grass-6.4.3/lib/vector/neta/components.c	2014-06-08 16:09:43.325815094 +0200
+@@ -43,7 +43,7 @@
+     stack = (dglInt32_t *) G_calloc(nnodes + 1, sizeof(dglInt32_t));
+     visited = (int *)G_calloc(nnodes + 1, sizeof(int));
+     if (!stack || !visited) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+@@ -110,7 +110,7 @@
+     visited = (int *)G_calloc(nnodes + 1, sizeof(int));
+     processed = (int *)G_calloc(nnodes + 1, sizeof(int));
+     if (!stack || !visited || !order || !processed) {
+-	G_fatal_error(_("Out of memory"));
++	G_fatal_error("%s", _("Out of memory"));
+ 	return -1;
+     }
+ 
+--- grass-6.4.3/lib/sites/sites.c.orig	2014-05-18 20:58:37.036604857 +0200
++++ grass-6.4.3/lib/sites/sites.c	2014-05-18 20:58:40.643271502 +0200
+@@ -133,7 +133,7 @@
+     G_debug(4, "cattype = %d", s->cattype);
+ 
+     if (s->cattype == FCELL_TYPE || s->cattype == DCELL_TYPE)
+-	G_fatal_error(_("Category must be integer"));
++	G_fatal_error("%s", _("Category must be integer"));
+ 
+     if (s->cattype == CELL_TYPE)
+ 	Vect_cat_set(Cats, 1, s->ccat);
+@@ -207,9 +207,9 @@
+ 		if ((head->time =
+ 		     (struct TimeStamp *)G_malloc(sizeof(struct TimeStamp)))
+ 		    == NULL)
+-		    G_fatal_error(_("Memory error in writing timestamp"));
++		    G_fatal_error("%s", _("Memory error in writing timestamp"));
+ 		else if (G_scan_timestamp(head->time, head->stime) < 0) {
+-		    G_warning(_("Illegal TimeStamp string"));
++		    G_warning("%s", _("Illegal TimeStamp string"));
+ 		    return -1;	/* added to prevent crash 5/2000 MN */
+ 		}
+ 	    }
+@@ -238,9 +238,9 @@
+     if (head->stime && strlen(head->stime) > 0) {
+ 	if ((head->time =
+ 	     (struct TimeStamp *)G_malloc(sizeof(struct TimeStamp))) == NULL)
+-	    G_fatal_error(_("Memory error in allocating timestamp"));
++	    G_fatal_error("%s", _("Memory error in allocating timestamp"));
+ 	if (G_scan_timestamp(head->time, head->stime) < 0) {
+-	    G_warning(datetime_error_msg());
++	    G_warning("%s", datetime_error_msg());
+ 
+ 	    head->time = NULL;
+ 	    head->stime = NULL;
+@@ -345,7 +345,7 @@
+     dbValue *value;
+ 
+     G_message(
+-	_("Dev note: Adapted sites library used for vector points. "
++	"%s", _("Dev note: Adapted sites library used for vector points. "
+ 	  "(module should be updated to GRASS 6 vector library)"));
+ 
+     Map = (struct Map_info *)G_malloc(sizeof(struct Map_info));
+@@ -394,7 +394,7 @@
+     adbl = astr = 0;
+     while (1) {
+ 	if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK)
+-	    G_fatal_error(_("Cannot fetch row"));
++	    G_fatal_error("%s", _("Cannot fetch row"));
+ 
+ 	if (!more)
+ 	    break;
+@@ -475,7 +475,7 @@
+     struct Map_info *Map;
+ 
+     G_message(
+-	_("Dev note: Adapted sites library used for vector points. "
++	"%s", _("Dev note: Adapted sites library used for vector points. "
+ 	  "(module should be updated to GRASS 6 vector library)"));
+     G_warning("Site/vector attributes ignored.");
+ 
+@@ -576,7 +576,7 @@
+     Site *s;
+ 
+     if (n_dim < 2 || n_s_att < 0 || n_d_att < 0)
+-	G_fatal_error(_("G_oldsite_new_struct: invalid # dims or fields"));
++	G_fatal_error("%s", _("G_oldsite_new_struct: invalid # dims or fields"));
+ 
+     if ((s = (Site *) G_malloc(sizeof(Site))) == NULL)
+ 	return (Site *) NULL;
+@@ -1254,7 +1254,7 @@
+     db_append_string(&stmt, fi->table);
+ 
+     if (db_open_select_cursor(driver, &stmt, &cursor, DB_SEQUENTIAL) != DB_OK)
+-	G_fatal_error(_("Cannot select attributes"));
++	G_fatal_error("%s", _("Cannot select attributes"));
+ 
+     nrows = db_get_num_rows(&cursor);
+     G_debug(1, "%d rows selected from vector attribute table", nrows);
+--- grass-6.4.3/lib/rst/interp_float/segmen2d.c.orig	2010-09-25 11:52:07.000000000 +0200
++++ grass-6.4.3/lib/rst/interp_float/segmen2d.c	2014-05-18 21:06:33.116594990 +0200
+@@ -108,7 +108,7 @@
+ 
+ 	while ((npt < MINPTS) || (npt > params->KMAX2)) {
+ 	    if (i >= 70) {
+-		G_warning(_("Taking too long to find points for interpolation - "
++		G_warning("%s", _("Taking too long to find points for interpolation - "
+ 			    "please change the region to area where your points are. "
+ 			    "Continuing calculations..."));
+ 		break;
+@@ -172,19 +172,19 @@
+ 	    if (!
+ 		(matrix =
+ 		 G_alloc_matrix(params->KMAX2 + 1, params->KMAX2 + 1))) {
+-		G_warning(_("Out of memory"));
++		G_warning("%s", _("Out of memory"));
+ 		return -1;
+ 	    }
+ 	}
+ 	if (!indx) {
+ 	    if (!(indx = G_alloc_ivector(params->KMAX2 + 1))) {
+-		G_warning(_("Out of memory"));
++		G_warning("%s", _("Out of memory"));
+ 		return -1;
+ 	    }
+ 	}
+ 	if (!b) {
+ 	    if (!(b = G_alloc_vector(params->KMAX2 + 3))) {
+-		G_warning(_("Out of memory"));
++		G_warning("%s", _("Out of memory"));
+ 		return -1;
+ 	    }
+ 	}
+@@ -194,7 +194,7 @@
+ 		(point =
+ 		 (struct triple *)G_malloc(sizeof(struct triple) *
+ 					   data->n_points))) {
+-		G_warning(_("Out of memory"));
++		G_warning("%s", _("Out of memory"));
+ 		return -1;
+ 	    }
+ 	}
+--- grass-6.4.3/lib/rst/interp_float/point2d.c.orig	2008-11-25 02:31:19.000000000 +0100
++++ grass-6.4.3/lib/rst/interp_float/point2d.c	2014-06-03 21:00:41.291122114 +0200
+@@ -114,7 +114,7 @@
+ 		sprintf(buf, ", %f", err);
+ 		db_append_string(&sql2, buf);
+ 		db_append_string(&sql2, ")");
+-		G_debug(3, db_get_string(&sql2));
++		G_debug(3, "%s", db_get_string(&sql2));
+ 
+ 		if (db_execute_immediate(driver2, &sql2) != DB_OK) {
+ 		    db_close_database(driver2);
+@@ -171,7 +171,7 @@
+ 	    sprintf(buf, ", %f", skip_err);
+ 	    db_append_string(&sql2, buf);
+ 	    db_append_string(&sql2, ")");
+-	    G_debug(3, db_get_string(&sql2));
++	    G_debug(3, "%s", db_get_string(&sql2));
+ 
+ 	    if (db_execute_immediate(driver2, &sql2) != DB_OK) {
+ 		db_close_database(driver2);
+--- grass-6.4.3/lib/rst/interp_float/interp2d.c.orig	2010-09-25 11:52:07.000000000 +0200
++++ grass-6.4.3/lib/rst/interp_float/interp2d.c	2014-06-05 21:12:58.724171716 +0200
+@@ -116,13 +116,13 @@
+ 
+     if (!w) {
+ 	if (!(w = (double *)G_malloc(sizeof(double) * (params->KMAX2 + 9)))) {
+-	    G_warning(_("Out of memory"));
++	    G_warning("%s", _("Out of memory"));
+ 	    return -1;
+ 	}
+     }
+     if (!w2) {
+ 	if (!(w2 = (double *)G_malloc(sizeof(double) * (params->KMAX2 + 9)))) {
+-	    G_warning(_("Out of memory"));
++	    G_warning("%s", _("Out of memory"));
+ 	    return -1;
+ 	}
+     }
+--- grass-6.4.3/lib/rst/interp_float/vinput2d.c.orig	2010-09-25 11:52:07.000000000 +0200
++++ grass-6.4.3/lib/rst/interp_float/vinput2d.c	2014-06-07 22:17:56.967155442 +0200
+@@ -73,7 +73,7 @@
+ 	G_fatal_error(_("Vector map <%s> is not 3D"), Vect_get_full_name(Map));
+ 
+     if (field > 0 && zcol != NULL) {	/* open db driver */
+-	G_verbose_message(_("Loading data from attribute table ..."));
++	G_verbose_message("%s", _("Loading data from attribute table ..."));
+ 	Fi = Vect_get_field(Map, field);
+ 	if (Fi == NULL)
+ 	    G_fatal_error(_("Database connection not defined for layer %d"),
+@@ -118,7 +118,7 @@
+     }
+ 
+     /* Lines without nodes */
+-    G_message(_("Reading features from vector map ..."));
++    G_message("%s", _("Reading features from vector map ..."));
+     sm = 0;
+     line = 1;
+     while ((ltype = Vect_read_next_line(Map, Points, Cats)) != -2) {
+@@ -168,7 +168,7 @@
+ 							    &sm);
+ 		    }
+ 		    if (sm < 0.0)
+-			G_fatal_error(_("Negative value of smoothing detected: sm must be >= 0"));
++			G_fatal_error("%s", _("Negative value of smoothing detected: sm must be >= 0"));
+ 		}
+ 		G_debug(5, "  z = %f sm = %f", z, sm);
+ 	    }
+@@ -230,7 +230,7 @@
+     }
+ 
+     /* Process all nodes */
+-    G_message(_("Reading nodes from vector map ..."));
++    G_message("%s", _("Reading nodes from vector map ..."));
+     nnodes = Vect_get_num_nodes(Map);
+     for (k1 = 1; k1 <= nnodes; k1++) {
+ 	G_debug(5, "  node %d", k1);
+@@ -285,7 +285,7 @@
+ 							    &sm);
+ 		    }
+ 		    if (sm < 0.0)
+-			G_fatal_error(_("Negative value of smoothing detected: sm must be >= 0"));
++			G_fatal_error("%s", _("Negative value of smoothing detected: sm must be >= 0"));
+ 		}
+ 		G_debug(5, "  z = %f sm = %f", z, sm);
+ 	    }
+@@ -311,7 +311,7 @@
+ 
+ 	if (!once) {
+ 	    once = 1;
+-	    G_warning(_("Strip exists with insufficient data"));
++	    G_warning("%s", _("Strip exists with insufficient data"));
+ 	}
+     }
+ 
+@@ -337,7 +337,7 @@
+ 	    params->kmin = npoint;
+ 	}
+ 	else {
+-	    G_warning(_("Zero points in the given region"));
++	    G_warning("%s", _("Zero points in the given region"));
+ 	    return -1;
+ 	}
+     }
+@@ -388,13 +388,13 @@
+ 
+     if (!((c1 >= 0) && (c2 >= 0) && (c3 >= 0) && (c4 >= 0))) {
+ 	if (!(*OUTRANGE)) {
+-	    G_warning(_("Some points outside of region (ignored)"));
++	    G_warning("%s", _("Some points outside of region (ignored)"));
+ 	}
+ 	(*OUTRANGE)++;
+     }
+     else {
+ 	if (!(point = quad_point_new(x, y, z, sm))) {
+-	    G_warning(_("Unable to allocate memory"));
++	    G_warning("%s", _("Unable to allocate memory"));
+ 	    return -1;
+ 	}
+ 	a = MT_insert(point, info, info->root, 4);
+--- grass-6.4.3/lib/rst/interp_float/input2d.c.orig	2008-11-25 02:31:19.000000000 +0100
++++ grass-6.4.3/lib/rst/interp_float/input2d.c	2014-06-08 08:30:45.886389060 +0200
+@@ -66,7 +66,7 @@
+ 		    BM_set(bitmask, j, irev, 1);
+ 	    }
+ 	}
+-	G_message(_("Bitmap mask created"));
++	G_message("%s", _("Bitmap mask created"));
+     }
+     else
+ 	bitmask = NULL;
+--- grass-6.4.3/lib/g3d/g3derror.c.orig	2008-11-25 02:31:10.000000000 +0100
++++ grass-6.4.3/lib/g3d/g3derror.c	2014-05-18 21:06:58.066594464 +0200
+@@ -40,7 +40,7 @@
+ void G3d_printError(const char *msg)
+ {
+     fprintf(stderr, "ERROR: ");
+-    fprintf(stderr, msg);
++    fputs(msg, stderr);
+     fprintf(stderr, "\n");
+ }
+ 
+--- grass-6.4.3/lib/g3d/g3dparam.c.orig	2008-11-25 02:31:10.000000000 +0100
++++ grass-6.4.3/lib/g3d/g3dparam.c	2014-06-03 21:01:10.674454834 +0200
+@@ -113,7 +113,7 @@
+ 	    *precision = -1;
+ 	else if ((sscanf(param->precision->answer, "%d", precision) != 1) ||
+ 		 (*precision < 0)) {
+-	    G3d_error(_("G3d_getStandard3dParams: precision value invalid"));
++	    G3d_error("%s", _("G3d_getStandard3dParams: precision value invalid"));
+ 	    return 0;
+ 	}
+     }
+@@ -146,7 +146,7 @@
+     if (strcmp(param->dimension->answer, "default") != 0) {
+ 	if (sscanf(param->dimension->answer, "%dx%dx%d",
+ 		   tileX, tileY, tileZ) != 3) {
+-	    G3d_error(_("G3d_getStandard3dParams: tile dimension value invalid"));
++	    G3d_error("%s", _("G3d_getStandard3dParams: tile dimension value invalid"));
+ 	    return 0;
+ 	}
+     }
+--- grass-6.4.3/lib/g3d/g3dopen.c.orig	2008-11-25 02:31:10.000000000 +0100
++++ grass-6.4.3/lib/g3d/g3dopen.c	2014-06-05 21:19:24.627497006 +0200
+@@ -17,13 +17,13 @@
+     G3d_initDefaults();
+ 
+     if (!G3d_maskOpenOld()) {
+-	G3d_error(_("G3d_openCellOldNoHeader: error in G3d_maskOpenOld"));
++	G3d_error("%s", _("G3d_openCellOldNoHeader: error in G3d_maskOpenOld"));
+ 	return (void *)NULL;
+     }
+ 
+     map = G3d_malloc(sizeof(G3D_Map));
+     if (map == NULL) {
+-	G3d_error(_("G3d_openCellOldNoHeader: error in G3d_malloc"));
++	G3d_error("%s", _("G3d_openCellOldNoHeader: error in G3d_malloc"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -42,7 +42,7 @@
+ 
+     map->data_fd = G_open_old(buf, buf2, mapset);
+     if (map->data_fd < 0) {
+-	G3d_error(_("G3d_openCellOldNoHeader: error in G_open_old"));
++	G3d_error("%s", _("G3d_openCellOldNoHeader: error in G_open_old"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -96,12 +96,12 @@
+ 
+     map = G3d_openCellOldNoHeader(name, mapset);
+     if (map == NULL) {
+-	G3d_error(_("G3d_openCellOld: error in G3d_openCellOldNoHeader"));
++	G3d_error("%s", _("G3d_openCellOld: error in G3d_openCellOldNoHeader"));
+ 	return (void *)NULL;
+     }
+ 
+     if (lseek(map->data_fd, (long)0, SEEK_SET) == -1) {
+-	G3d_error(_("G3d_openCellOld: can't rewind file"));
++	G3d_error("%s", _("G3d_openCellOld: can't rewind file"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -113,7 +113,7 @@
+ 			&tileX, &tileY, &tileZ,
+ 			&type, &compression, &useRle, &useLzw,
+ 			&precision, &dataOffset, &useXdr, &hasIndex, &unit)) {
+-	G3d_error(_("G3d_openCellOld: error in G3d_readHeader"));
++	G3d_error("%s", _("G3d_openCellOld: error in G3d_readHeader"));
+ 	return 0;
+     }
+ 
+@@ -121,11 +121,11 @@
+ 	window = G3d_windowPtr();
+ 
+     if (proj != window->proj) {
+-	G3d_error(_("G3d_openCellOld: projection does not match window projection"));
++	G3d_error("%s", _("G3d_openCellOld: projection does not match window projection"));
+ 	return (void *)NULL;
+     }
+     if (zone != window->zone) {
+-	G3d_error(_("G3d_openCellOld: zone does not match window zone"));
++	G3d_error("%s", _("G3d_openCellOld: zone does not match window zone"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -137,24 +137,24 @@
+ 			   &(map->indexLongNbytes), 1)) ||
+ 	    (!G3d_readInts(map->data_fd, map->useXdr,
+ 			   &(map->indexNbytesUsed), 1))) {
+-	    G3d_error(_("G3d_openCellOld: can't read header"));
++	    G3d_error("%s", _("G3d_openCellOld: can't read header"));
+ 	    return (void *)NULL;
+ 	}
+ 
+ 	/* if our long is to short to store offsets we can't read the file */
+ 	if (map->indexNbytesUsed > sizeof(long))
+-	    G3d_fatalError(_("G3d_openCellOld: index does not fit into long"));
++	    G3d_fatalError("%s", _("G3d_openCellOld: index does not fit into long"));
+ 
+ 	ltmp = G3d_malloc(map->indexLongNbytes);
+ 	if (ltmp == NULL) {
+-	    G3d_error(_("G3d_openCellOld: error in G3d_malloc"));
++	    G3d_error("%s", _("G3d_openCellOld: error in G3d_malloc"));
+ 	    return (void *)NULL;
+ 	}
+ 
+ 	/* convert file long to long */
+ 	if (read(map->data_fd, ltmp, map->indexLongNbytes) !=
+ 	    map->indexLongNbytes) {
+-	    G3d_error(_("G3d_openCellOld: can't read header"));
++	    G3d_error("%s", _("G3d_openCellOld: can't read header"));
+ 	    return (void *)NULL;
+ 	}
+ 	G3d_longDecode(ltmp, &(map->indexOffset), 1, map->indexLongNbytes);
+@@ -173,7 +173,7 @@
+ 			proj, zone,
+ 			north, south, east, west, top, bottom,
+ 			rows, cols, depths, ew_res, ns_res, tb_res, unit)) {
+-	G3d_error(_("G3d_openCellOld: error in G3d_fillHeader"));
++	G3d_error("%s", _("G3d_openCellOld: error in G3d_fillHeader"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -220,7 +220,7 @@
+ 
+     G3d_initDefaults();
+     if (!G3d_maskOpenOld()) {
+-	G3d_error(_("G3d_openCellNew: error in G3d_maskOpenOld"));
++	G3d_error("%s", _("G3d_openCellNew: error in G3d_maskOpenOld"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -229,7 +229,7 @@
+ 
+     map = G3d_malloc(sizeof(G3D_Map));
+     if (map == NULL) {
+-	G3d_error(_("G3d_openCellNew: error in G3d_malloc"));
++	G3d_error("%s", _("G3d_openCellNew: error in G3d_malloc"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -242,7 +242,7 @@
+     map->tempName = G_tempfile();
+     map->data_fd = open(map->tempName, O_RDWR | O_CREAT | O_TRUNC, 0666);
+     if (map->data_fd < 0) {
+-	G3d_error(_("G3d_openCellNew: could not open file"));
++	G3d_error("%s", _("G3d_openCellNew: could not open file"));
+ 	return (void *)NULL;
+     }
+ 
+@@ -287,12 +287,12 @@
+ 	if ((!G3d_writeInts(map->data_fd, map->useXdr,
+ 			    &(map->indexLongNbytes), 1)) ||
+ 	    (!G3d_writeInts(map->data_fd, map->useXdr, &dummy, 1))) {
+-	    G3d_error(_("G3d_openCellNew: can't write header"));
++	    G3d_error("%s", _("G3d_openCellNew: can't write header"));
+ 	    return (void *)NULL;
+ 	}
+ 	if (write(map->data_fd, &ldummy, map->indexLongNbytes) !=
+ 	    map->indexLongNbytes) {
+-	    G3d_error(_("G3d_openCellNew: can't write header"));
++	    G3d_error("%s", _("G3d_openCellNew: can't write header"));
+ 	    return (void *)NULL;
+ 	}
+     }
+@@ -315,7 +315,7 @@
+ 			region->rows, region->cols, region->depths,
+ 			region->ew_res, region->ns_res, region->tb_res,
+ 			g3d_unit_default)) {
+-	G3d_error(_("G3d_openCellNew: error in G3d_fillHeader"));
++	G3d_error("%s", _("G3d_openCellNew: error in G3d_fillHeader"));
+ 	return (void *)NULL;
+     }
+ 
+--- grass-6.4.3/lib/g3d/g3dwindowio.c.orig	2013-02-23 11:52:07.000000000 +0100
++++ grass-6.4.3/lib/g3d/g3dwindowio.c	2014-06-07 22:18:19.253821644 +0200
+@@ -71,7 +71,7 @@
+ 	windowName++;
+ 
+     if (strchr(windowName, GRASS_DIRSEP) || strchr(windowName, HOST_DIRSEP)) {
+-	sprintf(path, windowName);
++	strcpy(path, windowName);
+ 	return;
+     }
+ 
+--- grass-6.4.3/lib/g3d/g3drange.c.orig	2008-11-25 02:31:10.000000000 +0100
++++ grass-6.4.3/lib/g3d/g3drange.c	2014-06-08 08:31:13.596388483 +0200
+@@ -196,8 +196,7 @@
+ 
+   error:
+     G_remove(buf, buf2);	/* remove the old file with this name */
+-    sprintf(buf, "can't write range file for [%s in %s]", name, G_mapset());
+-    G_warning(buf);
++    G_warning(buf, "can't write range file for [%s in %s]", name, G_mapset());
+     return -1;
+ }
+ 
+--- grass-6.4.3/lib/gpde/N_solvers.c.orig	2008-11-25 02:31:01.000000000 +0100
++++ grass-6.4.3/lib/gpde/N_solvers.c	2014-05-18 21:09:18.566591526 +0200
+@@ -47,17 +47,17 @@
+ {
+ 
+     if (les->type != N_NORMAL_LES) {
+-	G_warning(_("The gauss elimination solver does not work with sparse matrices"));
++	G_warning("%s", _("The gauss elimination solver does not work with sparse matrices"));
+ 	return 0;
+     }
+ 
+     if (les->quad != 1) {
+-	G_fatal_error(_("The linear equation system is not quadratic"));
++	G_fatal_error("%s", _("The linear equation system is not quadratic"));
+ 	return 0;
+     }
+ 
+ 
+-    G_message(_("Starting direct gauss elimination solver"));
++    G_message("%s", _("Starting direct gauss elimination solver"));
+ 
+     N_les_pivot_create(les);
+     gauss_elimination(les->A, les->b, les->rows);
+@@ -85,17 +85,17 @@
+     double *c, *tmpv;
+ 
+     if (les->type != N_NORMAL_LES) {
+-	G_warning(_("The lu solver does not work with sparse matrices"));
++	G_warning("%s", _("The lu solver does not work with sparse matrices"));
+ 	return 0;
+     }
+ 
+     if (les->quad != 1) {
+-	G_warning(_("The linear equation system is not quadratic"));
++	G_warning("%s", _("The linear equation system is not quadratic"));
+ 	return -1;
+     }
+ 
+ 
+-    G_message(_("Starting direct lu decomposition solver"));
++    G_message("%s", _("Starting direct lu decomposition solver"));
+ 
+     tmpv = vectmem(les->rows);
+     c = vectmem(les->rows);
+@@ -152,25 +152,25 @@
+ int N_solver_cholesky(N_les * les)
+ {
+     if (les->type != N_NORMAL_LES) {
+-	G_warning(_("The cholesky solver does not work with sparse matrices"));
++	G_warning("%s", _("The cholesky solver does not work with sparse matrices"));
+ 	return 0;
+     }
+ 
+     if (les->quad != 1) {
+-	G_warning(_("The linear equation system is not quadratic"));
++	G_warning("%s", _("The linear equation system is not quadratic"));
+ 	return -1;
+     }
+ 
+     /* check for symmetry */
+     if (check_symmetry(les) != 1) {
+-	G_warning(_("Matrix is not symmetric!"));
++	G_warning("%s", _("Matrix is not symmetric!"));
+ 	return -3;
+     }
+ 
+-    G_message(_("Starting cholesky decomposition solver"));
++    G_message("%s", _("Starting cholesky decomposition solver"));
+ 
+     if (cholesky_decomposition(les->A, les->rows) != 1) {
+-	G_warning(_("Unable to solve the linear equation system"));
++	G_warning("%s", _("Unable to solve the linear equation system"));
+ 	return -2;
+     }
+ 
+--- grass-6.4.3/lib/gpde/N_solvers_krylov.c.orig	2012-03-03 11:52:06.000000000 +0100
++++ grass-6.4.3/lib/gpde/N_solvers_krylov.c	2014-06-03 21:02:49.687786102 +0200
+@@ -75,13 +75,13 @@
+     N_les *M;
+ 
+     if (L->quad != 1) {
+-	G_warning(_("The linear equation system is not quadratic"));
++	G_warning("%s", _("The linear equation system is not quadratic"));
+ 	return -1;
+     }
+ 
+     /* check for symmetry */
+     if (check_symmetry(L) != 1) {
+-	G_warning(_("Matrix is not symmetric!"));
++	G_warning("%s", _("Matrix is not symmetric!"));
+     }
+ 
+     x = L->x;
+@@ -187,7 +187,7 @@
+ 		    ;
+ 		}
+ 		else {
+-		    G_warning(_("Unable to solve the linear equation system"));
++		    G_warning("%s", _("Unable to solve the linear equation system"));
+ 		    error_break = 1;
+ 		}
+ 	    }
+@@ -252,13 +252,13 @@
+     int error_break;
+ 
+     if (L->quad != 1) {
+-	G_warning(_("The linear equation system is not quadratic"));
++	G_warning("%s", _("The linear equation system is not quadratic"));
+ 	return -1;
+     }
+ 
+     /* check for symmetry */
<Skipped 20765 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/grass.git/commitdiff/d62d471aa20cfc9694daf77dacf2bfdd7349d5fb



More information about the pld-cvs-commit mailing list