1 | #!/usr/bin/perl -c |
---|
2 | |
---|
3 | # $Id$ |
---|
4 | |
---|
5 | use strict; |
---|
6 | |
---|
7 | sub { |
---|
8 | my ($rda, $plugintype, $datafile, $datatype) = @_; |
---|
9 | |
---|
10 | my %var; |
---|
11 | if ($rda->{plugvalue}{$plugintype}) { |
---|
12 | if (ref $rda->{plugvalue}{$plugintype} ne 'HASH') { |
---|
13 | return(0); |
---|
14 | } else { |
---|
15 | %var = %{$rda->{plugvalue}{$plugintype}}; |
---|
16 | } |
---|
17 | } else { |
---|
18 | my $archive = $rda->archive() or return($rda->{plugvalue}{$plugintype} = 0); |
---|
19 | |
---|
20 | my ($index) = grep { /\.de1$/i } $archive->ls(); |
---|
21 | |
---|
22 | $index or return($rda->{plugvalue}{$plugintype} = 0); |
---|
23 | |
---|
24 | my $filename = $archive->extract($index) or return($rda->{plugvalue}{$plugintype} = 0); |
---|
25 | |
---|
26 | my $resopen= open(my $h, $filename); |
---|
27 | |
---|
28 | unlink($filename); |
---|
29 | |
---|
30 | if(!$resopen) { |
---|
31 | return($rda->{plugvalue}{$plugintype} = 0); |
---|
32 | } |
---|
33 | |
---|
34 | %var = (); # ensure it is empty |
---|
35 | my $count_want_values = 6; |
---|
36 | while(my $line = <$h>) { |
---|
37 | chomp($line); |
---|
38 | if($line =~ /Flight date = (\d\d)-(\d\d)-\d\d(\d\d)/) { |
---|
39 | $var{year} = $3; |
---|
40 | $var{month} = $2; |
---|
41 | $var{day} = $1; |
---|
42 | } elsif ($line =~ /Launch time = (\d\d):(\d\d):\d\d/) { |
---|
43 | $var{minute} = $2; |
---|
44 | $var{hour} = $1; |
---|
45 | } elsif($line =~ /Flight number = OH(\d{3})/) { |
---|
46 | $var{vol} = $1; |
---|
47 | } |
---|
48 | if (scalar(keys %var) == $count_want_values) { # to avoid to read the whole file !! |
---|
49 | last; |
---|
50 | } |
---|
51 | } |
---|
52 | |
---|
53 | close($h); |
---|
54 | if (scalar(keys %var) != $count_want_values) { # |
---|
55 | return($rda->{plugvalue}{$plugintype} = 0); |
---|
56 | } |
---|
57 | |
---|
58 | $rda->{plugvalue}{$plugintype} = { %var }; |
---|
59 | } |
---|
60 | |
---|
61 | my $destfilename; |
---|
62 | for ($datafile) { |
---|
63 | /\.le1$/i and do { |
---|
64 | $destfilename = sprintf( |
---|
65 | 'cco%s%s%s%s%s.com', |
---|
66 | $var{year}, $var{month}, $var{day}, |
---|
67 | $var{hour}, $var{minute}, |
---|
68 | ); |
---|
69 | $var{level} = 'niveau2'; |
---|
70 | }; |
---|
71 | |
---|
72 | /\.DE1$/i and do { |
---|
73 | $destfilename = sprintf( |
---|
74 | 'cco%s%s%s%s%s.param', |
---|
75 | $var{year}, $var{month}, $var{day}, |
---|
76 | $var{hour}, $var{minute}, |
---|
77 | ); |
---|
78 | $var{level} = 'niveau2'; |
---|
79 | }; |
---|
80 | |
---|
81 | /\.log$/i and do { |
---|
82 | $destfilename = sprintf( |
---|
83 | 'cco%s%s%s%s%s.preval', |
---|
84 | $var{year}, $var{month}, $var{day}, |
---|
85 | $var{hour}, $var{minute}, |
---|
86 | ); |
---|
87 | $var{level} = 'niveau1'; |
---|
88 | }; |
---|
89 | |
---|
90 | /\.cal$/i and do { |
---|
91 | $destfilename = sprintf( |
---|
92 | 'cco%s%s%s%s%s.cal', |
---|
93 | $var{year}, $var{month}, $var{day}, |
---|
94 | $var{hour}, $var{minute}, |
---|
95 | ); |
---|
96 | $var{level} = 'niveau1'; |
---|
97 | }; |
---|
98 | |
---|
99 | /\.raw$/i and do { |
---|
100 | $destfilename = sprintf( |
---|
101 | 'cco%s%s%s.raw', |
---|
102 | $var{year}, $var{month}, $var{day}, |
---|
103 | ); |
---|
104 | $var{level} = 'niveau0'; |
---|
105 | }; |
---|
106 | |
---|
107 | /(...)\.dat$/i and do{ |
---|
108 | $destfilename = sprintf( |
---|
109 | 'cco%s%s%s_%s.dat', |
---|
110 | $var{year}, $var{month}, $var{day}, |
---|
111 | uc($1), |
---|
112 | ); |
---|
113 | $var{level} = 'niveau0'; |
---|
114 | }; |
---|
115 | |
---|
116 | /\.mes$/i and do { |
---|
117 | $destfilename = sprintf( |
---|
118 | 'cco%s%s%s.vol%s', |
---|
119 | $var{year}, $var{month}, $var{day}, |
---|
120 | $var{vol}, |
---|
121 | ); |
---|
122 | $var{level} = 'cr_vol_voemel'; |
---|
123 | }; |
---|
124 | |
---|
125 | } |
---|
126 | |
---|
127 | $destfilename or return(0); |
---|
128 | |
---|
129 | return (1, 'filename', $destfilename, %var); |
---|
130 | } |
---|