Mercurial > pidgin
changeset 524:9ec08f6bb944
[gaim-migrate @ 534]
Added script to convert new winaim blt format to gaim/toc buddy list
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 25 Jul 2000 08:27:51 +0000 |
parents | 023c3851db0a |
children | 5dbca28e7138 |
files | Makefile.am buddytrans2 |
diffstat | 2 files changed, 103 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.am Tue Jul 25 05:09:14 2000 +0000 +++ b/Makefile.am Tue Jul 25 08:27:51 2000 +0000 @@ -1,6 +1,6 @@ EXTRA_DIST = gaim.spec.in gaim_applet.gnorba gaim.desktop gaim_applet.desktop gaim_applet.soundlist \ - buddytrans README.plugins + buddytrans buddytrans2 README.plugins if GNOMEAPPLET
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buddytrans2 Tue Jul 25 08:27:51 2000 +0000 @@ -0,0 +1,102 @@ +#!/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 );