Index: addressbook/tools/Makefile.am
===================================================================
--- addressbook/tools/Makefile.am	(revision 35015)
+++ addressbook/tools/Makefile.am	(working copy)
@@ -3,7 +3,8 @@
 	evolution-addressbook-clean
 
 privlibexec_PROGRAMS =			\
-	evolution-addressbook-export	
+	evolution-addressbook-export	\
+	evolution-vcf-import	
 
 INCLUDES =						\
 	-DG_LOG_DOMAIN=\"evolution-addressbook-tools\"	\
@@ -24,9 +25,15 @@
 	evolution-addressbook-export-list-folders.c		\
 	evolution-addressbook-export.h
 
+evolution_vcf_import_SOURCES =					\
+	evolution-vcf-import.c
+
 evolution_addressbook_export_LDADD =				\
 	$(EVOLUTION_ADDRESSBOOK_LIBS)
 
+evolution_vcf_import_LDADD =					\
+	$(EVOLUTION_ADDRESSBOOK_LIBS)
+
 EXTRA_DIST = $(privlibexec_SCRIPTS) \
 	evolution-addressbook-clean.in
 
Index: addressbook/tools/evolution-vcf-import.c
===================================================================
--- addressbook/tools/evolution-vcf-import.c	(revision 0)
+++ addressbook/tools/evolution-vcf-import.c	(revision 0)
@@ -0,0 +1,103 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ *  Suman Manjunath <msuman@novell.com>
+ *  Copyright (C) 2008 Novell, Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <config.h>
+
+#include <gnome.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <libebook/e-book.h>
+#include <libebook/e-contact.h>
+
+/* Command-Line Options */
+static gchar *opt_addressbook_folder_uri = NULL;
+static gchar **opt_remaining = NULL;
+
+static GOptionEntry entries[] = {
+	{ "folder-uri", '\0', 0,
+	  G_OPTION_ARG_STRING, &opt_addressbook_folder_uri,
+	  N_("Specify the address-book instead of the Personal address-book"),
+	  N_("FOLDER-URI") },
+	{ G_OPTION_REMAINING, '\0', 0,
+	  G_OPTION_ARG_STRING_ARRAY, &opt_remaining },
+	{ NULL }
+};
+
+int
+main (int argc, char **argv)
+{
+	/* FIXME: Should be able to parse multiple cards */
+
+	GnomeProgram *program;
+	GOptionContext *context;
+	EBook *book = NULL;
+	EContact *contact = NULL;
+	gchar *opt_vcf_data = NULL;
+	int status = 0;
+
+	/* i18n-lize */
+	bindtextdomain (GETTEXT_PACKAGE, EVOLUTION_LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	context = g_option_context_new (NULL);
+	g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+	program = gnome_program_init (
+		PACKAGE, VERSION, GNOME_BONOBO_MODULE, argc, argv,
+		GNOME_PARAM_GOPTION_CONTEXT, context,
+		GNOME_PARAM_NONE);
+
+	/* Parsing Parameter */
+	if (opt_remaining && g_strv_length (opt_remaining) > 0)
+		opt_vcf_data = opt_remaining[0];
+	else 
+		status = -1;
+
+	if (opt_addressbook_folder_uri != NULL) {
+		book = e_book_new_from_uri (opt_addressbook_folder_uri, NULL);
+	} else {
+		book = e_book_new_default_addressbook (NULL);
+	}
+
+	if (!book || !e_book_open (book, TRUE, NULL)) {
+		g_warning (N_("Could not load addressbook %s"), opt_addressbook_folder_uri);
+		status = -1;
+		goto done;
+	}
+
+	if (opt_vcf_data && *opt_vcf_data)
+		contact = e_contact_new_from_vcard (opt_vcf_data);
+
+	if (contact) {
+		if (!e_book_add_contact (book, contact, NULL))
+			g_warning (N_("Could not create a contact in addressbook %s"), opt_addressbook_folder_uri);
+		g_object_unref (contact);
+	}
+
+done: 
+	if (book)
+		g_object_unref (book);
+
+	g_option_context_free (context);
+	exit (status);
+}

