… | |
… | |
4 | |
4 | |
5 | load_archetypes; |
5 | load_archetypes; |
6 | |
6 | |
7 | for my $path (@ARGV) { |
7 | for my $path (@ARGV) { |
8 | eval { |
8 | eval { |
|
|
9 | { |
9 | open my $fh, "<:raw:perlio:utf8", $path |
10 | open my $fh, "<:raw:perlio:utf8", $path |
10 | or die "$path: $!\n"; |
11 | or die "$path: $!\n"; |
11 | |
12 | |
12 | <$fh> =~ /^Object/i |
13 | sysread $fh, my $buf, 8192; |
|
|
14 | warn $buf; |
|
|
15 | $buf =~ /^Object \S+\n.*^end$/ism |
13 | or die "$path: not a crossfire arch file\n"; |
16 | or die "$path: not a crossfire arch file\n"; |
|
|
17 | } |
14 | |
18 | |
15 | my $arch = read_arch ($path); |
19 | my $arch = read_arch ($path); |
|
|
20 | $arch = [ |
|
|
21 | map $arch->{$_}, |
|
|
22 | sort keys %$arch |
|
|
23 | ]; |
16 | |
24 | |
|
|
25 | die Crossfire::archlist_to_string ($arch);#d# |
|
|
26 | |
17 | open my $fh2, ">:raw:utf8", "$path~" or Carp::croak "$path~: $!"; |
27 | open my $fh, ">:raw:utf8", "$path~" or Carp::croak "$path~: $!"; |
18 | print $fh2 Crossfire::archlist_to_string ([values %$arch]) |
28 | print $fh Crossfire::archlist_to_string ($arch) |
19 | or Carp::croak "$path~: $!"; |
29 | or Carp::croak "$path~: $!"; |
20 | close $fh2 or Carp::croak "$path~: $!"; |
30 | close $fh or Carp::croak "$path~: $!"; |
21 | rename "$path~", $path; |
31 | rename "$path~", $path; |
22 | |
32 | |
23 | 1 |
33 | 1 |
24 | } or warn $@; |
34 | } or warn $@; |
25 | } |
35 | } |