# It will write a file called /spider/local/Keps.pm, this means that
# the latest version will be read in every time you restart the
# cluster.pl. You can also call Sun::load from a cron line if
-# you like to re-read it automatically.
+# you like to re-read it automatically. If you update it manually
+# load/keps will load the latest version into the cluster
#
# This program is designed to be called from /etc/aliases or
# a .forward file so you can get yourself on the keps mailing
#
# http://www.amsat.org/amsat/ftp/keps/current/nasa.all
#
+# Please note that this will UPDATE your keps file
+#
+# Usage:
+# email | convkeps.pl (in amsat email format)
+# convkeps.pl -p keps.in (a file with just plain keps)
+#
+# if you add the -c flag then the %keps hash will be cleared down
+# before adding the new ones.
+#
# Copyright (c) 2000 Dirk Koopman G1TLH
#
# $Id$
#
require 5.004;
+package Sun;
# search local then perl directories
BEGIN {
}
use strict;
-use Data::Dumper;
+use vars qw($root %keps);
-use vars qw($root);
+use Data::Dumper;
+require Keps;
my $fn = "$root/local/Keps.pm";
my $state = 0;
my $name;
-my %keps;
my $ref;
my $line;
+my $f = \*STDIN;
+
+while (@ARGV) {
+ my $arg = shift @ARGV;
+ if ($arg eq '-p') {
+ $state = 1;
+ } elsif ($arg eq '-e') {
+ $state = 0;
+ } elsif ($arg eq '-c') {
+ %keps = ();
+ } elsif ($arg =~ /^-/) {
+ die "Usage: convkeps.pl [-c] [-e|-p] [<filename>]\n\t-p - plain file just containing keps\n\t-e - amsat email format input file (default)\n\t-c - clear Keps data before adding this lot\n";
+ } else {
+ open (IN, $arg) or die "cannot open $arg (!$)";
+ $f = \*IN;
+ }
+}
-while (<STDIN>) {
+while (<$f>) {
++$line;
chomp;
s/^\s+//;
$ref->{mm2} = genenum($mm2);
$ref->{bstar} = genenum($bstar);
$ref->{elset} = $elset - 0;
-# print "$id $number $epoch $decay $mm2 $bstar $elset\n";
-# print "mm2: $ref->{mm2} bstar: $ref->{bstar}\n";
+ #print "$id $number $epoch $decay $mm2 $bstar $elset\n";
+ #print "mm2: $ref->{mm2} bstar: $ref->{bstar}\n";
$state = 3;
} else {
$dd->Quotekeys(0);
open(OUT, ">$fn") or die "$fn $!";
print OUT "#\n# this file is automatically produced by convkeps.pl\n#\n";
+print OUT "# Last update: ", scalar gmtime, "\n#\n";
print OUT "\npackage Sun;\n\n";
print OUT $dd->Dumpxs;
-print OUT "\n";
+print OUT "1;\n";
close(OUT);
sub genenum
{
my ($sign, $frac, $esign, $exp) = unpack "aa5aa", shift;
+ $esign = '+' if $esign eq ' ';
my $n = $sign . "." . $frac . 'e' . $esign . $exp;
return $n - 0;
}