summaryrefslogtreecommitdiffstats
path: root/kmail/kmail-upd-identities.pl
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/kmail-upd-identities.pl')
-rwxr-xr-xkmail/kmail-upd-identities.pl54
1 files changed, 54 insertions, 0 deletions
diff --git a/kmail/kmail-upd-identities.pl b/kmail/kmail-upd-identities.pl
new file mode 100755
index 000000000..3dd9f4e98
--- /dev/null
+++ b/kmail/kmail-upd-identities.pl
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+my (%data);
+
+$currentGroup = "";
+
+while (<>) {
+ next if /^$/;
+ # filter out groups:
+ if ( /^\[(.+)\]$/ ) { $currentGroup = $1; next; };
+ # store all keys regarding Identities in the hash:
+ if ( $currentGroup =~ /^Identity/ ) {
+ ($key,$value) = split /=/;
+ chomp $value;
+ $data{$currentGroup}{$key} = $value;
+ }
+}
+
+# We need to prevent this script from being run twice, since it would
+# kill all identities then.
+# Non-presence of the [Identity]IdentityList key is the best indiator:
+unless ( defined( $data{'Identity'}{'IdentityList'} ) ) { exit; }
+
+# first, delete all old groups:
+foreach $group ( keys %data ) {
+ print "# DELETEGROUP [$group]\n";
+}
+
+# now, extract the list of valid identities (and their sequence):
+$rawIdentityList = $data{'Identity'}{'IdentityList'};
+# don't include the IdentityList anymore:
+delete $data{'Identity'}{'IdentityList'};
+# remove backslash-quoting:
+$rawIdentityList =~ s/\\(.)/$1/g;
+# split into a list at unquoted commas:
+@identities = split /(?<!\\),/, $rawIdentityList;
+# unquote individual items yet again:
+for ( @identities ) { s/\\(.)/$1/g; }
+# build the list of groups (this time incl. the default identity):
+@groups = ( 'Identity', map { $_ = "Identity-$_"; } @identities );
+# write out the groups, now named "Identity #n",
+# with the same data and the same keys that the old groups had:
+$n = 0;
+foreach $group (@groups) {
+ %groupData = %{$data{$group}};
+ print "[Identity #$n]\n";
+ foreach $key ( keys %groupData ) {
+ print "$key="
+ . $groupData{$key} . "\n";
+ }
+ $n++;
+}
+# remember which one is default:
+print "[General]\nDefault Identity=" . $data{'Identity'}{'Identity'} . "\n";