* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
- * Created by Quy Tonthat <qtonthat@gmail.com>
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#include <stdio.h>
#include <string.h>
#ifdef HAVE_MATH_H
-#include "math.h"
+#include <math.h>
#endif
#include <glib.h>
#include <glib/gstdio.h>
#include "vikgotoxmltool.h"
+static void vik_goto_xml_tool_finalize ( GObject *gob );
-static void _goto_xml_tool_class_init ( VikGotoXmlToolClass *klass );
-static void _goto_xml_tool_init ( VikGotoXmlTool *self );
-
-static void _goto_xml_tool_finalize ( GObject *gob );
-
-static gchar *_goto_xml_tool_get_url_format ( VikGotoTool *self );
-static gboolean _goto_xml_tool_parse_file_for_latlon(VikGotoTool *self, gchar *filename, struct LatLon *ll);
+static gchar *vik_goto_xml_tool_get_url_format ( VikGotoTool *self );
+static gboolean vik_goto_xml_tool_parse_file_for_latlon(VikGotoTool *self, gchar *filename, struct LatLon *ll);
typedef struct _VikGotoXmlToolPrivate VikGotoXmlToolPrivate;
VIK_GOTO_XML_TOOL_TYPE, \
VikGotoXmlToolPrivate))
-GType vik_goto_xml_tool_get_type()
-{
- static GType w_type = 0;
-
- if (!w_type)
- {
- static const GTypeInfo w_info =
- {
- sizeof (VikGotoXmlToolClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) _goto_xml_tool_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (VikGotoXmlTool),
- 0,
- (GInstanceInitFunc) _goto_xml_tool_init,
- };
- w_type = g_type_register_static ( VIK_GOTO_TOOL_TYPE, "VikGotoXmlTool", &w_info, 0 );
- }
-
- return w_type;
-}
+G_DEFINE_TYPE (VikGotoXmlTool, vik_goto_xml_tool, VIK_GOTO_TOOL_TYPE)
enum
{
};
static void
-_goto_xml_tool_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+vik_goto_xml_tool_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
VikGotoXmlTool *self = VIK_GOTO_XML_TOOL (object);
VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
}
static void
-_goto_xml_tool_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+vik_goto_xml_tool_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
VikGotoXmlTool *self = VIK_GOTO_XML_TOOL (object);
VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
}
}
-static void _goto_xml_tool_class_init ( VikGotoXmlToolClass *klass )
+static void
+vik_goto_xml_tool_class_init ( VikGotoXmlToolClass *klass )
{
GObjectClass *object_class;
VikGotoToolClass *parent_class;
object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = _goto_xml_tool_finalize;
- object_class->set_property = _goto_xml_tool_set_property;
- object_class->get_property = _goto_xml_tool_get_property;
+ object_class->finalize = vik_goto_xml_tool_finalize;
+ object_class->set_property = vik_goto_xml_tool_set_property;
+ object_class->get_property = vik_goto_xml_tool_get_property;
pspec = g_param_spec_string ("url-format",
parent_class = VIK_GOTO_TOOL_CLASS (klass);
- parent_class->get_url_format = _goto_xml_tool_get_url_format;
- parent_class->parse_file_for_latlon = _goto_xml_tool_parse_file_for_latlon;
+ parent_class->get_url_format = vik_goto_xml_tool_get_url_format;
+ parent_class->parse_file_for_latlon = vik_goto_xml_tool_parse_file_for_latlon;
g_type_class_add_private (klass, sizeof (VikGotoXmlToolPrivate));
}
-VikGotoXmlTool *vik_goto_xml_tool_new ()
+VikGotoXmlTool *
+vik_goto_xml_tool_new ()
{
return VIK_GOTO_XML_TOOL ( g_object_new ( VIK_GOTO_XML_TOOL_TYPE, "label", "Google", NULL ) );
}
-static void _goto_xml_tool_init ( VikGotoXmlTool *self )
+static void
+vik_goto_xml_tool_init ( VikGotoXmlTool *self )
{
VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
priv->url_format = NULL;
priv->ll.lon = NAN;
}
-static void _goto_xml_tool_finalize ( GObject *gob )
+static void
+vik_goto_xml_tool_finalize ( GObject *gob )
{
G_OBJECT_GET_CLASS(gob)->finalize(gob);
}
}
static gboolean
-_goto_xml_tool_parse_file_for_latlon(VikGotoTool *self, gchar *filename, struct LatLon *ll)
+vik_goto_xml_tool_parse_file_for_latlon(VikGotoTool *self, gchar *filename, struct LatLon *ll)
{
GMarkupParser xml_parser;
- GMarkupParseContext *xml_context;
- GError *error;
+ GMarkupParseContext *xml_context = NULL;
+ GError *error = NULL;
VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
g_return_val_if_fail(priv != NULL, FALSE);
gchar buff[BUFSIZ];
size_t nb;
- while ((nb = fread (buff, sizeof(gchar), BUFSIZ, file)) > 0)
+ while (xml_context &&
+ (nb = fread (buff, sizeof(gchar), BUFSIZ, file)) > 0)
{
if (!g_markup_parse_context_parse(xml_context, buff, nb, &error))
- fprintf(stderr, "%s: parsing error.\n", __FUNCTION__);
+ {
+ fprintf(stderr, "%s: parsing error: %s.\n",
+ __FUNCTION__, error->message);
+ g_markup_parse_context_free(xml_context);
+ xml_context = NULL;
+ }
+ g_clear_error (&error);
}
/* cleanup */
- if (!g_markup_parse_context_end_parse(xml_context, &error))
- fprintf(stderr, "%s: errors occurred reading file.\n", __FUNCTION__);
+ if (xml_context &&
+ !g_markup_parse_context_end_parse(xml_context, &error))
+ fprintf(stderr, "%s: errors occurred while reading file: %s.\n",
+ __FUNCTION__, error->message);
+ g_clear_error (&error);
- g_markup_parse_context_free(xml_context);
+ if (xml_context)
+ g_markup_parse_context_free(xml_context);
+ xml_context = NULL;
fclose (file);
if (ll != NULL)
}
static gchar *
-_goto_xml_tool_get_url_format ( VikGotoTool *self )
+vik_goto_xml_tool_get_url_format ( VikGotoTool *self )
{
VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
g_return_val_if_fail(priv != NULL, NULL);