+sub fold_addresses ($) {
+ return $_[0] if length($_[0]) <= COLS;
+ # try to fold on commas after non-word chars before $lim chars,
+ # Try to get the "," preceeded by ">" or ")", but avoid folding
+ # on the comma where somebody uses "Lastname, Firstname".
+ # We also try to keep the last and penultimate addresses in
+ # the list on the same line if possible, hence the extra \z
+ # Fall back to folding on spaces at $lim + 1 chars
+ my $lim = COLS - 8; # 8 = "\t" display width
+ my $too_long = $lim + 1;
+ $_[0] =~ s/\s*\z//s; # Email::Simple doesn't strip trailing spaces
+ $_[0] = join("\n\t",
+ ($_[0] =~ /(.{0,$lim}\W(?:,|\z)|
+ .{1,$lim}(?:,|\z)|
+ .{1,$lim}|
+ .{$too_long,}?)(?:\s|\z)/xgo));
+}
+