4 # Convert a SUSE changelog file to rpm format
12 my @wday = qw{Sun Mon Tue Wed Thu Fri Sat};
13 my @mon = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec};
15 if (@ARGV == 2 && $ARGV[0] eq '--spec') {
16 die("bad --spec arg\n") unless $ARGV[1] =~ /^(.*)\/([^\/]+)\.spec$/;
17 my ($dir, $spec) = ($1, $2);
18 opendir(D, $dir) || die("$dir: $!\n");
19 my @changes = grep {/\.changes$/} readdir(D);
21 @changes = sort {length($a) <=> length($b) || $a cmp $b} @changes;
22 exit(1) unless @changes;
25 my @c = grep {/\Q$spec\E/} @changes;
30 last unless $spec =~ s/[-.][^-.]*$//;
33 @ARGV = ("$dir/$changes[0]");
40 next if (/^--------------/);
41 next if (/^========================/);
42 if (/^(?:\* )?([A-Za-z]+\s+[A-Za-z]+\s+[0-9].*[0-9][0-9][0-9][0-9])(.*\@.*$)/) {
48 $dt =~ /([0-9][0-9][0-9][0-9])/;
50 if (!defined($zone) && $dt =~ /\s([a-z]{3,4})(dst)?\s[0-9]{4}/) {
52 $zone = tz_offset($1);
53 $zone += 3600 if defined($zone) && $dst;
55 my $tdt = str2time($dt);
59 if ($dt =~ /([a-z]{3})\s+([a-z]{3})/) {
60 $tdt = str2time("$1 $2 $day $year");
64 if ($dt =~ /([a-z]{3})/) {
65 $tdt = str2time("$1 $day $year");
69 $tdt = str2time("$year-1-1");
71 $tdt += 12 * 3600 unless $dt =~ /\d:\d/; # 12:00 if not specified
72 my @gm = gmtime($tdt + ($zone || 0));
73 printf("* %s %s %2d %4d %s\n", $wday[$gm[6]], $mon[$gm[4]], $gm[3], $gm[5] + 1900, $who);
81 s/^(\s*)(\#\d*)/$1\[$2\]/; # lines starting with hash are a comment
82 s/^\s*-/-/ if $ok == 1; # obsolete?
86 s/^\s*/ / unless s/^ \s*/ /;