view buddytrans2 @ 1250:b5783215b245

[gaim-migrate @ 1260] decklin's clean up of the account editor, much needed. indent -kr -i8 -l105 -ncs -cp7 -npcs -T GtkWidget -T gpointer -T AppletCallbackFunc -T GtkFunction -T gaim_plugin_remove -T name -T FILE -T gchar -T user_opts -T GdkEvent -T GtkObject ... did about.c, aim.c, away.c, browser.c, buddy_chat.c, gaimrc.c, html.c, idle.c, multi.c. Need to do buddy.c, conversation.c, dialogs.c, oscar.c, perl.c, plugins.c, prefs.c, proxy.c, prpl.c, rvous.c, server.c, sound.c, toc.c, util.c. not doing gtkhtml.c because it's a piece of crap anyway, or *ticker.c because they're syd's. got rid of debug_buff, just debug_printf now. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 13 Dec 2000 20:18:35 +0000
parents 9ec08f6bb944
children
line wrap: on
line source

#!/usr/bin/perl -w
#
#  gaim
# 
#  Copyright (C) 1998 - 2000, Mark Spencer <markster@marko.net>
# 
#  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# 
#  ---
#
#  Buddy List Conversion Script Written By: John Assalone <assalonej@kpe.com>
#        Modifications by: Rob Flynn <IM: Rob Flynn> <rflynn@blueridge.net>
#	 Obfuscated by: Schuyler Erle <IM: sderle> <schuyler@tridity.org>
#
#  Use this script to convert the new WinAIM buddy list format to gaim's format.
#
#  Syntax: ./buddytrans buddy.list gaimlist
#

use strict;
use 5.003;

sub translate_lst
{
	my $src = shift;
	my ($line, $field, $name, $out);

	$out = "m 1\n";

	for $line (grep(/\w/o, split(/[\r\n]+/o, $src))) { 
		($field, $name) = ($line =~ /^\s*(\w)\w*\s+(.+)$/go);
		$name =~ y/"//d;
		$out .= "$field $name\n" if $field and $name;
	}

	$out
}

sub translate_blt
{
	my $src		= shift;
	my $out		= "m 1\n";
	my $grp;

	$src =~ s/^.*?Buddy\s+{.*?list\s+{//gos;

	while ( $src =~ / } | 
		(?: "([^"]+)" | (\S+) ) \s* 
		(?: {(.+?)} | ([^\n]+) ) \s*/gosx ) { 

		last unless defined( $grp = $1 || $2 );
			
		$out .= join( "\n", "g $grp", 
			map 	{ "b $_" } 
			grep 	{ defined($_) and /\S/o } 
			split	( /"([^"]+)"|\s+/, ($3 || $4) ) ) 
			. "\n" 
	}

	$out;
}

sub buddy_trans
{
	my ($src_file, $dest_file) = @_;

	die "Syntax: $0 buddy.lst gaimlist\n"
		unless ($src_file and $dest_file);
	
	
	open SOURCE, "<$src_file" or die "$!: $src_file\n";
	my $src = do { local $/ = undef; <SOURCE> };
	close SOURCE;

	if (-e $dest_file) {
    		print STDERR "$dest_file already exists! Continue? ";
    		unless (-t and <STDIN> =~ /^y/io) {
			print STDERR "Aborted.\n";
			exit -1
		}
	} 

	open DEST, ">$dest_file" or die "$!: $dest_file\n";
	print DEST ($src =~ /{/os) ? translate_blt($src) : translate_lst($src);
	close DEST;

	0;
}

buddy_trans( @ARGV );