--- /dev/null
+#!/usr/bin/perl -w
+my $timestamp= "Time-stamp: \"vcard2abook.pl was last updated on Sun, 17 Dec 2000 10:34am\"";
+
+#==============================================================================*
+# vcard2abook.pl by jeff covey <jeff.covey@pobox.com> *
+# *
+# this script has two main features: *
+# *
+# 1. it converts a file containing addressbook entries in vcard format to *
+# one containing entries in abook format. *
+# 2. it almost has more comments than code. *
+# *
+# 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 2 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. *
+#==============================================================================*
+
+use strict;
+
+($#ARGV >= 1) or die
+ "usage: vcard2abook.pl <vcard input file> <abook output file>\noutput file will be overwritten!\n";
+
+my $vcards="$ARGV[0]";
+my $abook ="$ARGV[1]";
+my $key;
+
+my %conversions = (
+ "FN" => "name=",
+ "NICKNAME" => "nick=",
+ "EMAIL" => "email=",
+ "ORG" => "notes=",
+ "NOTE" => "notes=",
+ "URL" => "url=",
+
+ "TEL;HOME" => "phone=",
+ "TEL;PREF" => "phone=",
+ "TEL;VOICE" => "phone=",
+ "TEL;MSG" => "phone=",
+ "TEL;VIDEO" => "phone=",
+ "TEL;MODEM" => "phone=",
+ "TEL;ISDN" => "phone=",
+ "TEL;WORK" => "workphone=",
+ "TEL;CELL" => "mobile=",
+ "TEL;PAGER" => "mobile=",
+ "TEL;CAR" => "mobile=",
+ "TEL;FAX" => "fax=",
+ );
+
+open (VCARDS,"$vcards") or quit("couldn't open $vcards");
+open (ABOOK,">$abook") or quit("couldn't open $abook for writing");
+
+while (<VCARDS>) {
+ if (/^\s*$/) { }
+ elsif (/^BEGIN:VCARD/i) { print ABOOK "[]\n"; }
+ elsif (/^END:VCARD/i) { print ABOOK "\n"; }
+ else {
+ chomp; my @sections=split /:/, $_, 2;
+ if ($sections[0] =~ /^ADR/i) {
+ my @fields=split /;/, $sections[1];
+ if ($fields[2]) {print ABOOK "address=$fields[2]\n";}
+ if ($fields[3]) {print ABOOK "city=$fields[3]\n"; }
+ if ($fields[4]) {print ABOOK "state=$fields[4]\n"; }
+ if ($fields[5]) {print ABOOK "zip=$fields[5]\n"; }
+ if ($fields[6]) {print ABOOK "country=$fields[6]\n";}
+ }
+ else {
+ foreach $key (keys %conversions) {
+ if ($sections[0] =~ /^$key/i) {
+ print ABOOK "$conversions{$key}$sections[1]\n";
+ }
+ }
+ }
+ }
+}
+
+close (VCARDS) or quit("couldn't close $vcards");
+close (ABOOK) or quit("couldn't close $abook");
+
+sub quit {
+ print "whoops! $_[0]:\n $!\n"; die;
+}