- #!/usr/bin/perl 
- #use Date::Format; 
- use warnings; 
- use strict; 
-   
- use-  vars  qw(@DoW @MoY %MoY);
 
- @DoW = qw(- Sun Mon Tue Wed Thu Fri Sat );
 
- @MoY = qw(- Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
 
- @MoY{@MoY} = (1..12); 
-   
- my %GMT_ZONE = (GMT => 1, UTC => 1, UT => 1, Z => 1); 
-   
-   
- my $wims_ref='http://127.0.0.1/wims'; 
- my $file='' ; 
- my ($out, $modif, $text); 
- push (@ARGV,split(' ', $ENV{'wims_exec_parm'})) if ($ENV{'wims_exec_parm'}) ; 
-   
- while ($_ = shift (@ARGV)) 
- { 
-   last if (!/^--/); 
-      if (/^--wims=(.*)$/) { $wims_ref  = $1; } 
-      elsif (/^--file=(.*)$/) { $file   = $1 ; } 
-      elsif (/^--out=(.*)$/) { $out     = $1 . "/" ; } 
-      elsif (/^--type=(.*)$/) { $modif     = $1 ; } 
- } ; 
- $wims_ref =~ s,/- wims .- cgi ,, ;
 
- my $head= "<\?xml version=\"1.0\" encoding=\"ISO-8859-1\"\?> 
- <rss version=\"2.0\"> 
-     <channel> 
-         <title>WIMS</title> 
-         <link>$wims_ref</link> 
-         <description>NEWS</description> 
-         \n" 
- ; 
-   
- my $tail="</channel></rss>"; 
-   
- open(- IN , "$file.$modif") or die $file ;
 
- my @lignes = <IN>; 
- my ($cnt, $used)= (1,'') ; 
- my @ta; 
-   my $date= convdate($l[0]) ; 
-   next if !($l[1]) ; 
-   my @ta=split(" ", $l[1]) ; 
-   next if !($l[1]) || ($used =~ /$l[1]/) || ($cnt > 100) ; 
-   $cnt ++ ; 
-   $used .= " " . $l[1] ; 
-   $text .= 
- "<item> 
-    <title>$l[1]</title> 
-    <link>$wims_ref/wims.cgi?module=$ta[0]</link> 
-    <guid isPermaLink=\"true\">$wims_ref/wims.cgi?module=$ta[0]</guid> 
-    <description>$ta[0] version $ta[1]</description> 
-   <pubDate>$date</pubDate> 
- </item>\n" ; 
- } 
-   
- out("$out$modif.xml" , $head . $text . $tail) ; 
-   
- sub convdate { my ($d)= @_ ; 
-      $d =~ s/(\d{4,4})(\d{2,2})(\d{2,2})/$1-$2-$3 03:00:00/ ; 
-      time2str(str2time($d)); 
- } 
-   
- sub out { my ($bloc, $text) = @_ ; 
-   open  (- OUT , ">$bloc") || die $bloc ;
 
- } 
-   
-   
- ########################### from HTML::date.pm 
- sub time2str (;$) 
- { 
-     my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime($time); 
-     sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT", 
-             $DoW[$wday], 
-             $mday, $MoY[$mon], $year+1900, 
-             $hour, $min, $sec); 
- } 
-   
-   
- sub str2time ($;$) 
- { 
-   
-     # fast exit for strictly conforming string 
-     if ($str =~ /^[SMTWF][a-z][a-z], (\d\d) ([JFMAJSOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$/) { 
-             my $t = Time::Local::timegm($6, $5, $4, $1, $MoY{$2}-1, $3-1900); 
-         }; 
-     } 
-   
-     my @d = parse_date($str); 
-     $d[0] -= 1900;  # year 
-     $d[1]--;        # month 
-   
-                         }; 
-         } 
-     } 
-   
-     my $offset = 0; 
-         # offset already zero 
-     } 
-     elsif ($tz =~ /^([-+])?(\d\d?):?(\d\d)?$/) { 
-         $offset = 3600 * $2; 
-         $offset += 60 * $3 if $3; 
-         $offset *= -1 if $1 && $1 eq '-'; 
-     } 
-     else { 
-         $offset = Time::Zone::tz_offset($tz); 
-     } 
-   
-                   $t < 0 ? undef : $t - $offset; 
-                 }; 
- } 
-   
-   
- sub parse_date ($) 
- { 
-   
-     # More lax parsing below 
-     s/^\s+//;  # kill leading space 
-     s/^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*//i; # Useless weekday 
-   
-     my($day, $mon, $yr, $hr, $min, $sec, $tz, $ampm); 
-   
-     # Then we are able to check for most of the formats with this regexp 
-     (($day,$mon,$yr,$hr,$min,$sec,$tz) = 
-         /^ 
-          (\d\d?)               # day 
-          (\w+)                 # month 
-          (\d+)                 # year 
-          (?: 
-                (?:- \ s+|:)       # separator before clock
 
-             (\d\d?):(\d\d)     # hour:min 
-             (?::(\d\d))?       # optional seconds 
-          )?                    # optional clock 
-          ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+)? # timezone 
-          (?:\(\w+\))?          # ASCII representation of timezone in parens. 
-         /x) 
-   
-     || 
-   
-     # Try the ctime and asctime format 
-     (($mon, $day, $hr, $min, $sec, $tz, $yr) = 
-         /^ 
-          (\w{1,3})             # month 
-          (\d\d?)               # day 
-          (\d\d?):(\d\d)        # hour:min 
-          (?::(\d\d))?          # optional seconds 
-          (?:([- A -- Za -- z ]+)- \ s+)?   # optional timezone
 
-          (\d+)                 # year 
-             \ s*- $                # allow trailing whitespace
-         /x) 
-   
-     || 
-   
-     # Then the Unix 'ls -l' date format 
-     (($mon, $day, $yr, $hr, $min, $sec) = 
-         /^ 
-          (\w{3})               # month 
-          (\d\d?)               # day 
-          (?: 
-             (\d\d\d\d) |       # year 
-             (\d{1,2}):(\d{2})  # hour:min 
-             (?::(\d\d))?       # optional seconds 
-          ) 
-        /x) 
-   
-     || 
-   
-     # ISO 8601 format '1996-02-29 12:00:00 -0100' and variants 
-     (($yr, $mon, $day, $hr, $min, $sec, $tz) = 
-         /^ 
-           (\d{4})              # year 
-              [-\/]? 
-           (\d\d?)              # numerical month 
-              [-\/]? 
-           (\d\d?)              # day 
-          (?: 
-                (?:- \ s+|[-:- Tt ])  # separator before clock
 
-             (\d\d?):?(\d\d)    # hour:min 
-             (?::?(\d\d(?:\.\d*)?))?  # optional seconds (and fractional) 
-          )?                    # optional clock 
-          ([-+]?\d\d?:?(:?\d\d)? 
-           |Z|z)?               # timezone  (Z is "zero meridian", i.e. GMT) 
-         /x) 
-   
-     || 
-   
-     # Windows 'dir' 11-12-96  03:52PM 
-     (($mon, $day, $yr, $hr, $min, $ampm) = 
-         /^ 
-           (\d{2})                # numerical month 
-              - 
-           (\d{2})                # day 
-              - 
-           (\d{2})                # year 
-           (\d\d?):(\d\d)([APap][Mm])  # hour:min AM or PM 
-         /x) 
-   
-     || 
-   
-     # Translate month name to number 
-     $mon = $MoY{$mon} || 
-            $MoY{"\u\L$mon"} || 
-            ($mon >= 1 && $mon <= 12 && int($mon)) || 
-   
-     # If the year is missing, we assume first date before the current, 
-     # because of the formats we support such dates are mostly present 
-     # on "ls -l" listings. 
-         my $cur_mon; 
-         $yr += 1900; 
-         $cur_mon++; 
-         $yr-- if $mon > $cur_mon; 
-     } 
-         # Find "obvious" year 
-         my $m = $cur_yr % 100; 
-         my $tmp = $yr; 
-         $yr += $cur_yr - $m; 
-         $m -= $tmp; 
-         $yr += ($m > 0) ? 100 : -100 
-     } 
-   
-     # Make sure clock elements are defined 
-   
-     # Compensate for AM/PM 
-     if ($ampm) { 
-         $hr = 0 if $hr == 12 && $ampm eq 'AM'; 
-         $hr += 12 if $ampm eq 'PM' && $hr != 12; 
-     } 
-   
-     return($yr, $mon, $day, $hr, $min, $sec, $tz) 
-   
-         $tz = "Z" if $tz =~ /^(GMT|UTC?|[-+]?0+)$/; 
-     } else { 
-         $tz = ""; 
-     } 
-                    $yr, $mon, $day, $hr, $min, $sec, $tz); 
- } 
-   
-