Mon, 26 Feb 2001 23:09:57 +0000
[gaim-migrate @ 1523]
oops
| 524 | 1 | #!/usr/bin/perl -w |
| 2 | # | |
| 3 | # gaim | |
| 4 | # | |
| 5 | # Copyright (C) 1998 - 2000, Mark Spencer <markster@marko.net> | |
| 6 | # | |
| 7 | # This program is free software; you can redistribute it and/or modify | |
| 8 | # it under the terms of the GNU General Public License as published by | |
| 9 | # the Free Software Foundation; either version 2 of the License, or | |
| 10 | # (at your option) any later version. | |
| 11 | # | |
| 12 | # This program is distributed in the hope that it will be useful, | |
| 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | # GNU General Public License for more details. | |
| 16 | # | |
| 17 | # You should have received a copy of the GNU General Public License | |
| 18 | # along with this program; if not, write to the Free Software | |
| 19 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 20 | # | |
| 21 | # --- | |
| 22 | # | |
| 23 | # Buddy List Conversion Script Written By: John Assalone <assalonej@kpe.com> | |
| 24 | # Modifications by: Rob Flynn <IM: Rob Flynn> <rflynn@blueridge.net> | |
| 25 | # Obfuscated by: Schuyler Erle <IM: sderle> <schuyler@tridity.org> | |
| 26 | # | |
| 27 | # Use this script to convert the new WinAIM buddy list format to gaim's format. | |
| 28 | # | |
| 29 | # Syntax: ./buddytrans buddy.list gaimlist | |
| 30 | # | |
| 31 | ||
| 32 | use strict; | |
| 33 | use 5.003; | |
| 34 | ||
| 35 | sub translate_lst | |
| 36 | { | |
| 37 | my $src = shift; | |
| 38 | my ($line, $field, $name, $out); | |
| 39 | ||
| 40 | $out = "m 1\n"; | |
| 41 | ||
| 42 | for $line (grep(/\w/o, split(/[\r\n]+/o, $src))) { | |
| 43 | ($field, $name) = ($line =~ /^\s*(\w)\w*\s+(.+)$/go); | |
| 44 | $name =~ y/"//d; | |
| 45 | $out .= "$field $name\n" if $field and $name; | |
| 46 | } | |
| 47 | ||
| 48 | $out | |
| 49 | } | |
| 50 | ||
| 51 | sub translate_blt | |
| 52 | { | |
| 53 | my $src = shift; | |
| 54 | my $out = "m 1\n"; | |
| 55 | my $grp; | |
| 56 | ||
| 57 | $src =~ s/^.*?Buddy\s+{.*?list\s+{//gos; | |
| 58 | ||
| 59 | while ( $src =~ / } | | |
| 60 | (?: "([^"]+)" | (\S+) ) \s* | |
| 61 | (?: {(.+?)} | ([^\n]+) ) \s*/gosx ) { | |
| 62 | ||
| 63 | last unless defined( $grp = $1 || $2 ); | |
| 64 | ||
| 65 | $out .= join( "\n", "g $grp", | |
| 66 | map { "b $_" } | |
| 67 | grep { defined($_) and /\S/o } | |
| 68 | split ( /"([^"]+)"|\s+/, ($3 || $4) ) ) | |
| 69 | . "\n" | |
| 70 | } | |
| 71 | ||
| 72 | $out; | |
| 73 | } | |
| 74 | ||
| 75 | sub buddy_trans | |
| 76 | { | |
| 77 | my ($src_file, $dest_file) = @_; | |
| 78 | ||
| 79 | die "Syntax: $0 buddy.lst gaimlist\n" | |
| 80 | unless ($src_file and $dest_file); | |
| 81 | ||
| 82 | ||
| 83 | open SOURCE, "<$src_file" or die "$!: $src_file\n"; | |
| 84 | my $src = do { local $/ = undef; <SOURCE> }; | |
| 85 | close SOURCE; | |
| 86 | ||
| 87 | if (-e $dest_file) { | |
| 88 | print STDERR "$dest_file already exists! Continue? "; | |
| 89 | unless (-t and <STDIN> =~ /^y/io) { | |
| 90 | print STDERR "Aborted.\n"; | |
| 91 | exit -1 | |
| 92 | } | |
| 93 | } | |
| 94 | ||
| 95 | open DEST, ">$dest_file" or die "$!: $dest_file\n"; | |
| 96 | print DEST ($src =~ /{/os) ? translate_blt($src) : translate_lst($src); | |
| 97 | close DEST; | |
| 98 | ||
| 99 | 0; | |
| 100 | } | |
| 101 | ||
| 102 | buddy_trans( @ARGV ); |