From ad73ed298d26a934b587b4703e69f08f8c77d2eb Mon Sep 17 00:00:00 2001
From: Chun-wei Fan <fanchunwei@src.gnome.org>
Date: Fri, 19 Aug 2011 14:26:52 +0800
Subject: [PATCH] Include C89 fallback code

gtk/gtkborderimage.c, gtk/gtklabel.c and gtk/gtkstyleproperty.c call
round() and/or rint(), which was only available in C99 compilers.

This adds the inclusion of the fallback implementation (gtk/fallback-c89.c)
to define these functions if they are not initially made available by the
compiler.

Also remove the rint() implementation in gtk/gtklabel.c as it is now in
the fallback implmentation.
---
 gtk/gtkborderimage.c   |  5 +++++
 gtk/gtklabel.c         | 25 +++++--------------------
 gtk/gtkstyleproperty.c |  5 +++++
 3 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/gtk/gtkborderimage.c b/gtk/gtkborderimage.c
index 4f6ded6aa1..d5510ab5d7 100644
--- a/gtk/gtkborderimage.c
+++ b/gtk/gtkborderimage.c
@@ -28,6 +28,11 @@
 
 #include "gtkborderimageprivate.h"
 
+/* this is in case round() is not provided by the compiler, 
+ * such as in the case of C89 compilers, like MSVC
+ */
+#include "fallback-c89.c"
+
 G_DEFINE_BOXED_TYPE (GtkBorderImage, _gtk_border_image,
                      _gtk_border_image_ref, _gtk_border_image_unref)
 
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 6a6f72cf0a..9fadbfd2d2 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -54,6 +54,11 @@
 
 #include "a11y/gtklabelaccessible.h"
 
+/* this is in case rint() is not provided by the compiler, 
+ * such as in the case of C89 compilers, like MSVC
+ */
+#include "fallback-c89.c"
+
 /**
  * SECTION:gtklabel
  * @Short_description: A widget that displays a small to medium amount of text
@@ -230,26 +235,6 @@
  * </refsect2>
  */
 
-
-/*rint() is only available in GCC and/or C99*/
-#if (__STDC_VERSION__ < 199901L && !defined __GNUC__)
-double rint(double x)
-{
-	if (ceil(x+0.5) == floor(x+0.5))
-	{
-		int a = (int)ceil(x);
-		if (a%2 == 0)
-			return ceil(x);
-		else
-			return floor(x);
-	}
-	else
-		return floor(x+0.5);
-}
-#endif
-
-
-
 struct _GtkLabelPrivate
 {
   GtkLabelSelectionInfo *select_info;
diff --git a/gtk/gtkstyleproperty.c b/gtk/gtkstyleproperty.c
index 73200dc3e4..69f2e8ec4a 100644
--- a/gtk/gtkstyleproperty.c
+++ b/gtk/gtkstyleproperty.c
@@ -42,6 +42,11 @@
 #include "gtkthemingengine.h"
 #include "gtktypebuiltins.h"
 
+/* this is in case round() is not provided by the compiler, 
+ * such as in the case of C89 compilers, like MSVC
+ */
+#include "fallback-c89.c"
+
 static GHashTable *parse_funcs = NULL;
 static GHashTable *print_funcs = NULL;
 static GHashTable *properties = NULL;