From:
ftp://ftp.uk.freebsd.org/pub/OpenBSD/distfiles/wmSpaceWeather-1.04.tar.gz
---
 wmspaceweather/BUGS                                |   1 +
 wmspaceweather/CHANGES                             |  18 +
 wmspaceweather/COPYING                             | 339 ++++++++++
 wmspaceweather/HINTS                               |  36 ++
 wmspaceweather/INSTALL                             |  22 +
 wmspaceweather/README                              |  30 +
 wmspaceweather/wmSpaceWeather/GetKp                | 212 +++++++
 wmspaceweather/wmSpaceWeather/Makefile             |  34 ++
 wmspaceweather/wmSpaceWeather/wmSpaceWeather       | Bin 0 -> 28269 bytes
 wmspaceweather/wmSpaceWeather/wmSpaceWeather.1     |  30 +
 wmspaceweather/wmSpaceWeather/wmSpaceWeather.c     | 680 +++++++++++++++++++++
 wmspaceweather/wmSpaceWeather/wmSpaceWeather.o     | Bin 0 -> 19808 bytes
 .../wmSpaceWeather/wmSpaceWeather_mask.xbm         |  38 ++
 .../wmSpaceWeather/wmSpaceWeather_master.gif       | Bin 0 -> 1375 bytes
 .../wmSpaceWeather/wmSpaceWeather_master.xpm       | 119 ++++
 wmspaceweather/wmgeneral/wmgeneral.c               | 366 +++++++++++
 wmspaceweather/wmgeneral/wmgeneral.h               |  50 ++
 wmspaceweather/wmgeneral/wmgeneral.o               | Bin 0 -> 7324 bytes
 18 files changed, 1975 insertions(+)
 create mode 100644 wmspaceweather/BUGS
 create mode 100644 wmspaceweather/CHANGES
 create mode 100644 wmspaceweather/COPYING
 create mode 100644 wmspaceweather/HINTS
 create mode 100644 wmspaceweather/INSTALL
 create mode 100644 wmspaceweather/README
 create mode 100755 wmspaceweather/wmSpaceWeather/GetKp
 create mode 100644 wmspaceweather/wmSpaceWeather/Makefile
 create mode 100755 wmspaceweather/wmSpaceWeather/wmSpaceWeather
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather.1
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather.c
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather.o
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather_mask.xbm
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.gif
 create mode 100644 wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.xpm
 create mode 100644 wmspaceweather/wmgeneral/wmgeneral.c
 create mode 100644 wmspaceweather/wmgeneral/wmgeneral.h
 create mode 100644 wmspaceweather/wmgeneral/wmgeneral.o

diff --git a/wmspaceweather/BUGS b/wmspaceweather/BUGS
new file mode 100644
index 0000000..32f5c37
--- /dev/null
+++ b/wmspaceweather/BUGS
@@ -0,0 +1 @@
+Please send bug reports to mghender...@lanl.gov
diff --git a/wmspaceweather/CHANGES b/wmspaceweather/CHANGES
new file mode 100644
index 0000000..a2d2f71
--- /dev/null
+++ b/wmspaceweather/CHANGES
@@ -0,0 +1,18 @@
+wmSpaceWeather changes.
+
+Version         Description
+-------------------------------------------------------------------------
+1.04           - released Feb 18, 1999
+                 Added double click capability. Double clicking on mouse 
button 1 sends
+                 URL (defined via ne command line option -url) to netscape.
+  
+1.03           - released Feb 11, 1999
+                 Changed display a bit. When no data is
+                 available, it now shows nothing (before it would
+                 show false junk...). Modified Perl Script GetKp.
+  
+  
+1.02           - released Feb 8, 1999
+                 bug fixes...
+  
+1.0b           - released Dec 19, 1998
diff --git a/wmspaceweather/COPYING b/wmspaceweather/COPYING
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/wmspaceweather/COPYING
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+       Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/wmspaceweather/HINTS b/wmspaceweather/HINTS
new file mode 100644
index 0000000..4aef871
--- /dev/null
+++ b/wmspaceweather/HINTS
@@ -0,0 +1,36 @@
+Hints for wmSpaceWeather
+
+Generic.
+--------
+wmSpaceWeather version: 1.0b
+
+usage: wmSpaceWeather [-h] [-display <display>]
+
+        -d <display>    Use alternate display.
+        -h              Display help screen.
+
+
+
+WindowMaker.
+------------
+In WindowMaker simply drag and drop the wmSpaceWeather App on
+the WindowMaker Dock or Clip.
+
+
+Afterstep.
+---------
+Afterstep users put the following in their .steprc
+"Wharf wmSpaceWeather - MaxSwallow "wmSpaceWeather" wmSpaceWeather &".
+
+Note: AfterStep's Wharf has a problem with pixmaps that are
+larger than 60x60 pixels. Please tell the AfterStep authors
+to fix this, this is not our fault, but a Wharf problem!
+ 
+
+Other window managers.
+----------------------
+wmSpaceWeather shows as a 64x64 shaped icon on your desktop under other
+window managers.
+
+
+
diff --git a/wmspaceweather/INSTALL b/wmspaceweather/INSTALL
new file mode 100644
index 0000000..954d519
--- /dev/null
+++ b/wmspaceweather/INSTALL
@@ -0,0 +1,22 @@
+Installation instructions for wmSpaceWeather.
+
+Requirements
+--------------------------------------------------------------
+wmSpaceWeather requires the Xpm library (which should be available on
+most machines with XFree86 installed).
+
+Installation
+--------------------------------------------------------------
+1) gunzip wmSpaceWeather-1.0.tar.gz
+1) tar -xvf wmSpaceWeather-1.0.tar
+2) cd wmSpaceWeather-1.0/wmSpaceWeather/
+3) make 
+4) make install (must be root) 
+5) wmSpaceWeather & (or 'wmSpaceWeather -h' for help, or 'man wmSpaceWeather' 
for the man page)
+6) You need to set the location of perl correctly in GetKp if your perl
+   is located in a place other than /usr/bin/
+
+
+
+
+
diff --git a/wmspaceweather/README b/wmspaceweather/README
new file mode 100644
index 0000000..29c0327
--- /dev/null
+++ b/wmspaceweather/README
@@ -0,0 +1,30 @@
+wmSpaceWeather-1.0b release
+----------------------
+Author....: Michael G. Henderson <mghender...@lanl.gov>
+               
+  
+Description
+-----------
+wmSpaceWeather is a space weather monitor
+
+
+Files
+-----
+README         This file.
+INSTALL                Installation instructions.
+HINTS          Hints about what you can do with wmSpaceWeather.
+BUGS           Bug reports
+CHANGES        Change history.
+COPYING                GNU General Public License Version 2.
+       
+
+Bugs
+-----
+Send bug reports to mghender...@lanl.gov
+
+
+Copyright
+----------
+wmSpaceWeather is copyright (c) 1998 by Michael G. Henderson and
+licensed through the GNU General Public License. Read the 
+COPYING file for the complete GNU license.
diff --git a/wmspaceweather/wmSpaceWeather/GetKp 
b/wmspaceweather/wmSpaceWeather/GetKp
new file mode 100755
index 0000000..27f9274
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/GetKp
@@ -0,0 +1,212 @@
+#!/usr/bin/perl
+
+#
+# A really crappy code to grab last 8 Kp values....
+#
+
+
+    require "ctime.pl";
+
+
+    ($Year, $Month, $Day) = &year_month_day();
+    
+    if (-e "/tmp/DGD.txt"){
+       unlink("/tmp/DGD.txt");
+    }
+
+    if (-e "/tmp/curind.txt"){
+       unlink("/tmp/curind.txt");
+    }
+
+
+    $grabcmd = "cd /tmp; wget --passive-ftp --tries 2 -q 
ftp://www.sec.noaa.gov/pub/indices/DGD.txt";;
+    system "$grabcmd";
+
+
+    #
+    # ensure that there are at least 8 values available...
+    #
+    %Kp = ();
+    $Kp{190001011} = 999;
+    $Kp{190001012} = 999;
+    $Kp{190001013} = 999;
+    $Kp{190001014} = 999;
+    $Kp{190001015} = 999;
+    $Kp{190001016} = 999;
+    $Kp{190001017} = 999;
+    $Kp{190001018} = 999;
+
+
+    open(TmpFile, "/tmp/DGD.txt");
+    while (<TmpFile>){
+        chop;
+       if ($_ =~ /^\d{4} \d{2} \d{2}\s*\d*/ ){
+
+           $Date = $_;
+       
+           s/^(\d{4}) (\d{2}) (\d{2}).*\s{2,}(.*)/\4/;
+           s/([ -]{0,1}\d{1,2})([ -]{0,1}\d{1,2})([ -]{0,1}\d{1,2})([ 
-]{0,1}\d{1,2})([ -]{0,1}\d{1,2})([ -]{0,1}\d{1,2})([ -]{0,1}\d{1,2})([ 
-]{0,1}\d{1,2})/\1 \2 \3 \4 \5 \6 \7 \8/;
+
+           $Date =~ s/^(\d{4}) (\d{2}) (\d{2}).*\s{2,}(.*)/\1\2\3/;
+           ($a, $b, $c, $d, $e, $f, $g, $h) = split(/\s{1,}/, $_);
+
+           $TimeTag = $Date*10 + 1; $Kp{$TimeTag} = $a;
+           $TimeTag = $Date*10 + 2; $Kp{$TimeTag} = $b;
+           $TimeTag = $Date*10 + 3; $Kp{$TimeTag} = $c;
+           $TimeTag = $Date*10 + 4; $Kp{$TimeTag} = $d;
+           $TimeTag = $Date*10 + 5; $Kp{$TimeTag} = $e;
+           $TimeTag = $Date*10 + 6; $Kp{$TimeTag} = $f;
+           $TimeTag = $Date*10 + 7; $Kp{$TimeTag} = $g;
+           $TimeTag = $Date*10 + 8; $Kp{$TimeTag} = $h;
+
+       }
+    }
+    close(TmpFile);
+
+
+
+    #
+    # Add in very latest stuff
+    #
+    $grabcmd = "cd /tmp; wget --passive-ftp --tries 2 -q 
ftp://www.sec.noaa.gov/pub/latest/curind.txt";;
+    system "$grabcmd";
+    %lmonstr = ( "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6, 
"Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12);
+
+@lval = ($lyear, $lmonstr{$lmon}, $ldom);
+    open(TmpFile, "/tmp/curind.txt");
+    while (<TmpFile>){
+        chop;
+       if ($_ =~ /^:Geomagnetic_Values: (\d{4}) (.*) (\d{1,2})/){
+               $y  = $_;
+               $ms = $_;
+               $d  = $_;
+
+               $y  =~ s/^:Geomagnetic_Values: (\d{4}) (.*) (\d{1,2})/\1/;
+               $ms =~ s/^:Geomagnetic_Values: (\d{4}) (.*) (\d{1,2})/\2/;
+               $d  =~ s/^:Geomagnetic_Values: (\d{4}) (.*) (\d{1,2})/\3/;
+               $tDate = $y*10000 + $lmonstr{$ms}*100 + $d;
+       }
+       if ($_ =~ /.*\d/) {
+               $Line = $_;
+       } 
+
+       if ($_ =~ 
/^\s{1,}[0-9e\.\+\-]{2,}\s{1,}[0-9e\.\+\-]{2,}\s{1,}[0-9e\.\+\-]{2,}\s{1,}[0-9e\.\+\-]{2,}\s{1,}[0-9e\.\+\-]{2,}\s{1,}[BCMX]{1,}[0-9\.]{1,}\s{1,}[0-9-]{1,}/){
+
+               $FluxLine = $_;
+
+       }
+
+
+
+    }
+
+    $Line =~ s/.*\s{3,}(.*)/\1/;
+    ($a, $b, $c, $d, $e, $f, $g, $h) = split(/\s{1,}/, $Line);
+    if ($tDate > 0) {
+        $TimeTag = $tDate*10 + 1; $Kp{$TimeTag} = $a;
+        $TimeTag = $tDate*10 + 2; $Kp{$TimeTag} = $b;
+        $TimeTag = $tDate*10 + 3; $Kp{$TimeTag} = $c;
+        $TimeTag = $tDate*10 + 4; $Kp{$TimeTag} = $d;
+        $TimeTag = $tDate*10 + 5; $Kp{$TimeTag} = $e;
+        $TimeTag = $tDate*10 + 6; $Kp{$TimeTag} = $f;
+        $TimeTag = $tDate*10 + 7; $Kp{$TimeTag} = $g;
+        $TimeTag = $tDate*10 + 8; $Kp{$TimeTag} = $h;
+    } else {
+        $Kp{190001011} = 999;
+        $Kp{190001012} = 999;
+        $Kp{190001013} = 999;
+        $Kp{190001014} = 999;
+        $Kp{190001015} = 999;
+        $Kp{190001016} = 999;
+        $Kp{190001017} = 999;
+        $Kp{190001018} = 999;
+    }
+
+
+
+    $n = 0;
+    %Result = ();
+    foreach $key  (reverse sort keys %Kp ) {
+       if (($Kp{$key} >= 0)&&($n < 8)){
+           $Result{$key} = $Kp{$key};
+           ++$n;
+       }
+    }
+
+    open(TmpFile, ">/tmp/LatestKp.txt");
+    foreach $key  (sort keys %Result ) {
+       if ($Result{$key} > 10) { $Result{$key} = -1; }
+       printf TmpFile "$key $Result{$key}\n";
+    }
+
+
+
+
+    $FluxLine =~ s/^\s*//;
+    if ($FluxLine =~ /\d/){
+        ($E1, $E2, $P1, $P2, $P3, $Xray, $junk) = split(/\s{1,}/, $FluxLine);
+       
+    } else {
+       $E1 = -999;
+       $E2 = -999;
+       $P1 = -999;
+       $P2 = -999;
+       $P3 = -999;
+       $Xray = "Z0.0";
+    }
+
+
+    printf TmpFile "$E1\n";
+    printf TmpFile "$E2\n";
+    printf TmpFile "$P1\n";
+    printf TmpFile "$P2\n";
+    printf TmpFile "$P3\n";
+    printf TmpFile "$Xray\n";
+    close(TmpFile);
+
+
+
+
+
+
+
+
+#
+#    sort(List);
+#
+#    $Gif = "$List[$#List]";
+#    $Latest = "http://swdcdb.kugi.kyoto-u.ac.jp/dstdir/dst1/q/$Gif";;
+#
+#
+#    $grabcmd = "/u/mgh/wwwgrab/wwwgrab $Latest /n/tmp/polar/$Gif";
+#    system "$grabcmd";
+#
+#
+#    system "convert -crop 0x0 /n/tmp/polar/${Gif} /n/tmp/polar/Dst.rle";
+#    system "fant -s .5 .5 -o /n/tmp/polar/Dst2.rle /n/tmp/polar/Dst.rle";
+#    system "convert -frame 4x4 -gamma 3 -crop 0x0 -colors 256 
/n/tmp/polar/Dst2.rle /n/leadbelly/belly3/PolarNRT/CEPPAD/IPS/LatestDst.gif";
+#
+#
+#
+#   
+#
+#    open(TmpFile, ">/n/leadbelly/belly3/PolarNRT/CEPPAD/IPS/LatestDst.txt");
+#    printf TmpFile "${Gif}\n";
+#    close(TmpFile);
+#
+#    system "touch /n/leadbelly/belly3/PolarNRT/CEPPAD/IPS/LatestDst.txt";
+
+
+sub year_month_day{
+
+    local($ldate_string, $ldow, $lmon, $ldom, $ltim, $lyear, %lmonstr, $tzone, 
@lval);
+
+    $ldate_string = &ctime(time);
+    ($ldow, $lmon, $ldom, $ltim, $lyear) = split(" ", $ldate_string);
+
+    %lmonstr = ( "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6, 
"Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12);
+
+    @lval = ($lyear, $lmonstr{$lmon}, $ldom);
+
+}
+
diff --git a/wmspaceweather/wmSpaceWeather/Makefile 
b/wmspaceweather/wmSpaceWeather/Makefile
new file mode 100644
index 0000000..2e543b6
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/Makefile
@@ -0,0 +1,34 @@
+CC     = gcc
+CFLAGS = -O2 -Wall
+INCDIR = -I/usr/X11R6/include/X11
+DESTDIR= /usr/X11R6
+LIBDIR = -L/usr/X11R6/lib
+# for linux
+LIBS   = -lXpm -lX11 -lXext
+# for Solaris
+# LIBS   = -lXpm -lX11 -lXext -lsocket
+OBJS   = wmSpaceWeather.o \
+         ../wmgeneral/wmgeneral.o
+
+
+.c.o:
+       $(CC) $(COPTS) -D$(shell echo `uname -s`) -c $< -o $*.o $(INCDIR)
+
+
+all:   wmSpaceWeather.o wmSpaceWeather
+
+wmSpaceWeather.o: wmSpaceWeather_master.xpm wmSpaceWeather_mask.xbm
+wmSpaceWeather:        $(OBJS) 
+       $(CC) $(COPTS) $(SYSTEM) -o wmSpaceWeather $^ $(INCDIR) $(LIBDIR) 
$(LIBS)
+
+clean:
+       for i in $(OBJS) ; do \
+               rm -f $$i; \
+       done
+       rm -f wmSpaceWeather
+
+install:: wmSpaceWeather
+       install -s -m 0755 wmSpaceWeather $(DESTDIR)/bin
+       install    -m 0755 GetKp $(DESTDIR)/bin
+       install    -m 0644 wmSpaceWeather.1 $(DESTDIR)/man/man1 
+
diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather
new file mode 100755
index 
0000000000000000000000000000000000000000..79c022acb8148eb6906e4ffab38d4ea8bfe98a47
GIT binary patch
literal 28269
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
MlsdKNv;%<tFJ~6Pt^fc4

literal 0
HcmV?d00001

diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather.1 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather.1
new file mode 100644
index 0000000..3497284
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/wmSpaceWeather.1
@@ -0,0 +1,30 @@
+.TH WMSPACEWEATHER 1.1 "19 December 1998" 
+.SH NAME
+WMSPACEWEATHER \- Dockable Space Weather Monitor
+.SH SYNOPSIS
+.B wmSpaceWeather
+[-h] [-display <Display>] 
+.SH DESCRIPTION
+.PP
+wmSpaceWeather is a space weather monitor. The monitor shows: 2 relativistic 
electron 
+and 3 relativistic proton flux levels at geosyncronous orbit (currently from 
the NOAA
+GOES spacecraft), current Solar Flare X-ray flux, and the last 8 3-hour Kp 
index values.
+.PP
+Large fluxes of relativistic (aka `Killer') electrons can cause harmful 
`deep-dielectric' 
+charging/discharging events inside satellites. High proton fluxes (`Solar 
Energetic Proton' or
+SEP events) can cause single event upsets in satellite electronics. The Kp 
index is a measure
+of how disturbed the Earth's magnetic field has been over a 3-hour interval. 
Kp can range from
+0-9, where 0 is quiet and 9 is very disturbed. The Kp values shown are the 8 
previous values
+(i.e. the last 24 hours). If the display is up-to-date, the LED next to the Kp
+bars will flash blue. If the display is not up-to-date, the LED will flash 
orange.
+.SH OPTIONS
+.TP
+.B \-h
+Display list of command-line options.
+.TP
+.B \-display [display]
+Use an alternate X Display.
+.SH BUGS
+Let me know if/when you find any.
+.SH AUTHOR
+Michael G. Henderson <mghender...@lanl.gov>
diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather.c 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather.c
new file mode 100644
index 0000000..19072d9
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/wmSpaceWeather.c
@@ -0,0 +1,680 @@
+/*
+ *
+ *     wmSpaceWeather-1.04 (C) 1998 Mike Henderson (mghender...@lanl.gov)
+ * 
+ *             - Its a Space Weather Monitor
+ * 
+ * 
+ * 
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2, or (at your option)
+ *     any later version.
+ *
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program (see the file COPYING); if not, write to the
+ *     Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+ *      Boston, MA  02111-1307, USA
+ *
+ *      ToDo:
+ *
+ *     - The whole NOAA space weather www site is pretty screwed up! I 
currently have
+ *       to grab data from 2 separate files to get all that I need. But it 
seems that
+ *        sometimes one of the files shows less than it should. This seems to 
be related to
+ *        the way they update the 2 separate files... I will have to find some 
way of
+ *        making that more robust.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *      Changes:
+ *
+ *     Version 1.04 - released Feb 18, 1999
+ *                     Added double click capability. Double clicking on mouse 
button 1 sends 
+ *                     URL (defined via ne command line option -url) to 
netscape.
+ *
+ *     Version 1.03 - released Feb 11, 1999
+ *                    Changed display a bit. When no data is
+ *                    available, it now shows nothing (before it would
+ *                    show false junk...). Modified Perl Script GetKp.
+ *
+ *
+ *     Version 1.02 - released Feb 8, 1999
+ *                    bug fixes...
+ *
+ *     Version 1.0b - released Dec 19, 1998
+ *
+ *
+ */
+
+
+
+
+
+/*  
+ *   Includes  
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <X11/X.h>
+#include <X11/xpm.h>
+#include "../wmgeneral/wmgeneral.h"
+#include "wmSpaceWeather_master.xpm"
+#include "wmSpaceWeather_mask.xbm"
+
+
+
+/* 
+ *  Delay between refreshes (in microseconds) 
+ */
+#define DELAY 10000L
+#define WMSPACEWEATHER_VERSION "1.04"
+
+int             GotFirstClick1, GotDoubleClick1;
+int             GotFirstClick2, GotDoubleClick2;
+int             GotFirstClick3, GotDoubleClick3;
+int             DblClkDelay;
+char            URL[1024];
+int            ForceUpdate2;
+
+
+void ParseCMDLine(int argc, char *argv[]);
+void pressEvent(XButtonEvent *xev);
+
+
+
+
+
+
+
+
+
+
+/*  
+ *   main  
+ */
+int main(int argc, char *argv[]) {
+
+
+struct tm              *Time;
+XEvent         event;
+int                    i, n, s, k, m, dt1, dt2;
+int            Year, Month, Day, DayOfMonth, OldDayOfMonth;
+int                    Hours, Mins, Secs, OldSecs, xoff, D[10], xsize;
+long           CurrentLocalTime;
+int                    height, UpToDate, LEDOn;
+double         UT, TU, TU2, TU3, T0, gmst, hour24();
+
+
+double         jd(), CurrentJD, LatestAvailJD, tim, DeltaT;
+long int               TimeTag[8];
+int            Kp[8] = { -1, -1, -1, -1, -1, -1, -1, -1 };
+double         E1, E2, P1, P2, P3;
+char           Xray[10], digit[2];
+FILE           *fp;
+
+
+
+
+
+
+
+
+
+
+         
+    /*
+     *  Parse any command line arguments.
+     */
+    ParseCMDLine(argc, argv);
+          
+
+          
+    openXwindow(argc, argv, wmSpaceWeather_master, wmSpaceWeather_mask_bits, 
wmSpaceWeather_mask_width, wmSpaceWeather_mask_height);
+
+
+
+          
+    /*
+     *  Loop until we die
+     */
+    n = 32000;
+    s = 32000;
+    m = 32000;
+    dt1 = 32000;
+    dt2 = 32000;
+    LEDOn = 0;
+    DblClkDelay = 32000;
+    ForceUpdate2 = 1;
+    while(1) {
+
+
+
+
+       /*
+        *  Keep track of # of seconds
+        */
+       if (m > 100){
+       
+           m = 0;
+           ++dt1;
+           ++dt2;
+       
+       } else {
+       
+           /*
+            *  Increment counter
+            */
+           ++m;
+       
+       }
+
+
+
+
+
+        /*
+         *  Double Click Delays
+         *  Keep track of click events. If Delay too long, set GotFirstClick's 
to False.
+         */
+        if (DblClkDelay > 15) {
+
+            DblClkDelay = 0;
+            GotFirstClick1 = 0; GotDoubleClick1 = 0;
+            GotFirstClick2 = 0; GotDoubleClick2 = 0;
+            GotFirstClick3 = 0; GotDoubleClick3 = 0;
+
+        } else {
+
+            ++DblClkDelay;
+
+        }
+
+
+
+
+
+
+
+
+
+       /* 
+        *   Process any pending X events.
+        */
+        while(XPending(display)){
+            XNextEvent(display, &event);
+            switch(event.type){
+                case Expose:
+                        RedrawWindow();
+                        break;
+                case ButtonPress:
+                        pressEvent(&event.xbutton);
+                        break;
+                case ButtonRelease:
+                        break;
+            }
+        }
+
+
+
+
+
+       
+       /* 
+        *  Redraw 
+        */
+       RedrawWindow();
+
+
+
+
+
+
+
+
+
+
+       /*
+        *  Check the Kp file every (approx.) 2 seconds.
+        *  Can significantly reduce this frequency later. But its
+        *  easier to debug this way...
+        *  Do this before trying to download again! The file may be there and 
it
+        *  may be Up-To-Date!
+        */
+       if (dt2 > 2){
+           
+           dt2 = 0;
+
+           /*
+            *  Compute Current Julian Date
+            */
+           CurrentLocalTime = time(CurrentTime);
+           Time = gmtime(&CurrentLocalTime);
+           Year  = Time->tm_year+1900;
+           Month = Time->tm_mon+1;
+           Day   = Time->tm_mday;
+           Hours = Time->tm_hour;
+           Mins  = Time->tm_min;
+           Secs  = Time->tm_sec;
+           UT = (double)Hours + (double)Mins/60.0 + (double)Secs/3600.0;
+           CurrentJD = jd(Year, Month, Day, UT);
+           
+
+
+           /*
+            *  Read in Kp values
+            */
+           if ((fp = fopen("/tmp/LatestKp.txt", "r")) != NULL){
+
+               for (i=0; i<8; ++i){
+                   fscanf(fp, "%ld %d", &TimeTag[i], &Kp[i]);
+                   if (Kp[i] < 0) TimeTag[i] = 190001011;
+               }
+               fscanf(fp, "%lf", &P1);
+               fscanf(fp, "%lf", &P2);
+               fscanf(fp, "%lf", &P3);
+               fscanf(fp, "%lf", &E1);
+               fscanf(fp, "%lf", &E2);
+               fscanf(fp, "%10s",  Xray);
+               fclose(fp);
+
+           } else {
+
+               for (i=0; i<8; ++i) {
+                   Kp[i] = -1;
+                   TimeTag[i] = 190001011;
+               }
+
+           }
+
+
+
+
+           /*
+            *  Compute Julian Date for latest available Kp
+            */
+           tim = TimeTag[7];
+           Year = tim/100000;
+           tim -= Year*100000;
+           Month = tim/1000;
+           tim -= Month*1000;
+           Day = tim/10;
+           tim -= Day*10;
+           UT = tim*3.0;
+           LatestAvailJD = jd(Year, Month, Day, UT);
+
+           DeltaT = (CurrentJD - LatestAvailJD)*24.0;
+           UpToDate = (DeltaT <= 3.0) ? 1 : 0;
+
+           if (!UpToDate){
+
+               /*
+                * shift data back
+                */
+               k = (int)(DeltaT/3.0);
+
+               if ((k>=0)&&(k<=7)){
+                   for (i=0; i<8-k; ++i) Kp[i] = Kp[i+k];
+                   for (i=8-k; i<8; ++i) Kp[i] = -1;
+               }
+
+
+           } 
+
+       } 
+
+
+
+
+
+
+       /*
+        *  Update Kp Bars etc...
+        */
+       if (n > 200){
+
+           n = 0;
+
+           copyXPMArea(5, 67, 47, 20, 5, 39);
+       
+           for (i=0; i<8; ++i){
+               if ((Kp[i] >= 0)&&(Kp[i] <= 9)){
+                   height = 2*Kp[i] + 1;
+                   copyXPMArea(53, 86-height+1, 5, height, 5+5*i+i, 
58-height+1);
+               }
+           }
+
+           /*
+            *  Update Xray display...
+            */
+           if (Xray[0] != 'Z'){
+               switch(Xray[0]){
+                   case 'B':
+                           copyXPMArea(66, 17, 5, 7, 37, 25);
+                           break;
+                   case 'C':
+                           copyXPMArea(72, 17, 5, 7, 37, 25);
+                           break;
+                   case 'M':
+                           copyXPMArea(78, 17, 5, 7, 37, 25);
+                           break;
+                   case 'X':
+                           copyXPMArea(84, 17, 5, 7, 37, 25);
+                           break;
+               }
+               digit[0] = Xray[1]; digit[1] = '\0';
+               copyXPMArea(atoi(digit)*6+66, 25, 5, 7, 43, 25);
+               copyXPMArea(127, 30, 3, 3, 49, 30);
+               digit[0] = Xray[3]; digit[1] = '\0';
+               copyXPMArea(atoi(digit)*6+66, 25, 5, 7, 53, 25);
+           }
+
+
+
+
+           /*
+            *  Update E1 LED...
+            */
+           if ((E1 > 0)&&(E1 < 1e6))
+               copyXPMArea(66, 12, 4, 4, 25, 7);
+           else if ((E1 >= 1e6)&&(E1 < 1e7))
+               copyXPMArea(66,  7, 4, 4, 25, 7);
+           else if (E1 > 1e7)
+               copyXPMArea(66,  2, 4, 4, 25, 7);
+
+
+           /*
+            *  Update E2 LED...
+            */
+           if ((E2 > 0)&&(E2 < 1e3))
+               copyXPMArea(66, 12, 4, 4, 31, 7);
+           else if ((E2 >= 1e3)&&(E2 < 1e4))
+               copyXPMArea(66,  7, 4, 4, 31, 7);
+           else if (E2 > 1e4)
+               copyXPMArea(66,  2, 4, 4, 31, 7);
+
+
+
+           /*
+            *  Update P1 LED...
+            */
+           if ((P1 > 0)&&(P1 < 1e2))
+               copyXPMArea(66, 12, 4, 4, 22, 16);
+           else if ((P1 >= 1e2)&&(P1 < 1e3))
+               copyXPMArea(66,  7, 4, 4, 22, 16);
+           else if (P1 > 1e3)
+               copyXPMArea(66,  2, 4, 4, 22, 16);
+
+
+           /*
+            *  Update P2 LED...
+            */
+           if ((P2 > 0)&&(P2 < 0.5e0))
+               copyXPMArea(66, 12, 4, 4, 28, 16);
+           else if ((P2 >= 0.5e0)&&(P2 < 0.5e1))
+               copyXPMArea(66,  7, 4, 4, 28, 16);
+           else if (P2 > 0.5e1)
+               copyXPMArea(66,  2, 4, 4, 28, 16);
+
+
+           /*
+            *  Update P3 LED...
+            */
+           if ((P3 > 0)&&(P3 < 0.3e0))
+               copyXPMArea(66, 12, 4, 4, 34, 16);
+           else if ((P3 >= 0.3e0)&&(P3 < 0.3e1))
+               copyXPMArea(66,  7, 4, 4, 34, 16);
+           else if (P3 > 0.3e1)
+               copyXPMArea(66,  2, 4, 4, 34, 16);
+
+
+
+
+
+
+
+
+
+       } else {
+
+           /*
+            *  Increment counter
+            */
+           ++n;
+
+       }
+
+
+
+
+
+       /*
+        *  Update the blinking LED which indicates whether or not the
+        *  display is up-to-date
+        */
+       if (s > 20){
+
+           s = 0;
+
+           if (LEDOn){
+       
+               if (UpToDate)
+                   copyXPMArea(65, 82, 4, 4, 54, 53);
+               else
+                   copyXPMArea(65, 76, 4, 4, 54, 53);
+
+               LEDOn = 0;
+
+           } else { 
+
+               if (UpToDate)
+                   copyXPMArea(60, 82, 4, 4, 54, 53);
+               else
+                   copyXPMArea(60, 76, 4, 4, 54, 53);
+
+               LEDOn = 1;
+       
+           }
+       } else {
+
+           /*
+            *  Increment counter
+            */
+           ++s;
+
+       }
+
+           
+
+
+
+
+
+
+
+
+       /*
+        *  Check every 5 min if the values are not up to date...
+        */
+       if (((!UpToDate)&&(dt1 > 300))||ForceUpdate2){
+
+           dt1 = 0;
+
+           /*
+            *  Execute Perl script to grab the Latest Kp values
+            */
+           system("GetKp &");
+
+           ForceUpdate2 = 0;
+
+       }
+
+
+
+
+       /* 
+        *  Wait for next update 
+        */
+       usleep(DELAY);
+
+
+     }
+
+
+
+}
+
+
+
+
+
+
+
+
+/*
+ *   ParseCMDLine()
+ */
+void ParseCMDLine(int argc, char *argv[]) {
+
+    int  i;
+
+    for (i = 1; i < argc; i++) {
+
+        if (!strcmp(argv[i], "-display")){
+
+            ++i;
+
+        } else if ((!strcmp(argv[i], "-url"))||(!strcmp(argv[i], "-u"))){
+
+            strcpy(URL, argv[++i]);
+
+        } else {
+
+           printf("\nwmSpaceWeather version: %s\n", WMSPACEWEATHER_VERSION);
+           printf("\nusage: wmSpaceWeather [-h] [-url <www URL>]\n\n");
+           printf("\t-url <URL>\tURL to send to Netscape with Button1 double 
click.\n\n");
+           printf("\t-h\t\tDisplay help screen.\n\n");
+            exit(1);
+
+        }
+    }
+
+}
+
+
+
+
+
+
+
+
+/*
+ *  Compute the Julian Day number for the given date.
+ *  Julian Date is the number of days since noon of Jan 1 4713 B.C.
+ */
+double jd(ny, nm, nd, UT)
+int ny, nm, nd;
+double UT;
+{
+        double A, B, C, D, JD, MJD, day;
+
+        day = nd + UT/24.0;
+
+
+        if ((nm == 1) || (nm == 2)){
+                ny = ny - 1;
+                nm = nm + 12;
+        }
+
+        if (((double)ny+nm/12.0+day/365.25)>=(1582.0+10.0/12.0+15.0/365.25)){
+                        A = ((int)(ny / 100.0));
+                        B = 2.0 - A + (int)(A/4.0);
+        }
+        else{
+                        B = 0.0;
+        }
+        if (ny < 0.0){
+                C = (int)((365.25*(double)ny) - 0.75);
+        }
+        else{
+                C = (int)(365.25*(double)ny);
+        }
+
+        D = (int)(30.6001*(double)(nm+1));
+
+
+        JD = B + C + D + day + 1720994.5;
+        return(JD);
+
+}
+
+
+
+
+/*
+ *  This routine handles button presses.
+ */
+void pressEvent(XButtonEvent *xev){
+
+    char Command[512];
+
+
+    DblClkDelay = 0;
+    if ((xev->button == Button1) && (xev->type == ButtonPress)){
+        if (GotFirstClick1) GotDoubleClick1 = 1;
+        else GotFirstClick1 = 1;
+    } else if ((xev->button == Button2) && (xev->type == ButtonPress)){
+        if (GotFirstClick2) GotDoubleClick2 = 1;
+        else GotFirstClick2 = 1;
+    } else if ((xev->button == Button3) && (xev->type == ButtonPress)){
+        if (GotFirstClick3) GotDoubleClick3 = 1;
+        else GotFirstClick3 = 1;
+    }
+
+    /*
+     *  We got a double click on Mouse Button1 (i.e. the left one)
+     */
+    if (GotDoubleClick1) {
+        GotFirstClick1 = 0;
+        GotDoubleClick1 = 0;
+        sprintf(Command, "netscape -remote 'openURL(%s)' || netscape '%s' &", 
URL, URL);
+        system(Command);
+    }
+
+
+    /*
+     *  We got a double click on Mouse Button2 (i.e. the left one)
+     */
+    if (GotDoubleClick2) {
+    }
+
+
+    /*
+     *  We got a double click on Mouse Button3 (i.e. the left one)
+     */
+    if (GotDoubleClick3) {
+        GotFirstClick3 = 0;
+        GotDoubleClick3 = 0;
+        ForceUpdate2 = 1;
+    }
+
+
+
+   return;
+
+}
+
diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather.o 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather.o
new file mode 100644
index 
0000000000000000000000000000000000000000..b21ad86398496c52296f0400d42ad543fe67133e
GIT binary patch
literal 19808
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

literal 0
HcmV?d00001

diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather_mask.xbm 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather_mask.xbm
new file mode 100644
index 0000000..b01c3e5
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/wmSpaceWeather_mask.xbm
@@ -0,0 +1,38 @@
+#define wmSpaceWeather_mask_width 64
+#define wmSpaceWeather_mask_height 64
+static char wmSpaceWeather_mask_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.gif 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.gif
new file mode 100644
index 
0000000000000000000000000000000000000000..9ee154fd43f1aaae5b88807f5aa73540ae8c7fc0
GIT binary patch
literal 1375
zcmV-l1)%yzNk%v~VVMA10Q3L=0000O7#JWPA3Qt&ARr(B6mI}WT~7c2PBQ>Hb^ieW
z005=jI;Q{s0094Y0ME|=|Nj7(ps1Oe|H#P5W@csp0000000000000000000000000
z000000000000000EC2ui0GR+=000I4U?h%YX`X1Rra<eya4gSsZQu5)?>vwHz@YHg
zD;kR}L8BoUI-gM3aY{Y48k1#o%O#GwVCfgI)P~Pt5<tLiyWjA*d_JG3*UKh)zf}te
zfPoT&1ayXnbarEWj9hAfgA##&h7=TTmWYRnB1sSsO#+#Xq&Z&%l8}>Z5^)q0nWC_l
znss*&6Q2ODmZiQjkCB9dbe6Hkw6$@Z5iOs($iLDq!IP^3t**(U+sbduo}g=^)6$Qq
z!^Ga}a^U6fz^B&N?DcK#0tyOx@YCn>l<Wy~r(lA<e&zmIlO%B99eoE8nv=J1P(yq8
z^zoBes#-dR+AwX4RnHyAcftNrr3#ph4KG?RUCzSz5MqFv&u%)n8DM7vo()b4NvTTR
z8)PnxB_+AeT>u3)p+ev}b*Ih%KW_#V3dG||mPbd5bvWi})Bsa?_T1^f>d&8CyPo<=
z@1i%SHqol>$=52@n{mB#LItpp-KKZUnoY~ouiL+Yaa03%7;#ysi>dOxniXs08-6Mu
zCYTrPr>mTSem2!f^yoXQ8~JJ3(zP<D0T}Gn&69!eo4$jq<sJMtaN@;}^UiHtZJ#gL
z+SInK$*Jz;&9U$9O?+=|@4&x@*X}$@=vLFw)3z9$Rb_YDuY+GM{(E=h^oNHZe|+!r
z*6y*QUVzfI7u|Fv-Tpydef@E_A9DOPw;yxZ$yXi}=NU+#bdj{jo?Y<uCgO<RU6-7G
z_>s8agn*d`9c^x;S0Fa%X-HF97EYMoirw+|pnfdUr`vzc7+4#E!n}dtjhz6XV{*kI
zw<C8Iu1KMSR1&#{Jutpj7I<KWDdw1D>ZfHx9li%!Y<z@99h1$l$p{G()M@9Pc;>0+
zo_zLclALH%A!rqVwmImbNE90ABA>0PXcun2$<CjTI`YK<m|`kGrkZkkz^0snnyILr
zhU)1uj#la-fRav{s;W<@aq6t5);cP!w}uJ_rLe{dU8}A#+N-af;96>~$R4Zgr>E}v
z>aamX3T!RB{z4n=rM50hDzn*go9w5~3Ty4PtWHbqv*Ut>?YG;uYpl20hTCMiL;Y&*
zx#H5RZYKlu+phrr{u}TB00&&KzXuC!@W80%t8Wd`-fKv;57VHA0T^Q}K*kz#Y{14G
zgPgI*9f$03!}C_WZ;=wykw5}$P^@wc7n^MJ$S3D~bIBtMkiY~l3n25%FGSpO8!rbv
zG|?^8jPuSP>-_Z8JZsEG&_bijbkp`8oru<3J6(0uP?JnH)n{A%4cJW6>F3*U$Bif3
zL?deV4qHQf_ueSvZ86_~(>-(GgvaUk;fN=$_~LPS{RZPsyz6ealYdJ_8CyYKgX3;&
z*@oumHb^cy<?miz2I!k}&W7i!qdvpv?83gR>1MbdgX*h4ZhH)}!|QwHvtyq5?k?aS
zO6SDC&^z$Imo9t~ZH0mW0vjoAJnMQmFhN@YATYu7nlmi^!sH`7zWD(I@WA@(x6l^%
z(}NHB^|}iX{TkC(pSaXxo9#dUX)^!-7C=A(CgF3)V;udE*SQ2P4uJnF8w5QzzydBH
z2|-&!0Scf$#4Yf10QlL<08oGlY*2F(l%NXHR>1<cAZZC8;RXw!xevC^XE4(s2T{1f
h{-uzG7QA5chDgLB8c|h+Num;$$iyZ#k!T?R06W=ur40Z8

literal 0
HcmV?d00001

diff --git a/wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.xpm 
b/wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.xpm
new file mode 100644
index 0000000..a909abd
--- /dev/null
+++ b/wmspaceweather/wmSpaceWeather/wmSpaceWeather_master.xpm
@@ -0,0 +1,119 @@
+/* XPM */
+static char *wmSpaceWeather_master[] = {
+/* width height num_colors chars_per_pixel */
+"   153    91       21            1",
+/* colors */
+". c #000000",
+"# c #181818",
+"a c #201e1f",
+"b c #3c3c00",
+"c c #202020",
+"d c #00146f",
+"e c #00475d",
+"f c #4f0000",
+"g c #4e3300",
+"h c #3a75ff",
+"i c #00ff00",
+"j c #00a5dc",
+"k c #3aa6ff",
+"l c #ff0000",
+"m c #ff7700",
+"n c #cfcf00",
+"o c #ffff00",
+"p c #98a0a8",
+"q c #999aff",
+"r c #c8c8c8",
+"s c #666666",
+/* pixels */
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp..alla...................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp..lrll...................................................................................",
+"pppp........................................................pppp..llll...................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..alla...................................................................................",
+"pppp.accccccqqqcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.ccqqqcccccaaaaaaaaaaassaaaassaaaaaaaaaaaaaaaaaaaaaaaaarpppp..aooa.assa..............................................................................",
+"pppp.cqcccqccccaaqaaaaaaasrssaasrssaaaaaaaaaaaaaaaaaaaaaaaarpppp..oroo.srss..............................................................................",
+"pppp.cqqqqqccccaaaaaaaaaassssaassssaaaaaaaaaaaaaaaaaaaaaaaarpppp..oooo.ssss..............................................................................",
+"pppp.cqccccccccaaqaaaaaaaassaaaassaaaaaaaaaaaaaaaaaaaaaaaaarpppp..aooa.assa..............................................................................",
+"pppp.ccqqqcccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.ccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..aiia...................................................................................",
+"pppp.ccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..irii...................................................................................",
+"pppp.ccccccccqcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..iiii...................................................................................",
+"pppp.cccccccqqqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..aiia...................................................................................",
+"pppp.cqcqqcccqcaaaaaaaassaaaassaaaassaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.cqqccqccccaaqaaaasrssaasrssaasrssaaaaaaaaaaaaaaaaaaaaarpppp..iiii###ooo##m###m#l###l................................................................",
+"pppp.cqqccqccccaaaaaaassssaassssaassssaaaaaaaaaaaaaaaaaaaaarpppp..#i##i#o###o#m###m#l###l................................................................",
+"pppp.cqcqqcccccaaqaaaaassaaaassaaaassaaaaaaaaaaaaaaaaaaaaaarpppp..#i##i#o#####mm#mm##l#l#................................................................",
+"pppp.cqccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..#iii##o#####m#m#m###l##................................................................",
+"pppp.cqccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..#i##i#o#####m###m##l#l#................................................................",
+"pppp.cqccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..#i##i#o###o#m###m#l###l................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..iiii###ooo##m###m#l###l................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.aqaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..##k#####k####kkk##kkkkk####k##kkkkk###kk##kkkkk##kkk###kkk######.......................",
+"pppp.aqaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..#k#k###kk###k###k#####k###kk##k######k########k#k###k#k###k#####.......................",
+"pppp.aaqaqaaaaaqaqqaaaqqqaaqaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..k###k#k#k#######k####k###k#k##k#kk##k########k##k###k#k##kk#####.......................",
+"pppp.aaaqaaaqqaqqaaqaaaaaqaqaaaqaqaaaaaaaaaaaaaaaaaaaaaaaaarpppp..k###k###k#####kk####kk##k##k##kk##k#k#kk#####k###kkk###kk#k#####.......................",
+"pppp.aaqaqaaaaaqaaaaaaqqqqaqaaqqaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..k###k###k####k########k#kkkkk#####k#kk##k###k###k###k#####k#####.......................",
+"pppp.aqaaaqaaaaqaaaaaqaaaqaaqqaqaqaaaaaaaaaaaaaaaaaaaaaaaaarpppp..#k#k####k###k#####k###k####k##k###k#k###k##k####k###k####k####k#.......................",
+"pppp.aqaaaqaaaaqaaaaaaqqqqaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..##k###kkkkk#kkkkk##kkk#####k###kkk###kkk###k#####kkk###kk####kkk.......................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaqaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp..##############################################################k#.......................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaqqqaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppprrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrpppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppp........................................................pppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.fffffafffffafffffafffffafffffafffffafffffafffffaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.fffffafffffafffffafffffafffffafffffafffffafffffaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.fffffafffffafffffafffffafffffafffffafffffafffffaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.fffffafffffafffffafffffafffffafffffafffffafffffaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.fffffafffffafffffafffffafffffafffffafffffafffffaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.bbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbbaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaaaaaaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhaarpppp.........................................................................................",
+"pppp.eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaahrhharpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhharpppp.........................................................................................",
+"pppp.eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaaahhaarpppp.........................................................................................",
+"pppp.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpppp.........................................................................................",
+"pppp.eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaaaaaaarpppp.........................................................................................",
+"pppprrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrpppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.........................................................................................",
+".........................................................................................................................................................",
+".........................................................................................................................................................",
+".........................................................................................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....................................................................................................",
+".....fffffafffffafffffafffffafffffafffffafffffafffff.lllll...............................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa...............................................................................................",
+".....fffffafffffafffffafffffafffffafffffafffffafffff.lllll...............................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa...............................................................................................",
+".....fffffafffffafffffafffffafffffafffffafffffafffff.lllll...............................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa...............................................................................................",
+".....fffffafffffafffffafffffafffffafffffafffffafffff.lllll...............................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa...............................................................................................",
+".....fffffafffffafffffafffffafffffafffffafffffafffff.lllll..amma.agga....................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa..mrmm.grgg....................................................................................",
+".....bbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbb.nnnnn..mmmm.gggg....................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa..amma.agga....................................................................................",
+".....eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeee.jjjjj..aaaa.aaaa....................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa..aaaa.aaaa....................................................................................",
+".....eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeee.jjjjj..ahha.adda....................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa..hrhh.drdd....................................................................................",
+".....eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeee.jjjjj..hhhh.dddd....................................................................................",
+".....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaa..ahha.adda....................................................................................",
+".....eeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeeeaeeeee.jjjjj...............................................................................................",
+".........................................................................................................................................................",
+".........................................................................................................................................................",
+".........................................................................................................................................................",
+"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc............................................................................."
+};
diff --git a/wmspaceweather/wmgeneral/wmgeneral.c 
b/wmspaceweather/wmgeneral/wmgeneral.c
new file mode 100644
index 0000000..a4f13c1
--- /dev/null
+++ b/wmspaceweather/wmgeneral/wmgeneral.c
@@ -0,0 +1,366 @@
+/*
+       Best viewed with vim5, using ts=4
+
+       wmgeneral was taken from wmppp.
+
+       It has a lot of routines which most of the wm* programs use.
+
+       ------------------------------------------------------------
+
+       Author: Martijn Pieterse (piete...@xs4all.nl)
+
+       ---
+       CHANGES:
+       ---
+       02/05/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * changed the read_rc_file to parse_rcfile, as suggester by 
Marcelo E. Magallon
+               * debugged the parse_rc file.
+       30/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Ripped similar code from all the wm* programs,
+                 and put them in a single file.
+
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+
+#include "wmgeneral.h"
+
+  /*****************/
+ /* X11 Variables */
+/*****************/
+
+Window         Root;
+int                    screen;
+int                    x_fd;
+int                    d_depth;
+XSizeHints     mysizehints;
+XWMHints       mywmhints;
+Pixel          back_pix, fore_pix;
+char           *Geometry = "";
+Window         iconwin, win;
+GC                     NormalGC;
+XpmIcon                wmgen;
+Pixmap         pixmask;
+
+  /*****************/
+ /* Mouse Regions */
+/*****************/
+
+typedef struct {
+       int             enable;
+       int             top;
+       int             bottom;
+       int             left;
+       int             right;
+} MOUSE_REGION;
+
+#define MAX_MOUSE_REGION (8)
+MOUSE_REGION   mouse_region[MAX_MOUSE_REGION];
+
+  /***********************/
+ /* Function Prototypes */
+/***********************/
+
+static void GetXPM(XpmIcon *, char **);
+static Pixel GetColor(char *);
+void RedrawWindow(void);
+void AddMouseRegion(int, int, int, int, int);
+int CheckMouseRegion(int, int);
+
+/*******************************************************************************\
+|* read_rc_file                                                                
                                                                   *|
+\*******************************************************************************/
+
+void parse_rcfile(const char *filename, rckeys *keys) {
+
+       char    *p;
+       char    temp[128];
+       char    *tokens = " :\t\n";
+       FILE    *fp;
+       int             i,key;
+
+       fp = fopen(filename, "r");
+       if (fp) {
+               while (fgets(temp, 128, fp)) {
+                       key = 0;
+                       while (key >= 0 && keys[key].label) {
+                               if ((p = strstr(temp, keys[key].label))) {
+                                       p += strlen(keys[key].label);
+                                       p += strspn(p, tokens);
+                                       if ((i = strcspn(p, "#\n"))) p[i] = 0;
+                                       free(*keys[key].var);
+                                       *keys[key].var = strdup(p);
+                                       key = -1;
+                               } else key++;
+                       }
+               }
+               fclose(fp);
+       }
+}
+
+
+/*******************************************************************************\
+|* GetXPM                                                                      
                                                                   *|
+\*******************************************************************************/
+
+static void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) {
+
+       XWindowAttributes       attributes;
+       int                                     err;
+
+       /* For the colormap */
+       XGetWindowAttributes(display, Root, &attributes);
+
+       wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
+
+       err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, 
&(wmgen->pixmap),
+                                       &(wmgen->mask), &(wmgen->attributes));
+       
+       if (err != XpmSuccess) {
+               fprintf(stderr, "Not enough free colorcells.\n");
+               exit(1);
+       }
+}
+
+/*******************************************************************************\
+|* GetColor                                                                    
                                                                   *|
+\*******************************************************************************/
+
+static Pixel GetColor(char *name) {
+
+       XColor                          color;
+       XWindowAttributes       attributes;
+
+       XGetWindowAttributes(display, Root, &attributes);
+
+       color.pixel = 0;
+       if (!XParseColor(display, attributes.colormap, name, &color)) {
+               fprintf(stderr, "wm.app: can't parse %s.\n", name);
+       } else if (!XAllocColor(display, attributes.colormap, &color)) {
+               fprintf(stderr, "wm.app: can't allocate %s.\n", name);
+       }
+       return color.pixel;
+}
+
+/*******************************************************************************\
+|* flush_expose                                                                
                                                                   *|
+\*******************************************************************************/
+
+static int flush_expose(Window w) {
+
+       XEvent          dummy;
+       int                     i=0;
+
+       while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
+               i++;
+
+       return i;
+}
+
+/*******************************************************************************\
+|* RedrawWindow                                                                
                                                                   *|
+\*******************************************************************************/
+
+void RedrawWindow(void) {
+       
+       flush_expose(iconwin);
+       XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 
+                               0,0, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+       flush_expose(win);
+       XCopyArea(display, wmgen.pixmap, win, NormalGC,
+                               0,0, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+}
+
+/*******************************************************************************\
+|* RedrawWindowXY                                                              
                                                           *|
+\*******************************************************************************/
+
+void RedrawWindowXY(int x, int y) {
+       
+       flush_expose(iconwin);
+       XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 
+                               x,y, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+       flush_expose(win);
+       XCopyArea(display, wmgen.pixmap, win, NormalGC,
+                               x,y, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+}
+
+/*******************************************************************************\
+|* AddMouseRegion                                                              
                                                           *|
+\*******************************************************************************/
+
+void AddMouseRegion(int index, int left, int top, int right, int bottom) {
+
+       if (index < MAX_MOUSE_REGION) {
+               mouse_region[index].enable = 1;
+               mouse_region[index].top = top;
+               mouse_region[index].left = left;
+               mouse_region[index].bottom = bottom;
+               mouse_region[index].right = right;
+       }
+}
+
+/*******************************************************************************\
+|* CheckMouseRegion                                                            
                                                           *|
+\*******************************************************************************/
+
+int CheckMouseRegion(int x, int y) {
+
+       int             i;
+       int             found;
+
+       found = 0;
+
+       for (i=0; i<MAX_MOUSE_REGION && !found; i++) {
+               if (mouse_region[i].enable &&
+                       x <= mouse_region[i].right &&
+                       x >= mouse_region[i].left &&
+                       y <= mouse_region[i].bottom &&
+                       y >= mouse_region[i].top)
+                       found = 1;
+       }
+       if (!found) return -1;
+       return (i-1);
+}
+
+/*******************************************************************************\
+|* copyXPMArea                                                                 
                                                           *|
+\*******************************************************************************/
+
+void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
+
+       XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, 
dx, dy);
+
+}
+
+/*******************************************************************************\
+|* copyXBMArea                                                                 
                                                           *|
+\*******************************************************************************/
+
+void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
+
+       XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, 
dx, dy);
+}
+
+
+/*******************************************************************************\
+|* setMaskXY                                                                   
                                                           *|
+\*******************************************************************************/
+
+void setMaskXY(int x, int y) {
+
+        XShapeCombineMask(display, win, ShapeBounding, x, y, pixmask, 
ShapeSet);
+        XShapeCombineMask(display, iconwin, ShapeBounding, x, y, pixmask, 
ShapeSet);
+}
+
+/*******************************************************************************\
+|* openXwindow                                                                 
                                                           *|
+\*******************************************************************************/
+void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char 
*pixmask_bits, int pixmask_width, int pixmask_height) {
+
+       unsigned int    borderwidth = 1;
+       XClassHint              classHint;
+       char                    *display_name = NULL;
+       char                    *wname = argv[0];
+       XTextProperty   name;
+
+       XGCValues               gcv;
+       unsigned long   gcm;
+
+
+       int                             dummy=0;
+       int                             i;
+
+       for (i=1; argv[i]; i++) {
+               if (!strcmp(argv[i], "-display")) 
+                       display_name = argv[i+1];
+       }
+
+       if (!(display = XOpenDisplay(display_name))) {
+               fprintf(stderr, "%s: can't open display %s\n", 
+                                               wname, 
XDisplayName(display_name));
+               exit(1);
+       }
+       screen  = DefaultScreen(display);
+       Root    = RootWindow(display, screen);
+       d_depth = DefaultDepth(display, screen);
+       x_fd    = XConnectionNumber(display);
+
+       /* Convert XPM to XImage */
+       GetXPM(&wmgen, pixmap_bytes);
+
+       /* Create a window to hold the stuff */
+       mysizehints.flags = USSize | USPosition;
+       mysizehints.x = 0;
+       mysizehints.y = 0;
+
+       back_pix = GetColor("white");
+       fore_pix = GetColor("black");
+
+       XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
+                               &mysizehints.x, 
&mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
+
+       mysizehints.width = 64;
+       mysizehints.height = 64;
+               
+       win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
+                               mysizehints.width, mysizehints.height, 
borderwidth, fore_pix, back_pix);
+       
+       iconwin = XCreateSimpleWindow(display, win, mysizehints.x, 
mysizehints.y,
+                               mysizehints.width, mysizehints.height, 
borderwidth, fore_pix, back_pix);
+
+       /* Activate hints */
+       XSetWMNormalHints(display, win, &mysizehints);
+       classHint.res_name = wname;
+       classHint.res_class = wname;
+       XSetClassHint(display, win, &classHint);
+
+       XSelectInput(display, win, ButtonPressMask | ExposureMask | 
ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
+       XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | 
ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
+
+       if (XStringListToTextProperty(&wname, 1, &name) == 0) {
+               fprintf(stderr, "%s: can't allocate window name\n", wname);
+               exit(1);
+       }
+
+       XSetWMName(display, win, &name);
+
+       /* Create GC for drawing */
+       
+       gcm = GCForeground | GCBackground | GCGraphicsExposures;
+       gcv.foreground = fore_pix;
+       gcv.background = back_pix;
+       gcv.graphics_exposures = 0;
+       NormalGC = XCreateGC(display, Root, gcm, &gcv);
+
+       /* ONLYSHAPE ON */
+
+       pixmask = XCreateBitmapFromData(display, win, pixmask_bits, 
pixmask_width, pixmask_height);
+
+       XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
+       XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, 
ShapeSet);
+
+       /* ONLYSHAPE OFF */
+
+       mywmhints.initial_state = WithdrawnState;
+       mywmhints.icon_window = iconwin;
+       mywmhints.icon_x = mysizehints.x;
+       mywmhints.icon_y = mysizehints.y;
+       mywmhints.window_group = win;
+       mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | 
WindowGroupHint;
+
+       XSetWMHints(display, win, &mywmhints);
+
+       XSetCommand(display, win, argv, argc);
+       XMapWindow(display, win);
+
+}
diff --git a/wmspaceweather/wmgeneral/wmgeneral.h 
b/wmspaceweather/wmgeneral/wmgeneral.h
new file mode 100644
index 0000000..55b37dd
--- /dev/null
+++ b/wmspaceweather/wmgeneral/wmgeneral.h
@@ -0,0 +1,50 @@
+#ifndef WMGENERAL_H_INCLUDED
+#define WMGENERAL_H_INCLUDED
+
+  /***********/
+ /* Defines */
+/***********/
+
+#define MAX_MOUSE_REGION (8)
+
+  /************/
+ /* Typedefs */
+/************/
+
+typedef struct _rckeys rckeys;
+
+struct _rckeys {
+       const char      *label;
+       char            **var;
+};
+
+typedef struct {
+       Pixmap                  pixmap;
+       Pixmap                  mask;
+       XpmAttributes   attributes;
+} XpmIcon;
+
+  /*******************/
+ /* Global variable */
+/*******************/
+
+Display                *display;
+
+  /***********************/
+ /* Function Prototypes */
+/***********************/
+
+void AddMouseRegion(int index, int left, int top, int right, int bottom);
+int CheckMouseRegion(int x, int y);
+
+void openXwindow(int argc, char *argv[], char **, char *, int, int);
+void RedrawWindow(void);
+void RedrawWindowXY(int x, int y);
+
+void copyXPMArea(int, int, int, int, int, int);
+void copyXBMArea(int, int, int, int, int, int);
+void setMaskXY(int, int);
+
+void parse_rcfile(const char *, rckeys *);
+
+#endif
diff --git a/wmspaceweather/wmgeneral/wmgeneral.o 
b/wmspaceweather/wmgeneral/wmgeneral.o
new file mode 100644
index 
0000000000000000000000000000000000000000..29502e5e850e67719a53b8e8fef54427c89bb4c1
GIT binary patch
literal 7324
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

literal 0
HcmV?d00001

-- 
2.7.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to